มาเริ่มติดตั้ง 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

Comments are closed.