ในขณะที่มันอาจจะดีที่จะสามารถ ssh เข้าสู่ระบบของคุณจากตำแหน่งที่กำหนดบนอินเทอร์เน็ตมีระบบโจมตีด้วยรหัสผ่านอัตโนมัติซึ่งจะล็อคเข้ากับพอร์ต ssh เปิดและใช้บัญชี joe และการโจมตีพจนานุกรมกับระบบของคุณ สิ่งนี้อาจทำให้คุณโกรธมากขึ้นในการอ่านบันทึกสรุปในเวลากลางคืนและเสียแบนด์วิดท์ของคุณ
หากคุณมีเว็บเซิร์ฟเวอร์ในระบบเดียวกันคุณสามารถใช้ php และ tcp wrappers เพื่อ จำกัด ทราฟฟิกขาเข้าของ ssh ไปยังระบบที่รู้จักรวมถึงให้กุญแจหลังประตูเพื่ออนุญาตให้คุณเข้าถึงตัวเองจากระบบโดยพลการบนอินเทอร์เน็ต
นี่คือวิธีที่คุณทำ:
ปฏิเสธการเชื่อมต่อ ssh ทั้งหมดใน /etc/hosts.deny:
# /etc/hosts.deny fragment
sshd: all
อนุญาตระบบที่รู้จักโดย IP ใน /etc/hosts.allow รวมทั้งเพิ่มไฟล์สำหรับการเข้าถึงชั่วคราว:
# /etc/hosts.allow fragment
sshd: 10.0.10.2 # some system
sshd: 172.99.99.99 # some other system
sshd: /etc/hosts.allow.temporary-sshd-access
สร้างไฟล์ php ในเว็บเซิร์ฟเวอร์ของคุณและตั้งชื่อที่ไม่ชัดเจนเช่น my-sshd-access.php:
<?php
function get_ip()
{
return getenv("REMOTE_ADDR");
}
?>
<?php
$out='/etc/hosts.allow.temporary-sshd-access';
$log='/var/log/sshd-access-addition-log';
print "Was:";
readfile($out);
print "<br>";
$ip=get_ip();
$fp=fopen($out,"w");
fputs($fp,$ip);
fclose($fp);
$lfp=fopen($log,"a");
fputs($lfp,$ip);
fputs($lfp,"n");
fclose($lfp);
print "Wrote: ";
readfile($out);
?>
ยกโทษให้รหัส php - ฉันกวาดมันจากที่อื่นดังนั้นอาจเป็นไปได้ที่จะทำความสะอาดทั้งกลุ่ม สิ่งที่มันทำคือการเพิ่มที่อยู่ IP ของระบบการเข้าถึงมันไปยังไฟล์ /etc/hosts.allow.temporary-sshd-access ซึ่งอ่านโดย sshd (เนื่องจากการรวมโดย /etc/hosts.allow) ในเวลาเชื่อมต่อ .
ตอนนี้เมื่อคุณอยู่ในระบบโดยพลการบางอย่างบนเว็บและต้องการที่จะ ssh กับระบบนี้ก่อนใช้เว็บเบราว์เซอร์และกดไฟล์นี้ (หรือใช้ wget หรือเทียบเท่า)
$ wget http://your.system.name/my-sshd-access.php
ตอนนี้คุณควรจะสามารถ ssh ในระบบของคุณ หากนี่เป็นที่ที่คุณมักจะถูกเก็บข้อมูลบ่อยครั้งมันเป็นเรื่องไม่สำคัญที่จะอ่านเนื้อหาของไฟล์ /etc/hosts.allow.temporary-sshd-access และเพิ่มที่อยู่ IP ไปยัง / etc / hosts อย่างถาวร อนุญาต