×ðÁú¿­Ê±

֤ȯ¼ò³Æ£º×ðÁú¿­Ê± ֤ȯ´úÂ룺002212
È«Ììºò7x24Сʱ·þÎñ£º 400-777-0777

Çå¾²ÔËÓª¡ª¼ì²âÓë·À»¤ÄÜÁ¦¡ªÍ¨¹ýPort KnockingÒþ²ØSSH·þÎñÆ÷

ÔÚÍøÂçÇå¾²ÑÝÁ·¡¢¹¥»÷°¸ÀýÖУ¬¹¥»÷·½Í¨¹ýÐÅÏ¢ÍøÂç»ñȡĿµÄ¿ÉÓõÄÐÅÏ¢£¬½«¸÷¹¥»÷µãÅþÁ¬»ã³É¹¥»÷Ãæ£¬¹¥»÷ÃæÔ½¹ãÒâζ×Å·¢Ã÷DZÔÚÎó²îµÄ¿ÉÄÜÐÔÔ½´ó£¬¹¥»÷ÀֳɵĸÅÂÊÒ²¾ÍÔ½¸ß¡£Òò´Ë£¬Í¨¹ýÇå¾²¼Æ»®×îС»¯Ì»Â¶Ãæ¿ÉÒÔÓÐÓÃïÔÌ­ÐÅϢϵͳÔâÊÜÈëÇֵĸÅÂÊ¡£

Çå¾²ÔËÓª¡ª¼ì²âÓë·À»¤ÄÜÁ¦¡ªÍ¨¹ýPort KnockingÒþ²ØSSH·þÎñÆ÷

Ðû²¼Ê±¼ä£º2022-10-28
ä¯ÀÀ´ÎÊý£º3688
·ÖÏí£º

01 ¼ò½é

ÔÚÍøÂçÇå¾²ÑÝÁ·¡¢¹¥»÷°¸ÀýÖУ¬¹¥»÷·½Í¨¹ýÐÅÏ¢ÍøÂç»ñȡĿµÄ¿ÉÓõÄÐÅÏ¢£¬½«¸÷¹¥»÷µãÅþÁ¬»ã³É¹¥»÷Ãæ£¬¹¥»÷ÃæÔ½¹ãÒâζ×Å·¢Ã÷DZÔÚÎó²îµÄ¿ÉÄÜÐÔÔ½´ó£¬¹¥»÷ÀֳɵĸÅÂÊÒ²¾ÍÔ½¸ß¡£Òò´Ë£¬Í¨¹ýÇå¾²¼Æ»®×îС»¯Ì»Â¶Ãæ¿ÉÒÔÓÐÓÃïÔÌ­ÐÅϢϵͳÔâÊÜÈëÇֵĸÅÂÊ¡£±¾ÎÄÖ÷Ҫ̽ÌÖ¹¥»÷ÃæÊÕÁ²ÖÐͨ¹ýPort KnockingÊÖ¶ÎÒþ²ØSSH·þÎñÆ÷µÄÒªÁ죬ʹ¹«¹²ÍøÂçÉϵĹ¥»÷Õ߸üÄÑ·¢Ã÷¸Ã·þÎñÆ÷£¬µÖ´ïÊÕÁ²Ì»Â¶Ã棬½µµÍÇ徲Σº¦µÄÄ¿µÄ¡£

02 ¸ü¸ÄĬÈÏ SSH ¶Ë¿Ú

Òþ²Ø SSH ·þÎñÆ÷µÄµÚÒ»²½ÊǸü¸ÄĬÈÏ SSH ¶Ë¿Ú¡£ÔÚ±¾ÎÄÑÝʾ°¸ÀýÖÐSHH¶Ë¿ÚºÅÉèÖÃΪ60636£¬ÏÖʵ²Ù×÷ÖпÉÒÔʹÓÃí§Òâ×Ô½ç˵¶Ë¿ÚºÅ¡£·­¿ªÖն˲¢Ê¹ÓÃÒÔÏÂÏÂÁîͨ¹ý SSH ÅþÁ¬µ½·þÎñÆ÷£º

$ ssh -i path-to-identity-file username@SERVER_IP

ÔÚ·þÎñÆ÷ÉÏʹÓÃviÖÕ¶ËÖеÄÏÂÁî»òÈκÎÎı¾±à¼­Æ÷·­¿ª SSH ÉèÖÃÎļþ£º

