
私は iptables を初めて使用しており、Web サーバーを保護することを目的としたファイアウォールを構築しようとしています。以下のルールは、これまでに構築したルールです。ルールが理にかなっているかどうか、また、重要な点を省略していないかどうかについてご意見をお聞かせください。
ポート 80 に加えて、外部接続用にポート 3306 (mysql) と 22 (ssh) も開く必要があります。
あらゆるフィードバックを大歓迎します!
#!/bin/sh
# Clear all existing rules.
iptables -F
# ACCEPT connections for loopback network connection, 127.0.0.1.
iptables -A INPUT -i lo -j ACCEPT
# ALLOW established traffic
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# DROP packets that are NEW but does not have the SYN but set.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# DROP fragmented packets, as there is no way to tell the source and destination ports of such a packet.
iptables -A INPUT -f -j DROP
# DROP packets with all tcp flags set (XMAS packets).
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
# DROP packets with no tcp flags set (NULL packets).
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# ALLOW ssh traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport ssh -m limit --limit 1/s -j ACCEPT
# ALLOW http traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport http -m limit --limit 5/s -j ACCEPT
# ALLOW mysql traffic (and prevent against DoS attacks)
iptables -A INPUT -p tcp --dport mysql -m limit --limit 25/s -j ACCEPT
# DROP any other traffic.
iptables -A INPUT -j DROP
答え1
すぐに使える適切なファイアウォールを提供する shorewall をお試しください。必要なサービスに対してネットからのアクセスを有効にします。1、2、3 つのインターフェイス用のサンプル ルール セットがあります。ドキュメントは充実しており、積極的にメンテナンスされています。
MySQL にアクセスできるアドレスを制限したいと考えるでしょうが、これは簡単にできます。また、最近別のポートをプローブしていない限り、ポートが閉じられているポート ノッキングを使用して SSH を保護することもできます。
答え2
- 本当に ICMP を許可したいのです。
- 5/秒ではHTTPには不十分だろう
- XMAS/NULLパケットのルールに意味はないと思う
- また、特別な新しいパケットルールの理由もわかりません
ETA: 5。このようなレート制限があると、DoS 攻撃が非常に簡単になります。SSH アクセスを拒否するには、1 秒あたり 1 つの SYN パケットをサーバーに送信するだけです。
答え3
Iptables ルールの設定には、NARC のようなものを使用することを検討します。
このパッケージには信頼できる適切なデフォルトがすでにいくつか用意されています。
答え4
サーバーからインターネットへの送信通信のフィルターも重要です。特に SMTP は 1 つのサーバーのみに許可することをお勧めします。
私は Mikrotik ファイアウォールを管理しており、たとえば次のような作業を行っています。
- プライベート範囲の宛先アドレスを持つインターネットからの受信パケットをドロップします
- ポートスキャンをドロップする(1秒あたり5ポート以上のチェック)
- 別のポートにSSHで接続し(わかりにくいかもしれませんが、動作します!:-))、ソースIPを制限します。
- ルーターのブロードキャストをドロップする
- TCP RSTをドロップする
他にもいくつかあります。これを読むことをお勧めします:http://wiki.mikrotik.com/wiki/Dmitry_on_firewallingMikrotik の構文はわかりやすく、初心者にもわかりやすい内容になっています。