เป็นเรื่องปกติหรือไม่ที่จะได้รับการทำลายหลายร้อยครั้งต่อวัน?


196

ฉันเพิ่งตรวจสอบเซิร์ฟเวอร์ของฉัน/var/log/auth.logและพบว่าฉันได้รับการแจ้งเตือนรหัสผ่านล้มเหลว / การทำลายมากกว่า 500 ครั้งต่อวัน! เว็บไซต์ของฉันมีขนาดเล็กและ URL ของมันไม่ชัดเจน เป็นเรื่องปกติหรือไม่ ฉันควรจะใช้มาตรการใด ๆ ?


2
จนกว่าเราจะปิดพอร์ตภายนอกที่ไม่จำเป็นทั้งหมดฉันจำได้ว่าไม่เพียง แต่เราจะได้รับความพยายามในการแฮ็กจำนวนมาก แต่วันหนึ่งมันแย่มากที่เราถูกแฮ็คจากสองประเทศ - ในเวลาเดียวกัน! ใช่แล้วความพยายามในการบุก 100 ครั้งเป็นเรื่องปกติอย่างสมบูรณ์
Django Reinhardt

91
เรามีเซิร์ฟเวอร์ที่ได้รับการโจมตีใหม่ "ลำดับ" ทุกๆ 16 วินาที ลำดับเดียวมักจะเป็นชุดของความพยายามประมาณ 100 ครั้งในพอร์ตต่างๆ เพียงแค่เตะวันเดียวฉันเปิดเซิร์ฟเวอร์ที่ไม่ตรงกันนอกไฟร์วอลล์ของเรา ใช้เวลาน้อยกว่า 10 นาทีจากเวลาที่เปิดเครื่องเพื่อรับ pwnd ประเด็นคืออินเทอร์เน็ตเป็นป่าอย่างแท้จริง พยายามที่จะไม่กิน
NotMe

2
ฉันเห็นฉันโพสต์คำถามของฉันไปยังเว็บไซต์ที่ไม่ถูกต้อง: superuser.com/questions/200896/…
Justin C

6
ในขณะที่ฉันเห็นด้วยกับผู้อื่นนี่เป็นเรื่องปกติสำหรับพอร์ตทั่วไปที่จำเป็น (80, 443) ฉันได้กำจัดความพยายามเหล่านี้กับพอร์ต SSH ของฉันโดยเพียงแค่เปลี่ยนพอร์ตเริ่มต้นจาก 22 เป็นสิ่งที่ไม่ชัดเจนเช่น 6022 เพียงแค่ทำอย่างนั้นเพียงอย่างเดียวเกือบกำจัด 99% ของการโจมตีประเภทนั้น
Kilo

2
หากคุณกำลังจะเปลี่ยนพอร์ต SSH ของคุณมีเหตุผลด้านความปลอดภัยที่จะเก็บไว้ต่ำกว่าพอร์ต 1024 (เฉพาะรูทเท่านั้นที่สามารถเปิดพอร์ต <1024 ได้เพื่อปกป้องคุณจากผู้ใช้รายอื่นที่ลักลอบใช้ SSH)
เบรนแดน Long

คำตอบ:


207

ในอินเทอร์เน็ตทุกวันนี้มันค่อนข้างน่าเศร้า มีบอตเน็ตจำนวนมากที่พยายามลงชื่อเข้าใช้แต่ละเซิร์ฟเวอร์ที่พบในเครือข่าย IP ทั้งหมด โดยทั่วไปแล้วพวกเขาใช้การโจมตีแบบพจนานุกรมอย่างง่ายในบัญชีที่รู้จักกันดี (เช่นบัญชีรูทหรือแอปพลิเคชันบางบัญชี)

ไม่พบเป้าหมายการโจมตีผ่านทางรายการ Google หรือ DNS แต่ผู้โจมตีเพียงแค่ลองทุกที่อยู่ IP ในเครือข่ายย่อยที่แน่นอน (เช่น บริษัท โฮสติ้งรูทเซิร์ฟเวอร์ที่รู้จัก) ดังนั้นไม่สำคัญว่า URL ของคุณ (ดังนั้นรายการ DNS) ค่อนข้างคลุมเครือ

