206208121
201976962

iptablesの設定方法

対象サービス・プラン
 

ファイアウォール機能であるiptablesは、サーバへ接続させる通信のルールを設定できます。
このページでは、簡易的な設定を一例として紹介します。

注意事項

  • iptablesの設定内容は、サーバへの攻撃対策方法やお客様の利用用途により多岐にわたり、
    このページに紹介する設定の限りではありません。
  • このページは、あくまでも参考としてご覧いただき、実際の設定は、お客様にてサーバへの攻撃対策方法や
    ご利用用途をご確認のうえ追加での対策設定などを、各種参考書籍をもとに行ってください。

前提条件

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

ページの先頭へ

iptabelsの設定

サーバにログイン

リモートコンソールやターミナルソフトなどを利用してroot権限を持ったユーザでサーバにログインします。
※ここでは、rootでログインした場合で説明します。
※さくらのVPS ベアメタルプランの場合、1行目は「SAKURA Internet [BareMetal Server SERIVCE]」と表示されます。

設定の確認

iptablesの設定を確認します。

# iptables -L

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

step2-001.png

Chain について

iptablesを設定を1まとめにするブロックのようなものです。デフォルトでは以下のChainがあります。

  • INPUT : サーバに入ってくる通信に対する制御を行います
  • FORWARD : サーバを経由する通信に対する制御を行います
  • OUTPUT : サーバから出て行く通信に対する制御を行います
  • f2b-SSH : fail2banと呼ばれるソフトウェアで利用するChainです

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

# cat /etc/sysconfig/iptables

step2-002.png

-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攻撃と思われる接続を破棄する
③ステルススキャンと思われる接続を破棄する

step3-001.png

許可する通信の設定

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

# iptables -I INPUT 5 -p tcp -m tcp --dport ** -j ACCEPT

※「**」は、許可するポート番号です。
INPUT Chainの 5行目に挿入しています。

image__2_.png

[参考]

主なポート番号は以下の通りです。

プロトコル ポート番号
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の設定ファイルに設定が記載されているか確認します。

# cat /etc/sysconfig/iptables

step5-001.png

iptablesの設定を確認します。

# iptables -L

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

step5-002.png

さくらのサポート情報

メニューを閉じる