# aptitude install fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# vi /etc/fail2ban/jail.local
...
[DEFAULT]
ignoreip = 127.0.0.1 # เป็น ip ที่จะไม่มีการ Ban โดยเด็ดขาด
bantime = 1440 # เป็นเวลาที่จะ Ban IP ครับ ค่าเริ่มต้น 600 วินาที = 10 นาที
# น้อยไปก็เปลี่ยนได้ครับ 1440 วินาที = 1 วัน
# หรือ -1 สำหรับการ Ban IP ตลอดไป จนกว่าจะ Reboot
maxretry = 3 # ให้ผู้ไม่ประสงค์ดี หรือแม้แต่เราเอง ลองได้กี่ครั้ง
...
[ssh-ddos]
enabled = true # ผมเปลี่ยนจาก false เป็น true เพื่อเพิ่มการตรวจสอบ SSH DoS
port = ssh, sftp
filter = sshd-ddos
...
แก้ไขเสร็จ สั่งเริ่ม Service ใหม่
# /etc/init.d/fail2ban restartผลคือ
# cat /var/log/fail2ban.log ... 2007-09-17 18:33:15,860 fail2ban.actions: WARNING [ssh] Ban 125.24.142.28 2007-09-17 18:34:25,008 fail2ban.actions: WARNING [ssh] Ban 60.191.41.108 ...ความสามารถของ fail2ban ยังไม่หมดแค่การตรวจสอบ และปิดกั้นสำหรับ SSH เท่านั้น ยังมีอีกหลาย Service ที่ fail2ban สามารถเฝ้ายามให้ได้ ไม่ว่าจะเป็น apache, vsftpd, proftpd, postfix, couriersmtp, named (DNS) เป็นต้น
หลังจากวันนี้ไป... ใครจะมาโจมตีก็ทำได้ยากซักหน่อยละครับผม :)
#####################################################################
ตัวโปรแกรม fail2ban
มันจะเป็นโปรแกรมจำพวกป้องกันการพยายาม login
เข้าใช้งานระบบจากผู้ไม่ประสงค์ดี หลักการง่ายๆสมมติเครื่อง server
ของเราเปิดให้มีการ secure shell เข้ามาใช้งานจากภายนอกได้
ถ้าเราไม่ลงโปรแกรมจำพวก fail2ban สิ่งที่อาจจะเกิดขึ้น คือ
วันดีคืนดีอาจจะโดน hack เข้ามาใช้งาน server ได้ โดย hacker
มันอาจจะใช้โปรแกรมสุ่ม username,password ช่วยในการเจาะระบบ
ถ้าเผอิญดวงตก hacker มันสามารถได้ username,password เราไป
ก็เป็นอันว่าได้อุทาน "เอ้า! ซวยล่ะสิ" แน่ๆเลย
ก็เพราะยังงี้แหละเลยมีคนคิดโปรแกรมแบน ip ขึ้นมา
* option ในส่วนต่างๆที่สำคัญมีดังนี้
maxfailures = 5 ---> ในส่วนนี้หมายถึง connect แล้ว fail ครบ 5 ครั้งแล้วให้แบน ip(ของผมตั้งไว้ 2)
bantime = 600 ---> หมายถึงให้แบนเป็นเวลา 600 วินาที (ของผมกรอกเป็นหมื่นเลย)
ignoreip = 192.168.20.0/24 ---> หมายถึง ip ในวงนี้ไม่ต้องไปสนใจแบนเพราะว่าอยู่ใน lan วงเดียวกัน(ช่างมันละกันฟะ หยวนๆ)
** ถ้าต้องการให้มันส่ง mail มาแจ้งเตือนด้วยก็ให้ไปที่หัวข้อ [mail] แล้วแก้ดังนี้
enable = true
host = mail.sipa.or.th ---> เครื่องที่จะใช้ส่ง mail(อันนี้ตามสะดวกครับ ใครใช้อันไหน)
port = 25 ---> port ของ mail
#####################special option add by rooney##################
smtpuser = rooney@sipa.or.th ---> กรอก email address ของเราลงไป
smtppassword = abcd ---> กรอก password ของ email address เราลงไปครับ
###########################################################
to = rooney@hotmail.com ---> ให่ส่ง mail แจ้งเตือนไปที่ rooney@hotmail.com
step3 : $sudo /etc/init.d/fail2ban restart ---> restart สักรอบก่อนใช้งาน
*ส่วนข้างล่างนี้ คือ เนื้อหาใน mail ที่ fail2ban ส่งมาถึงผมเวลาเจออะไรไม่ชอบมาพากลครับ
Hi,
The IP 125.18.166.180 has just been banned by Fail2Ban after
3 attempts against ssh.
Here are more information about 125.18.166.180:
% [whois.apnic.net node-2]
% Whois data copyright terms http://www.apnic.net/db/dbcopyright.html
inetnum: 125.18.166.0 - 125.18.166.255
netname: ANARFIN2187-srt
descr: ANAR FIN ENGINEERS PVT. LTD
descr: 905,World Trade Center
descr: Ring Road
descr: Surat
descr: Gujarat
descr: India
descr: Contact Person: Mr. Umesh
descr: Email: urn@yahoo.co.in
descr: Phone:null
country: IN
admin-c: NA40-AP
tech-c: NA40-AP
mnt-by: MAINT-IN-BBIL
status: ASSIGNED NON-PORTABLE
changed: techsupport@bharti.com 20060405
source: APNIC
route: 125.18.166.0/24
descr: BHARTI-IN
descr: Bharti Tele-Ventures Limited
descr: Class A ISP in INDIA .
descr: 234 , OKHLA PHASE III ,
descr: NEW DELHI
descr: INDIA
country: IN
origin: AS9498
mnt-by: MAINT-IN-BBIL
changed: techsupport@bharti.com 20050812
source: APNIC
person: Network Administrator
nic-hdl: NA40-AP
e-mail: techsupport@bharti.com
address: Bharti Infotel Ltd.
address: ISP Division - Long Distance - Telesonic
address: 234 ,
address: Okhla Ind. Area,
address: Phase III
address: New Delhi,
address: INDIA-110020
phone: +91-11- 5171 0131
fax-no: +91-11- 5171 1050
country: IN
changed: techsupport@bharti.com 20040911
mnt-by: MAINT-IN-BBIL
source: APNIC
Regards,
Fail2Ban
* นี่ก็เนื้อหาใน email อีกฉบับที่ส่งมาถึงผมครับ
Hi,
The jail apache-noscript has been started successfuly.
Regards,
Fail2Ban
เนื่องด้วย fail2ban นอกจากจะมอนิเตอร์ดูการ access เข้ามายังเครื่องได้แล้ว มันยังสามารถมอนิเตอร์ดู process ของโปรแกรมได้อีกด้วยนะครับ
แต่ว่ามอนิเตอร์ได้เป็นบางโปรแกรมนะครับ ถ้าอยากจะให้มันมอนิเตอร์โปรแกรมใดก็ให้ไปตั้งค่า enable = true ตรงโปรแกรมนั้นเป็นอันใช้ได้
***เรื่องเล่าจากการใช้งานจริง***
จากการที่ได้ทดลองใช้งานดูนะครับ(ผมตั้งค่า maxfailures = 2)
1. กรณีเครื่องที่เราใช้เป็น client เป็น linux ถ้าเกิดเราทำการ ssh ไปยังเครื่องอื่นแล้วกรอก password ผิดครบ 3 ครั้ง(3 ครั้งถ้วนๆไม่ขาดไม่เกิน) จะโดนเตะออกจากระบบ ไม่ว่าเครื่องที่เปิดให้ login จะลง fail2ban หรือเปล่า
rooney@rooney:~$ ssh root@192.168.20.182
root@192.168.20.182's password:
Permission denied, please try again.
root@192.168.20.182's password:
Permission denied, please try again.
root@192.168.20.182's password:
Permission denied (publickey,password).
rooney@rooney:~$
* ปัญหาอยู่ตรงนี้ครับ คือ ผมตั้งค่า maxfailures ไว้ที่ 2 ครั้ง ซึ่งที่ผมเข้าใจผมคิดว่าพอกรอกรหัสผิดครบ 2 ครั้งแล้ว จะโดนแบนทันทีไม่มีการขึ้น prompt มาให้กรอก password ใดๆทั้งสิ้น แต่พอเอาเข้าจริงพอกรอกผิดไป 2 ครั้งมันก็ยังดันขึ้น prompt มาให้กรอก password อีก ไอ้เราก็คิดต่อว่า "อ๋อ มันคงขึ้นprompt มาให้กรอกเฉยๆแต่คงเข้าไม่ได้เพราะน่าจะโดนแบนไม่ให้เข้าตั้งกะผิดครั้งที่ 2 แล้วแหงมๆ" แต่พอเอาเข้าจริง พอกรอก 2 ครั้งแรกผิด แต่ว่ากรอกครั้งที่ 3 ถูก ก็ดัน login เข้าเครื่องได้ซะงั้น เล่นเอาอึ้งกิมกี่ไปชั่วขณะ พอหลังจากมีเวลาทำใจสักพักก็เลยรู้ว่า "ฮั่นแน่! login ได้แต่ว่ามันใช้งานไม่ได้นี่หว่า"