นั่นเป็นเหตุผลที่มันสำคัญมากที่จะ:

  • ไม่อนุญาตการลงชื่อเข้าใช้รูทใน SSH ( howto )
  • ใช้รหัสผ่านที่คาดเดายากทุกที่ (เช่นในเว็บแอปพลิเคชันของคุณ)
  • สำหรับ SSH, ใช้การตรวจสอบคีย์สาธารณะถ้าเป็นไปได้และปิดการใช้งานรหัสผ่านรับรองความถูกต้องสมบูรณ์ ( HOWTO )

นอกจากนี้คุณสามารถติดตั้งfail2banซึ่งจะสแกน authlog และหากพบว่ามีความพยายามในการเข้าสู่ระบบที่ล้มเหลวจาก IP จำนวนหนึ่งก็จะดำเนินการเพิ่ม IP นั้นไปยัง/etc/hosts.denyหรือ iptables / netfilter เพื่อล็อคผู้โจมตีสักสองสามนาที

นอกเหนือจากการโจมตีด้วย SSH แล้วการสแกนเว็บเซิร์ฟเวอร์ของคุณเพื่อหาแอปพลิเคชั่นเว็บที่มีช่องโหว่ (แอพบล็อกบางตัว CMSs, phpmyadmin เป็นต้น) ดังนั้นอย่าลืมอัปเดตให้ทันสมัยและกำหนดค่าอย่างปลอดภัยด้วย!


21
แอปพลิเคชันเช่น fail2ban สามารถช่วยได้มากในการ 'หยุดชั่วคราว' หยุดบ็อตเหล่านั้นจากการกดเซิร์ฟเวอร์ของคุณในเวลาที่โง่เง่าในตอนเช้า :-) ฉันได้ตั้งค่าให้ห้าม 3 ครั้งที่ไม่ถูกต้องสำหรับ 24 ชั่วโมง
emtunc

46
และย้ายพอร์ตของ ssh จาก 22 เป็น 222 ซึ่งใช้งานได้ดีทีเดียว
Tom O'Connor

40
+1, การพิสูจน์ตัวตนของรหัสสาธารณะเท่านั้น :)
0xC0000022L

3
@STATUS_ACCESS_DENIED: การดำเนินการ fail2ban เป็นเพียงรายการของคำสั่งเชลล์ที่จะเรียกใช้ ดังนั้นจึงมีความยืดหยุ่นและง่ายต่อการทำงานอย่างถูกต้องกับการกำหนดค่าแบบกำหนดเองใด ๆ action.d/iptables.confการอ้างอิงที่ดีที่สุดคือการดาวน์โหลดและดู
mattdm

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

58

เพียงไม่กี่ 100 ก็ดี ... เดือนที่แล้วฉันพบว่าหนึ่งในเซิร์ฟเวอร์ของฉันมี 40k ความพยายาม ฉันไปพบปัญหาในการวางแผน: แผนที่

เมื่อฉันเปลี่ยนพอร์ต ssh และนำ Port Knocking ไปใช้หมายเลขนั้นลดลงเป็น 0 :-)


2
แผนที่ที่ดี ฉันชอบที่จะรู้วิธีการทำเช่นนี้!
jftuga

9
@jftuga ฉันได้รับ IP ทั้งหมดจากบันทึกก่อน grep 'Failed password' /var/log/secure* | grep sshd | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort | uniq(ลบ | uniq ที่ส่วนท้ายหากคุณต้องการอนุญาตการทำซ้ำ) จากนั้นคุณสามารถวางไว้ใน CSV และอัปโหลดไปที่ zeemaps.com ฉันได้เห็นแผนที่ที่ดีขึ้นแล้วของฉันซึ่งพวกเขาจะใช้การนับเพื่อระบายสีแผนที่ (สีเขียวเป็นสีแดงสำหรับจำนวนครั้งในแต่ละเขต) แต่ฉันไม่ได้คิดว่ามันออกมาอย่างใดอย่างหนึ่ง
Bart De Vos

3
คุณหมายถึงอะไรโดยใช้ 'การเคาะพอร์ตที่ใช้งาน' มีแอพที่ฉันสามารถติดตั้งผ่าน apt-get ได้หรือไม่? จำนวนลดลงถึง 0 เสียงดี

18
การรักษาความปลอดภัยผ่านความสับสนจะได้รับการห่อหุ้มที่ไม่ดี มันใช้ได้อย่างสมบูรณ์แบบตราบใดที่มันเป็นส่วนหนึ่งของกลยุทธ์โดยรวมมากกว่ากลยุทธ์ทั้งหมด ท้ายที่สุดแล้วรหัสผ่านอื่นนอกเหนือจากสตริงที่คลุมเครือคืออะไร
Joel Coel

