LoginSignup
319
311

More than 5 years have passed since last update.

立ち上げ直後のiptablesを設定する。

Last updated at Posted at 2013-04-19

環境

  • CentOS release 6.4 (Final)
  • iptables.i686 1.4.7-9.el6

方針

以下の大原則に従う設定を作ることとする。

  • 自ホストからの通信は通してやる。
  • 外からのpingは通してやる。
  • 外からのSSHは通してやる。
  • それ以外の外からの通信は受け付けない。
  • 外へ出ていく通信はすべて通す。

手順

まず、外からのすべての通信を受け付けないようにする。

外からの通信(INPUT, FORWARD)をすべてDROPする。そのあとで通すものを書いていくホワイトリスト方式とする。
中から外へ出ていく通信はすべて通してやる。

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

確立済みの通信は通してやる。

どこから来たのか、どのポート宛てなのか、は気にせず、すでに確立済みなら通してやる。要するに、これに続く記述で通信を確立させるかどうかを設定してやる。

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

pingは通してやる。

プロトコルがICMPなら通してやる。

-A INPUT -p icmp -j ACCEPT

ループバックは通してやる。

自ホストからの通信は問答無用で全部通してやる。

-A INPUT -i lo -j ACCEPT

SSHは通してやる。

他ホストからSSH接続はするので、宛先が22番ポートなら通してやる。当然、SSH側のセキュリティ(パスワードログインさせないとか、rootログインさせないとか)はそちらで別途設定すること。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

SSH以外のサービスのためのポートを開ける場合はこれを真似して追加していく。例えば、HTTP(80)ならこんな感じで。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

全体はこんな感じで。

/etc/sysconfig/iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-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
COMMIT

iptablesを再起動して設定を反映させる。

rootでね。

/etc/init.d/iptables restart
319
311
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
319
311