ป้องกัน SSH จากการโฆษณาหมายเลขเวอร์ชัน


13

เซิร์ฟเวอร์ที่ฉันใช้คือ Ubuntu 10.10 เพื่อความปลอดภัยฉันต้องการแก้ไขแบนเนอร์ที่เซิร์ฟเวอร์ส่งถึงลูกค้า

ถ้าฉันโทรไปยังโฮสต์ที่พอร์ต 22 ฉันจะบอก SSH เวอร์ชั่นที่แน่นอนที่ฉันกำลังใช้อยู่ (SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu4) สถานการณ์เหมือนกันกับ MySQL และ Cyrus

ข้อเสนอแนะใด ๆ อย่างน้อยสำหรับ SSH

ขอบคุณ


5
ฉันหวังว่าคุณจะรู้ว่ามันใช้เวลามากกว่าเพียงแค่ลบแบนเนอร์เหล่านี้เพื่อให้แน่ใจว่าเซิร์ฟเวอร์ของคุณปลอดภัย
Ben Pilbrow

10
ข้อมูลนั้นไม่เกี่ยวข้องส่วนใหญ่บ็อตจะพยายามแฮ็กที่ทำงานกับรุ่นเก่าโดยไม่คำนึงถึงข้อมูลรุ่นที่เซิร์ฟเวอร์ของคุณให้ ผู้ใช้ที่เป็นมิตรโจมตีเซิร์ฟเวอร์ของคุณโดยไม่ประสงค์ดี ผู้ใช้ที่ประมาทมักจะมีอันตรายมากกว่านี้
Chris S

เบ็นฉันคิดว่าฉันรู้ว่าฉันขออะไร และฉันรู้วิธีการป้องกันเซิร์ฟเวอร์ NIX ขอบคุณ คริสการควานในความมืดก็ดีเช่นกัน โดยไม่คำนึงถึง
เสียงแหลม

ตราบใดที่คุณรู้ว่านี่เป็นหนึ่งในหลาย ๆ สิ่งที่ต้องทำ ฉันไม่ต้องการให้คุณออกไปทำสิ่งนี้คิดว่าระบบของคุณมีความปลอดภัยสูงนั่นคือทั้งหมดที่
Ben Pilbrow

อย่างที่ระบบอัตโนมัติชี้ให้เห็นฉันต้องการอย่างน้อยก็จะซ่อน "Debian-3ubuntu4"
Lerikun

คำตอบ:


17

เกือบเป็นสากลการระบุแบนเนอร์เป็นส่วนหนึ่งของรหัสที่คอมไพล์แล้วและไม่มีตัวเลือกการกำหนดค่าเพื่อแก้ไขหรือปราบปรามพวกเขา คุณจะต้องคอมไพล์ซอฟต์แวร์เหล่านั้นอีกครั้ง


ขอบคุณ คำตอบที่มีประโยชน์จริงเท่านั้นที่นี่ สิ่งที่เกี่ยวกับ TCP Wrapper พวกเขาเพียงเพิ่มแบนเนอร์ แต่ไม่ซ่อนข้อมูลจริง
Lerikun

6
ไม่เพียง แต่มันจะรวบรวมมันยังถูกใช้โดยไคลเอนต์เพื่อกำหนดระดับการเชื่อมต่อที่เข้ากันได้
Jeremy Bouse

32

ในขณะที่การซ่อนหมายเลขเวอร์ชันของ SSH daemon ของคุณเป็นเรื่องยาก แต่คุณสามารถซ่อนรุ่น linux ได้อย่างง่ายดาย (Debian-3ubuntu4)

เพิ่มบรรทัดต่อไปนี้ลงใน /etc/ssh/sshd_config

DebianBanner no

และรีสตาร์ท SSH daemon ของคุณ: /etc/init.d/ssh restartหรือservice ssh restart


7
ขอบคุณมันทำงานได้อย่างสมบูรณ์แบบ! ฉันยอมรับว่าการลบข้อมูลรุ่นคือการรักษาความปลอดภัยด้วยความคลุมเครือและอาจแนะนำปัญหาเพิ่มเติมที่แก้ไขได้ ด้วย Debian แม้ว่า OpenSSH ไม่เพียง แต่ประกาศรุ่นของตัวเอง แต่รุ่นและรสชาติเฉพาะของระบบปฏิบัติการ - เช่น "SSH-2.0-OpenSSH_6.7p1 Raspbian-5 + deb8u3" ขอแสดงความยินดีหากคุณไม่ได้รับการตรวจสอบสิทธิ์ใด ๆ ตอนนี้คุณก็ทราบแล้วว่าคุณกำลังพูดคุยกับ RaspberryPi ที่รัน Raspbian และขั้นตอนที่ชัดเจนต่อไปของคุณคือพยายามเชื่อมต่อเป็น "pi" ด้วยรหัสผ่านเริ่มต้น IMHO นี่เป็นการมอบข้อมูลให้มากในวันแรก
Saustrup

Brilliant หนึ่งในอัญมณีซ่อนเร้นที่ดีที่สุดที่พบที่นี่
Rui F Ribeiro

19

การซ่อนสิ่งเหล่านั้นจะไม่ทำให้เซิร์ฟเวอร์ของคุณปลอดภัย มีอีกหลายวิธีในการระบุลายนิ้วมือที่ระบบของคุณใช้งานอยู่ สำหรับ SSH โดยเฉพาะการประกาศเวอร์ชันเป็นส่วนหนึ่งของโปรโตคอลและเป็นสิ่งจำเป็น

http://www.snailbook.com/faq/version-string.auto.html