5
@ Joel Coel เป็นสตริงลับซึ่งตรงกันข้ามกับความปลอดภัยส่วนใหญ่ผ่านปัญหาความสับสน - เป็นกระบวนการที่คลุมเครือ แต่ไม่จำเป็นต้องเป็นความลับ
tobyodavies

29

ฉันใช้ "tarpit" นอกเหนือจากการอนุญาตให้ใช้การพิสูจน์ตัวตนคีย์สาธารณะและการไม่อนุญาตการลงชื่อเข้าใช้รูทเท่านั้น

ในnetfilterมีrecentโมดูลซึ่งคุณสามารถใช้กับ ( INPUTโซ่):

iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --set --name tarpit --rsource
iptables -A INPUT -i if0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 6 --name tarpit --rsource -j DROP
iptables -A INPUT -i if0 -p tcp --dport 22 -j ACCEPT

สิ่งที่ทำคือทุกครั้งที่พยายามเชื่อมต่อกับพอร์ต 22 นั้นแสดงรายการโดยrecentโมดูลที่มี IP และสิ่งอื่น ๆ ภายใต้ชื่อ "tarpit" (ถ้าคุณอยากรู้ลองดู/proc/net/xt_recent/tarpit) เห็นได้ชัดว่าคุณสามารถใช้ชื่ออื่น

ในการแสดงรายการหรือเพิกถอน IP ให้ใช้:

echo "+123.123.123.123" > /proc/net/xt_recent/tarpit
echo "-123.123.123.123" > /proc/net/xt_recent/tarpit

อัตรานี้จำกัดความพยายามเป็น 5 ใน 300 วินาที โปรดทราบว่าผู้ใช้ที่มีการเชื่อมต่อที่มีอยู่จะไม่ถูกรบกวนโดยข้อ จำกัด นั้นเนื่องจากพวกเขามีการเชื่อมต่อที่สร้างไว้แล้วและได้รับอนุญาตให้สร้างมากขึ้น (แม้จะเกินขีด จำกัด อัตรา)

ปรับกฎตามความชอบของคุณ แต่ต้องแน่ใจว่ากฎนั้นถูกเพิ่มในลำดับนั้น (เช่นเมื่อเพิ่มจากนั้นใช้กฎเหล่านี้ในลำดับนี้เมื่อแทรกจากนั้นในลำดับที่กลับกัน)

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

คุณยังสามารถรวมสิ่งนี้เข้ากับ fail2ban ได้แม้ว่าฉันจะทำงานได้ดีโดยไม่มีมันและมีเพียงกฎข้างต้น

แก้ไข:

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

iptables -A INPUT -i if0 -p tcp --dport <knockport> -m state --state NEW -m recent --name tarpit --remove

2
ฉันใช้สิ่งนี้และจัดการเพื่อบล็อกตัวเองเป็นครั้งคราวดังนั้นต้องการตั้งค่าพอร์ตอื่นที่คุณสามารถ "เคาะ" เพื่อล้างการแบน
benlumley

@benlumley: จุดดี การเคาะพอร์ตอาจมีประโยชน์ในทำนองเดียวกันกับการเปลี่ยนพอร์ตเริ่มต้น - หรือแม้แต่ทั้งสองอย่างรวมกัน ...
0xC0000022L

@benlumley: เห็นความคิดเห็นของคุณ (ตอนนี้ลบโดย Sam) ฉันไม่รังเกียจถ้าคำตอบจะได้รับการแก้ไข / ปรับปรุง;)
0xC0000022L

15

คุณสามารถใช้fail2banหรือวิธีที่คล้ายกันเช่นการล็อค SSH กับ IP ของคุณ บอตที่น่าเศร้าที่พยายามทำให้คุณเข้าถึงได้ตลอดเวลาดังนั้นจึงเป็นเรื่องปกติคุณต้องแน่ใจว่าคุณมีรหัสผ่านที่ดี


3
หากคุณกำลังใช้ SSH ให้พิจารณาการตรวจสอบสิทธิ์กุญแจสาธารณะ นี่เป็นบิตที่ปลอดภัยกว่าการตรวจสอบรหัสผ่าน
Piskvor

12

ใช่แล้ว ทุกวันนี้มันค่อนข้างปกติ

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

$ ssh-keygen -t dsa