$ vi /etc/ssh/sshd_config

ÏÖÔÚ½«Ä¬È϶˿Ú22¸üÐÂΪ60636¡£

²Ù×÷Íê³ÉºóÖØÐÂÆô¶¯ SSH ·þÎñÆ÷ÊØ»¤³ÌÐò£¬ÒԱ㽫¸üÐÂÓ¦ÓÃÓÚеĴ«ÈëµÄËùÓÐSSHÅþÁ¬¡£

$ systemctl restart sshd.service

SSH·þÎñÆ÷ÏÖÔÚ½«½ÓÊܲ¢ÅþÁ¬¶Ë¿Ú60636£¬²Ù×÷ÏÂÁîÈçÏ£º

$ ssh -i path-to-identity-file username@SERVER_IP -p 60636

ÐèÒª×¢ÖØµÄÊÇ£¬ÈôÊǸ÷þÎñÆ÷ÉÏÉèÖÃÁË·À»ðǽ£¬»¹Ó¦¸Ãͬ²½¸üзÀ»ðǽ¹æÔò£¬ÔÊÐí¶Ë¿ÚÉ쵀 SSH 60636ÅþÁ¬£¬×èÖ¹SSH 22ÅþÁ¬¡£

03 ʹÓÃknockdʵÏÖ¶Ë¿ÚÅöײ

¶Ë¿ÚÅöײÊÇÒ»ÖÖÔÚÒ»×éÔ¤ÏÈÖ¸¶¨µÄ¹Ø±Õ¶Ë¿ÚÉϱ¬·¢ÅþÁ¬ÇëÇ󣬴ÓÍⲿ·­¿ª·À»ðǽÉϵĶ˿ڵÄÒªÁì¡£Ò»µ©ÊÕµ½×¼È·µÄÅþÁ¬ÇëÇóÐòÁУ¬·À»ðǽ¹æÔò¾Í»á±»¶¯Ì¬Ð޸ģ¬ÔÊÐí·¢ËÍÅþÁ¬ÇëÇóµÄÖ÷»úͨ¹ýÌØ¶¨¶Ë¿Ú¾ÙÐÐÅþÁ¬¡£¶Ë¿ÚÅöײµÄÖ÷ҪĿµÄÊDZÜÃâ¹¥»÷Õßͨ¹ý¶Ë¿ÚɨÃèÀ´É¨ÃèϵͳÖÐDZÔڵĿÉʹÓ÷þÎñ£¬³ý·Ç¹¥»÷Õß·¢ËÍ׼ȷµÄÅöײÐòÁУ¬²»È»Êܱ£»¤µÄ¶Ë¿Ú½«ÏÔʾΪ¹Ø±Õ¡£

3.1 ×°ÖúÍÉèÖà knockd

ΪÁËʵÏÖ¶Ë¿ÚÅöײ£¬Ê×ÏÈÒªÔÚLinux·þÎñÆ÷ÉÏ×°ÖÃknockd¡£ÔËÐÐÒÔÏÂÏÂÁî¾ÙÐÐ×°Öãº

$ sudo apt-get install knockd

½ÓÏÂÀ´·­¿ªknockdλÓÚ/etc/knockd.confµÄÉèÖÃÎļþ£º

ÔÚÉèÖÃÎļþÖÐÏàʶһÏÂĬÈÏÉèÖÃÖµ°üÀ¨µÄÐÅÏ¢£º

¡ñsequenceÊÇÒ»×é¶Ë¿ÚºÅ£¬±»ÊÓΪÅöײÐòÁС£

¡ñseq_timeout½ç˵ÐòÁеÄÓÐÓÃÆÚ¡£

¡ñcommand°üÀ¨iptablesÌí¼Ó¹æÔòÒÔÔÊÐíÀ´×ÔÖ¸¶¨ IP µØµãµÄ´«Èë SSH ÅþÁ¬µÄÏÂÁî¡£½öµ±Óû§Æô¶¯ÓÐÓõÄÅöײÐòÁÐʱ²Å»áÖ´ÐдËÏÂÁî¡£

¡ñtcpflags½ç˵ÅöײÅþÁ¬ÖÐÒª½ÓÊÜµÄ TCP Êý¾Ý°üÀàÐÍ¡£SYNÔÚÕâÖÖÇéÐÎÏ·ÖÅÉÁËÒ»¸öTCPÀàÐ͵ÄÊý¾Ý°ü¡£

