Changes between Version 8 and Version 9 of TipAndDoc/network/iptables


Ignore:
Timestamp:
Jul 5, 2009 2:35:04 AM (15 years ago)
Author:
mitty
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TipAndDoc/network/iptables

    v8 v9  
    5555}}} 
    5656     * sshのみListen可 
     57 
     58 = table = 
     59 == raw == 
     60 * http://www.designandcommunication.co.jp/Security/iptables/modules/Modules0.html#raw 
     61   
     62  raw テーブルはiptablesで最初に評価される 
     63  PREROUTING と OUTPUT で使用出来る 
     64   
     65  rawテーブルはNOTRACKを使用する事でconntrack、NATを適用せずに通過させる 
     66  その分、高速になる、TRACE でトレース出来る 
     67  また conntrackやstateモジュールは使用出来ない 
     68   
     69  iptablesで最初に評価されるので、QUEUEやIMQなどにパケットを転送する前に 
     70  おかしなパケットを廃棄出来る 
     71 
     72 * PREROUTINGが使えることにより、INPUT/FORWARD双方に回る予定のパケットを前もって制御できる 
     73   * POSTROUTINGもあれば良いのだが… 
     74 
     75 === 巨大 icmp packet の拒否 === #toolargeicmp 
     76 * デフォルト 
     77   * ping 202.12.27.33 -c 1 
     78{{{ 
     79PING 202.12.27.33 (202.12.27.33) 56(84) bytes of data. 
     8064 bytes from 202.12.27.33: icmp_seq=1 ttl=241 time=5.95 ms 
     81}}} 
     82   * ping 202.12.27.33 -c 1 -s 10240 
     83{{{ 
     84PING 202.12.27.33 (202.12.27.33) 10240(10268) bytes of data. 
     8510248 bytes from 202.12.27.33: icmp_seq=1 ttl=241 time=13.3 ms 
     86}}} 
     87 
     88 * 自ホストから外へのlarge packetの拒否 
     89   * sudo iptables -t raw -A OUTPUT -p icmp --icmp-type echo-request -m length --length 85: -j DROP 
     90   * ping 202.12.27.33 -c 1 
     91{{{ 
     92PING 202.12.27.33 (202.12.27.33) 56(84) bytes of data. 
     9364 bytes from 202.12.27.33: icmp_seq=1 ttl=241 time=10.5 ms 
     94}}} 
     95   * ping 202.12.27.33 -c 1 -s 57 
     96{{{ 
     97PING 202.12.27.33 (202.12.27.33) 57(85) bytes of data. 
     98ping: sendmsg: Operation not permitted 
     99}}} 
     100 
     101 * 着信拒否 
     102   * sudo iptables -t raw -A PREROUTING -p icmp --icmp-type echo-request -m length --length 85: -j DROP 
     103   * via http://www.designandcommunication.co.jp/Security/iptables/modules/Modules0.html#raw 
     104 
     105 * ログを取る場合 
     106{{{ 
     107sudo iptables -t raw -A PREROUTING -p icmp --icmp-type echo-request -m length --length 85: -j LOG --log-prefix "[IPTABLES BAD-ICMP]: " --log-level err -m limit --limit 3/min --limit-burst 10 
     108sudo iptables -t raw -A PREROUTING -p icmp --icmp-type echo-request -m length --length 85: -j DROP 
     109}}} 
     110   * 「-m limit」について => パケットサイズが異常なicmp requestが一分間に10回を超えた場合は、一分間に3回のみログを取るように制限する 
     111     * 無いと膨大なログになる可能性がある 
     112 
     113 == mangle == 
     114 * どのようなときに使うべきなのかよく分からない。調査中。 
     115 * INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING の全てのchainが使える 
     116 
     117 = misc = 
     118 * interfacesのpost-upコマンドでスクリプトを呼び出してiptablesを設定するという手法も考えられる(この場合、ipコマンド等を使ってIP/Netmask等を取得できるので、スクリプト中にWANやLANのアドレスを埋め込まなくて良いという利点が考えられる)が、その場合NICが活性化してからiptablesの設定がされることになり、瞬間的にではあるがLinkUPしたにも関わらずFWが未設定という状態になるのでよろしくないと思われる。 
     119 
     120 * eth0がLAN側で192.168.100.254/24、eth1~ethNがWAN(マルチホーム等)の時、条件の逆転「!」を使うことで、iptablesのルール数を減らすべく、以下のようにIP Spoofing防御設定まとめられる思えるが、実際には問題がある。 
     121{{{ 
     122sudo iptables -t raw -N LOG_SPOOF 
     123sudo iptables -t raw -A LOG_SPOOF -j LOG --log-prefix "[IP-SPOOFING]: " 
     124sudo iptables -t raw -A LOG_SPOOF -j DROP 
     125sudo iptables -t raw -A PREROUTING -i !   lo -s    127.0.0.0/8 -j LOG_SPOOF 
     126sudo iptables -t raw -A PREROUTING -i ! eth0 -s     10.0.0.0/8 -j LOG_SPOOF 
     127sudo iptables -t raw -A PREROUTING -i ! eth0 -s  172.16.0.0/12 -j LOG_SPOOF 
     128sudo iptables -t raw -A PREROUTING -i ! eth0 -s 192.168.0.0/16 -j LOG_SPOOF 
     129}}} 
     130   * ping 192.168.100.254 (=eth0)が通らない 
     131{{{ 
     132Jul  4 07:07:28 ubuntu-napt kernel: [136737.367943] [IP-SPOOFING]: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=192.168.100.254 DST=192.168.100.254 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=40230 SEQ=1 
     133Jul  4 07:07:29 ubuntu-napt kernel: [136738.366434] [IP-SPOOFING]: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=192.168.100.254 DST=192.168.100.254 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=40230 SEQ=2 
     134}}} 
     135     * 「IN=lo」となっていることから考えると、192.168.100.254=eth0だが実際にはloopbackに送られているためおかしくなる。 
     136   * WANの数だけルールを列挙するしかなさそう? 
     137 
     138 * filter table以外を/etc/ufw/*.rulesに書くと、ufw startで反映はされるがufw stopで消去されないので設定が累積していく 
     139   * interfaces pre-upとかに入れるのがよさそう…