คัดลอกเนื้อหาของ~ / .ssh / id_dsa.pubไปยังเซิร์ฟเวอร์ของคุณ~ / .ssh / authorized_keys (และ /root/.ssh/authorized_keys หากคุณต้องการล็อกอินรูทโดยตรง)

กำหนดค่าเซิร์ฟเวอร์ของคุณ/ etc / ssh / sshd_configเพื่อยอมรับการรับรองความถูกต้องของรหัสสาธารณะเท่านั้น:

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin without-password

หากคุณมีเซิร์ฟเวอร์มากเกินไปคุณสามารถใช้Puppetเพื่อเรียกใช้พับลิกคีย์และการกำหนดค่าให้กับพวกเขา

ค้นหาDenyhostsและfail2banเพื่อบล็อกการพยายามเข้าสู่ระบบ SSH ซ้ำ ๆ และดูSnortถ้าคุณต้องการ IDS / IPS แบบเต็ม


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

5
@ บัญชีที่ถูกลบ: คุณสามารถตั้งรหัสผ่านสำหรับคีย์ส่วนตัว SSH
Phil Cohen

2
ความคิดเห็น "ผู้ใช้ที่ลงทะเบียน" นั้นเข้าใจผิด เพื่อชี้แจง: ตั้งรหัสผ่านที่ดีในคีย์ส่วนตัวของคุณเสมอและอย่าเก็บรหัสส่วนตัวบนเซิร์ฟเวอร์ใด ๆ เก็บรหัสส่วนตัวบนเวิร์กสเตชันของคุณเอง เมื่อคุณเพิ่มรหัสลงในโปรแกรม ssh-agent และป้อนรหัสผ่านของคุณคุณสามารถเข้าสู่ระบบทุกระบบที่มีการติดตั้งกุญแจสาธารณะโดยไม่ต้องป้อนรหัสผ่านอีกครั้ง เปิดใช้งานการส่งต่อตัวแทนในไคลเอนต์ ssh ของคุณเพื่อให้คุณสามารถเข้าสู่ระบบจากเซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์ การรับรหัสส่วนตัวของคุณถูกขโมยนั้นไม่ดี แต่ด้วยรหัสผ่านที่ดีมันไม่ได้แย่เหมือนรหัสผ่านที่ถูกขโมย
Martijn Heemels

ใช่อย่าคิดว่าจะเก็บรหัสส่วนตัวของผู้ดูแลระบบที่ไม่ได้เข้ารหัส
yrk

8

ใช้http://denyhosts.sourceforge.net/

และใช่คุณควรใช้การตรวจสอบคีย์สาธารณะและปิดการใช้รหัสผ่านรับรองความถูกต้อง


การปิดใช้งานรหัสผ่านการตรวจสอบสิทธิ์ไม่ใช่วิธีแก้ปัญหาที่ใช้งานได้เสมอไป
Publiccert

6

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


6

ฉันจะบอกว่าการได้แค่ 500 เท่านั้นนั้นต่ำเกินไป

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


6

ใช่,

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

หลีกเลี่ยงที่อยู่ IP ที่เชื่อมโยงกับ DNS

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

ใช้ VPN สำหรับการเข้าถึง SSH ทั้งหมด

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

ใช้กฎที่อยู่ IP สำหรับการเข้าถึง SSH

หาก VLAN ไม่ใช่ตัวเลือกกำหนดค่าเราเตอร์ของคุณหรือกฎไฟร์วอลล์เพื่ออนุญาตการเชื่อมต่อ SSH จากช่วงที่อยู่ IP ที่รู้จักเท่านั้น

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


5

ค่อนข้างปกติเพื่อดูการเชื่อมต่อ SSH ที่ล้มเหลวหลายร้อยรายการ

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


5

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

ในการค้นหาที่อยู่ที่ไม่เหมาะสมเริ่มต้นด้วยarin.netและค้นหาที่อยู่ IP โดยใช้ whois คุณอาจถูกนำไปยังรีจิสตรีภูมิภาคอื่น แต่ในที่สุดคุณสามารถค้นหา ISP ที่รับผิดชอบสำหรับบล็อก IP ซึ่งมีที่อยู่ ค้นหาที่อยู่ @ การละเมิดหรือส่งจดหมายถึงผู้ติดต่อด้านเทคนิค

ส่งข้อความสุภาพพร้อมรายการไฟล์บันทึกที่เกี่ยวข้อง (ตรวจสอบให้แน่ใจว่าได้ลบข้อมูลส่วนตัวใด ๆ ) และขอให้พวกเขาดำเนินการกับโฮสต์ที่ละเมิด


