解決策 1:
SSH デーモンのバージョン番号を隠すのは非常に困難ですが、Linux バージョン (Debian-3ubuntu4) は簡単に隠すことができます。
次の行を /etc/ssh/sshd_config
に追加します
DebianBanner no
SSH デーモンを再起動します:/etc/init.d/ssh restart
または service ssh restart
解決策 2:
それらを非表示にすると、サーバーが保護されません。システムが実行しているものをフィンガープリントする方法は他にもたくさんあります。特に SSH の場合、バージョンの発表はプロトコルの一部であり、必須です。
http://www.snailbook.com/faq/version-string.auto.html
解決策 3:
ほとんどの場合、識別バナーはコンパイルされたコードの一部であり、それらを変更または抑制する構成オプションはありません。これらのソフトウェアを再コンパイルする必要があります。
解決策 4:
バージョンの発表を実際に変更することはできないと確信しています。
sshd を保護する最善の方法は次のとおりです。
<オール>最初の 3 つは、/etc/sshd_config を変更することで実行できます
4 つ目は、使用しているファイアウォール ソフトウェアによって異なります。
解決策 5:
上で述べたように、バージョン番号の変更は
<オール>私が提案するのは、ポート ノッキングの実装です。これは、サーバー上で実行されているものをすべて隠すかなり単純な手法です。
これが良い実装です:http://www.zeroflux.org/projects/knock
これは、「秘密のノック」を知っている人だけに SSH を開くために、サーバー (他の番号) に実装した方法です:
[openSSH]
sequence = 300,4000,32
seq_timeout = 5
command = /opencloseport.sh %IP% 2305
tcpflags = syn
これにより、3 つの SYN パケットを正しい順序で受信する必要がある 5 秒のウィンドウが得られます。互いに離れており、連続していないポートを選択してください。そうすれば、ポートスキャナーが誤ってポートを開くことはありません。これらのポートは iptables で開く必要はありません。
私が呼び出すスクリプトはこれです。 SYN パケットを送信する IP 用に特定のポートを 5 秒間開きます。
#!/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 パケットを送信するのは非常に面倒なので、スクリプトを使用してサーバーの SSH に接続します。
#!/bin/bash
knock $1 $2
knock $1 $3
knock $1 $4
ssh [email protected]$1 -p $6
(ここで何が起こっているかは明らかです...)
接続が確立されたら、ポートを閉じることができます。ヒント:キー認証を使用します。それ以外の場合は、パスワードをすばやく入力する必要があります。