Score:0

วิธีป้องกันการพยายามเข้าสู่ระบบ ssh โดยไม่ได้รับอนุญาต

ธง us

ฉันค้นพบความพยายามเข้าสู่ระบบโดยไม่ได้รับอนุญาตจำนวนมากใน /var/log/auth.log

...
26 ก.ย. 22:15:34 ชื่อโฮสต์ sshd[3072475]: รหัสผ่านล้มเหลวสำหรับผู้ใช้ผู้ใช้ที่ไม่ถูกต้องจากพอร์ต x.y.z.w 51056 ssh2
26 ก.ย. 22:15:39 ชื่อโฮสต์ sshd[3072519]: รหัสผ่านล้มเหลวสำหรับผู้ใช้ผู้ใช้ที่ไม่ถูกต้องจากพอร์ต x.y.z.w 62354 ssh2
26 ก.ย. 22:16:51 ชื่อโฮสต์ sshd[3072643]: รหัสผ่านล้มเหลวสำหรับผู้ใช้ผู้ใช้ที่ไม่ถูกต้องจากพอร์ต x.y.z.w 10596 ssh2
...

ฉันสงสัยว่าทำไมสิ่งนี้ถึงเกิดขึ้น เนื่องจากฉันได้กำหนดค่าการส่งต่อพอร์ตบนเราเตอร์อินเทอร์เน็ตของฉัน (zyxel VMG3925-B10B) เช่น พอร์ต 54321 ถูกแมปกับพอร์ต 22 บนที่อยู่ IP ภายในของ Ubuntu-box ของฉัน

ถ้าฉันพยายามเข้าสู่ระบบ ssh จากนอกบ้าน - ดังนั้นการใช้ IP ภายนอกกับอะไรก็ได้ยกเว้นพอร์ต 54321 ฉันจะถูกปฏิเสธ เหตุใดจึงเป็นไปได้ที่บางคนจะผ่านไฟร์วอลล์เราเตอร์ของฉันไปยัง ip ภายในของกล่องอูบุนตูของฉัน

ฉันทราบดีว่าคำถามนี้น่าจะเป็นคำถามสำหรับผู้ผลิตเราเตอร์ของฉันมากกว่า อย่างไรก็ตาม ความรู้ด้านความปลอดภัยของฉันค่อนข้างจำกัด และฉันต้องการฟังกลยุทธ์ของคนอื่นๆ

waltinator avatar
it flag
ย้อนกลับไปตอนที่ฉันอยู่ในระบบรักษาความปลอดภัยของคอมพิวเตอร์ ฉันมักจะสแกนการลาดตระเวน 'nmap' บนพอร์ต 1-65535 (ทั้งหมด) เพียงแค่ใช้พอร์ต 54321 ไม่มีอะไรซ่อน มีแพ็คเกจที่เรียกว่า `fail2ban` ที่อาจช่วยได้
Score:2
ธง gn

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

คุณสามารถบรรเทาปัญหาได้โดยใช้กฎ iptables หรือ fail2ban (แล้วแต่ว่าจะสะกดอย่างไร) หรืออื่นๆ ฉันใช้โมดูลล่าสุดใน itpables:

# รายการ Badguy แบบไดนามิก ตรวจจับและวาง IP ที่ไม่ดีที่ทำการโจมตีรหัสผ่านบน SSH
# เมื่อพวกเขาอยู่ในรายชื่อ BADGUY แล้ว DROP แพ็กเก็ตทั้งหมดจากพวกเขา
#$IPTABLES -A INPUT -i $EXTIF -m ล่าสุด --update --hitcount 3 --seconds 5400 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" -- ข้อมูลระดับบันทึก
#$IPTABLES -A INPUT -i $EXTIF -m ล่าสุด --update --hitcount 3 --seconds 5400 --name BADGUY_SSH -j DROP
#บางครั้งทำให้ล็อคเวลานานมาก โดยปกติจะพยายามกำจัดการโจมตีที่ประสานกันจากจีน
$IPTABLES -A INPUT -i $EXTIF -m ล่าสุด --mask $BIT_MASK --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level ข้อมูล
$IPTABLES -A INPUT -i $EXTIF -m ล่าสุด --mask $BIT_MASK --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j DROP
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 -m ล่าสุด --mask $BIT_MASK --set --name BADGUY_SSH -j ACCEPT

ตอนนี้ฉันใช้ BIT_MASK (ปัจจุบันคือ "255.255.252.0") เนื่องจากผู้โจมตีฉลาดขึ้นและมักจะเปลี่ยนไปใช้ที่อยู่ IP อื่นบนเครือข่ายย่อยเดียวกัน $EXTIF คือ WAN ของฉันที่หันไปทาง NIC

us flag
สวัสดี @ดั๊ก ขอบคุณสำหรับคำตอบของคุณ ฉันเริ่มต้นด้วยการติดตั้งfail2ban ซึ่งดูเหมือนจะเป็นการเริ่มต้นที่ดี จนถึงตอนนี้ฉันใช้ ufw กับกฎสองสามข้อในการเปิดบางพอร์ต ฉันชอบแนวคิดที่คุณโพสต์ ซึ่งใช้ iptables กับ bitmask ฉันพยายามค้นหาวิธีตั้งค่า iptables ดูเหมือนว่ากฎ iptables จะถูกล้างเมื่อรีบูตเว้นแต่คุณจะทำสิ่งที่คล้ายกัน ``` apt-get ติดตั้ง iptables-persistent ``` แต่ฉันขอถามได้ไหมว่าคุณกำหนดค่าและรักษากฎ iptables ได้อย่างไร ฉันคงจำสิ่งนี้ไม่ได้ คุณเก็บไฟล์ที่มีเช่น . $BIT_MASK และกฎ
Doug Smythies avatar
gn flag
ฉันใช้สคริปต์เพื่อโหลดกฎ iptables หลังจากบูต มันถูกเรียกจากบริการหลังการบูต ด้วยการใช้สคริปต์ ฉันยังสามารถจัดการกับบางสิ่งที่เกี่ยวข้องโดยตรงซึ่งไม่ใช่ iptables จริงๆ ฉันไม่ใช่แฟนของ 'iptables-persistent'
us flag
ขอบคุณ @แป้ง :)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา