iptablesの設定方法

ファイアウォール機能である iptables は、サーバーへ接続させる通信のルールを設定できます。
本マニュアルでは、簡易的な設定を一例として紹介します。
※ iptablesの設定内容は、サーバーへの攻撃対策方法やお客様の利用用途により多岐にわたり、このページに紹介する設定の限りではありません。
※ 本マニュアルは、あくまでも参考としてご覧いただき、実際の設定はお客様にてサーバーへの攻撃対策方法やご利用用途をご確認のうえ追加での対策設定などを各種参考書籍をもとに行ってください。

本マニュアルは、 さくらのVPS の標準OS(CentOS 6)がインストールされているサーバが対象です。
その他のOSでの設定は、各OSのマニュアルをご確認ください。
iptables以外にもセキュリティ対策を行ってください。

サーバにログイン

リモートコンソールやターミナルソフトなどを利用してroot権限を持ったユーザーでサーバーにログインします。
※ ここではrootでログインした場合で説明します。
rootでログイン後の画面

設定の確認

iptablesの設定を確認します。

# iptables -L
コマンドでiptablesの設定を確認

デフォルトでは以下のルールが存在します。

デフォルトでの状態
Chain について
iptablesを設定を1まとめにするブロックのようなものです。デフォルトでは以下のChainがあります
INPUT : サーバに入ってくる通信に対する制御を行います
FORWARD : サーバを経由する通信に対する制御を行います
OUTPUT : サーバから出て行く通信に対する制御を行います
f2b-SSH : fail2banと呼ばれるソフトウェアで利用するChainです

設定ファイルを確認します

# cat /etc/sysconfig/iptables
コマンドで設定ファイルの確認 コマンド結果の表示
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT — ①
-A INPUT -p icmp -j ACCEPT — ②
-A INPUT -i lo -j ACCEPT — ③
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT — ④
-A INPUT -j REJECT –reject-with icmp-host-prohibited — ⑤
-A FORWARD -j REJECT –reject-with icmp-host-prohibited — ⑥
① INPUTについて、すでに確立した通信(established)および関連したパケット(related)を許可する
② INPUTについて、ICMPプロトコルの通信を許可する
③ INPUTについて、loopback(127.0.0.1) の通信を全て許可する
④ INPUTについて、SSHプロトコルで利用する 22番ポートの通信を許可する
⑤ INPUTについて、上記のルールに無い通信は接続拒否(REJECT)する。その際、接続元にicmp-host-prohibitedを返す
⑥ FORWARDする通信に関して全て接続拒否(REJECT)する。その際、接続元にicmp-host-prohibitedを返す

ルールの設定

外部からの不正アクセスに対してサーバーを保護するため、最も一般的な攻撃を遮断するようにファイアウォールルールを追加することが出来ます。
本格的なDDoS攻撃等に対してiptablesのみによる防衛では不十分ですが、ネットワークをスキャンしてセキュリティホールを突くボットの被害にあうことを先送りにすることができます。

サーバーへの攻撃対策のルールを設定します。
# iptables -I INPUT 2 -p tcp –tcp-flags ALL NONE -j DROP ——①
# iptables -I INPUT 2 -p tcp ! –syn -m state –state NEW -j DROP ——②
# iptables -I INPUT 2 -p tcp –tcp-flags ALL ALL -j DROP ——③
※ 上記はあくまで参考の設定例です。設定例として記載したルールは以下の内容です。
※ INPUT Chainの2行目にルールを追加します。

① データを持たないパケットの接続を破棄する
② SYNflood攻撃と思われる接続を破棄する
③ ステルススキャンと思われる接続を破棄する
コマンドでルールの設定

許可する通信の設定

サーバーの利用用途に合わせて許可するポート番号を設定します。

# iptables -I INPUT 5 -p tcp -m tcp –dport ** -j ACCEPT
※ 「**」は、許可するポート番号です。

INPUT Chainの 5行目に挿入しています。
許可するポート番号の設定
[ 参考 ]
主なポート番号は以下の通りです。

プロトコル

ポート番号

HTTP

80

HTTP(SSL)

443

SMTP

25

SMTP(SSL)

465

POP3

110

POP3(SSL)

995

IMAP

143

IMAP(SSL)

993

SSH

22

※ ポート番号を変更している場合は、この限りではありません。

iptablesの設定を設定ファイルに保存します。
# service iptables save
iptablesの設定を設定ファイルに保存

設定の確認

iptablesの設定ファイルに設定が記載されているか確認します。

# cat /etc/sysconfig/iptables
コマンドで設定ファイルの記載内容を確認 コマンド結果の表示

iptablesの設定を確認します。

# iptables -L
コマンドでiptablesの設定確認

ルールが設定されていれば、「iptablesの設定」は完了です。

コマンド結果の表示