iptables とハッカー対策

iptables とハッカー対策

Ubuntu ユーザーの皆さん、こんにちは!

以下は私の iptables.rules ファイルの例です。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:f2b-sshd - [0:0]
:f2b-sshd-ddos - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd-ddos
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -s 202.215.160.75/32 -j DROP
-A INPUT -s 66.210.251.136/32 -j DROP
-A INPUT -s 61.40.0.0/16 -j DROP
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd-ddos
-A INPUT -i tap0 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -i br0 -j ACCEPT
-A FORWARD -i br0 -j ACCEPT
-A f2b-sshd -j RETURN
-A f2b-sshd-ddos -j RETURN
COMMIT

これは私のファイルの要約版であることに注意してください。削除する IP/ドメインはおそらく 100 個程度です。

私の問題は、xxxx のような新しい IP を削除すると、次のように追加されることです。

-A INPUT -i br0 -j ACCEPT
-A INPUT -s x.x.x.x/32 -j DROP
-A FORWARD -i br0 -j ACCEPT

これでは、どういうわけか、私が望むように IP アドレスが削除されません。ユーザー/ドメインを削除するために使用するシェル スクリプトがあります。

./ドロップユーザー

sudo iptables -A INPUT -s $1 -j DROP
sudo sh -c "iptables-save > /etc/iptables.rules" 

./ドロップドメイン

 sudo iptables -A INPUT -s $1/16 -j DROP
 sudo sh -c "iptables-save > /etc/iptables.rules"

この問題に対処するために、/etc/iptables.rules ファイルを手動で編集して、xxx​​x ip を次の行より上に移動します。

 -A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd-ddos

そして次のように呼び出します:

sudo iptables-restore < /etc/iptables.rules

私のプロセスに何か問題があるのでしょうか? もっと良い方法はありますか? 毎日、ハッキングに対処するのに約 10 分を費やしており、そのほとんどの時間を iptables.rules ファイルの編集と、iptables-restore による復元に費やしています。./drop-user または ./drop-domain を呼び出すだけで済むようにしたいのですが、iptables に対する理解が足りないと感じています。

iptables-restore の前に次のコマンドを実行する必要がありますか?

 sudo iptables -F
 sudo iptables -Z

前もって感謝します!

答え1

fail2banデフォルトの設定で問題なく動作し、さらに多くのサービスを監視する場合はさらにカスタマイズできる を使用して禁止プロセスを自動化することを強くお勧めします。

と組み合わせるとiptables-persistent、再起動後もルールが保持されるので便利です。

以下は、Ubuntu サーバーで私が行っていることの基本的な概要です。

fail2banをインストールして設定する

sudo aptitude install fail2ban && sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local && sudo nano /etc/fail2ban/jail.local

これにより、インストールされ、カスタマイズ用に構成ファイルが新しいファイルにコピーされます。パッケージが更新されても編集内容が上書きされないようにするため、これがベスト プラクティスです。

私の個人的な好みは、禁止時間そして時間を見つけるデフォルトから変更します。禁止時間は、攻撃者が禁止される期間で、検索時間は、攻撃をレート制限した場合に攻撃の試行がカウントされる時間枠です。bantime = 21600(6 時間に増加、時間の値は秒単位) およびfindtime = 3600(1 時間あたり最大 3 回の攻撃試行) を検索して編集します。

既存の Iptables ルールをフラッシュし、新しいデフォルトを設定する

これは、ポート 22 (SSH)、ポート 80 (HTTP)、およびポート 443 (HTTPS) のみをリッスンする受信ポートを持つ一般的な Web サーバーで使用することを目的としたワンライナーです。このDigitalOceanチュートリアル独自のものを構築したり、カスタマイズしたりする方法についての良い参考資料です。Iptables と DROP ルールの設定には注意してください。順序を間違えると、永久にロックアウトされてしまいます。とはいえ、私が使用しているのは次のワンライナーであり、安全で、テスト済みで、完璧に動作します。

sudo iptables -P INPUT ACCEPT && sudo iptables -F && sudo iptables -A INPUT -i lo -j ACCEPT && sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT && sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT && sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT && sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT && sudo iptables -A INPUT -j LOG && sudo iptables -A FORWARD -j LOG && sudo ip6tables -A INPUT -j LOG && sudo ip6tables -A FORWARD -j LOG && sudo iptables -A INPUT -j DROP

再起動後も変更を永続化する

最後のステップは、パッケージをインストールして構成することですiptables-persistent。これにより、再起動後もルールの保存と復元が自動化されます。

sudo aptitude install iptables-persistent && sudo service iptables-persistent start

IPV4 および IPV6 ルールの確認を求めるプロンプトが表示されるので、Tab キーを使用してそれぞれに「はい」を選択し、保存します。再起動すると自動的に開始されるため、それ以上の設定を心配する必要はありません。

ルールを永続化する場合の注意点の 1 つは、追加または編集した新しいルール (たとえば、ポート 443 で HTTPS を追加または削除した場合など) をプロセスに手動で通知する必要があることです。これを行うには、sudo service iptables-persistent save現在のルール セットを更新する which を実行します。バージョン 14.04 以降ではコマンドが "netfilter-persistent" に変更されたと思うので、sudo service netfilter-persistent save最初のコマンドが機能しない場合はこれを使用してください。

まとめ

これで、fail2ban は SSH への攻撃を監視し、設定したパラメータに従って IP アドレスを自動的に追加および削除します。Iptables は開いていないポートのすべての着信トラフィックを無視し、これらのルールは再起動後も維持されるため、他に必要な作業はほとんどありません。余った自由時間を楽しんでくださいね!

すべての変更を元に戻したい場合は、上記の手順をすべて逆にしてください。

何らかの理由でこの方法を使い続けたくない場合は、すべてをすぐに元に戻すことができます。これはお勧めできませんが、それはあなたのマシンなので、方法は次のとおりです。

  1. すべての Iptables ルールをフラッシュし、すべてのポートのすべてのトラフィックを受け入れますsudo iptables -P INPUT ACCEPT && sudo iptables -F(最後に DROP ルールを削除するには、これを行う必要があります。そうしないと、ロックアウトされます)
  2. 以前にインストールしたパッケージとその設定sudo aptitude purge fail2ban iptables-persistentnetfilter-persistentUbuntu サーバーのバージョンによっては )を削除します。再起動後、以前の状態に戻ります。ただし、現在行っているように手動で再度追加する必要があるカスタム Iptables 設定は除きます。

関連情報