4
เราเคยทำเช่นนี้ อย่างไรก็ตามจำนวนเวลาที่ใช้ไปกับผลประโยชน์ที่ได้รับนั้นน้อยมากไม่สำคัญ
NotMe

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

1
มีอยู่ครั้งหนึ่งที่ฉันทำสิ่งนี้ข้อความการละเมิดถึงแฮ็กเกอร์แทนที่จะเป็นคนที่ดูแลเซิร์ฟเวอร์ ตั้งแต่นั้นมาฉันก็ไม่ได้ยุ่งอีกต่อไปแค่มีปัญหามากเกินไป
wump

สิ่งนี้จะไม่ช่วยในกรณีส่วนใหญ่และอาจใช้เวลานาน
RichVel

4

ฉันอยากจะแนะนำไม่ใช้ fail2ban แต่ใช้ SSH (และอื่น ๆ ) บนพอร์ตที่ไม่ได้มาตรฐาน ฉันไม่เชื่อเรื่องความปลอดภัยด้วยความสับสน แต่ฉันคิดว่านี่เป็นวิธีที่ยอดเยี่ยมในการลดเสียงในบันทึกของคุณ

การเข้าสู่ระบบที่ล้มเหลวบนพอร์ตที่ไม่ได้มาตรฐานจะมีอยู่ไม่มากและอยู่ระหว่างและยังสามารถบ่งชี้การโจมตีได้มากกว่า

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


ฮ่าฮ่า Kippo ดูดีมาก ฉันจะติดตั้งบนเซิร์ฟเวอร์เพื่อดูว่าพวกเขาพยายามทำอะไร
wump

4

ใช่มันเป็นเรื่องปกติ สิ่งที่ฉันบอกลูกค้าในสถานการณ์ของคุณด้วยเว็บไซต์เล็ก ๆ

เตรียมพร้อมเสมอที่จะถูกแฮ็ก

มีสำเนาของเว็บไซต์ของคุณบนเซิร์ฟเวอร์ dev นี่เป็นเดสก์ท็อป Windows ของคุณโดยใช้ XAMPP ซึ่งคุณสามารถใช้ได้ฟรี

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

ไม่ต้องดาวน์โหลดอะไรจากเว็บไซต์สดของคุณไปยังเซิร์ฟเวอร์ dev ของคุณ

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

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

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

หวังว่านี่จะช่วยได้


2
+1 สำหรับ "พร้อมเสมอที่จะถูกแฮ็ก"
user78940

3

อีกวิธีในการหยุด (โดยส่วนตัวแล้วฉันไม่ชอบย้ายพอร์ต SSH): ตัดสินใจว่าคุณสามารถแสดงรายการเครือข่ายทั้งหมดที่คุณต้องการลงชื่อเข้าใช้หรือไม่จากนั้นอนุญาตให้สิ่งเหล่านี้เข้าถึงพอร์ต SSH ของคุณ

รายการของผู้ให้บริการอินเทอร์เน็ตในท้องถิ่นช่วยให้ฉันลดความพยายามในการเข้าสู่ระบบ 1-2 ครั้งต่อเดือน (ย้อนกลับไปประมาณ 1k / วัน) ผมตรวจพบเหล่านั้นโดยยังคงใช้denyhosts


3

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

ตัวอย่าง:

AllowUsers admin jsmith jdoe

ตัวเลือกอนุญาตให้ผู้ใช้ระบุและควบคุมว่าผู้ใช้ใดที่สามารถเข้าถึงบริการ ssh สามารถระบุผู้ใช้หลายคนคั่นด้วยช่องว่าง


3

ใช่มันเป็นเรื่องปกติ คุณสามารถ :

  • ลดโอกาสในการโจมตีโดยใช้fwknop

Fwknop เป็นหนึ่งในการปรับใช้พอร์ตที่ดีกว่าเนื่องจากไม่สามารถปลอมแปลงได้และรับรองความถูกต้องจริง ๆ แล้วไม่ใช่เพียงแค่ให้สิทธิ์การเชื่อมต่อเท่านั้น

  • คุณสามารถเปลี่ยนพอร์ตที่ Openssh ใช้ แต่คุณไม่ได้ปรับปรุงความปลอดภัยอย่างแท้จริง

  • เสริมสร้างการรับรองความถูกต้อง ssh โดยใช้Google-authenticatorหรือwikid

