リモートサーバー:
すべての着信トラフィックをブロックするようにiptablesを設定したいと思います。
しかし、..システムが完全に起動してから4分
私が持つことができるように4分でSSH経由で接続
私がロックされる前に。
これを達成するための最良の方法は何ですか?
ステップ1おそらく:
chkconfig iptables off
何ですかステップ2 ?
答え1
システムの起動時に実行されるスクリプトを生成して、最初に4分間スリープモードに切り替えてから、必要なiptablesコマンドを実行できます。
それは次のとおりです。
#!/bin/bash
/etc/init.d/iptables stop
sleep 4m
/etc/init.d/iptables start
iptables -P INPUT DROP
システム起動時にこれを実行するには、/etc/init.dchmod +x yourscript.sh
で適切な権限()を使用してスクリプトをコピーし、rcを更新します。例:
update-rc.d yourscript.sh defaults 100
答え2
セキュリティの観点からは、アプリケーションを実行する前にファイアウォールをインストールするのが最善です。
したがって、を使用する方がより適切かもしれません。この方法では、ポートをknockd
開き、指定された時間後に閉じるポートノックシーケンスを設定できます。ssh
構成例は次のとおりです。
/etc/knockd.conf
[options]
logfile = /var/log/knockd.log
[opencloseSSH]
sequence = 8081,8082,8083
seq_timeout = 5
tcpflags = syn
start_command = /usr/sbin/iptables -I IN_external_allow -i enp0s8 -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 15
stop_command = /usr/sbin/iptables -D IN_external_allow -i enp0s8 -s %IP% -p tcp --dport 22 -j ACCEPT
入力したい場合は、次のようなものを使用できます。
nc -w 1 myhost 8081
nc -w 1 myhost 8082
nc -w 1 myhost 8083
ssh user@myhost
パケットのみをチェックするので、上記のポートのリスナーを設定する必要はありませんsyn
。ただし、パケットがホストに到達できるように、外部ファイアウォールでポートを開く必要があります。すでに開いている可能性が高い80、25、443などのより一般的なポートを使用することもできます。
設定によっては、このシーケンスは5秒以内に完了する必要があり、15秒後にポートが再び閉じられます。既存のセッションは引き続き開かれているため、安全に使用できます。
また、見ることができますhttp://www.zeroflux.org/projects/knockこの機能を構成する方法の詳細。