![](https://stat.ameba.jp/user_images/20121218/02/red-ozemi/54/1f/j/o0375024912335163609.jpg?caw=800)
概要
今に始まった事ではないのですが、外部公開サーバに対するセキュリティー対策としてファイアウォールをしっかりと設定する必要が出てきました。
個人で借りているサーバにおいて不正パケットが大量に発生していたのでとりあえず設定を行ってみたもののやっぱりよく知っておいた方が安心できるという事で現在勉強中です。
その中でも腑に落ちなかった点があったのでメモ。
:INPUT ACCEPT [0:0]の[0:0]は何の事?
- パケット・バイトカウンタ [パケットカウンタ:バイトカウンタ]を表している。
- #iptables-save > iptables.cfgとすると現在のパケット・バイトカウンタが保存されるので確認できる。
- 初期状態でCentOSをインストールした場合、/etc/sysconfig/iptablesには「:INPUT ACCEPT [0:0]」となっている為、再設定する度に初期化される。
- パケット・バイトカウンタを利用する事で各プロトコルの通信量の確認が可能
- 通信量を把握しておけば、攻撃を受けているのか判断をする事も可能
:INPUT ACCEPT にしているのに通信できない
- CentOS 6.2のデフォルトの状態は確かにデフォルトポリシーは「:INPUT ACCEPT」となっておりルールが明示されていない通信は許可されるはず。
- 例えば、Apacheをインストールしてアクセスしてもそのままでは通信が行えない。
なぜなのか?
- よく見ると次のルールが記述されている
- -A INPUT -j REJECT --reject-with icmp-host-prohibited
- これは、「入ってきたパケット」に対して「エラーパケット」で応答しなさいという事。
- この記述より前に記述されているルールに一つも一致しない場合に適用される。
- デフォルトでは、「SSH」、「接続状態のもの」、「icmp」、「ループバック(サーバ自身からのアクセス)」が許可されている。
- HTTP通信はこれらのルールに一致しない為、「REJECT」ルールが適用されるので通信が行えない事となる。
「Host Unreachable」ではそもそも存在しないのか、電源が落ちているのか判断出来ない為に諦めさせられる可能性がある。
ただし、Webサーバなどを不特定多数に公開している場合はこの限りではない。
参考:
Man Page of iptables
ICMPタイプリスト