วิธีการติดตั้ง Fail2Ban เพื่อปกป้อง SSH บน CentOS/RHEL 8
Fail2ban เป็นเครื่องมือป้องกันการบุกรุกแบบโอเพ่นซอร์สและใช้กันอย่างแพร่หลายฟรี ซึ่งจะสแกนไฟล์บันทึกเพื่อหาที่อยู่ IP ที่แสดงสัญญาณที่เป็นอันตราย เช่น รหัสผ่านล้มเหลวมากเกินไป และอื่นๆ อีกมากมาย และจะแบนมัน (อัปเดตไฟร์วอลล์ กฎในการปฏิเสธที่อยู่ IP) โดยค่าเริ่มต้น ตัวกรองจะมาพร้อมกับตัวกรองสำหรับบริการต่างๆ รวมถึง sshd
อ่านเพิ่มเติม: การตั้งค่าเซิร์ฟเวอร์เริ่มต้นด้วย CentOS/RHEL 8
ในบทความนี้ เราจะอธิบายวิธีการติดตั้งและกำหนดค่า fail2ban เพื่อปกป้อง SSH และปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ SSH จากการโจมตีแบบ Brute Force บน CentOS/RHEL 8.
การติดตั้ง Fail2ban บน CentOS/RHEL 8
แพ็คเกจ fail2ban ไม่ได้อยู่ในที่เก็บอย่างเป็นทางการ แต่มีอยู่ในที่เก็บ EPEL หลังจากเข้าสู่ระบบของคุณแล้ว ให้เข้าถึงอินเทอร์เฟซบรรทัดคำสั่ง จากนั้นเปิดใช้งานพื้นที่เก็บข้อมูล EPEL บนระบบของคุณดังที่แสดง
dnf install epel-release
OR
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
หลังจากนั้น ให้ติดตั้งแพ็คเกจ Fail2ban โดยเรียกใช้คำสั่งต่อไปนี้
dnf install fail2ban
การกำหนดค่า Fail2ban เพื่อปกป้อง SSH
ไฟล์การกำหนดค่า fail2ban อยู่ในไดเรกทอรี /etc/fail2ban/ และตัวกรองจะถูกจัดเก็บไว้ใน /etc/fail2ban/filter.d/ ไดเร็กทอรี (ไฟล์ตัวกรองสำหรับ sshd คือ /etc/fail2ban/filter.d/sshd.conf)
ไฟล์การกำหนดค่าส่วนกลางสำหรับเซิร์ฟเวอร์ failed2ban คือ /etc/fail2ban/jail.conf อย่างไรก็ตาม ไม่แนะนำให้แก้ไขไฟล์นี้โดยตรง เนื่องจากไฟล์อาจถูกเขียนทับหรือปรับปรุงในกรณีของแพ็คเกจ อัพเกรดในอนาคต
ขอแนะนำให้สร้างและเพิ่มการกำหนดค่าของคุณในไฟล์ jail.local หรือไฟล์ .conf
แยกต่างหากภายใต้ /etc/fail2ban/jail d/ ไดเร็กทอรี โปรดทราบว่าพารามิเตอร์การกำหนดค่าที่ตั้งไว้ใน jail.local จะแทนที่สิ่งใดก็ตามที่กำหนดไว้ใน jail.conf
สำหรับบทความนี้ เราจะสร้างไฟล์แยกต่างหากชื่อ jail.local ในไดเร็กทอรี /etc/fail2ban/ ดังที่แสดง
vi /etc/fail2ban/jail.local
เมื่อเปิดไฟล์แล้ว ให้คัดลอกและวางการกำหนดค่าต่อไปนี้ลงไป ส่วน [DEFAULT]
มีตัวเลือกส่วนกลางและ [sshd]
มีพารามิเตอร์สำหรับคุก sshd
[DEFAULT]
ignoreip = 192.168.56.2/24
bantime = 21600
findtime = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd
[sshd]
enabled = true
มาอธิบายตัวเลือกต่างๆ ในการกำหนดค่าข้างต้นโดยย่อ:
- ละเว้น: ระบุรายการที่อยู่ IP หรือชื่อโฮสต์ที่จะไม่แบน
- bantime: ระบุจำนวนวินาทีที่โฮสต์ถูกแบน (นั่นคือ ระยะเวลาการแบนที่มีผล)
- maxretry: ระบุจำนวนความล้มเหลวก่อนที่โฮสต์จะถูกแบน
- findtime: failed2ban จะแบนโฮสต์หากสร้าง “maxretry” ในช่วง “findtime” วินาทีสุดท้าย
- การห้าม: การห้ามการกระทำ
- แบ็กเอนด์: ระบุแบ็กเอนด์ที่ใช้ในการแก้ไขไฟล์บันทึก
ดังนั้นการกำหนดค่าข้างต้นหมายความว่าหาก IP ล้มเหลว 3 ครั้งในช่วง 5 นาทีที่ผ่านมา ให้แบนมันเป็นเวลา 6 ชั่วโมง และเพิกเฉยต่อ ที่อยู่ IP 192.168.56.2
จากนั้น ให้เริ่มและเปิดใช้งานบริการ fail2ban ในตอนนี้ และตรวจสอบว่าบริการดังกล่าวเปิดใช้งานและทำงานอยู่หรือไม่โดยใช้คำสั่ง systemctl ต่อไปนี้
systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban
การตรวจสอบที่อยู่ IP ที่ล้มเหลวและถูกแบนโดยใช้ Fail2ban-client
หลังจากกำหนดค่า fail2ban เพื่อรักษาความปลอดภัย sshd คุณสามารถตรวจสอบที่อยู่ IP ที่ล้มเหลวและถูกแบนได้โดยใช้ fail2ban-client หากต้องการดูสถานะปัจจุบันของเซิร์ฟเวอร์ failed2ban ให้รันคำสั่งต่อไปนี้
fail2ban-client status
หากต้องการตรวจสอบคุก sshd ให้เรียกใช้
fail2ban-client status sshd
หากต้องการยกเลิกการแบนที่อยู่ IP ใน Fail2ban (ในคุกและฐานข้อมูลทั้งหมด) ให้รันคำสั่งต่อไปนี้
fail2ban-client unban 192.168.56.1
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Fail2ban โปรดอ่านหน้าคู่มือต่อไปนี้
man jail.conf
man fail2ban-client
สรุปคู่มือนี้! หากคุณมีคำถามหรือความคิดใด ๆ ที่คุณต้องการแบ่งปันเกี่ยวกับหัวข้อนี้ อย่าลังเลที่จะติดต่อเราผ่านแบบฟอร์มคำติชมด้านล่าง