システムを保護します。 または、ポートノッキングを構成して使用する方法

サラムパパラムすべて!



その後、サーバーをより安全にする方法に戸惑いました。 IPブロッキングでiptablesを直接使用しても問題は解決しませんでした。 稼働中のPCからだけでなく、家、別の都市、またはバス(渋滞に立っているとき)からもサーバーに接続できます。

ポートノッキングを使用することにしました

これを使用したことがない人は、猫の下で歓迎されています。



トピックに含まれていない人のために、私は簡単に言います:これはネットワークインターフェースを「リッスン」するデーモンであり、リクエストがポート7000,8000,9000に送信されていることを「聞いた」場合、事前に指定したポートにIPの許可ルールを追加します。 iptablesへのアクセスを許可または拒否するコマンドを実行するだけです。



だから、私はすべてのsshからカバーしたかった。

まず、デーモン自体をインストールします(テストでは、Ubuntuで作業中のPCを使用しました)。



sudo apt-get install knockd
      
      







CentOSの場合、次のようにインストールできます。



 sudo rpm -Uhv http://pkgs.repoforge.org/knock/knock-0.5-3.el6.rf.x86_64.rpm
      
      







次に、このデーモン(/etc/knockd.conf)の構成を編集する必要があります。



 [options] UseSyslog [openSSH] sequence = 7000:tcp,8000:tcp, 9000:udp seq_timeout = 5 command = /sbin/iptables -I INPUT 1 -s %IP% -d _IP____ -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9000:udp,8000:tcp,7000:tcp seq_timeout = 5 command = /sbin/iptables -D INPUT -s %IP% -d _IP____ -p tcp --dport 22 -j ACCEPT tcpflags = syn
      
      







次に、デーモンを再起動します。



 sudo /etc/init.d/knockd restart
      
      







次に、ポート22の全員に拒否ルールを追加します。



 sudo iptables -A INPUT -s 0/0 -d _IP____ -p tcp --dport 22 -j REJECT
      
      







[openSSH]セクションで、行-I INPUT 1に注意してください。 代わりに単に-A INPUTと記述すると、ルールチェーンの最後に追加されるため、最上位のルールのみが実行されます。 したがって、禁止規則が最後に追加されるように記述します。

sequenceは、アクセスを許可するポートシーケンスを示します。 必ず自分のものを指定してください。

プロトコルを指定することもできます。たとえば、7000:udp、8000:udp、9000:tcp

tcpflags-ここでは、送信されたパケットに含まれるヘッダーを示します。



[closeSSH]セクションで、22番目のポートを閉じるための逆のシーケンスを指定します。 また、許可リストからIPを削除するコマンドがあります。



ここで疑問が生じます。このマジックシーケンスをポートに送信する方法は?

開発者のサイトから、人気のあるプラットフォーム用のプログラムをダウンロードできます。 他の使用例がそこにあります。

Windowsでは、これを使用しました:ダウンロード、解凍。 コマンドプロンプトを開きました
 cd ____ knock 192.168.0.1 7000:tcp 8000:tcp 9000:udp
      
      





すべてがポートを開いています。 これでSSHに行くことができます!



別のプロトコルに使用する場合は、同じ方法で同じ方法で[openFTP][closeFTP]セクション記述し 、ポートを必要なものに変更するだけです。

このことの欠点は、接続する前に追加のプログラムを使用する必要があることです。 しかし、私には安全のために許容できるようです。



すべてのセキュリティ!



All Articles