วิธีที่ง่ายที่สุดในการตั้งค่าความพยายามเข้าสู่ระบบสูงสุดในสภาพแวดล้อม LAMP คืออะไร (sshd ติดตั้งผ่าน yum) มีแพ็คเกจหรือกฎไฟร์วอลล์แบบง่ายหรือไม่?
วิธีที่ง่ายที่สุดในการตั้งค่าความพยายามเข้าสู่ระบบสูงสุดในสภาพแวดล้อม LAMP คืออะไร (sshd ติดตั้งผ่าน yum) มีแพ็คเกจหรือกฎไฟร์วอลล์แบบง่ายหรือไม่?
คำตอบ:
ฉันใช้Fail2ban ; ฉันเคยใช้Denyhostsมาก่อนและใช้งานได้ดีเช่นกัน ฉันชอบ Fail2ban ในตอนนี้เพราะสามารถกำหนดค่าได้มากขึ้นและสามารถจัดการการตรวจสอบบริการที่แตกต่างกันได้มากขึ้นตัวอย่างเช่น sshd และหน้าเข้าสู่ระบบของเว็บแอปพลิเคชันของคุณพร้อมกัน
อีกวิธีหนึ่งคุณอาจพิจารณาคือการใช้กฎ LIMIT ในiptables
; ฉันโชคร้ายที่ไม่สามารถช่วยคุณทำสิ่งนี้ได้เว้นแต่คุณต้องการติดตั้งShorewallและจากนั้นฉันก็จะนำคุณไปสู่เอกสารที่ดีเยี่ยมในเว็บไซต์นั้นสำหรับวิธีการกำหนดค่ากฎ LIMIT ให้ดี จำกัด ขีดความสามารถของคนที่จะดุร้าย - บังคับเซิร์ฟเวอร์ของคุณ
ฉันไม่ชอบใช้เครื่องมือของบุคคลที่สาม ดังนั้นฉันใช้การรวมกันของการกำหนดค่า ssh และการตั้งค่าไฟร์วอลล์ ด้วยวิธีการต่อไปนี้ผู้โจมตีจะได้รับอนุญาตให้สร้างการล็อกอินผิดพลาด 3 ครั้งภายใน 2 นาทีมิเช่นนั้นจะถูกปิดกั้นเป็นเวลา 120 วินาที
1) เพิ่มบรรทัดต่อไปนี้ลงใน /etc/ssh/sshd_config
MaxAuthTries 1
การดำเนินการนี้จะอนุญาตเพียง 1 ครั้งต่อการเชื่อมต่อ รีสตาร์ทเซิร์ฟเวอร์ ssh
2) เพิ่มกฎไฟร์วอลล์ต่อไปนี้
สร้างห่วงโซ่ใหม่
iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP
บล็อกที่อยู่ IP แต่ละรายการเป็นเวลา 120 วินาทีซึ่งสร้างการเชื่อมต่อมากกว่าสามรายการภายใน 120 วินาที ในกรณีที่มีการพยายามเชื่อมต่อครั้งที่สี่การร้องขอจะได้รับการมอบหมายให้กับSSHATTACK
chain ซึ่งรับผิดชอบการบันทึกการโจมตี ssh ที่เป็นไปได้และในที่สุดก็ปล่อยคำขอ
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK
3) ดูรายการบันทึกของการโจมตี ssh ที่เป็นไปได้ /var/log/syslog
Dec 27 18:01:58 ubuntu kernel: [ 510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0
ไม่มีแพ็คเกจเฉพาะที่เกี่ยวข้องกับ SSH เพื่อตั้งค่านี้ อย่างไรก็ตามคุณสามารถติดตั้ง CSF ซึ่งเป็น ConfigServer & Firewall
การเปลี่ยนแปลงการกำหนดค่าสองอย่างที่ฉันแนะนำให้ทำในไฟล์: / etc / ssh / sshd_config
จำกัด จำนวนสูงสุดของการเชื่อมต่อที่ไม่ได้รับการรับรองความถูกต้องที่เซิร์ฟเวอร์ ssh จะจัดการในเวลาเดียวกัน สิ่งที่เล็กกว่านี้ก็คือยิ่งยากสำหรับตัวเล็กสคริปต์ในการสร้างความพยายามในการถอดรหัสที่ขนานกันและประสานงานกับการเชื่อมต่อที่หลากหลาย แก้ไข sshd_config และเปลี่ยน MaxStartups จากค่าเริ่มต้นของ "10" เป็น "3:50:10" ค่าที่คั่นด้วยโคลอนบอกให้เซิร์ฟเวอร์ ssh "อนุญาตให้ผู้ใช้ 3 คนพยายามเข้าสู่ระบบในเวลาเดียวกันและจะพยายามลดการเชื่อมต่อแบบสุ่มและมากขึ้นระหว่าง 3 ถึงสูงสุด 10" หมายเหตุ: สิ่งนี้ควรเพิ่มขึ้นบนเซิร์ฟเวอร์ที่มีจำนวนผู้ใช้ ssh ที่ถูกต้องเข้าสู่ระบบ
ลดระยะเวลาสูงสุดที่อนุญาตให้ลงชื่อเข้าใช้สำเร็จก่อนยกเลิกการเชื่อมต่อ ค่าเริ่มต้นของ 2 นาทีเป็นเวลานานเกินไปที่จะระงับการเปิดการเชื่อมต่อที่ไม่ได้ตรวจสอบสิทธิ์ (ดูด้านบน); 30 วินาทีมีเวลามากพอที่จะลงชื่อเข้าใช้:
ฉันใช้กฎ IPTables เหล่านี้สำหรับสิ่งนี้:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl --name SSH -j DROP
ซึ่งจะอนุญาตให้เพียง 4 แพ็คเก็ต TCP / SYN ไปยังพอร์ต 22 จากที่อยู่ IP ใน 5 นาที หากพยายามมากกว่านี้ประตูจะปิดลงจนถึง 5 นาที
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
สวยมากเช่นเดียวกับ:
มีตัวเลือกที่คุณสามารถใส่ลงในไฟล์ sshd_config ของคุณสำหรับเซิร์ฟเวอร์:
MaxAuthTries
Specifies the maximum number of authentication attempts permitted per
connection. Once the number of failures reaches half this value, additional
failures are logged. The default is 6.