Netfilter

 

Netfilter

通過するパケットを制御できるプログラム

   
   
Program /sbin/iptables

ダウンロード先 (RPM版)

http://www.openna.com/download/iptables/iptables-download.htm
         (tar.gz版) http://netfilter.samba.org/
   
Install rpm --install iptables-1.2.5-87.i686.rpm
rpm -u iptables-1.2.5-87.i686.rpm (アップグレードの場合)
   
実行方法 /etc/init.d/iptables start
   
備考  
 

 

苦情・訂正・校正など・・ tomoyo@kmr.homeip.net
なんでもくれ・・

 


 

Netfilterを有効にする手順(カーネルの設定)


設定
 


説明

make xconfig

Networking opstions

IP:Netfilter configuration

すべてのコンポーネントにMを付ける




 

 

/usr/src/linux内での作業
まず、カーネルの設定を行って、Netfilterが使えるようにした。
手順は、左のようになる。

 

 

make dep clean install modules modules_install

cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.18

cp /usr/src/linux/System.map /boot/System.map-2.4.18

 

 

 

 

一気にコンパイル

カーネルをブートディレクトリィーにコピーしてやる。ファイル名は、現在のカーネルのバージョンが判るようにつけた。

 

     
bootの設定





title Red Hat Linux (2.4.18)
root (hd0,0)
kernel /boot/vmlinuz-2.4.18 ro root=/dev/hda1

 

 

 

/boot/grub/grub.conf 編集
LILOではなく、GRUBを利用してるので、GRUBを編集した。
左のような設定を最後の行に追加
カーネル再構築終了。

 

 

IPパケットフォワーディングを有効にする
net.ipv4.ip_forward = 1

 

 

 

/etc/sysctl.confを編集する
デフォルトは0になってるらしいので、これを1にかえてやる。

 

 

ヘルパーモジュールの読みこみ

/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_REDIRECT
/sbin/modprobe ipt_REJECT

 

 

 

 

/etc/rc.localを編集
最後の行に左の設定を追加する。

うちの場合、何故か記述してないのに勝手に組みこまれてる。
いらないのかもしれん。

lsmod で確認できる。

 

ルールの設定

!/bin/sh
#ポリシーの設定
#-Pオプションは、<INPUT><OUTPUT><FORWARD>(以下chain)等にに対して
#<ACCEPT><DROP>などを指定するオプション
#
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

 

#チェインルールの削除
#-Fオプションは、組みこみchain(FORWARD,INPUT,OUTPUT)にたいして、ルールの削除を行う。
#
iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT

 

#ユーザ定義の作成
#-Nオプションで、myruleとゆうルールを作成する
#-Fオプションで、ルールの初期化
#
iptables -N myrule
iptables -F myrule

 

#ユーザ定義チェインに転送
#-Aオプションで、組みこみchainにルールを追加する。
#-jオプションはターゲット(chainやルール)を指定している
#
iptables -A INPUT -j myrule
iptables -A FORWARD -j myrule

 

#ローカルホストパケット許可
#-iオプションは、入力してくるネットワークを示している。loはローカル。
#-sオプションは、IPパケットを示している。'!'は否定を示している。
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 127.0.0.0/8 -i '!' lo -j DROP

 

#eth1からの通信を許可
iptables -A myrule -i eth1 -s 192.168.0.0/24 -j ACCEPT

 

#確立済みコネクションの通過
iptables -A myrule -p tcp -m state --stat ESTABLISHED -j ACCEPT
iptables -A myrule -f -j ACCEPT

 

#必要なUDPの通過
#53(DNS) 123(ICMP) 4000(ICQ FILE転送)
#-pオプションは、プロトコルの指定
#
iptables -A myrule -p udp --dport 53 -j ACCEPT
iptables -A myrule -p udp --sport 53 -j ACCEPT
iptables -A myrule -p udp --dport 123 -j ACCEPT
iptables -A myrule -p udp --sport 123 -j ACCEPT
iptables -A myrule -p udp --dport 4000 -j ACCEPT
iptables -A myrule -p udp --sport 4000 -j ACCEPT

 

#外部に繋げるポートを指定
#20,21(FTP) 22(SSH) 25(SMTP) 110(POP) 443(SSL) 6667(IRC) 8080(プロキシ)
#2000〜3000(ICQ FILE転送ポート) 136〜139(SAMBA)
#
iptables -A myrule -p tcp -m multiport --dport 20,21,22,25,80,110,443,6667,8080 -j ACCEPT
iptables -A myrule -p tcp --dport 2000:3000 -j ACCEPT
iptables -A myrule -p tcp --dport 136:139 -j ACCEPT

 

#ICMP通過
iptables -A myrule -p icmp -j ACCEPT

 

#ログ
iptables -A myrule -j LOG

 

#NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#だいたいこんな俺的設定はこんな感じになるが、ダイヤルアップなどを使用してる場合は、eth0をppp等に置きかえる事も出来る。

 
 

上記オプションの補足

 

#チェインの操作オプション#
-Fオプションは、chin、ルールなどの初期化
-Aオプションは、にルールを新規に追加する。
-Nオプションは、ルールを作成する

#chainのオプション#
-iオプションは入力するネットワークの指定
-oオプションは出力するネットワークの指定
-jオプションはターゲットの指定

#ルール指定オプション#
-pオプションはプロトコルを指定する
-sオプションはIPの始点アドレスを指定する
-dオプションはIPの終点アドレスを指定する
--sportオプションは送信元アドレスを指定する
--sportオプションは送信先アドレスを指定する

#ターゲットのオプション#
ACCEPTはIPパケットの通過を許可する
DROPはIPパケットの通過を拒否する
REDIRECT<port>はIPパケットを<port>にリダイレクトする
REJECTはIPパケットを破棄しICMPでそれを通知する
RETURNはルールを終了する

 
 

設定終了・・運用

 

/etc/init.d/などに、iptablesの起動スクリプトがあれば、ntsysvなどを使って、iptablesにチェックを入れておけば起動時に設定を読みこんでくれる。

上記スクリプトを実行した後に、/etc/init.d/iptables save を実行すれば、iptablesのルールは保存される。起動時にそのルールが自動的に読みこまれる。

SAMBAのポート(NetBIOS)は、外にもらすと、セキュリティー上よろしくないので、SAMBA側で、通信相手をあらかじめ明示的に指示してやったほうが良い。

使用するかもしれないポート番号対応表(TCP)

20/TCP ftp-data 21/TCP ftp 22/TCP SSH 25/TCP SMTP 80/TCP HTTP
110/TCP POP3 137〜139/TCP NetBIOS 443/TCP SSL 901/TCP SWAT 3128/TCP squid
6667/TCP ircd 6699/TCP WINMX 8080/TCP webcache 7719〜7735/TCP WINMX 8888/TCP WINMX
         
         
WINMXを使用する場合は、7719〜7735/TCP と 8888/TCPを有効にしたら接続できた。
上記portは、--dport、--sport両方を設定してやらないと、転送開始にならなかった。


使用するかもしれないポート番号対応表(UDP)
53/UDP DNS 67/UDP DHCP 123/UDP NTP 137〜139/UDP NetBIOS  
         

どっかの本に、SAMBAのポートは、136〜138と書いてあって、かなりはまったが、実際SAMBAが使うNetBIOSは、137〜139/TCPとUDPなので注意したい。


Enter