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

サラムパパラムすべて!

その後、サーバーをより安全にする方法に戸惑いました。 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]セクション記述し 、ポートを必要なものに変更するだけです。
このことの欠点は、接続する前に追加のプログラムを使用する必要があることです。 しかし、私には安全のために許容できるようです。

すべてのセキュリティ!

Source: https://habr.com/ru/post/J194412/


All Articles