วิธีนี้จะช่วยป้องกันการโจมตีด้วยรหัสผ่านและความเป็นไปได้ของการโจมตีที่มุ่งมั่น / การโจมตีที่กำหนดเป้าหมายประนีประนอมเครื่องผู้ดูแลระบบของคุณและขโมยคำสั่งผสม ssh-key & password

เพียงแค่ดูคอมพ์pwn2ownล่าสุดเพื่อดูว่าการโจมตีของผู้ชำนาญการนั้นง่ายเพียงใดสำหรับผู้ดูแลระบบที่ได้รับการแก้ไข


1

น่าเศร้าที่นี่เป็นเรื่องปกติ คุณควรพิจารณาเพิ่มบางอย่างเช่นfail2banในระบบของคุณเพื่อตรวจจับและแบนผู้โจมตีโดยอัตโนมัติ หากคุณยังไม่ได้ดำเนินการคุณควรพิจารณาใช้ ssh ด้วยรหัสสาธารณะเท่านั้นและไม่อนุญาตให้ลงชื่อเข้าใช้รูทผ่าน ssh หากใช้ ftp เพื่อถ่ายโอนไฟล์ไปยังระบบให้พิจารณาใช้ scp / sftp แทน


1

ฉันใช้การเคาะพอร์ตและมีโพรบสองสามข้อต่อวัน พวกเขาไม่ได้รับการเชื่อมต่อดังนั้นพวกเขาจึงหายไป ฉันบันทึกและรายงานการเข้าถึงพอร์ตที่เกี่ยวข้องทั้งหมด

ฉันได้เรียกใช้ fail2ban กับ Shorewall เป็นไฟร์วอลล์เพื่อขึ้นบัญชีดำผู้โจมตีถาวร

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

การ จำกัด การเข้าถึงคีย์ที่ได้รับอนุญาตอาจมีประโยชน์เช่นกัน


0

ฉันใช้pam_ablในการขึ้นบัญชีดำเดรัจฉานชั่วคราวและมันใช้งานได้ดี ฉันคิดว่ามันให้ความรู้สึกที่ดีกว่าที่จะได้รับสิทธิ์ใน PAM โดยใช้ฐานข้อมูลของตัวเองมากกว่าที่จะขึ้นอยู่กับหรือhosts.denyiptables

ข้อดีอีกอย่างคือpam_ablไม่ได้ขึ้นอยู่กับการสแกนไฟล์บันทึก


0

เป็นเรื่องปกติอย่างสมบูรณ์ในวันนี้
คุณสามารถตั้งค่าขีด จำกัด "burst" ในไฟร์วอลล์สำหรับการเชื่อมต่อใหม่ที่เข้ามาในพอร์ต SSH
หรือติดตั้งตัวแยกบันทึกหนึ่งใน a'la fail2ban หรือเปลี่ยนพอร์ต SSH;)

อันสุดท้ายคืออันที่ง่ายที่สุด สำหรับเครื่องที่มีภาระงานหนักความพยายามทำลายระบบอาจส่งผลกระทบอย่างรุนแรงต่อทั้งระบบ

-
ขอแสดงความนับถือ
โรเบิร์ต


0

ใช่มันเป็นเรื่องปกติ

ฉันเพิ่งเปลี่ยนพอร์ต ssh ออกจากมาตรฐาน 22 เซิร์ฟเวอร์ของฉันกฎของฉัน :) เพิ่งแก้ไข / etc / ssh / sshd_config เปลี่ยนพอร์ตและรีสตาร์ทบริการ ข้อเสียเพียงอย่างเดียวคือคุณต้องจำไว้ว่าให้เพิ่มพอร์ตนั้นลงในการกำหนดค่าให้กับไคลเอ็นต์ ssh ทุกตัวที่คุณใช้


0
  • ปิดการใช้งานการเข้าสู่ระบบรูท (ในผู้ใช้รูทของระบบลินุกซ์ทุกคนจะมีบอทสามารถเดาชื่อผู้ใช้ได้) หลังจากเข้าสู่ระบบในฐานะผู้ใช้ปกติคุณสามารถเปลี่ยนไปใช้รูทได้โดย su หรือ sudo

  • เปลี่ยนพอร์ตเริ่มต้นจาก 22

  • อนุญาตการเข้าถึง ssh จาก ip ที่เป็นที่รู้จักเท่านั้น

  • ใช้รหัสผ่านและตัวเลขที่รัดกุมสำหรับผู้ใช้ที่มีการเข้าถึง ssh

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