(ネットワークセキュリティ)CentOS 6.8でのiptablesでのアクセス制御
CentOS 6.8でiptablesを使用し、アクセス制御することで、ネットワークセキュリティを高めようと思います。
CentOS 7以上であれば、firewallが利用可能ですので、そちらを使用してください。
今回は、CentOS 6.8ですのでiptablesを使用します。
iptablesの読み方や実行方法の基本
デフォルトでのiptablesの状態。
iptables -L
ナンバリングを付けて見やすく。
iptables -L -n --line-number
iptables -L -nv --line-numbers
デフォルトの設定では、INPUTのデータのnum=5が拒否”REJECT”となっています。
そのため、外部からのアクセス許可を許可する際は、num=5以下の数値で、オプション「-I」で挿入するようにiptablesを編集する。
最後尾より後(今回であればnum=5より後)にルールを追加する場合は、オプション「-A」でiptablesを編集する。
80番ポートへアクセス許可する設定の場合は下記のように行う。
iptables -I INPUT 5 -m state --state NEW -p tcp --dport 80 -j ACCEPT
上記のコマンドにおいて、INPUTの部分をチェーンという。
組み込まれたチェーンとしては下記のようなものがある。
- INPUT ・・・ 受信パケット [filter]
- OUTPUT ・・・ 送信パケット [filter、nat]
- FORWARD ・・・ フォワードするパケット [nat]
- PREROUTING ・・・送信時に変換するチェイン [nat]
- POSTROUTING ・・・ 受信時に変換するチェイン [nat]
「-j」パラメータでターゲットを指定します。
指定可能なターゲットとしては下記のようなものがある。
- ACCEPT ・・・ 受信パケットを許可
- DROP ・・・受信したパケットを破棄
- REJECT ・・・パケットを受信拒否
- PREROUTING ・・・ 特定のポートにリダイレクト
- LOG ・・・ログ取得
- MASQUERADE ・・・ 送信用IPアドレスをポート番号を変換する
「-j」パラメータ以外の他のオプションとしては、下記のようなものがある。
- --dport [ポート番号] ・・・送信先ポート番号を指定
- --sport [ポート番号] ・・・受信先ポート番号を指定
- -p [プロトコル] ・・・ルールを定めるプロトコル(tcp、udp、icmp)を指定
- -i [インタフェース] ・・・パケットを受信するインタフェースを指定
- -o [インタフェース] ・・・パケットを送信するインタフェースを指定
- -t [テーブル] ・・・テーブルを指定。テーブルは、filterやnatがある。
iptablesコマンドで編集するのが 手間であれば、ファイル(/etc/sysconfg/iptables)を直接viコマンドで編集してもよいです。
アクセス制御の大前提
- 外部からの通信はすべて拒否する。
- 自ホストからの通信を許可する。
- 外部への通信は許可する。
- 外部からのICMPの受信を許可する。
- 外部からのSSHやHTTP通信の受信を許可する
細かい点や、目的に応じて微調整といったところでしょうか。
1. 外部からの通信はすべて許可する
先ほどお見せしたデフォルトの設定では、
INPUTに許可設定がありましたので、全てDROPします。
また、FORWARDもDROPします。
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
2. 自ホストからの通信を許可する。
-A INPUT -i lo -j ACCEP
4. 外部からのICMP通信を許可する。
-A INPUT -p icmp -j ACCEPT
5. 外部からのSSH通信やHTTP通信の受信を許可する
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
サーバへの攻撃を防止する目的であれば、下記のような対策も必須だろう。
データを持たないパケットの接続を破棄
SYNflood攻撃とみなせるパケット受信を破棄
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP
ステルススキャンと思われる接続を破棄
確立済みの通信のアクセス許可(ポート番号に関係なく許可する)
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
上記当たりの設定を、/etc/sysconfig/iptablesに記載し、再起動すればOK。
INPUTやOUTPUTは *filterテーブル に記載すればよい。
FORWARDやPREROUTINGがあれば *natテーブル に記述すればよい。
CentOS6徹底活用ガイド インターネットOSを最強アプリで使いこなそう!
- 作者: 恒川裕康
- 出版社/メーカー: 秀和システム
- 発売日: 2012/12/13
- メディア: 単行本
- この商品を含むブログを見る