iptablesの設定について

LINEで送る
Pocket

がじです。
前回の更新からだいぶ間が空いてしまいました。

Mecabのお試しページを作った際に、そういえばiptablesの設定について書いてなかったことに気付いたので、いまさらながら、iptablesによるポートの設定について備忘録として記述しておくことにします。
参考にしたサイトはこちら

ほぼこのまんまですが、上記のページではiptablesコマンドでポートの設定をしてその結果を”/etc/init.d/iptables save”コマンドで保存しています。

実サーバーに直接ログインしている場合はこれでもいいのですが、VPSの場合、SSH経由でログインしているのでちょっと間違えるといきなり通信不能になってしまう可能性があります。そこで直接
/etc/sysconfig/iptables
を編集することにします。ちょっと怖いので実験用の仮想環境に下記のコマンドを打って、生成された/etc/sysconfig/iptables を参考にVPS側の設定ファイルを編集します。

まずは方針:
デフォルトのルールを削除

# iptables -F

フォワード(転送)の禁止

# iptables -P FORWARD DROP

自分からのパケットを許可

# iptables -A INPUT -i lo -j ACCEPT

SSH通信を許可(ただし、実際にはポート番号22は攻撃対象となりやすいため、あらかじめ変更しておいたSSH通信ポート番号を指定する。)

# iptables -A INPUT -p tcp –dport 22 -j ACCEPT

FTP(20,21,4000-4029) の接続を許可

# iptables -A INPUT -p tcp –dport 20 -j ACCEPT
# iptables -A INPUT -p tcp –dport 21 -j ACCEPT
# iptables -A INPUT -p tcp –dport 4000:4029 -j ACCEPT

http/https通信(80,443 番,ついでに8000/8080も)の接続を許可

# iptables -A INPUT -p tcp –dport 80 -j ACCEPT
# iptables -A INPUT -p tcp –dport 443 -j ACCEPT
# iptables -A INPUT -p tcp –dport 8000 -j ACCEPT
# iptables -A INPUT -p tcp –dport 8080 -j ACCEPT

POP(110)の通過を許可

# iptables -A INPUT -p tcp –dport 110 -j ACCEPT

SMTP(25番 送信メール)の許可

# iptables -A INPUT -p tcp –dport 25 -j ACCEPT

SUBMISSION ポートを開放
(SUBMISSION ポートについてはこちらを参照)

# iptables -A INPUT -p tcp –dport 587 -j ACCEPT

DNS関係(53)の許可(実際はいろいろ種類があるらしいけどとりあえずこれだけ)

# iptables -A INPUT -p tcp –dport 53 -j ACCEPT
# iptables -A INPUT -p udp –dport 53 -j ACCEPT

Pingを許可

# iptables -A INPUT -p icmp -j ACCEPT

TCPの接続開始と応答、FTPデータなどを許可

# iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

MySQLのDBポートへのアクセス許可(3306)

# iptables -A INPUT -p tcp –dport 3306 -j ACCEPT
# iptables -A INPUT -p tcp –sport 3306 -j ACCEPT

syn信号とPING攻撃の無効化(DoS攻撃対策で1秒に1回だけ受信)

# iptables -A INPUT -i ppp+ -p tcp –syn -m limit –limit 1/s -j ACCEPT
# iptables -A INPUT -i ppp+ -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT

設定完了と、設定したルール以外の全ての接続を拒否
# iptables -P INPUT DROP

この状態で設定を保存してiptablesを再起動

# /etc/init.d/iptables save
# service iptables restart

Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: mangle filter nat [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]

/etc/sysconfig/iptablesの中身が下記のようになるのでVPS側の同ファイルの中身を同等に書き換える。

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1:216]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 20 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 4000:4029 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 8000 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 8080 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 587 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 53 -j ACCEPT
-A INPUT -p udp -m udp –dport 53 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp –dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp –sport 3306 -j ACCEPT
-A INPUT -i ppp+ -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -m limit –limit 1/sec -j ACCEPT
-A INPUT -i ppp+ -p icmp -m icmp –icmp-type 8 -m limit –limit 1/sec -j ACCEPT
COMMIT

以上。
メール関連はもう少しいじるかも。
—以下広告—

ネットワークセキュリティHacks 第2版 ―プロが使うテクニック & ツール 100

新品価格
¥3,360から
(2014/1/27 23:18時点)

LINEで送る
Pocket