私は Ubuntu 12.04 ファイアウォールに取り組んでいます。実行時にすべての IP を拒否したいです。「ufw deny from IP」を使用しています。これは将来の接続では機能します。しかし、ssh のように既存の接続をキャンセルしません。
特定の IP からの現在の通信をすべてキャンセルするにはどうすればよいですか?
よろしくお願いいたします。
答え1
私が見つけた最良のオプションは を使用することですtcpkill
。 をインストールしたとき、 はdsniff
パッケージの一部だったので、最初にそれをインストールする必要がありました。 その後、次のように使用します。
$ sudo tcpkill ip host 20.129.11.86 and port 22
tcpkill: listening on eth0 [ip host 20.129.11.86 and port 22]
10.206.22.202:42532 > 20.129.11.86:22: R 1785992582:1785992582(0) win 0
10.206.22.202:42532 > 20.129.11.86:22: R 1785992732:1785992732(0) win 0
10.206.22.202:42532 > 20.129.11.86:22: R 1785993032:1785993032(0) win 0
20.129.11.86:22 > 10.206.22.202:42532: R 4065251855:4065251855(0) win 0
20.129.11.86:22 > 10.206.22.202:42532: R 4065301087:4065301087(0) win 0
20.129.11.86:22 > 10.206.22.202:42532: R 4065399551:4065399551(0) win 0
tcpkill は一致するトラフィックを検出するとすぐに接続を終了します。
IPがシステムのどこにアクセスしているかを確認するには、netstat -aunt
IPアドレスをgrepで調べることができます。例:
$ netstat -aunt | egrep 115.125.
tcp 0 0 10.20.22.25:56156 115.125.225.67:80 ESTABLISHED
tcp 0 0 10.20.22.25:42360 115.125.225.1:80 ESTABLISHED
tcp 0 0 10.20.22.25:35210 115.125.225.64:80 ESTABLISHED
必要に応じて、さらに ufw ルールを作成します。
ssh を再起動することはオプションですか?
sudo /etc/init.d/sshd stop
thenを使用するsudo /etc/init.d/sshd start
ことも、サービス メカニズムを使用することもできます。
$ sudo service ssh stop
ssh stop/waiting
$ sudo service ssh start
ssh start/running, process 4427
可能であれば、インターフェースを一時的に削除することもできます。
「カッター」というアプリがあり、IPアドレスとポートを引数として受け取ると動作するはずです。しかし、パッケージを正しくインストールすることができませんでした。
$ sudo apt-get install cutter
次のように動作するはずです (ssh の標準ポート 22 を想定)。
$ cutter 10.10.10.10 22
パッケージのようなものもチェックしてみるといいかもしれませんdenyhosts
。
答え2
よく分かりませんが、以下を試してみてくださいiptables
:
sudo iptables -A INPUT -p tcp --dport 22 --source 192.168.1.1 -j REJECT
あるいは、細かいことを言うなら
sudo iptables -A INPUT -p tcp --dport 22 --source 192.168.1.1 REJECT --reject-with icmp-host-prohibited
このチュートリアルを確認してください:https://help.ubuntu.com/community/IptablesHowTo
これが役に立つことを願っています。