CentOS6.7 64bit iptablesによるアクセス制御
当サイトでCentOS6.7 64bitへのインストール方法を紹介しているパッケージに関するiptablesの設定を、以下に示します。
以下の各コマンドで、プロンプトが「#」で開始しているものはrootユーザーでの実行、「$」で開始しているものは一般ユーザーでの実行となります。
Apacheへの外部からのアクセスを許可
HTTPでの外部からのアクセスは、iptablesによってデフォルトでは拒否されています。HTTPでの外部からのアクセスが可能となるようiptablesの設定を行います。
設定前の状態
アクセスを許可する前のiptablesの設定内容を、以下のコマンドで確認します。
※この例はデフォルトの設定内容になっています。
# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination
アクセス許可の設定
HTTPでの外部アクセスを許可する設定を追加するには、以下のようなコマンドを実行します。
※アクセス元のIPアドレス等、別途制限が必要なものがある場合は、そのオプションの指定を追加してください。
# iptables -I INPUT 5 -m state --state NEW -p tcp --dport 80 -j ACCEPT
- INPUTチェインでは、末尾に全ての接続を拒否する設定が行われていますので、「-A」オプションによる末尾への追加ではなく、「-I」オプションによる挿入を行うようにしています。
- INPUTの後に指定している「5」は、挿入する位置を示すルール番号で、末尾で全ての接続を拒否している位置よりも前に挿入されるようにします。
- 「–dport」オプションにより、ApacheがHTTPでのアクセスに使用しているポート80へのアクセスを許可しています。
アクセスを許可した後のiptablesの設定内容は、以下のようになります。
# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 6 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination
これによりApacheへの外部からのアクセスが可能になりますが、このままではOSの再起動後にはiptablesの設定前の状態に戻ってしまいます。
iptablesの設定内容は、ファイル「/etc/sysconfig/iptables」に保存されるようになっており、ここに設定を保存することで、OSの再起動後も設定を有効にすることができます。
iptablesの設定をファイル「/etc/sysconfig/iptables」に保存するには、以下のコマンドを実行します。
# service iptables save
設定ファイル「/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 COMMIT :(略)
設定後。
:(略) -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT :(略)
尚、追加したアクセス許可の設定を削除するには、以下のようなコマンドを実行します。
# iptables -D INPUT 5
これによりINPUTチェインからルール番号「5」のものが削除されます。
削除の設定を保存するには、以下のコマンドを実行します。
# service iptables save
SSLによるアクセス許可を追加
SSLを使用したHTTPSでの外部アクセスを許可する設定を追加するには、以下のようなコマンドを実行します。
※アクセス元のIPアドレス等、別途制限が必要なものがある場合は、そのオプションの指定を追加してください。
# iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
- 「–dport」オプションにより、ApacheがSSLを使用したHTTPSでのアクセスに使用しているポート443へのアクセスを許可しています。
iptablesの設定を保存するため、以下のコマンドを実行します。
# service iptables save
アクセスを許可した後のiptablesの設定内容は、以下のようになります。
# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443 7 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination
設定を保存した後の設定ファイル「/etc/sysconfig/iptables」の内容は、以下のようになります。
:(略) -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT :(略)
MySQLへの外部からのアクセスを許可
MySQLへの外部からのアクセスは、iptablesによってデフォルトでは拒否されています。MySQLへの外部からのアクセスが可能となるようiptablesの設定を行います。
iptablesによるアクセス制御の詳細につきましては、上記のApacheへの外部からのアクセスを許可する際の設定もご参照ください。
設定前の状態
アクセスを許可する前のiptablesの設定内容を、以下のコマンドで確認します。
※この例はデフォルトの設定に、HTTPでの外部アクセス許可を追加した内容になっています。
# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 6 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination
アクセス許可の設定
MySQLへの外部アクセスを許可する設定を追加するには、以下のようなコマンドを実行します。
※アクセス元のIPアドレス等、別途制限が必要なものがある場合は、そのオプションの指定を追加してください。
# iptables -I INPUT 6 -m state --state NEW -p tcp --dport 3306 -j ACCEPT
- INPUTチェインでは、末尾に全ての接続を拒否する設定が行われていますので、「-A」オプションによる末尾への追加ではなく、「-I」オプションによる挿入を行うようにしています。
- INPUTの後に指定している「6」は、挿入する位置を示すルール番号で、末尾で全ての接続を拒否している位置よりも前に挿入されるようにします。
- 「–dport」オプションにより、MySQLが使用しているポート3306へのアクセスを許可しています。
アクセスを許可した後のiptablesの設定内容は、以下のようになります。
# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306 7 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination
iptablesの設定がOSの再起動後も有効になるよう、設定ファイル「/etc/sysconfig/iptables」に保存するため、以下のコマンドを実行します。
# service iptables save
設定ファイル「/etc/sysconfig/iptables」の設定前と設定後の内容も、以下に示しておきます。
設定前。
:(略) -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT :(略)
設定後。
:(略) -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT :(略)
PostgreSQLへの外部からのアクセスを許可
PostgreSQLへの外部からのアクセスは、iptablesによってデフォルトでは拒否されています。PostgreSQLへの外部からのアクセスが可能となるようiptablesの設定を行います。
iptablesによるアクセス制御の詳細につきましては、上記のApacheへの外部からのアクセスを許可する際の設定もご参照ください。
設定前の状態
アクセスを許可する前のiptablesの設定内容を、以下のコマンドで確認します。
※この例はデフォルトの設定に、HTTPでの外部アクセス許可を追加した内容になっています。
# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 6 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination
アクセス許可の設定
PostgreSQLへの外部アクセスを許可する設定を追加するには、以下のようなコマンドを実行します。
※アクセス元のIPアドレス等、別途制限が必要なものがある場合は、そのオプションの指定を追加してください。
# iptables -I INPUT 6 -m state --state NEW -p tcp --dport 5432 -j ACCEPT
- INPUTチェインでは、末尾に全ての接続を拒否する設定が行われていますので、「-A」オプションによる末尾への追加ではなく、「-I」オプションによる挿入を行うようにしています。
- INPUTの後に指定している「6」は、挿入する位置を示すルール番号で、末尾で全ての接続を拒否している位置よりも前に挿入されるようにします。
- 「–dport」オプションにより、PostgreSQLが使用しているポート5432へのアクセスを許可しています。
アクセスを許可した後のiptablesの設定内容は、以下のようになります。
# iptables -L -n --line-number Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:5432 7 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination
iptablesの設定がOSの再起動後も有効になるよう、設定ファイル「/etc/sysconfig/iptables」に保存するため、以下のコマンドを実行します。
# service iptables save
設定ファイル「/etc/sysconfig/iptables」の設定前と設定後の内容も、以下に示しておきます。
設定前。
:(略) -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT :(略)
設定後。
:(略) -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 5432 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT :(略)
iptablesによるアクセス制御については、以上です。