CSF หรือชื่อเต็มคือ ConfigServer Security & Firewall เป็นโปรแกรมไฟร์วอลล์แบบ Stateful Packet Inspection (SPI) สำหรับลงในเซิฟเวอร์ลินุกส์ มีจุดเด่นคือ
- ทำการคอนฟิก ตั้งค่าความปลอดภัยพื้นฐานได้ง่ายและครอบคลุม
- มีฟังก์ชั่นสำหรับให้คำแนะนำและตรวจสอบช่องโหว่ความปลอดภัยพื้นฐานของเซิฟเวอร์
- ตั้งค่าการบล๊อคหรือฟิลเตอร์ได้หลายหลาย ตั้งแต่ระดับพอร์ท ไอพีแอดเดรส หรือประเทศ
- มี Login Failure Daemon (LFD) ป้องกัน Brute Force Attack คอยตรวจจับการลอคอินผิด แจ้งเตือนและบล๊อคผู้บุกรุกหากมีการลอคอินผิดมามากกว่าจำนวนครั้งที่กำหนด
- มีระบบแจ้งเตือนมากมาย ทำให้รู้เท่าทันถึงความผิดปกติในเซิฟเวอร์ เช่น เตือนเมื่อไฟล์หรือโฟลเดอร์มีความเปลี่ยนแปลงที่ผิดสังเกต หรือมีไฟล์ที่น่าสงสัย หรือเมื่อมีคำสั่งที่ทำงานแล้วใช้ทรัพยากรเครื่องมากกว่าปกติฯ
- ใช้งานง่ายด้วย Web UI สำหรับตั้งค่าและดูข้อมูลต่างๆของไฟร์วอลล์
เตรียมความพร้อมเซิฟเวอร์
เซิฟเวอร์ที่จะลงเป็นเซิฟเวอร์บน AWS EC2 ลงระบบปฎิบัติการ Ubuntu เวอร์ชั่น 18 ซึ่งโดยปกติ Ubuntu นั้นจะมีไฟร์วอลล์ที่ลงมาอยู่แล้ว คือ ufw เราจึงต้องปิดไฟร์วอลล์นั้นทิ้งไปก่อน ด้วยคำสั่ง
sudo ufw disable
จากนั้นก็เตรียมความพร้อมของ apt ด้วยการอัพเดทข้อมูลแพคเกจเป็นเวอร์ชั่นล่าสุด ด้วยคำสั่ง
sudo apt-get update -y
sudo apt-get upgrade -y
ดำเนินการลง csf
เมื่อเซิฟเวอร์พร้อมแล้วก็ทำการลง csf ด้วยคำสั่ง
cd /tmp
wget http://download.configserver.com/csf.tgz
tar xzf csf.tgz
cd csf
sudo sh install.sh
เมื่อลงเรียบร้อยแล้ว จะปรากฎข้อความ “Installation Completed” จากนั้นเราสามารถทดสอบไฟร์วอลล์ได้ด้วยคำสั่ง
sudo perl /usr/local/csf/bin/csftest.pl
ซึ่งหากทุกอย่างเรียบร้อยดีจะได้ผลลัพท์ดังนี้
Testing ip_tables/iptable_filter...OK
Testing ipt_LOG...OK
Testing ipt_multiport/xt_multiport...OK
Testing ipt_REJECT...OK
Testing ipt_state/xt_state...OK
Testing ipt_limit/xt_limit...OK
Testing ipt_recent...OK
Testing xt_connlimit...OK
Testing ipt_owner/xt_owner...OK
Testing iptable_nat/ipt_REDIRECT...OK
Testing iptable_nat/ipt_DNAT...OK
RESULT: csf should function on this server
ตั้งค่าเบื้องต้นและเปิดใช้งาน csf
โดยเริ่มต้น เมื่อลง csf แล้วระบบจะอยู่ในโหมด testing คือยังไม่ได้ทำงานจริง เพื่อให้เรามีเวลาตั้งค่าต่างๆให้ถูกต้องเหมาะสม โดยแก้ไขไฟล์ csf.conf ด้วยคำสั่ง
sudo vi /etc/csf/csf.conf
โดยค่าที่สำคัญๆที่ควรแก้ไขในไฟล์ config เช่น
# ปิดโหมดทดสอบ
TESTING = "0"
# จำกัดการเข้าถึง system log file
RESTRICT_SYSLOG = "3"
# ตั้งค่าพอร์ทที่ต้องการเปิด ตามต้องการ
# ** หมายเหตุ:ต้องไปเปิดพอร์ทที่ต้องการใช้ใน AWS EC2 Security group ด้วย **
# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"
# Allow outgoing TCP ports
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"
# Allow incoming UDP ports
UDP_IN = "20,21,53,80,443"
# Allow outgoing UDP ports
UDP_OUT = "20,21,53,113,123"
# อนุญาตให้ ping เข้ามายังเซิฟเวอร์ได้
ICMP_IN = "1"
สำหรับการใช้งานบน AWS EC2 เมื่อเปิดพอร์ทบนเซิฟเวอร์ไฟร์วอลล์แล้ว อย่าลืมเปิดพอร์ทที่ Security Group ใน AWS ด้วย
เมื่อตั้งค่าเรียบร้อยแล้ว ให้ทำการรีสตาร์ท csf ด้วยคำสั่ง
sudo csf -r
หากรีสตาร์ได้โดยไม่มี Error อะไรก็เป็นอันเรียบร้อยสำหรับการลง CSF บนเซิฟเวอร์ Ubuntu
หมายเหตุ: ข้อความ Warning และวิธีแก้ไข
ข้อความ Warning LWP
*WARNING* URLGET set to use LWP but perl module is not installed, fallback to using CURL/WGET
แก้ไขโดยการลง libwww-perl ด้วยคำสั่ง
sudo apt-get install libwww-perl -y
ข้อความ Warning Sendmail
*WARNING* Binary location for [SENDMAIL] [/usr/sbin/sendmail] in /etc/csf/csf.conf is either incorrect, is not installed or is not executable
*WARNING* Missing or incorrect binary locations will break csf and lfd functionality
หากเซิฟเวอร์ของเราไม่ได้ลงระบบอีเมลล์ หรือลง Sendmail เอาไว้ จะทำให้ csf ไม่สามารถส่งอีเมลล์แจ้งเตือนออกไปได้ เราจึงต้องทำการตั้งค่าการส่งอีเมลล์ โดยสามารถทำได้หลายวิธี หนึ่งในนั้นก็คือการลง ssmtp เพื่อส่งอีเมลล์โดยผ่าน SMTP เซิฟเวอร์ภายนอก สามารถดูวีธีการได้ที่โพส
ลง sSMTP สำหรับเชื่อมต่อกับเซิฟเวอร์ภายนอกเพื่อส่งอีเมลล์บน Ubuntu
ตั้งค่า syslog สำหรับ Ubuntu 11.04 (Natty Narwhal) ขึ้นไป
ค่า default ของไฟล์ log ของระบบที่ csf ตั้งมานั้นจะเป็น /var/log/messages แต่ใน Ubuntu เวอร์ชั่น 11.04 ขึ้นไปได้เปลี่ยนเป็นไฟล์ /var/log/syslogs ดังนั้นจะต้องไปไล่เปลี่ยนค่าดังกล่าวในไฟล์ csf.conf ดังนี้
sudo vim /etc/csf/csf.conf
แล้วแก้ค่าเดิมที่เป็น /var/log/messages เป็น /var/log/syslog
SU_LOG = "/var/log/syslog"
..
FTPD_LOG = "/var/log/syslog"
..
IPTABLES_LOG = "/var/log/syslog"
SUHOSIN_LOG = "/var/log/syslog"
BIND_LOG = "/var/log/syslog"
SYSLOG_LOG = "/var/log/syslog"
หมายเหตุ: หากใช้ vim สามารถใช้คำสั่ง :%s/\/var\/log\/messages/\/var\/log\/syslog/g
เพื่อ replace ได้
จากนั้นทำการรีสตาร์ท csf และ lfd อีกครั้งก็เป็นอันเสร็จเรียบร้อย
sudo csf -ra
การตั้งค่าอื่นๆ ในการใช้งาน CSF
เมื่อลง csf&ldf เสร็จแล้วนั้น เรายังต้องทำการตั้งค่าอื่นๆเพื่อให้ไฟร์วอลล์ทำงานได้อย่างมีประสิทธิภาพ เพิ่มความปลอดภัยของเซิฟเวอร์ หรือเพื่อให้ใช้งานได้สะดวกขึ้น เช่น