ดาวโหลด บทความ สถิติผู้ใช้ เกี่ยวกับเรา ติดต่อเรา
HomeCentOS

วิธีใช้ CSF Firewall

วิธีติดตั้ง
cd /usr/src
rm -fv csf.tgz
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
หลังจากติดตั้งแล้วให้ตั้งค่า csf

1. TESTING = 0
2. RESTRICT_SYSLOG = 3
3. Reporting Settings ตั้งค่า LF_ALERT_TO เป็นอีเมล์ของเรา
4. Login Failure Blocking and Alerts

LF_SELECT = 0 หมายความว่า  ถ้ามีคน login ไม่สำเร็จ ให้ block ip นั้น  เช่น ใส่รหัสผ่านอีเมล์ผิด จะเช็คเมล์ไม่ได้ และเปิดดูเว็บไซท์ไม่ได้
LF_SELECT = 1 หมายความว่า  ถ้ามีคน login ไม่สำเร็จ ให้ block เฉพาะบริการที่ login ไม่สำเร็จ เช่น ใส่รหัสผ่านอีเมล์ผิด  จะเช็คเมล์ไม่ได้ แต่ยังเปิดดูเว็บไซท์ได้

ที่เราสนใจคือ
LF_SSHD =  5, LF_SSHD_PERM = 1  ถ้ามีคน ssh เข้า server เราไม่สำเร็จถึง 5 ครั้ง ให้ block ip นั้นตลอดไปเลย
LF_FTPD
LF_SMTPAUTH คือ login ผ่าน outlook เพื่อส่งเมล์ออก
LF_POP3D  คือ login ผ่าน outlook เพื่อเช็ค inbox
LF_IMAPD  คือ login  ผ่าน webmail

5. OS Specific Settings

คือ  log file ต่างๆ หากตั้งค่าไม่ถูกต้อง ข้อ 4 จะไม่ทำงาน
SSHD_LOG = /var/log/secure
FTPD_LOG = /var/log/vsftpd.log
SMTPAUTH_LOG = /var/log/dovecot.log
POP3D_LOG = /var/log/dovecot.log
IMAPD_LOG = /var/log/dovecot.log

6. หลังจากตั้งค่าตามนี้แล้ว ผมลอง ftp ผิดไป 2 ครั้ง ปรากกว่า CSF ไม่ block
หลังจากอ่านไปอ่านมา ผมพบว่า

ปรกติ แต่ละ user จะเขียน log file ของตัวเอง และเขียน log บางส่วนไปที่ syslog ของ server
ค่า RESTRICT_SYSLOG = 3  คือการอนุญาติบาง user เท่านั้นที่มีสิทธิ์เขียน log ไปที่ syslog ได้
จากหน้าหลัก CSF ให้คลิกปุ่ม  LFD Syslog User ที่อยุ่ล่างสุด
แล้วเพิ่มคำว่า  vsftpd แล้วกดบันทึก
จากนี้ไป user vsftpd จะสามารถเขียน log ไปที่ syslog ได้
และเมื่อ CSF อ่าน syslog แล้วเจอบรรทัด  ftp login ไม่สำเร็จ  ก้จะ block ftp  ตามที่เราตั้งค่าไว้

7. ลอง pop3 imap ผิด 2ครั้ง ปรากฏว่าไม่ block
เลยเปลี่ยนค่านี้
POP3D_LOG = /var/log/dovecot.log
IMAPD_LOG = /var/log/dovecot.log
(ของเดิม /var/log/dovecot/dovecot.log ไม่ถูก)

8. ในกรณีทำข้อ 7 แล้ว ยังไม่ block เราจะต้องไปตั้งค่า custom trigger แทน

nano /etc/csf/regex.custom.pm
if (($lgfile eq $config{POP3D_LOG}) and ($line =~ /,(\S+),\S+\): Password mismatch/)) { return ("Failed POP3 login from",$1,"POP3_fail","5","110,143,993,995","600"); }
if (($lgfile eq $config{FTPD_LOG}) and ($line =~ /FAIL LOGIN: Client \"(\S+)\"/)) { return ("Failed FTP login from",$1,"vsftpd_fail","5","20,21","1"); }
if (($globlogs{CUSTOM1_LOG}{$lgfile}) and ($line =~ /(\S+) failed to login/)) { return ("Login attempt to VestaCP from",$1,"VESTAlogin_fail","5","8083","1"); }
if (($globlogs{CUSTOM2_LOG}{$lgfile}) and ($line =~ /Login failed for \S+ against localhost from (\S+)\(/)) { return ("Failed Roundcube login from",$1,"roundcube_fail","5","1","600"); }
if (($globlogs{CUSTOM3_LOG}{$lgfile}) and ($line =~ /\[(\S+)\]: 535 Incorrect/)) { return ("Failed SMTP login from",$1,"SMTP_fail","5","25,465,587","600"); }
nano /etc/csf/csf.conf
HTACCESS_LOG = "/var/log/httpd/error_log"
MODSEC_LOG = "/var/log/httpd/error_log"
SSHD_LOG = "/var/log/secure"
SU_LOG = "/var/log/secure"
FTPD_LOG = "/var/log/vsftpd.log"
SMTPAUTH_LOG = "/var/log/dovecot.log"
POP3D_LOG = "/var/log/dovecot.log"
IMAPD_LOG = "/var/log/dovecot.log"
IPTABLES_LOG = "/var/log/messages"
SUHOSIN_LOG = "/var/log/messages"
BIND_LOG = "/var/log/messages"
SYSLOG_LOG = "/var/log/messages"
WEBMIN_LOG = "/var/log/secure"

CUSTOM1_LOG = "/var/log/vesta/auth.log"
CUSTOM2_LOG = "/var/log/roundcubemail/errors.log"
CUSTOM3_LOG = "/var/log/exim/reject.log"
หมายเหตุ นี่เป็นแนวทางในการตั้งค่าเฉยๆ  server แต่ละเครื่อง เก็บ log file  ไว้ต่างกัน
และ version ของ log file ก็ต่างกัน
ทำให้เราต้องเขียน custom trigger เอง
เพื่อให้แน่ใจว่า CSF จะ Block คนที่กรอกรหัสผ่านผิดใน Service สำคัญต่างๆ
คือ SSH, FTP, POP3, IMAP, SMTP, Webmail

หลังจากตั้งค่าเสร็จแล้ว  ก็ restart csf + lfd

19 ก.ค. 62
© 2000 - 2024 palthai.com. All rights reserved.