iptablesの設定メモ

そのままの状態では、サーバへすべてのパケットが通ってしまうので、iptablesを使ってパケットフィルタリングを行います。

フィルタリングルールは、以下のサイトの情報を参考にしながら設定します。

基本的には、外部に公開しているサービスのみポートを開放します。(今後、必要に応じて変更する予定)

  • 外部からTCP22番ポート(SSH)へのアクセスを日本からのみ許可
  • 外部からTCP80番ポート(HTTP)へのアクセスを許可
  • 外部からTCP443番ポート(HTTPS)へのアクセスを許可

上記のページで作成したスクリプトファイル(iptables.sh)は、内部でiptables設定用の外部関数の取り込みを行っているので動作を確認しておきます。もしwgetがインストールされていない場合には、インストールをお忘れなく!

$ sudo yum install wget

関数を実行して /tmp/cidr.txt というファイルが展開されたことを確認します。

# . /root/iptables_functions
# IPLISTGET
# ls -l /tmp/cidr.txt
-rw-r--r-- 1 root root 1107828 Mar 21 03:16 /tmp/cidr.txt

作成スクリプトを実行して、iptablesを有効にします。

# /root/iptables.sh

そのままだと、以下のエラーメッセージが表示されてしまいます。

Loading additional iptables modules: ip_conntrack_netbios_ns         [FAILED]

LinodeWikiに書かれている情報を参考に /etc/sysconfig/iptables-config を変更します。

/etc/sysconfig/iptables-config 内に記載されている

IPTABLES_MODULES="ip_conntrack_netbios_ns"
IPTABLES_MODULES_UNLOAD="yes"

の部分を以下の通りに変更します。

IPTABLES_MODULES=""
IPTABLES_MODULES_UNLOAD="no"

iptablesを再起動します。

# service iptables restart

設定内容が正しく反映されたか確認しておきます。

# iptables -n -L

おまけ

これぐらいの設定はしてた方がいいかもしれない。

$  cat /etc/hosts.allow 
#
# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#

# local
ALL : 127.0.0.1 : allow

# 自分のプロバイダ
ALL : .xxx.xxx.ne.jp  : allow

# default
ALL : ALL : deny