iptables for DD-WRT
はじめに
以前WHR-300HP2をDD-WRT化した.
heavymoon.hateblo.jp
GUIからはフィルタの設定ができなくなったが,中身はLinuxなのでiptablesでフィルタを設定できる. iptablesでフィルタ設定したのでその備忘.
作業を始める前に
なにはともあれ読むべきはマニュアルと巨人達の足跡.
- 【丁寧解説】Linuxファイアウォール iptablesの使い方
- http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/index.html
- Iptables command - DD-WRT Wiki
- Logging with DD-WRT - DD-WRT Wiki
ログ出力設定
Syslogd と Klogd を Enable に変更する.
これ設定しておかないと-j LOG
を設定してもログを出力できない.
- Services > Services > Services Management > System Log
iptables設定スクリプト
いきなりコマンドを投入して,WebGUIにアクセスできず,SSHも繋がらなくなっては面倒. 殻割りしてコンソールから操作しない以上は電源を切り設定を消し去る他無い. コマンドを1つ1つ投入して途中で断しても面倒なので,スクリプトを作る.
一応デフォルトスクリプトは/tmp/.ipt
に置いてある.
とりあえず最低限WANからのINPUTをDROPしつつ,LANからはアクセスできるよう設定スクリプトを作る. nvramから設定値を読み込むこともできる.
#!/bin/sh ############################# # IPTABLES FOR DD-WRT ############################# # WAN INFO WAN_IP=$(nvram get wan_ipaddr) WAN_IF=$(nvram get wan_ifname) # LAN INFO LAN_IP=$(nvram get lan_ipaddr) LAN_IF=$(nvram get lan_ifnames) LocalNet=$LAN_IP/24 ## RESET CONFIG iptables -X iptables -F ## SET POLICY iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT ############################# ## NAT TABLE ---------------- iptables -t nat -A POSTROUTING -o $WAN_IF -j SNAT --to-source $WAN_IP ## MANGLE TABLE ------------- # nothing to do ## FILTER TABLE ------------- # Loopback iptables -t filter -A INPUT -i lo -j ACCEPT # from LAN to router iptables -t filter -A INPUT -s $LocalNet -j ACCEPT # exist connection that this router started iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Log Drop at INPUT iptables -t filter -A INPUT -j LOG --log-prefix "Drop at INPUT:" # Log Drop at FORWARD iptables -t filter -A FORWARD -j LOG --log-prefix "Drop at FORWARD:" ## RAW TABLE ---------------- # nothing to do #############################
iptablesを理解していない状態でお試し設定を投入した際にSSHが断することは往々にして有り得るため,実行時にはデバッグオプションをつけることをオススメする.
$ /bin/sh -x myiptables
あとはこれを自分の環境にあわせて適当に改変してあげればOK.
このままだとFORWARDはDROPするけど,SNATの設定を入れておいたのでFORWARDのフィルタ追加すればいい感じになるはず.
GoogleやMicrosoftに流れ出ようとする謎のパケットがドロップされて行く様を眺めるも良し,適当なサーバを晒すも良し.