มาเริ่มติดตั้ง Fail2ban กันก่อนด้วยคำสั่ง
sudo apt-get update
sudo apt-get install fail2ban
ทำการตั้งค่า Fail2Ban ด้วยการคัดลอกไฟล์ jail.conf แล้วตั้งชื่อใหม่เป็น jail.local ด้วยคำสั่ง
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
จากนั้นทำการแก้ไขไฟล์ jail.loca ด้วยโปรแกรมที่ถนัดเช่น nano ด้วยคำสั่ง
sudo nano /etc/fail2ban/jail.local
ทำการแก้ไขดังนี้
Bantime คือเวลาที่จะทำการห้ามไม่ให้ User เข้าใช้งานหลังตรวจพบการ Brute Force มีหน่วยเป็นวินาที โดยค่ามาตราฐานจะกำหนดมาที่ 600 วินาทีหรือ 10 นาที
bantime = 600
Findtime และ Maxretry คือจำนวนครั้งที่มีการเดารหัสผ่านในช่วงเวลาที่กำหนด โดย Findtime จะเป็นเวลาที่กำหนดมีหน่วยเป็นวินาที และ Maxretry คือจำนวนครั้งในการใส่รหัส โดยค่ามาตารฐานจะกำหนด
findtime = 600
maxretry = 3
หมายถึงสามารใส่รหัสผ่านได้สามครั้งใน 10 นาทีถ้าเกินจากนี้จะถือเป็นการ Brute Force
ตั้งค่าตรวจสอบจาก Protocol โดยการใส่ค่า enabled = true ในส่วนของ Protocol ที่ต้องการใน How-To ครั้งนี้จะใช้ SSH ทำการตั้งค่าดังนี้
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3
เมื่อแก้ไขเสร็จแล้วทำการบันทึกไฟล์และทำการ Restart Fail2ban ด้วยคำสั่ง
sudo service fail2ban restart
ติดตั้ง SSH Sendmail Iptables เพื่อทำการทดสอบด้วยคำสั่ง
sudo apt-get install openssh-server iptables-persistent
ทำการตั้งค่า Iptables เพื่อการทดสอบด้วยคำสั่งดังนี้
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -j DROP
ตรวจสอบการตั้งค่า Iptables ด้วยคำสั่ง
sudo iptables –S
จะได้ค่าดังนี้
-P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N fail2ban-ssh -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -j DROP -A fail2ban-ssh -j RETURN
สังเกตว่าจะมี
-N fail2ban-ssh -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh -A fail2ban-ssh -j RETURN
ปรากฏขึ้นใน Iptables แสดงว่า Fail2ban พร้อมใช้งาน
ทดสอบด้วยการ SSH ด้วยชื่อที่ไม่มีอยู่ใน Server เช่น cake ด้วยคำสั่ง
ssh cake@172.21.14.88
หรือลองใช้โปรแกรม SSH client อื่นๆ
ทดลองใส่รหัส 3 ครั้งจะพบว่าไม่สามารถใส่รหัสได้อีกและเมื่อใช้คำสั่ง
sudo iptables –S
ก็จะพบว่า Fail2ban มีการ Reject IP Address ที่เข้าข่ายการทำ Brute Force
-A fail2ban-ssh -s 172.21.10.171/32 -j REJECT --reject-with icmp-port-unreachable -A fail2ban-ssh -s 172.21.14.88/32 -j REJECT --reject-with icmp-port-unreachable