[openSSH]¿éºÍ[closeSSH]¿éÖ®¼äµÄÖ÷񻂿±ðÔÚÓÚ[closeSSH]¿é¾ßÓж˿ںŵĹرÕÐòÁкÍiptablesɾ³ý²åÈë[openSSH]¿éÖеĹæÔòµÄÏÂÁî¡£

ÏÂÃæÊDzο¼µÄ×îÖÕÉèÖÃÎļþ¡£×¢ÖØ£¬ÓÉÓÚĬÈÏÖµ ( 7000, 8000, 9000) ÖÚËùÖÜÖª£¬ÒÔÊÇÏÖÒѽ«¿ª·ÅÐòÁÐÖµ¸ü¸ÄΪ20001, 20002£¬20003¡£Í¬ÑùÒ²¸üÐÂÁËĬÈϵĹرÕ˳Ðò¡£³ý´ËÖ®Í⻹½«¶Ë¿Ú¸ü¸ÄΪ22£¬60636£¬ÓÉÓÚÒѾ­ÔÚÉÏÒ»²½Öн« SSH ¶Ë¿Ú¸üÐÂΪ´ËÖµ¡£ÁíÍâ×¢ÖØ£¬ÔÚ¸Ã[openSSH]¿éÖУ¬iptablesÏÂÁîÖµ´Ó¸ü¸Ä-AΪ-I£¬ÌåÏÖ´Ëiptables¹æÔò½«´òÆðÔ´¿Ú²¢½«³ÉΪµÚÒ»¸öÖ´ÐеĹæÔò¡£×îºó½«³¬Ê±Öµ´Ó5ÔöÌíµ½10£¬ÓÉÓÚ 5 ÃëÊÇÔÚÅöײÐòÁкóÁ¬Ã¦Æô¶¯ SSH ÅþÁ¬µÄÒ»¸öС´°¿Ú¡£

ÍêÓñ³É²¿²Ù×÷ºóÉúÑĸü¸Ä²¢Í˳öÎļþ¡£

3.2 ÉèÖà knockd ÕìÌýÌØ¶¨ÍøÂç½Ó¿Ú

knockd¼àÌýµÄÍøÂç½Ó¿ÚµÄÃû³ÆÐèÒªÖ¸¶¨¡£ÔÚÕâÀïʹÓÃip addrÏÂÁîÀ´¼ì²éÓë·þÎñÆ÷¹ØÁªµÄÍøÂç½Ó¿ÚÁбí£¬²¢Ñ¡ÔñÏëÒªknockd¼àÌýµÄ½Ó¿ÚÃû³Æ¡£

ÕâÖÖÇéÐÎÏ£¬eth0Êǰ󶨵½¹«¹² IP µØµãµÄ½Ó¿Ú¡£ÒÔÊÇÓÃÕâ¸ö½Ó¿ÚÀ´ÉèÖÃknockd¡£½ÓÏÂÀ´£¬±à¼­knockdÉèÖÃÎļþ¡£

ÉúÑĸü¸Ä²¢Í˳öÎļþ£¬Á¬Ã¦Æô¶¯knockd·þÎñ£º

$ systemctl start knockd

ÆôÓÃknockd·þÎñ£¬ÒÔ±ãÔÚÏÂ´ÎÆô¶¯·þÎñÆ÷ʱͬ²½Æô¶¯¸Ã·þÎñ¡£

$ systemctl enable knockd

3.3 ÔÚ·À»ðǽÉÏ×èÖ¹¶Ë¿Ú 60636

ΪÁËʵÏÖ60636¶¯Ì¬·­¿ªknockd¶Ë¿ÚµÄÄ¿µÄ£¬Ä¬ÈÏÇéÐÎϽ«×èÖ¹¶Ô¸Ã¶Ë¿ÚµÄ»á¼û£¬Ê¹ÓÃiptablesÏÂÁîÀ´Ö´Ðд˲Ù×÷¡£Ö´ÐÐÒÔÏÂÏÂÁî¾Í²»»áÆÆËðÄ¿½ñµÄÔ˶¯ÅþÁ¬£º

$ sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

½ÓÏÂÀ´Ö´ÐÐÏÂÁÒÔĬÈÏiptables×èÖ¹¶Ë¿ÚÉϵÄËùÓд«Èë SSH ÅþÁ¬60636£º

