บทนำ
บริการใด ๆ ที่เชื่อมต่อกับอินเทอร์เน็ตเป็นเป้าหมายที่เป็นไปได้สำหรับการโจมตีแบบเดรัจฉานหรือการเข้าถึงที่ไม่สมควร มีเครื่องมือเช่นfail2ban
หรือsshguard
แต่สิ่งเหล่านี้ถูก จำกัด การใช้งานเพราะมันเป็นเพียงการแยกไฟล์บันทึก Blacklistd ใช้แนวทางที่แตกต่าง daemons ที่แก้ไขแล้วเช่น SSH สามารถเชื่อมต่อโดยตรงกับบัญชีดำเพื่อเพิ่มกฎไฟร์วอลล์ใหม่
ขั้นตอนที่ 1: PF (ไฟร์วอลล์)
แองเคอร์คือชุดของกฎและเราต้องการหนึ่งข้อในการกำหนดค่า PF ของเรา หากต้องการสร้างชุดกฎขั้นต่ำให้แก้ไข/etc/pf.conf
ดังนี้:
set skip on lo0
scrub in on vtnet0 all fragment reassemble
anchor "blacklistd/*" in on vtnet0
block in all
pass out all keep state
antispoof for vtnet0 inet
pass in quick on vtnet0 inet proto icmp all icmp-type echoreq
pass in quick on vtnet0 proto tcp from any to vtnet0 port 22
ตอนนี้เปิดใช้งานPF
ให้เริ่มโดยอัตโนมัติแก้ไข /etc/rc.conf:
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
อย่างไรก็ตามมีอีกหนึ่งสิ่งที่คุณอาจต้องการทำก่อน: ทดสอบกฎของคุณเพื่อให้แน่ใจว่าทุกอย่างถูกต้อง สำหรับสิ่งนี้ใช้คำสั่งต่อไปนี้:
pfctl -vnf /etc/pf.conf
หากคำสั่งนี้รายงานข้อผิดพลาดให้ย้อนกลับไปแก้ไขก่อน!
เป็นความคิดที่ดีที่จะตรวจสอบให้แน่ใจว่าทุกอย่างทำงานตามที่คาดไว้โดยการรีบูตเซิร์ฟเวอร์ตอนนี้: shutdown -r now
ขั้นตอนที่ 2: Blacklistd
IP ถูกบล็อคเป็นเวลา 24 ชั่วโมง นี่เป็นค่าเริ่มต้นและสามารถเปลี่ยนแปลงได้ใน/etc/blacklistd
:
# Blacklist rule
# adr/mask:port type proto owner name nfail disable
[local]
ssh stream * * * 3 24h
แก้ไข/etc/rc.conf
เพื่อเปิดใช้งาน Blacklistd:
blacklistd_enable="YES"
blacklistd_flags="-r"
เริ่ม Blacklistd ด้วยคำสั่งต่อไปนี้:
service blacklistd start
ขั้นตอนที่ 3: SSH
สิ่งหนึ่งที่สุดท้ายที่เราต้องทำคือการบอกให้แจ้งsshd
blacklistd
เพิ่มUseBlacklist yes
ลงใน/etc/ssh/sshd_config
ไฟล์ของคุณ service sshd restart
ตอนนี้เริ่มต้นใหม่กับ SSH
ขั้นตอนสุดท้าย
สุดท้ายลองเข้าสู่เซิร์ฟเวอร์ของคุณด้วยรหัสผ่านที่ไม่ถูกต้อง
ในการรับ IP ที่ถูกบล็อกทั้งหมดให้ใช้หนึ่งในคำสั่งต่อไปนี้:
blacklistctl dump -bw
address/ma:port id nfail last access
150.x.x.x/32:22 OK 3/3 2017/x/x 04:43:03
115.x.x.x/32:22 OK 3/3 2017/x/x 04:45:40
91.x.x.x/32:22 OK 3/3 2017/x/x 07:51:16
54.x.x.x/32:22 OK 3/3 2017/x/x 12:05:57
pfctl -a blacklistd/22 -t port22 -T show
54.x.x.x
91.x.x.x
115.x.x.x
150.x.x.x
ในการลบบล็อก IP pfctl
คุณต้องใช้คำสั่ง ตัวอย่างเช่น:
pfctl -a blacklistd/22 -t port22 -T delete <IP>
โปรดทราบว่าblacklistctl
จะยังคงแสดง IP ว่าถูกบล็อก! นี่เป็นพฤติกรรมปกติและหวังว่าจะถูกลบออกในอนาคต