SELinux enable connect to a remote MySQL database

ครับโผมมม ปกติหลายๆคน นิยมปิด Selinux เพื่อความสะดวกสบายไม่ต้องมานั่ง Setsebool กันให้วุ่นวาย ผมเองก็เช่นกัน ปิดมันแหละง่ายดี แต่ในเครื่อง Test หรือ Develop เท่านั้นนะครับ ถ้าเครื่องที่รัน Production แล้วควรที่จะเปิดใช้ Selinux เป็นอย่างยิ่ง หลังจากเปิดแล้วทุกๆอย่างมันก็ไม่ง่ายต้องมาเรียนรู้ Selinux อีก และนี้คือสิ่งหนึ่งที่ได้ใช้ปล่อยเหมือนกันคือ การยอมให้เครื่องอื่นมาทำการ Remote Connect Database หรือจะ Remote ไปเครื่องอื่นก็แล้วแต่ จำเป็นต้องทำการเปิดใช้งานซะก่อน ถ้าเปิด Firewall ไว้ด้วยก็ต้องเพิ่ม Rule ให้ Firewall ด้วย เร่มกันที่ ตรวจสอบก่อนเลยว่า Selinux อนุญาติให้ทำการ Remote connect database ไหมโดย ตรวจสอบ httpd_can_network_connect_db ด้วยคำสั่ง

[root@khonkaensoft]#getsebool -a | egrep ‘^httpd’

httpd_can_network_connect –> off
httpd_can_network_connect_db –> off

ถ้าเป็น off คือ selinux ยังไม่ยอมให้ remote ต่อให้เรา Grant User root@% ใน MySQL แล้วก็ตาม ให้เรา setsebool ให้เป็น On ด้วยคำสั่ง
[root@khonkaensoft]#setsebool -P httpd_can_network_connect true
[root@khonkaensoft]#setsebool -P httpd_can_network_connect_db true
or
[root@khonkaensoft]#setsebool -P httpd_can_network_connect 1
[root@khonkaensoft]setsebool -P httpd_can_network_connect_db 1

ป. ลิง ทดสอบใน RHEL6 นะแจ๊ะ

อย่าลืมนะครับถ้าใช้ Firewall Iptables ก็ Add rule ซะ

iptables -A INPUT -p tcp -s 58.137.22.22 –dport 3306 -j ACCEPT  // -s source (your IP Address)  -d destination
iptables -A INPUT -p tcp -s 127.0.0.1 –dport 3306 -j ACCEPT   // allow localhost
iptables -A INPUT -p tcp –dport 3306 -j DROP  // drop any

selinux-remote-mysql