$ sudo iptables -A INPUT -p tcp --dport 60636 -j REJECT

ÏÖÔÚʵÑéÔÙ´ÎÅþÁ¬µ½ SSH ·þÎñÆ÷£¬Ó¦¸Ã»áÊÕµ½¡°Connection refused¡±ÏìÓ¦£º

$ ssh -i path-to-identity-file username@SERVER_IP -p 60636ssh: connect to host SERVER_IP port 60636: Connection refused

Linux ·þÎñÆ÷ÏÖÔÚÉèÖÃÁËknockd£¬²¢ÇÒ SSH ¶Ë¿Ú½«Ö»¿ª·Å¸ø¿ÉÒÔÀֳɷºÆðÇû÷ÐòÁеÄÌØ¶¨ IP¡£

04 ÅþÁ¬ SSH ·þÎñÆ÷

ÏÖÔÚÒѾ­¸ü¸ÄÁËĬÈ쵀 SSH ¶Ë¿Ú£¬ÊµÏÖÁËÖ»ÓÐÌṩ׼ȷµÄÅöײÐòÁÐʱ²Å´òÆðÔ´¿Ú60636µÄ¹¦Ð§£¬½ÓÏÂÀ´²âÊÔһϡ£

ÓÉÓÚÒѾ­ÉèÖÃknockd¼àÌýTCP SYN¶Ë¿ÚÉϵÄÊý¾Ý°ü20001£¬20002ÇÒ20003×÷ΪÅöײÐòÁУ¬ÏÖÔÚ¿ÉÒÔʹÓÃí§ÒâÔÊÐíÆô¶¯µ½ÕâÐ©ÌØ¶¨¶Ë¿ÚµÄ TCP ÅþÁ¬¹¤¾ß£¬ÏÂÃæÑÝʾÏêϸ²Ù×÷°ì·¨¡£

4.1 ʹÓÃÅöײ

Ê×ÏÈ£¬ÔÚ¿Í»§¶ËÅÌËã»úÖÐ×°ÖÃknockd¡£

$ sudo apt-get install knockd

ʹÓÃÈçÏÂknockÏÂÁîÖ´ÐÐÅöײÐòÁУº

ÏÖÔÚ¿ÉÒÔͨ¹ýSSH»á¼ûÅþÁ¬ Linux ·þÎñÆ÷£º

$ ssh -i path-to-identity-file username@SERVER_IP -p 60636

...

Íê³É SSH »á¼ûºó¿ÉÒÔÆô¶¯¹Ø±ÕÐòÁУ¬ÈçÏÂËùʾ£º

$ knock -v SERVER_IP 20003 20002 20001 -d 500

¿ÉÒÔÉó²éknockdµÇ¼syslogä¯ÀÀÏêϸÐÅÏ¢£º

4.2 ʹÓÃÔ¶³ÌµÇ¼

ʹÓÃÒÔÏÂÏÂÁîÆô¶¯Çû÷ÐòÁÐtelnet£º

ÊÕµ½¡°Connection refused¡±ÐÂÎŲ¢ÅþÁ¬Ê§°Ü£¬µ«Ã»¹ØÏµ£¬ÓÉÓڸö˿ÚÉϽûÓÃÁË telnet£¬ÎÒÃÇÖ»Ïë·¢ËÍÔÚ telnet ÅþÁ¬Ê±´ú·¢Ë굀 TCP SYN Êý¾Ý°ü¡£Íê³ÉËùÓÐÈý¸öÐòÁÐµÄ telnet ÏÂÁîºó¼´¿Éͨ¹ý SSH ÅþÁ¬µ½·þÎñÆ÷¡£

05 ²Î¿¼Á´½Ó

https://goteleport.com/blog/ssh-port-knocking/

https://www.howtoing.com/how-to-use-port-knocking-to-hide-the-ssh-port-from-attackers-on-ubuntu

Òªº¦´Ê±êÇ©£º
Çå¾²ÔËÓª ¼ì²âÓë·À»¤ÄÜÁ¦ ÍøÂçÇå¾²ÑÝÁ· Port KnockingÒþ²ØSSH·þÎñÆ÷
¿Í»§·þÎñÈÈÏß

400-777-0777
7*24Сʱ·þÎñ

ÁªÏµÓÊÏä

servicing@topsec.com.cn

ɨÂë¹Ø×¢
ÍøÕ¾µØÍ¼