ในตอนที่หนึ่งเราว่ากันด้วยการสร้างสภาพแวดล้อม ตอนที่สองว่ากันด้วยตัวอย่างการสร้าง Instant Messaging อย่างง่ายกันแต่ก็ยังต้องทำงานกันบนอุปกรณ์ชิ้นเดียวกันทั้งหมด มาตอนนี้เราจะว่ากันต่อด้วยเรื่องการทำให้ระบบ Instant Messaging สามารถทำงานบนอุปกรณ์คนละอุปกรณ์ได้
Redis Server จะเก็บค่า configuration ไว้ที่ /etc/redis/redis.conf ครับ การจะแก้ไขอะไรก็ต้องเริ่มต้นจากตรงนี้ก่อน ในกรอบของตอนนี้เราจะมองไปที่สามเรื่องดังนี้
port 6379
เป็นตัวเลขที่ระบุว่า redis server จะใช้ port หมายเลขใดในการสื่อสารกับลูกข่าย เราสามารถเปลี่ยนตัวเลขนี้ได้ แต่ขอให้แน่ใจว่าตัวเลขนั้นจะไม่ไปชนกับงานอื่น
bind 127.0.0.1
ค่าเดิมที่กำหนดไว้หมายถึง redis server จะอนุญาตให้มีการติดต่อมาได้เฉพาะกับเครื่อง localhost เท่านั้น หากเราต้องการติดต่อมาจากเครื่องคอมพิวเตอร์อื่นที่มี IP address ต่างออกไปก็จะไม่ได้รับอนุญาตให้ทำการอะไร
ในกรณีที่เรามี IP address ที่แน่นอนให้กับ redis server เราก็สามารถเปลี่ยนค่า ip address ให้เป็นตามที่เราได้มาเช่น 192.168.2.2 ฯลฯ การเปลี่ยนที่อยุ่ในกรณีนี้ Client ที่มี ip address อื่น หรือการเชื่อมต่อมาจากเครื่องอื่น ก็จะต้องกำหนดที่อยู่นีให้กับตัวโปรแกรมของเราด้วย เช่น ในตัวอย่าง
Publisher.py เราต้องไปแก้ไขในบรรทัด
ให้เป็น
ในกรณีที่เราไม่สามารถระบุ ip address หรือ domain name ที่ชัดเจนได้ เราสามารถละ directive ตัวนี้ได้ โดยการเติมสัญญลักษณ์ # ไว้ข้างหน้า เช่น
#bind 127.0.0.1
1. กำหนด password โดยการมองหาบรรทัดที่มีข้อความ
#requirepass foobared
จะเห็นว่าค่าปริยายนั้นไม่ได้กำหนดให้ใช้ password ให้เรานำสัญญลักษณ์ # ออกไป แล้วทำการกำหนดค่า password ตามที่เราต้องการ สมมุติว่าเป็น "xxxx"
2. แก้ไข programm
กลับไปที่ Publisher.py และ Subscriber.py เราต้องการแก้ไข
โดยเพิ่ม password เป็น parameter อีกหนึ่งตัว
หลังเสร็จสิ้นการแก้ไข redis.cof แล้ว เราต้องทำการ restart ตัว redis server ด้วย
$ sudo /etc/init.d/redis restart
2. http://redis.io/topics/security
เริ่มต้นที่ redis.conf
Redis Server จะเก็บค่า configuration ไว้ที่ /etc/redis/redis.conf ครับ การจะแก้ไขอะไรก็ต้องเริ่มต้นจากตรงนี้ก่อน ในกรอบของตอนนี้เราจะมองไปที่สามเรื่องดังนี้
- port สื่อสาร
- binding address และ
- requirepass
ต้องการเปลี่ยนหมายเลข port สื่อสาร ?
ใน redis.conf มองหาบรรทัดที่มีข้อความport 6379
เป็นตัวเลขที่ระบุว่า redis server จะใช้ port หมายเลขใดในการสื่อสารกับลูกข่าย เราสามารถเปลี่ยนตัวเลขนี้ได้ แต่ขอให้แน่ใจว่าตัวเลขนั้นจะไม่ไปชนกับงานอื่น
อนุญาตให้ลูกข่ายจากเครื่องอื่นติดต่อได้
มองหาบรรทัดที่มีข้อความbind 127.0.0.1
ค่าเดิมที่กำหนดไว้หมายถึง redis server จะอนุญาตให้มีการติดต่อมาได้เฉพาะกับเครื่อง localhost เท่านั้น หากเราต้องการติดต่อมาจากเครื่องคอมพิวเตอร์อื่นที่มี IP address ต่างออกไปก็จะไม่ได้รับอนุญาตให้ทำการอะไร
ในกรณีที่เรามี IP address ที่แน่นอนให้กับ redis server เราก็สามารถเปลี่ยนค่า ip address ให้เป็นตามที่เราได้มาเช่น 192.168.2.2 ฯลฯ การเปลี่ยนที่อยุ่ในกรณีนี้ Client ที่มี ip address อื่น หรือการเชื่อมต่อมาจากเครื่องอื่น ก็จะต้องกำหนดที่อยู่นีให้กับตัวโปรแกรมของเราด้วย เช่น ในตัวอย่าง
Publisher.py เราต้องไปแก้ไขในบรรทัด
broker = redis.Redis(host='localhost',port=6379)
ให้เป็น
broker = redis.Redis(host='192.168.2.2',port=6379)
ในกรณีที่เราไม่สามารถระบุ ip address หรือ domain name ที่ชัดเจนได้ เราสามารถละ directive ตัวนี้ได้ โดยการเติมสัญญลักษณ์ # ไว้ข้างหน้า เช่น
#bind 127.0.0.1
เพิ่มความมั่นใจด้วย password
ที่กล่าวมาก็เพียงพอแล้วสำหรับการทำให้ระบบเชื่อมต่อกันระหว่างอุปกรณ์ แต่หากเราต้องการเพิ่มความมั่นใจเรื่องความปลอดภัยในอีกระดับด้วยการกำหนด password ก็สามารถทำได้โดย1. กำหนด password โดยการมองหาบรรทัดที่มีข้อความ
#requirepass foobared
จะเห็นว่าค่าปริยายนั้นไม่ได้กำหนดให้ใช้ password ให้เรานำสัญญลักษณ์ # ออกไป แล้วทำการกำหนดค่า password ตามที่เราต้องการ สมมุติว่าเป็น "xxxx"
2. แก้ไข programm
กลับไปที่ Publisher.py และ Subscriber.py เราต้องการแก้ไข
broker = redis.Redis(host='localhost',port=6379)
โดยเพิ่ม password เป็น parameter อีกหนึ่งตัว
broker = redis.Redis(host='192.168.2.2',port=6279,password='xxxx')
หลังเสร็จสิ้นการแก้ไข redis.cof แล้ว เราต้องทำการ restart ตัว redis server ด้วย
$ sudo /etc/init.d/redis restart
ปล. เอกสารที่ใช้ศึกษาเพิ่มเติม
1. https://redis-py.readthedocs.org/en/latest/2. http://redis.io/topics/security
ความคิดเห็น
แสดงความคิดเห็น