เว็บมาสเตอร์เริ่มใช้โฮสต์เฉพาะและ VPS มากขึ้นเรื่อยๆ เพื่อประหยัดต้นทุนหรือปรับปรุงประสิทธิภาพ คอมพิวเตอร์แบบสแตนด์อโลนและ VPS ของหลายๆ คนใช้ Bare Metal ที่ไม่มีการจัดการ และทุกอย่างจะต้อง DIY ในเวลานี้ การดำเนินการตามนโยบายความปลอดภัยยังคงมีความสำคัญ ในบทความต่อไปนี้ ฉันจะใช้ CentOS เป็นตัวอย่างเพื่อสรุปโดยย่อเกี่ยวกับวิธีกำหนดค่าการเข้าถึงที่ปลอดภัยของ SSH
กลยุทธ์ด้านความปลอดภัย Linux SSH ที่หนึ่ง: ปิดพอร์ตที่ไม่เกี่ยวข้อง
โฮสต์ส่วนใหญ่ที่ถูกบุกรุกบนเครือข่ายตกเป็นเป้าหมายของแฮกเกอร์โดยใช้เครื่องมือสแกนเพื่อทำการสแกนขนาดใหญ่ ดังนั้นเพื่อหลีกเลี่ยงไม่ให้ถูกสแกน ยกเว้นพอร์ตที่จำเป็น เช่น เว็บ, FTP, SSH ฯลฯ ควรปิดพอร์ตอื่นๆ ทั้งหมด เป็นที่น่าสังเกตว่าฉันขอแนะนำอย่างยิ่งให้ปิดพอร์ต icmp และตั้งกฎเพื่อละทิ้งแพ็กเก็ต icmp ด้วยวิธีนี้ ผู้อื่นไม่สามารถ ping เซิร์ฟเวอร์ของคุณได้ และภัยคุกคามจะลดลงครึ่งหนึ่งตามธรรมชาติ หากต้องการทิ้งแพ็กเก็ต icmp ให้เพิ่มบรรทัดต่อไปนี้ใน iptables:
-A อินพุต -p icmp -j DROP
กลยุทธ์ด้านความปลอดภัย Linux SSH ที่สอง: เปลี่ยนพอร์ต SSH
พอร์ต SSH เริ่มต้นคือ 22 ขอแนะนำอย่างยิ่งให้เปลี่ยนเป็นมากกว่า 10,000 ด้วยวิธีนี้ ความน่าจะเป็นที่ผู้อื่นจะสแกนพอร์ตจะลดลงอย่างมาก วิธีการแก้ไข:
# แก้ไข /etc/ssh/ssh_config.php
vi /etc/ssh/ssh_config.vi
# ภายใต้ Host * ให้เพิ่มค่า Port ใหม่ ยกตัวอย่าง 18439 (เหมือนกันด้านล่าง):
ท่าเรือ 22
พอร์ต 18439
# แก้ไข /etc/ssh/sshd_config.php
vi /etc/ssh/sshd_config.vi
#เพิ่มมูลค่าพอร์ตใหม่
ท่าเรือ 22
พอร์ต 18439
# หลังจากบันทึกแล้ว ให้เริ่มบริการ SSH ใหม่:
บริการ sshd รีสตาร์ท
ฉันได้ตั้งค่าพอร์ตสองพอร์ตไว้ที่นี่ โดยหลักๆ แล้วเพื่อป้องกันไม่ให้ SSH ไม่สามารถเข้าสู่ระบบได้เนื่องจากข้อผิดพลาดในการแก้ไข เปลี่ยนพอร์ตการเชื่อมต่อของไคลเอ็นต์ SSH ของคุณ (เช่น Putty) และทดสอบการเชื่อมต่อ หากพอร์ตใหม่สามารถเชื่อมต่อได้สำเร็จ ให้แก้ไขสองไฟล์ด้านบนและลบการกำหนดค่าของพอร์ต 22 หากการเชื่อมต่อล้มเหลว ให้เชื่อมต่อโดยใช้พอร์ต 22 แล้วกำหนดค่าใหม่
หลังจากตั้งค่าพอร์ตเรียบร้อยแล้ว โปรดทราบว่าคุณควรลบพอร์ต 22 ออกจาก iptables เพิ่ม 18439 ที่กำหนดค่าใหม่ และรีสตาร์ท iptables
หากรหัสผ่านเข้าสู่ระบบ SSH ไม่รัดกุม ควรตั้งรหัสผ่านที่ซับซ้อน มีบทความใน Google Blog ที่เน้นเรื่องความปลอดภัยของรหัสผ่าน: รหัสผ่านของคุณผ่านการทดสอบหรือไม่
กลยุทธ์ด้านความปลอดภัย Linux SSH ประการที่สาม: จำกัด การเข้าสู่ระบบ IP
หากคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ของคุณด้วย IP แบบคงที่ คุณจะสามารถตั้งค่าให้อนุญาตเฉพาะ IP ที่ระบุเท่านั้นให้เข้าสู่ระบบเซิร์ฟเวอร์ได้ ตัวอย่างเช่น ฉันเข้าสู่ระบบเซิร์ฟเวอร์ผ่าน VPN ของตัวเอง การตั้งค่ามีดังนี้:
# แก้ไข /etc/hosts.allow
vi /etc/hosts.allow
# เช่น อนุญาตให้เข้าสู่ระบบได้เพียง 123.45.67.89 เท่านั้น
sshd:123.45.67.89
กลยุทธ์ด้านความปลอดภัย Linux SSH ที่สี่: ใช้ใบรับรองเพื่อเข้าสู่ระบบ SSH
การใช้ใบรับรองมีความปลอดภัยมากกว่าการเข้าสู่ระบบด้วยรหัสผ่าน ฉันได้เขียนบทช่วยสอนโดยละเอียดเกี่ยวกับการชงกาแฟด้วยน้ำประปา และเมื่อได้รับอนุญาตจากเขา ฉันจึงพิมพ์ซ้ำดังต่อไปนี้:
กำหนดค่าการตรวจสอบการเข้าสู่ระบบใบรับรอง SSH สำหรับ CentOS
ช่วยให้ผู้ดูแลระบบเครือข่ายของบริษัทตรวจพบเมลเซิร์ฟเวอร์ CentOS 5.1 จากระยะไกล และใช้ OpenSSH เพื่อจัดการเซิร์ฟเวอร์จากระยะไกล เมื่อตรวจสอบบันทึกความปลอดภัย ฉันพบว่ามี IP จำนวนมากเข้ามาเดารหัสผ่านเกือบทุกวันในช่วงไม่กี่วันที่ผ่านมา ดูเหมือนว่าเราจำเป็นต้องแก้ไขวิธีการยืนยันการเข้าสู่ระบบและเปลี่ยนเป็นการตรวจสอบใบรับรอง
ในกรณีที่ฉันเริ่ม VNC ชั่วคราวเพื่อป้องกันไม่ให้การกำหนดค่าเสร็จสมบูรณ์และการรีสตาร์ท sshd เมื่อฉันพอใจอาจทำให้เกิดปัญหาได้ (ต่อมาพบว่าซ้ำซ้อนก็แค่เปิดฉาบล่วงหน้าแล้วไม่ปิด)
นี่คือขั้นตอนง่ายๆ:
1) เพิ่มบัญชีการบำรุงรักษาก่อน: msa
2) จากนั้น su - msa
3) ssh-keygen -t rsa
หลังจากระบุเส้นทางคีย์และป้อนรหัสผ่านแล้ว คีย์สาธารณะและคีย์ส่วนตัวจะถูกสร้างขึ้นใน /home/msa/.ssh/: id_rsa id_rsa.pub
4) cat id_rsa.pub >> ได้รับอนุญาต_คีย์
สำหรับสาเหตุที่สร้างไฟล์นี้ เป็นเพราะนี่คือสิ่งที่เขียนใน sshd_config
จากนั้น chmod 400 allowance_keys เพื่อปกป้องมันเล็กน้อย
5) ใช้ psftp เพื่อดึง id_rsa กลับไปยังเครื่องคอมพิวเตอร์ จากนั้นฆ่า id_rsa และ id_rsa.pub บนเซิร์ฟเวอร์
6) กำหนดค่า /etc/ssh/sshd_config.php
พิธีสาร 2
เซิร์ฟเวอร์คีย์บิต 1024
PermitRootLogin ไม่ #เพียงห้ามการเข้าสู่ระบบรูท ไม่เกี่ยวข้องกับบทความนี้ แถมยังปลอดภัยกว่าด้วย
#ไม่มีอะไรเปลี่ยนแปลงในสามบรรทัดต่อไปนี้ เพียงลบ # ความคิดเห็นที่เป็นค่าเริ่มต้นออก
การรับรองความถูกต้อง RSA ใช่
PubkeyAuthentication ใช่
AuthorizedKeysFile .ssh/authorized_keys
รหัสผ่านการตรวจสอบเลขที่
อนุญาตให้เว้นว่างรหัสผ่านหมายเลข
7) รีสตาร์ท sshd
/sbin/service sshd รีสตาร์ท
8) แปลงรูปแบบใบรับรองและรองรับผงสำหรับอุดรู
เรียกใช้ puttygen เพื่อแปลง id_rsa เป็นไฟล์ใบรับรอง ppk ของ putty
9) กำหนดค่าการเข้าสู่ระบบแบบฉาบในการเชื่อมต่อ - SSH--Auth คลิกเรียกดูและเลือกใบรับรองที่คุณเพิ่งแปลง
จากนั้นกรอกชื่อผู้ใช้เข้าสู่ระบบอัตโนมัติในการเชื่อมต่อข้อมูล เช่น ของฉันคือ msa
กรอกที่อยู่ IP ของเซิร์ฟเวอร์ในเซสชัน หากคุณพอใจ คุณสามารถบันทึกได้
10) เมื่อคุณแก้ไขปัญหาเล็กๆ น้อยๆ และไปถึงขั้นตอนนี้ คุณอาจมีความสุขโดยเปล่าประโยชน์ ในเวลานี้ คุณสามารถเข้าสู่ระบบได้อย่างตื่นเต้น แต่คุณอาจไม่สามารถเข้าสู่ระบบได้:
ไม่มีวิธีการรับรองความถูกต้องที่รองรับ
ในขณะนี้ คุณสามารถแก้ไข sshd_config และเปลี่ยนแปลงได้
PasswordAuthentication no มีการเปลี่ยนแปลงชั่วคราวเป็น:
การตรวจสอบรหัสผ่านใช่และรีสตาร์ท sshd
ด้วยวิธีนี้ คุณสามารถเข้าสู่ระบบได้สำเร็จ หลังจากออกจากระบบ ให้เปลี่ยนค่าของ PasswordAuthentication เป็น no อีกครั้ง แล้วรีสตาร์ท sshd
เมื่อเข้าสู่ระบบในอนาคต ระบบจะถามรหัสผ่านของไฟล์คีย์ตามปกติ หากตอบถูก ก็สามารถเข้าสู่ระบบได้อย่างมีความสุข
สำหรับคำสั่ง psftp เพียงเพิ่มพารามิเตอร์ -i และระบุเส้นทางไฟล์ใบรับรอง
หากคุณใช้งานเซิร์ฟเวอร์จากระยะไกลเพื่อแก้ไขการกำหนดค่าข้างต้น อย่าลืมใช้ความระมัดระวังในทุกขั้นตอนและหลีกเลี่ยงข้อผิดพลาด หากการกำหนดค่าไม่ถูกต้องและไม่สามารถเชื่อมต่อการเชื่อมต่อ SSH ได้ จะเป็นความล้มเหลว
โดยพื้นฐานแล้ว หลังจากกำหนดค่าตามสี่จุดข้างต้นแล้ว การเข้าถึง SSH บน Linux จะค่อนข้างปลอดภัย แน่นอนว่าความปลอดภัยและความไม่มั่นคงนั้นสัมพันธ์กัน คุณควรตรวจสอบบันทึกของเซิร์ฟเวอร์เป็นประจำเพื่อค้นหาและกำจัดอันตรายที่ซ่อนอยู่ในเวลาที่เหมาะสม
แหล่งที่มาของบทความ: http://www.xiaohui.com/dev/server/linux-centos-ssh-security.htm