ผู้คนจำนวนน้อยทำความรู้จักกับระบบของคุณ ... คุณไม่เห็นด้วย แล้วบริการอื่น ๆ ล่ะ? ฉันกำลังพูดถึงทั่วไปเกี่ยวกับ Cyrus (IMAP / POP3) และ MySQL และอื่น ๆ และถ้ามีผู้ดูแลระบบสองคน - ฉันไม่จำเป็นต้องติดกับโปรโตคอลเลย!
Lerikun

3
@lerikun: มันไม่ได้เกี่ยวกับการแบ่งปันกับแฮกเกอร์ที่น่ากลัว มันเกี่ยวกับ SSH ที่ไม่สามารถเชื่อมต่อได้เพราะไม่รู้ว่าจะใช้โปรโตคอลใด SSHD ต้องประกาศ
Satanicpuppy

9
"คนน้อยรู้เกี่ยวกับระบบของคุณดีขึ้น" ใช่แน่นอนนั่นเป็นคำพูดที่ฟังดูดี แต่ไม่ได้ทำอะไรมากเช่น "ถ้าฉันชนะลอตเตอรีที่ฉันจะ ... " ความปลอดภัยผ่านความสับสนคือความปลอดภัยที่ดีที่สุด
Rob Moir

1
โรเบิร์ตนั่นคือคำแถลงซึ่งมีความหมายมาก ทำไมตู้เซฟอยู่ในห้องมืดที่ไม่มีใครเห็นได้? ... ไม่เป็นไร. ฉันไม่ถามวิธีรักษาความปลอดภัยเซิร์ฟเวอร์ของฉัน ฉันคิดว่าคำถามของฉันชัดเจน ใช่เผด็จการฉันต้องการอย่างน้อยก็กำจัดพวกนั้น
Lerikun

2
สำหรับสิ่งที่คุ้มค่าโรเบิร์ตมัวร์นั้นถูกต้องสมบูรณ์
Sirex

8

ฉันค่อนข้างแน่ใจว่าคุณไม่สามารถเปลี่ยนการประกาศรุ่นได้

วิธีที่ดีที่สุดในการรักษาความปลอดภัย sshd คือ:

  1. เปลี่ยนหมายเลขพอร์ตเริ่มต้น
  2. ห้ามการเข้าสู่ระบบราก
  3. โปรโตคอลแรง 2 (สมมติว่ามันไม่ได้ทำตามค่าเริ่มต้น)
  4. อนุญาตเซิร์ฟเวอร์ที่อนุญาตให้ SSH ในรายการที่อนุญาต

สามคนแรกสามารถทำได้โดยการแก้ไข / etc / sshd_config

สิ่งที่สี่ขึ้นอยู่กับซอฟต์แวร์ไฟร์วอลล์ที่คุณใช้


1/2/3 เสร็จสิ้นแล้ว ใช้ใบรับรองไม่มี passowrds Fail2ban (IMAP, POP, SMTP, VPN, WEB) และ denyhosts (SSH) คำถามเกี่ยวกับการประกาศรุ่นสำหรับบริการอื่น ๆ
Lerikun

6

ตามที่กล่าวไว้ข้างต้นการเปลี่ยนหมายเลขเวอร์ชันคือ

  1. ยากที่จะทำ
  2. ความปลอดภัยผ่านความสับสน
  3. ไม่ยืดหยุ่น

สิ่งที่ฉันแนะนำคือการนำ Port Knocking ไปใช้ เป็นเทคนิคที่ค่อนข้างง่ายในการซ่อนสิ่งใดก็ตามที่ทำงานบนเซิร์ฟเวอร์ของคุณ

นี่คือการดำเนินการที่ดี: http://www.zeroflux.org/projects/knock

นี่คือวิธีที่ฉันใช้มันบนเซิร์ฟเวอร์ของฉัน (หมายเลขอื่น ๆ ) เพื่อเปิด SSH เฉพาะกับผู้ที่รู้ว่า 'ความลับลับ':

[openSSH]
    sequence = 300,4000,32
    seq_timeout = 5
    command = /opencloseport.sh %IP% 2305
    tcpflags = syn

สิ่งนี้จะให้หน้าต่าง 5 วินาทีซึ่งจำเป็นต้องรับแพ็คเก็ต SYN 3 ชุดตามลำดับที่ถูกต้อง เลือกพอร์ตที่อยู่ไกลกันและไม่เรียงตามลำดับ ด้วยวิธีนี้ผู้วางแผนพอร์ตไม่สามารถเปิดพอร์ตโดยไม่ได้ตั้งใจ พอร์ตเหล่านี้ไม่จำเป็นต้องเปิดโดย iptables

สคริปต์ที่ฉันเรียกคืออันนี้ จะเปิดพอร์ตเฉพาะเป็นเวลา 5 วินาทีสำหรับ IP ที่ส่งแพ็กเก็ต SYN

#!/bin/bash
/sbin/iptables -I INPUT -s $1 -p tcp --dport $2  -j ACCEPT
sleep 5
/sbin/iptables -D INPUT -s $1 -p tcp --dport $2  -j ACCEPT

มันอาจเป็นความเจ็บปวดที่แท้จริงในการส่ง SYN-packets ดังนั้นฉันจึงใช้สคริปต์เพื่อเชื่อมต่อกับ SSH ของเซิร์ฟเวอร์ของฉัน:

#!/bin/bash
knock $1 $2
knock $1 $3
knock $1 $4
ssh $5@$1 -p $6

(มันค่อนข้างชัดเจนว่าเกิดอะไรขึ้นที่นี่ ... )

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

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