การป้องกัน Fail2ban ด้วย IPtables ไม่ทำงานบน Debian Lenny [ย้ายพอร์ต ssh]


11

ฉันเพิ่งตัดสินใจทำการบำรุงรักษาความปลอดภัย ฉันเห็นบันทึกของฉันและมีความพยายามต่อต้านเซิร์ฟเวอร์ SSH ของฉัน ตอนแรกผมย้ายออกไปพอร์ต SSH จากเริ่มต้นที่ 22 หลังจากที่ผมอ่านบางอย่างเกี่ยวกับfail2ban , BlockHostsและDenyHosts

ฉันดูที่แรก: มันง่ายในการกำหนดค่าทุกอย่างเข้าใจได้ แต่เมื่อฉันพยายามที่จะ "ตรวจสอบการป้องกัน" การทดสอบจะล้มเหลว ทุกอย่างดูเหมือนจะดี แต่ฉันยังสามารถเข้าถึงเซิร์ฟเวอร์ได้

ฉันยังทดสอบ IPtables: # iptables -I INPUT -j DROP- หลังจากนั้นการเชื่อมต่อ SSH ของฉันหายไป (ดังนั้นสิ่งที่ฉันต้องการ) จากนั้น# iptables -I INPUT -s 84.x.y.z -j DROPซึ่งทำงานเกินไป

แต่สิ่งที่ Fail2ban ทำในกฎนั้นไม่ได้ผล: ( $ sudo iptables -L)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
fail2ban-apache  tcp  --  anywhere             anywhere            multiport dports www,https
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere            multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain fail2ban-apache (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh (1 references)
target     prot opt source               destination        
DROP       all  --  84.x.y.z           anywhere            
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere

โหลดโมดูลเคอร์เนลแล้ว: ( $ lsmod | grep ip)

iptable_nat             4680  0
nf_nat                 15576  1 iptable_nat
nf_conntrack_ipv4      12268  3 iptable_nat,nf_nat
nf_conntrack           55540  4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport            2816  2
iptable_filter          2624  1
ip_tables              10160  2 iptable_nat,iptable_filter
x_tables               13284  5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6                  235396  24

รุ่น:

  • Debian Lenny 5.06, เคอร์เนล 2.6.26-2-686
  • IPtables 1.4.2-6
  • Fail2ban 0.8.3-2sid1
  • openssh-server 1: 5.1p1-5

ทดสอบ # 1 ทีละขั้นตอน:

  1. กำหนดค่า Fail2ban ให้น้อยที่สุด 60 วินาที จากนั้นโหลดซ้ำ
  2. พยายามเข้าสู่ระบบ (กับ SSH) โดยตรงด้วยรหัสผ่านผิด
  3. สำหรับครั้งที่ 6 ให้ป้อนรหัสผ่านที่ถูกต้อง (ลองได้สูงสุด 4 ครั้งเท่านั้น) ฉันเข้าสู่ระบบฉันยังสามารถเข้าถึงหน้าเว็บที่โฮสต์โดยเซิร์ฟเวอร์นั้นได้
  4. iptables -Lแสดงให้ฉันเป็นดังกล่าวข้างต้น ดังนั้นการแบนจึงทำงานเมื่อฉันเชื่อมต่อสั่งเซิร์ฟเวอร์ของฉัน

ทดสอบ # 2 ทีละขั้นตอน:

  1. หยุด Fail2ban สร้างatสคริปต์เพื่อลบกฎการแบนที่เขียนด้านล่างในอนาคต ( iptables -D INPUT 1)
  2. สร้างกฎการแบน: iptables -I INPUT 1 -s 84.x.y.z -j DROP
  3. ฉันไม่สามารถพิมพ์สิ่งอื่นการเชื่อมต่อ SSH ไม่สามารถใช้ได้ ฉันไม่สามารถเข้าถึงหน้าเว็บได้ ดังนั้นสิ่งที่ฉันต้องการจาก iptables
  4. หลังจากatสคริปต์ฉันสามารถเข้าถึงเซิร์ฟเวอร์ของฉัน

ฉันไม่เห็นวิธีแก้ปัญหาฉันควรทำอย่างไรเพื่อให้ IPtables ของฉันแบน (ทำโดย Fail2ban) ทำงาน


แก้ไขคำถามแล้ว! ความคิดใด ๆ
antivirtel

คำตอบ:


8

ฉันพบปัญหาสิ่งที่ฉันทำก่อนติดตั้ง fail2ban ขอโทษสำหรับเวลาของคุณ

เพื่อเหตุผลด้านความปลอดภัยฉันย้าย sshd ของฉันจากพอร์ต 22 ไปยังอีก การอ้างอิงในiptablesอ้างถึงพอร์ต 22 เท่านั้น ฉันคิดว่ามันเป็นตัวแปรสิ่งที่อ้างอิงถึงพอร์ต sshd ปัจจุบันเสมอ แต่ไม่

โซลูชันที่แน่นอน (หากคุณย้ายภูตออกจากพอร์ตเดิม):

  1. เปิด jail.local (หรือ. conf)
  2. ค้นหาบริการของคุณ (เป็นวงเล็บปีกกา)
  3. แก้ไขportส่วนเพื่อทั้งหมด ตัวอย่าง:port = all
  4. เพิ่มหรือแก้ไขมีอยู่banactionหลายบรรทัดพอร์ตที่มีค่าiptables-allports ตัวอย่าง: banaction = iptables-allports.
  5. รีสตาร์ท daemon ตัวอย่าง: # service fail2ban restart.

ฉันไม่พบวิธีแก้ปัญหาสำหรับเปลี่ยนport sshคำสั่งหรือเขียนตัวเลข หากคุณมีทางออกที่ไม่ใช่พอร์ตฉันจะฟังมัน!


1
สิ่งที่คุณต้องทำคือการระบุหมายเลขพอร์ตแทนชื่อ
Julian Knight

นอกจากนี้โปรดทราบว่าชื่อ iptable ของคุณต้องมีอักขระน้อยกว่า 32 ตัวเพื่อที่จะสามารถเพิ่มสำเร็จได้
Adrian Lopez

2

ฉันมีปัญหาเดียวกันกับ fail2ban ไม่ห้ามหลังจากที่ฉันย้ายเซิร์ฟเวอร์ ssh ไปยังพอร์ตที่ไม่ได้มาตรฐาน 12345 (สมมติว่า)

ที่จะทำให้การผลิต fail2ban /etc/fail2ban/jail.confกฎระเบียบที่เหมาะสมหลังจากที่จำนวนของความพยายามล้มเหลวการตรวจสอบฉันแก้ไข

port = ssh 

เข้าไป

port = 12345

ฉันถือว่าวิธีการที่คล้ายกันนี้จะทำงานกับบริการอื่น ๆ บนพอร์ตที่ไม่ได้มาตรฐาน


0

การตั้งค่าสำหรับ fail2ban /etc/fail2ban/jail.localอยู่ใน ในการติดตั้งเริ่มต้นฉันไม่แน่ใจว่ามันมี แล้วสิ่งที่คุณทำคือการคัดลอกjail.confไปเพื่อให้คุณมีไฟล์ทั้งในjail.local /etc/fail2ban/แก้ไขjail.localไปที่บรรทัดที่มี[ssh]และเปิดใช้งานเช่นนี้:

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

หลังจากนั้นให้รีสตาร์ท fail2ban:

sudo /etc/init.d/fail2ban restart

เป็นไปได้ว่ามันจะใช้งานได้ตอนนี้ฉันได้ตั้งค่าแบบนั้นและใช้งานได้


ฉันคิดว่าคุณไม่เข้าใจคำถามของฉัน! Fail2ban ทำในสิ่งที่ฉันต้องการ: ดูบันทึกและสั่งห้ามผู้โจมตี แต่การแบนนั้น IPtables ต้องทำอะไรไม่ทำงาน ฉันยังสามารถเข้าถึงเซิร์ฟเวอร์ด้วยการตั้งค่ากฎที่กล่าวถึงข้างต้น
antivirtel

ขออภัยฉันรีบดังนั้นฉันเข้าใจผิดและเนื่องจากฉันมีปัญหาเดียวกันซึ่งฉันแก้ไขด้วยการเพิ่มคุกในท้องถิ่นฉันคิดว่ามันจะช่วย น่าเสียดายถ้าคุณมีทุกอย่างที่ตั้งไว้อย่างถูกต้องกว่าที่ฉันไม่รู้ว่าปัญหาคืออะไร แต่หวังว่าจะมีคนอื่นทำ
enedene

0

คุณแสดงรายการ "Fail2ban 0.8.3-2sid1" กำลังถูกติดตั้ง นี่คือการกำหนดค่าที่ไม่สนับสนุน ไม่ควรติดตั้งแพ็คเกจ Sid ในสภาพแวดล้อมที่มั่นคง

ฉันใช้ Debian 6 (Squeeze) ซึ่งอัพเกรดจาก Lenny ใน VM โดยเฉพาะเป็นเซิร์ฟเวอร์ SSH สำหรับบ้านของฉัน ฉันยังใช้ fail2ban ฉันทำการทดสอบ # 1 ของคุณและทุกอย่างทำงานได้ตามปกติ ฉันล้มเหลวในการเข้าสู่ระบบด้วยจำนวนครั้งสูงสุดแล้วคำขอของฉันในการเข้าสู่ระบบก็ลดลงเป็นเวลา 60 วินาที

รายการรุ่นของฉัน:

  • / etc / debian_version = 6.0.1
  • fail2ban = 08..4-3
  • iptables = 1.4.8
  • openssh-server = 1: 5.5p1-6

ไม่ฉันมีแพ็คเกจที่ถูกต้อง packages.debian.org/search?suite=lenny&keywords=fail2ban
antivirtel

ในกรณีนี้ฉันแนะนำให้ทำการอัพเกรด
James Sumners

ตกลงมันไม่ง่ายเกินไป แต่ฉันจะจัดการเพื่อทำมันอย่างใด ... - อาจจะติดตั้งที่สะอาด
antivirtel

sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade. มันค่อนข้างง่าย
James Sumners

ใช่ แต่มีโอกาสที่จะไม่บูตในครั้งต่อไปหรือไม่ ... บันทึกย่อประจำรุ่นที่เขียนใหม่ว่า kenel + ระบบ udev ใหม่ ... - เครื่องของคุณประสบความสำเร็จหรือไม่?
antivirtel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.