【Debian 8 Jessie】iptablesの設定をこれだけはやっておく


この記事は、下記の記事を構成している記事のひとつです。
さくらのVPS と Debian 8 Jessie で独自ドメインのWebサイトを立ち上げる手順

・さくらのVPS(プラン512)
・Debian 8 Jessie(さくらのVPS カスタムインストール)
の環境を前提にしています。

インストール直後のiptablesの設定を確認する

[hoge]$
sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

つまり、すべて許可しますよー。って設定になっている。インターネット上に公開サーバを立てる以上、最低限の設定はしておくべきです。

iptables-persistent をインストールする

iptablesを管理する、iptables-persistentをインストールします。

[hoge]$
sudo aptitude -y install iptables-persistent

インストール中に、IPv4と、IPv6の設定ファイルを作成するか聞かれるので、どっちもYesを選択します。

iptables(IPv4)のルールを設定する

IPv4用の設定ファイルを、下記の内容ですべて書き換える。

[hoge]$
sudo cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.backup
sudo vi /etc/iptables/rules.v4
/etc/iptables/rules.v4
*filter

# ループバックは許可する。
# ループバック以外の127.0.0.0/8への接続は拒否する。
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# 確立済の外部から内部への接続を許可する
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 内部から外部への接続はすべて許可する
-A OUTPUT -j ACCEPT

# 外部から内部へのHTTP(80)とHTTPS(443)の接続を許可する
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# 外部から内部へのSSHの接続を許可する
# ポート番号は、/etc/ssh/sshd_config で設定したものと同じにする
-A INPUT -p tcp -m state --state NEW --dport 1234 -j ACCEPT

# 外部から内部へのpingの接続を許可する
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# その他の接続を拒否する
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

設定したファイルを再読み込みする。

[hoge]$
sudo netfilter-persistent reload

iptables(IPv6)のルールを設定する

IPv6用の設定ファイルを、下記の内容ですべて書き換える。
IPv6での接続は、すべて拒否する設定にします。

[hoge]$
sudo cp /etc/iptables/rules.v6 /etc/iptables/rules.v6.backup
sudo vi /etc/iptables/rules.v6
/etc/iptables/rules.v6
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT

設定したファイルを再読み込みする。

[hoge]$
sudo netfilter-persistent reload