วิธีลง CSF ใน Ubuntu บน EC2

  1. วิธีลง CSF ใน Ubuntu บน EC2
  2. ตั้งค่าและเปิดใช้งาน Web UI สำหรับ CSF
  3. รวมคำสั่งและวิธีการตั้งค่า CSF ทั้งโดย command line และตั้งค่าในไฟล์
  4. ตั้งค่า CSF เพื่อความปลอดภัยขั้นพื้นฐาน
  5. ตั้งค่า CSF เพื่อป้องกัน DDOS Attack เบื้องต้น
  6. วิธีบล๊อคหรืออนุญาตการเชื่อมต่อเป็นรายประเทศ ด้วย CSF Country Code Deny
  7. ใช้ CSF&LFD ป้องกันการ Brute force ไปยังแอพพลิเคชั่นบนเซิฟเวอร์

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

สำหรับการใช้งานบน 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 เซิฟเวอร์ภายนอก สามารถดูวีธีการได้ที่โพส

ตั้งค่า 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 เสร็จแล้วนั้น เรายังต้องทำการตั้งค่าอื่นๆเพื่อให้ไฟร์วอลล์ทำงานได้อย่างมีประสิทธิภาพ เพิ่มความปลอดภัยของเซิฟเวอร์ หรือเพื่อให้ใช้งานได้สะดวกขึ้น เช่น

วิธีบล๊อคหรืออนุญาตการเชื่อมต่อเป็นรายประเทศ ด้วย CSF Country Code Deny

วิธีการตั้งค่าเพื่อบล๊อคหรืออนุญาตการเชื่อมต่อจากประเทศใดๆเข้ามายังเซิฟเวอร์ หรือบางพอร์ทของเซิฟเวอร์
Read More