วันพุธที่ 17 ธันวาคม พ.ศ. 2557

การดำเนินการหลังติดตั้ง CentOS 7

สำหรับลูกค้า Cloud server ที่เลือกใช้งาน CentOS 7 แบบ minimal configuration เราขอแนะนำขั้นตอนที่ควรดำเนินการเพื่อความปลอดภัยในการใช้งาน หลังการ build virtual machine (cloud server) ดังนี้
User management
user : root เป็น user หลักที่จะได้หลังจากที่มีติดตั้ง CentOS เพื่อนำใช้ในการดำเนินการแก้ไขติดตั้งส่วนต่างๆ และเป็น user มีสิทธิ์ในการจัดการสูงสุดของระบบ ดังนั้นเพื่อความปลอดภัยในการใช้งาน เราจึงควรสร้าง user อื่นๆ เพื่อทำหน้าที่ในส่วนนี้แทน และใช้งาน user: root ในกรณีที่จำเป็นเท่านั้น
เริ่มต้นจาก การเข้าสู่ระบบด้วย user: root และสร้าง user ใหม่ รวมทั้งกำหนด password สำหรับ user ที่สร้างขึ้นใหม่ โดยควรกำหนด password ให้ค่อนข้างยากต่อการคาดเดา เช่น มีจำนวน 8 ตัวขึ้นไป, ประกอบด้วยตัวอักษรพิมพ์ใหญ่ พิมพ์เล็ก ตัวเลข และ อักขระพิเศษ
1# adduser somchai
2# password somchai
หลังจากนั้น เราจะกำหนดสิทธิของ user ที่สร้างขึ้นใหม่ด้วย sudo เพื่อให้สามารถดำเนินการในส่วนต่างๆ แทน user :root ได้
1#visudo
เพิ่มสิทธ์ ของ user: somchai ต่อจากบรรทัดของ “root ALL=(ALL) ALL”
1somchai ALL=(ALL:ALL) ALL
บันทึกและออกจากหน้าคำสั่ง
ทดสอบ login ด้วย user: somchai ผ่านหน้า console และ run คำสั่ง เพื่อทดสอบสิทธ์การใช้งาน เช่น
1$ sudo iptables –L
Configure SSH
หลังจากที่เราได้สร้าง user ใหม่แล้ว ต่อไปเราจะเริ่มแก้ไขส่วนต่างๆ ของระบบ จาก user ที่สร้างขึ้น โดยเริมจากกำหนดสิทธิ์ ในการ remote เข้ามายัง server รวมทั้งปิดสิทธิ์การ remote ของ user: root
1$ sudo vi /etc/ssh/sshd_config
แก้ไขจาก
1#Port 22 > Port 9009
2 
3#PermitRootLogin yes > PermitRootLogin no
บันทึกและออกจากหน้าคำสั่ง
สามารถตรวจสอบความถูกต้อง ของไฟล์ที่แก้ไขได้ตามคำสั่งด้านล่าง
1$ sudo sshd -t
ทำการ restart SSH service (เพื่อความแน่ใจ ท่านอาจทำกระบวนการนี้ผ่าน console เพื่อไม่ให้ติดปัญหา ssh ถูก block จาก firewall)*
1$ sudo systemctl reload sshd.service
Basic Firewall
สำหรับ CentOS นั้น จะมี firewall มาให้ด้วยแล้ว คือ firewalld และส่วนที่ใช้ในการกำหนดกฎและค่าต่างๆ คือ firewall-cmd ในบทความนี้เราจะกล่าวถึงการปรับค่าของ firewall จากค่าที่ได้มาจากการติดตั้ง server เท่านั้น โดยเมื่อเราสั่ง start service แล้ว เราจะสามารถกำหนดกฏ หรือ port ต่างๆ เพื่อการใช้งานได้
สั่งให้เริ่มต้นการทำงาน
1$ sudo systemctl start firewalld
ส่วนแรกคือ การเปิดการใช้งานให้สามารถ remote มายัง server คือ SSH service
สำหรับ SSH service นั้น หากยังไม่มีการแก้ไข port ของ SSH server สามารถ enable service ได้ด้วยคำสั่ง
1# sudo firewall-cmd --permanent --add-service=ssh
แต่หากมีการเปลี่ยนแปลง SSH port (ซึ่งก่อนหน้านี้เราได้มีการเปลี่ยนแปลงค่าดังกล่าวแล้ว) สามารถดำเนินการกำหนด port ใหม่ได้ด้วยคำสั่ง
1$ sudo firewall-cmd --permanent --remove-service=ssh
2$ sudo firewall-cmd --permanent --add-port=9009/tcp
หากเราต้องการ ไปใช้งานส่วนอื่น เช่น Mail server หรือ Web server สามารถเพิ่มการใช้งานได้
1$ sudo firewall-cmd --permanent --add-service=smtp
2$ sudo firewall-cmd --permanent --add-service=http
ตัวอย่าง การตรวจสอบ service ต่างๆ ที่สามารถเรียกใช้งานได้
1$ sudo firewall-cmd --get-services
เมื่อกำหนดค่า firewall เรียบร้อย สามารถตรวจสอบรายละเอียดส่วนที่มีการแก้ไขได้จาก
1$ sudo firewall-cmd --permanent --list-all
และสั่ง reload ค่าดังกล่าวเพื่อใช้งาน พร้อมทั้งกำหนดให้ service มีเริ่มทำงานตั้งแต่มีการ start เครื่อง
1$ sudo firewall-cmd --reload
2$ sudo systemctl enable firewalld
Time zones
ค่า Time zones โดยปกติ จะมีการกำหนดตั้งแต่ช่วงการติดตั้งแล้ว แต่เราควรตรวจสอบเวลาและ Time zones ให้ถูกต้องอีกครั้งก่อนการเริ่มต้นใช้งาน
1$ sudo timedatectl list-timezones
2$ sudo timedatectl set-timezone Asia/Bangkok
3$ sudo timedatectl
Network Time Protocol
เมื่อกำหนดค่า Time zones ถูกต้องแล้ว ต่อไปเราจะทำการตั้งค่า การ sync ค่าเวลาจาก server อื่น เพื่อให้มีเวลาการทำงานที่ถูกต้องและตรงกัน ซึ่งสำหรับ Service ที่นำมาใช้งานคือ ntp ซึ่ง สามารถติดตั้งได้จาก default repositories ของ CentOS
1$ sudo yum install ntp
2$ sudo systemctl start ntpd
3$ sudo systemctl enable ntpd
Keep OS up-to-date (patching)
เราควรมีการ update package ต่างๆ ให้เป็น version ใหม่อยู่อย่างสม่ำเสมอ เพื่อป้องกันช่องโหว่งที่อาจจะพบได้ในบาง version จึงควรรันคำสั่งนี้เป็นระยะๆ (สัปดาห์ละครั้งเป็นต้น)
1$ sudo yum update
เคดิตจากเว็บ  http://www.hostpacific.com/basic-centos7-configuration/