読者です 読者をやめる 読者になる 読者になる

iptables について理解する

iptablesってなんぞ?

Linuxに実装されたパケットフィルタ兼NAT

NAT?

NAT(Network Address Translation)

ネットワークアドレス変換

ローカルIPと、グローバルIPの変換を行う

  • ローカルから外部に出るときに、グローバルIPの割当を行う
  • 外部からローカル内のマシンにアクセスする時に、IPの変換を行う

パケットフィルタ?

送信されてきたパケットを検査して通過/遮断を判断する機能

ファイアウォールとは違うの?

ファイアウォール : 外部との通信制御して、内部のコンピューターネットワークの安全を維持するソフトウェア

有効化する

$ sudo /sbin/chkconfig iptables on

設定の確認

iptables --list を実行

$ sudo /sbin/iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

これは何も設定されていない状態

  • target prot opt source destination はヘッダ。

ヘッダの読み方

policy

チェイン(後述)全体に適用されるルール

  • 上記の場合、 policy ACCEPT で、基本的には通信を許可

用語

  • Chain : パケット群にマッチするルールのリスト
  • ルール : マッチしたパケットに対する処理を規定する
  • target : パケットに対する処理(主に以下の3つ)
    • ACCEPT : パケットをそのまま通す
    • DROP : パケットを破棄
    • RETURN : 同じルールが上位Chainにある場合、そちらを適用

Chain

デフォルトでは INPUT FORWARD OUTPUT の Chain がある

  • INPUT : 受信したデータの扱い
  • OUTPUT : 送信するデータの扱い
  • FORWARD : 他のマシンに渡すデータの扱い

他に自作のChainを作って、上記3つのチェインに連鎖させることができる

Fail2ban であるIPをBANした状態のとき(一部)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-HTTP  tcp  --  anywhere             anywhere            tcp dpt:http

Chain fail2ban-HTTP (1 references)
target     prot opt source               destination
REJECT     all  --  192.0.2.0  anywhere            reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere

空白の取り方がおかしいので見づらい...

  • INPUTfail2ban-HTTP が Chain
  • fail2ban-HTTPでは、192.0.2.0 をREJECT`
  • それ以外は、RETURN
  • INPUT ではその他に何も指定がないので、policy ACCEPT なので、そのまま通す

TODO

  • フィルタの追加方法
  • テーブルについて
  • 設定の定石(普通のwebサーバの場合、どんな設定をすべきか?)

参考