[Home] [Kuri] [Sysad] [Internet?] [Blog] [Java] [Windows] [Download] [Profile] [Flash] [+] |
# cd /usr/src/linux (もしくはカーネルのソースのディレクトリ) # make mrproper # make menuconfig (xconfig でも config でもお好きなものを) Networking options -> Network packet filtering (replaces ipchains) を選択 IP: Netfilter Configuration -> Connection tracking (required for masq/NAT) を選択 ipchains (2.2-style) support を選択 Full NAT を選択(NAPT(IP masquarade)か透過 proxy が必要なら) MASQUERADE target support を選択(NAPT(IP masquarade)が必要なら) REDIRECT target support を選択(透過 proxy が必要なら) # make dep # make clean # make bzImage |
# ipchains -L ipchains -L ipchains: Incompatible with this kernel |
# modprobe ipchains # ipchains -L Chain input (policy ACCEPT): Chain forward (policy ACCEPT): Chain output (policy ACCEPT): |
# chkconfig --list ...前略 ipchains 0:オフ 1:オフ 2:オフ 3:オフ 4:オフ 5:オフ 6:オフ ...後略 # chkconfig ipchains on # chkconfig --list ...前略 ipchains 0:オフ 1:オフ 2:オン 3:オン 4:オン 5:オン 6:オフ ...後略 |
-[ADCRI] chain [-p protocol][-s source] [-d destination][-j target][-i interface] [-f][-l][-t mask][-y] |
キーワード | 意 味 な ど |
---|---|
-A | 指定したchainの最後にルールを追加する。 |
-D | 指定したchainのルールを削除する。 |
-R | 指定したchainのルールを変更する。 |
-I | 指定したchain(の手前)にルールを追加する。 |
-C | 指定したchainのチェックを行う。 |
chain | チェインの指定。input,output,forward が もともとあるが、ユーザが新たに定義することもできる。 |
-p protocol | プロトコルの指定。tcp,udp,icmp,all, あるいは数値(/etc/protocols を参照のこと)のいずれか。 |
-s source | 送信元のアドレス、ポートの指定。書式は後述。 |
-d destination | 宛先のアドレス、ポートの指定。書式は後述。 |
-j target | 処理の仕方の指定。ACCEPT,DENY,REJECT, MASQ,REDIRECT, あるいはユーザが定義したchain のいずれか。 REJECT は ICMP メッセージを返す。 MASQ は NAPT(IP masquerade) で使用。 REDIRECT は透過 proxy で使用。 |
-i interface | インタフェースの指定。! で否定になる。 |
-f | フラグメントの指定。フラグメントされたパケットの場合に該当。 |
-l | このルールに該当した場合、printk() 経由でログに残す。 |
-t mask | TOS フィールドの解釈。and の mask と xor の mask の2つを指定 する。最初の mask との and をとり、2つ目の mask との xor を とって、該当するかどうかを判断する。(た、たぶん…) |
-y | TCP の SYN が立っていて ACK と FIN が落ちている場合に該当する。 |
[!] address[/mask] [!] [port[:port]] |
# input, forward, output をすべて許可にします。 # これは ipchains-restore が解釈します。デフォルトの動作の指定です。 ## 実際には、ipchains -P input ACCEPT などが実行されます。 :input ACCEPT :forward ACCEPT :output ACCEPT # インタフェース lo から来るものはすべて許可にします。 # 0/0 だとすべて該当します。 -A input -s 0/0 -d 0/0 -i lo -j ACCEPT # TCP のポート 0〜1023 の SYN パケットを REJECT します。 # つまり TCP の接続要求を拒否(ICMP Port Unreachable を返す)します。 -A input -p tcp -s 0/0 -d 0/0 0:1023 -y -j REJECT # TCP のポート 2049(nfs) の SYN パケットを REJECT します。 -A input -p tcp -s 0/0 -d 0/0 2049 -y -j REJECT # UDP のポート 0〜1023 を REJECT します。 -A input -p udp -s 0/0 -d 0/0 0:1023 -j REJECT # UDP のポート 2049(nfs) を REJECT します。 -A input -p udp -s 0/0 -d 0/0 2049 -j REJECT # TCP のポート 6000〜6009(X) の SYN パケットを REJECT します。 -A input -p tcp -s 0/0 -d 0/0 6000:6009 -y -j REJECT # TCP のポート 7100(font server) の SYN パケットを REJECT します。 -A input -p tcp -s 0/0 -d 0/0 7100 -y -j REJECT |
-A input -s 0/0 -d 0/0 -i lo -j ACCEPT -A input -p tcp -s 0/0 -d 192.47.224.211 80 -y -j ACCEPT -A input -p tcp -s 0/0 -d 192.47.224.211 21 -y -j ACCEPT -A input -p tcp -s 0/0 -d 192.47.224.211 -y -j DENY -A input -p tcp -s 0/0 -d 192.47.224.211 ! -y -j ACCEPT -A input -s 0/0 -d 0/0 -j DENY |
:input DENY -A input -s 0/0 -d 0/0 -i lo -j ACCEPT -A input -p tcp -s 0/0 -d 192.47.224.211 80 -y -j ACCEPT -A input -p tcp -s 0/0 -d 192.47.224.211 21 -y -j ACCEPT -A input -p tcp -s 0/0 -d 192.47.224.211 -y -j DENY -A input -p tcp -s 0/0 -d 192.47.224.211 ! -y -j ACCEPT |
echo 1 > /proc/sys/net/ipv4/ip_forward |
:forward DENY ...中略 -A forward -i external-IF -j MASQ |
# ipchains -L Chain input (policy ACCEPT): target prot opt source destination ports DENY tcp ------ 0.0.0.0/0 172.30.152.212 * -> 8888 Chain forward (policy ACCEPT): Chain output (policy ACCEPT): |
# ipchains -C input -p tcp -i eth0 -s 192.168.1.1 20000 -d 172.30.152.212 8888 denied # ipchains -C input -p udp -i eth0 -s 192.168.1.1 20000 -d 172.30.152.212 8888 accepted |
/etc/init.d/ipchains restart |
# ipchains -A input -p tcp -s 0/0 -d 172.30.152.212 8888 -j DENY # ipchains -L Chain input (policy ACCEPT): target prot opt source destination ports DENY tcp ------ anywhere tamayo any -> 8888 Chain forward (policy ACCEPT): Chain output (policy ACCEPT): # cat /proc/net/ip_fwchains input 00000000/00000000->AC1E98D4/FFFFFFFF - 10 0 6 0 0 \ 0 0 0-65535 8888-8888 AFF X00 00000000 0 0 DENY |
チェイン名 送信元IP/マスク->宛先IP/マスク インタフェース fw_flg fw_invflg \ プロトコル パケット数(上位32bit 下位32bit) バイト数(上位32bit 下位32bit) \ 送信元ポートの範囲 宛先ポートの範囲 TOSフィールドのマスク(and xor) \ リダイレクションポート fw_mark 出力サイズ ターゲット |
# telnet 172.30.152.212 8888 Trying 172.30.152.212... # cat /proc/net/ip_fwchains input 00000000/00000000->AC1E98D4/FFFFFFFF - 10 0 6 0 1 \ 0 60 0-65535 8888-8888 AFF X00 00000000 0 0 DENY |
[Home] [Kuri] [Sysad] [Internet?] [Blog] [Java] [Windows] [Download] [Profile] [Flash] [-] | |
usu@usupi.org | Last modified : Wed May 8 00:43:12 2002 |