ファイヤーウォールのお勉強です
Iptablesの仕組み
iptablesは、設定した幾つかのルールにnetwork trafficを照らし合わせる。そのルールは、そのコンピュータがパケットを受け入れるかどうかを決める。
それらのルールは、パケットのプロトコルや、そのパケットがどこに向かっているか(アドレス、ポート番号)、以前のパケットとの関係、などである。
それらのルールをパケットが満たした場合、行われるアクションが"target"と呼ばれる。acceptするかdropするか、など。また、ただログを取るだけなど、様々なtargetの選択肢がある。
このようなルール"chains"と呼ばれるグループにまとめられる。chainはパケットが次々にチェックされるルール。
パケットがあるルールを満たしたとき、そのルールに紐付けられれたactionを取る。なお、chains上のそれ以降の条件はチェックされない。
ユーザーは様々なchainsを定義できるが、デフォルトであるのは以下の3つ。
- INPUT:あなたのサーバーに入ってくるパケットを処理する
- OUTPUT:あなたのサーバーから発せられたパケットを処理する
- FORWARD:他のサーバーに向けられた(あなたのサーバーから発せられたものではない)パケットについて処理する
iptablesはモジュールを用いて接続をトラックすることもできる。
以降はINPUT chainsについて見ていく。
IPv4とIPv6
IPv6はIPv4の進化版らしい。使えるIPアドレスの量が増えたり。Linuxのnetfilterはこれらのプロトコルを完全に分けて処理するそう。
ふつうのiptables
コマンドはIPv4についての設定を行う。IPv6の設定をするにはip6tables
を使う。
これら2つのコマンドのシンタックスは同じなので2つを設定するのはそんなにoverwhelmingではない
注意点
iptablesがパケットをどのように処理するかはだいたいこんな感じ;パケットを適切なchainに受け渡す→マッチするまでルールに照らし合わせる→もしマッチするルールがなければデフォルトのルールに従う
SSHでサーバーに接続してる場合はその接続もブロックしないように気をつけよう。
それぞれのchainのルールの順番に気をつけよう。はじめにより一般的なルールを書いてしまったら、後のより特別なルールは参照されないので。したがって、上の方により特別なルールを書いておこう。最も一般的なルールは、デフォルト・ポリシーである。
結論
さて、実際にiptablesの設定をするのが最も良い学習方法だろう。
参考