#contents();

2007年9月23日に マイクロ総研 の Gigabit Router のファームウエアバージョンアップに失敗したので、~spirit.hmuna.com をルーターとして利用開始した。
- pppoe 接続ルーター
- ip masquerade ( NATPT )
- iptables ( fire wll )

の3つの機能を spirit.hmuna.com に実装する。 また、休止していた named 機能を再設定して復活させ~ dhcpd と合わせ 基幹 Network 機器として活用することにした。

今回の設定は基本的に [[CentOSで自宅サーバー構築:http://centossrv.com/]] のサイトの内容を参照して作成した

*** 2ndery ether port ( eth1  ) の活性化 [#p6d4a0b7]
- サーバーに標準搭載されている Marvel の Gigabit LAN ポートが Cent OS5 から使えるようになったので有効化
- 起動時に eth0 → eth1 → ppp0 の順に起動されるので eth1 は起動時に dhcp からアドレスをもらえない
- 固定 IP なので eth1 起動時に固定 IP を付与するような設定にしてある
- &ref(ifcfg-eth1,center,/etc/sysconfig/network-scripts/ifcfg-eth1); に設定情報が反映される

*** pppoe 接続 [#uf4c40fe]
- adsl-setup という設定スクリプトを利用して ppp0 を作成する
- IIJmio から付与されている アカウント、パスワード、DNS を 登録する
- 起動時に pppoe に自動接続し、常時接続するように設定する
-- user_name =  bn3221914@bnf1.iij.ad.jp
-- password = freedman
-- prinary DNS = 210.130.232.1
-- secondery DNS = 210.130.1.1
- &ref(ifcfg-ppp0,center,/etc/sysconfig/network-scripts/ifcfg-ppp0); に設定情報が反映される

- DNS サーバー(named)をこのサーバー上で動かすので /etc/resoluve.conf に対する DNS 自動登録をコメントアウト
- LAN 内のサーバーのアドレスを外部から引かないようにローカルサーバーDNS を引くように登録する

 [root@spirit ~]# cat /etc/resolv.conf 
 # MADE-BY-RP-PPPOE
 #nameserver 210.130.232.1
 #nameserver 210.130.1.1
 nameserver  127.0.0.1

*** masquerade の設定 [#h25813e1]
- ipv4forward を有効にすることで masquerade が有効になる
- 実際の設定は 次の iptables の設定用スクリプトの中に設定情報がある

*** iptables の設定 [#n96c6da4]
- [[Iptablesチュートリアル 1.2.0(日本語):http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/index.html]]
- 参考 Web --->  [[PCルーター構築(PPPoE+iptables):http://centossrv.com/linux-router.shtml]]
- 参考 Web --->  [[iptablesの設定:http://cyberam.dip.jp/linux_security/iptables/iptables_main.html]]
- iptables 設定用のスクリプト(オリジナル設定) ----> &ref(iptables-router.sh);
- iptables 設定用のスクリプト(ulogd を使って iptable_log_analyzer を使うように変更したバージョン) ----> &ref(iptables-router.sh_20080202);
- iptables 設定用のスクリプト(bittorrent に対応したバージョン)-----> &ref(iptables-router.sh_20081229);


 [root@spirit ~]# cat /root/script/iptables-router.sh 
 #!/bin/bash
 
 #---------------------------------------#
 # 設定開始                              #
 #---------------------------------------#
 # 内部インタフェース名定義
 LAN=eth0
 
 # 公開外部インタフェース名定義
 PUBLIC_WAN=ppp0
 
 # 公開サーバープライベートIPアドレス定義
 SERVER=192.168.1.22
 HOME=192.168.1.0/24
 
 #---------------------------------------#
 # 設定終了                              #
 #---------------------------------------#
 
 # 自ホストプライベートIPアドレス取得
 IPADDR=`ifconfig $LAN|sed -e 's/^.*inet addr:\([^ ]*\).*$/\1/p' -e d`
 
 # 内部ネットワークのネットマスク取得
 LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d`
 
 # 内部ネットワークアドレス取得
 LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|grep 0.0.0.0|cut -f1 -d' '`
 LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK
 
 # 外部インタフェース名取得
 # ※マルチセッション対応
 cd /etc/sysconfig/network-scripts
 WANLIST=`ls ifcfg-ppp* | LANG=C egrep -v '(ifcfg-lo|:|-range|rpmsave|rpmorig|rpmnew)' | \
             LANG=C egrep -v '(~|\.bak)$' | \
             LANG=C egrep 'ifcfg-[A-Za-z0-9\._-]+$' | \
             sed 's/^ifcfg-//g' |
             sed 's/[0-9]/ &/' | LANG=C sort -k 1,1 -k 2n | sed 's/ //'`
 
 # 読み込み対象モジュール追加
 sed -i '/IPTABLES_MODULES/d' /etc/sysconfig/iptables-config
 modinfo ip_nat_pptp > /dev/null 2>&1
 if [ $? -eq 0 ]; then
     echo "IPTABLES_MODULES=\"ip_conntrack_ftp ip_nat_ftp ip_nat_pptp\"" >> /etc/sysconfig/iptables-config
 else
     echo "IPTABLES_MODULES=\"ip_conntrack_ftp ip_nat_ftp\"" >> /etc/sysconfig/iptables-config
 fi
 
 # パケット転送停止
 # ※ルール設定中のパケット通過防止
 sysctl -w net.ipv4.ip_forward=0 > /dev/null
 
 # ファイアウォール停止(すべてのルールをクリア)
 /etc/rc.d/init.d/iptables stop
 
 # デフォルトルール(以降のルールにマッチしなかった場合に適用するルール)設定
 iptables -P INPUT   DROP   # 受信はすべて破棄
 iptables -P OUTPUT  ACCEPT # 送信はすべて許可
 iptables -P FORWARD DROP   # 通過はすべて破棄
 
 # SYN Cookiesを有効にする
 # ※TCP SYN Flood攻撃対策
 sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null
 sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
 echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
 
 # ブロードキャストアドレス宛pingには応答しない
 # ※Smurf攻撃対策
 sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null
 sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.conf
 echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf 
 
 # ICMP Redirectパケットは拒否
 sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl.conf
 for dev in `ls /proc/sys/net/ipv4/conf/`
 do
     sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null
     echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc/sysctl.conf
 done
 
 # Source Routedパケットは拒否
 sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sysctl.conf
 for dev in `ls /proc/sys/net/ipv4/conf/`
 do
     sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null
     echo "net.ipv4.conf.$dev.accept_source_route=0" >> /etc/sysctl.conf
 done
 
 # フラグメント化されたパケットはログを記録して破棄
 iptables -N LOG_FRAGMENT
 iptables -A LOG_FRAGMENT -j LOG --log-tcp-options --log-ip-options --log-prefix '[IPTABLES FRAGMENT] : '
 iptables -A LOG_FRAGMENT -j DROP
 iptables -A INPUT -f -j LOG_FRAGMENT
 iptables -A FORWARD -f -j LOG_FRAGMENT
 
 # 外部からの送信元がプライベートIPアドレスのパケットはログを記録して破棄
 # ※IP spoofing攻撃対策
 iptables -N LOG_SPOOFING
 iptables -A LOG_SPOOFING -j LOG --log-tcp-options --log-ip-options --log-prefix '[IPTABLES SPOOFING] : '
 iptables -A LOG_SPOOFING -j DROP
 for WAN in $WANLIST
 do
     iptables -A INPUT -i $WAN -s 127.0.0.0/8    -j LOG_SPOOFING
     iptables -A INPUT -i $WAN -s 10.0.0.0/8     -j LOG_SPOOFING
     iptables -A INPUT -i $WAN -s 172.16.0.0/12  -j LOG_SPOOFING
     iptables -A INPUT -i $WAN -s 192.168.0.0/16 -j LOG_SPOOFING
     iptables -A FORWARD -i $WAN -s 127.0.0.0/8    -j LOG_SPOOFING
     iptables -A FORWARD -i $WAN -s 10.0.0.0/8     -j LOG_SPOOFING
     iptables -A FORWARD -i $WAN -s 172.16.0.0/12  -j LOG_SPOOFING
     iptables -A FORWARD -i $WAN -s 192.168.0.0/16 -j LOG_SPOOFING
 done
 
 # 外部とのNetBIOS関連のアクセスはログを記録せずに破棄
 for WAN in $WANLIST
 do
     iptables -A INPUT -i $WAN -p tcp -m multiport --dports 135,137,138,139,445 -j DROP
     iptables -A INPUT -i $WAN -p udp -m multiport --dports 135,137,138,139,445 -j DROP
     iptables -A OUTPUT -o $WAN -p tcp -m multiport --sports 135,137,138,139,445 -j DROP
     iptables -A OUTPUT -o $WAN -p udp -m multiport --sports 135,137,138,139,445 -j DROP
     iptables -A FORWARD -i $WAN -p tcp -m multiport --dports 135,137,138,139,445 -j DROP
     iptables -A FORWARD -i $WAN -p udp -m multiport --dports 135,137,138,139,445 -j DROP
     iptables -A FORWARD -o $WAN -p tcp -m multiport --sports 135,137,138,139,445 -j DROP
     iptables -A FORWARD -o $WAN -p udp -m multiport --sports 135,137,138,139,445 -j DROP
 done
 
 # 1秒間に4回を超えるpingはログを記録して破棄
 iptables -N LOG_PINGDEATH
 iptables -A LOG_PINGDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT
 iptables -A LOG_PINGDEATH -j LOG --log-prefix '[IPTABLES PINGDEATH] : '
 iptables -A LOG_PINGDEATH -j DROP
 iptables -A INPUT -p icmp --icmp-type echo-request -j LOG_PINGDEATH
 iptables -A FORWARD -o ! $WAN -p icmp --icmp-type echo-request -j LOG_PINGDEATH 
 
 # 送信元IPアドレスが内部ネットワーク範囲外のアクセスはログを記録して破棄
 # ※Ingress対策
 iptables -N LOG_INGRESS
 iptables -A LOG_INGRESS -j LOG --log-tcp-options --log-ip-options --log-prefix '[IPTABLES INGRESS] : '
 iptables -A LOG_INGRESS -j DROP
 iptables -A FORWARD -i $LAN -s ! $LOCALNET -j LOG_INGRESS 
 
 # パスMTU問題対処
 iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
 
 # 自ホストからのアクセスをすべて許可
 iptables -A INPUT -i lo -j ACCEPT
 
 # 内部からのアクセスをすべて許可
 iptables -A INPUT -i $LAN -j ACCEPT
 iptables -A FORWARD -i $LAN -j ACCEPT
 
 # 内部からのインターネットへの同時接続を可能にする
 # ※IP masquerade(NAPT) 
 for WAN in $WANLIST
 do
     iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
 done
 
 # 内部から行ったアクセスに対する外部からの返答アクセスを許可
 for WAN in $WANLIST
 do
     iptables -A INPUT -i $WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
     iptables -A FORWARD -i $WAN -m state --state ESTABLISHED,RELATED -j ACCEPT
 done
 
 # 外部からの必須ICMPパケットを許可
 iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
 iptables -A INPUT -p icmp --icmp-type source-quench -j ACCEPT
 iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
 iptables -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT
 iptables -A FORWARD -p icmp --icmp-type destination-unreachable -j ACCEPT
 iptables -A FORWARD -p icmp --icmp-type source-quench -j ACCEPT
 iptables -A FORWARD -p icmp --icmp-type time-exceeded -j ACCEPT
 iptables -A FORWARD -p icmp --icmp-type parameter-problem -j ACCEPT
 
 # 113番ポート(IDENT)へのアクセスには拒否応答
 # ※メールサーバ等のレスポンス低下防止
 iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
 iptables -A FORWARD -p tcp --dport 113 -j REJECT --reject-with tcp-reset
 
 #----------------------------------------------------------#
 # 自ホストが各種サービスを公開する場合の設定(ここから)     #
 #----------------------------------------------------------#
 
 router_eq_server(){
 
     # 外部からの8822番ポート(SSH)へのアクセスを許可
     # ※SSHサーバーを公開する場合のみ
     iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 8822 -j ACCEPT 
 
     # 外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可
     # ※外部向けDNSサーバーを運用する場合のみ
 #    iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 53 -j ACCEPT
 #    iptables -A INPUT -i $PUBLIC_WAN -p udp --dport 53 -j ACCEPT 
 
     # 家庭内からのDNS問い合わせを許可 ###
     iptables  -A INPUT  -p udp -s $HOME --dport 53 -j ACCEPT
     iptables  -A OUTPUT -p udp -d $HOME --sport 53 -j ACCEPT
     iptables  -A INPUT  -p tcp -m state --state NEW -s $HOME --dport 53 -j ACCEPT
 
     # 家庭内からのSWAT(SWAT:901)アクセスを許可 ###
     iptables  -A INPUT -p tcp -m state --state NEW -s $HOME --dport 901 -j ACCEPT
 
     # 外部からの80番ポート(HTTP)へのアクセスを許可
     # ※Webサーバーを公開する場合のみ
     iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 80 -j ACCEPT
 
     # 外部からの443番ポート(HTTPS)へのアクセスを許可
     # ※Webサーバーを公開する場合のみ
     iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 443 -j ACCEPT
 
     # 外部からの21番ポート(FTP)へのアクセスを許可
     # ※FTPサーバーを公開する場合のみ
     iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 21 -j ACCEPT
 
     # 外部からのPASV用ポート(FTP-DATA)へのアクセスを許可
     # ※FTPサーバーを公開する場合のみ
     # ※PASV用ポート60000:60030は当サイトの設定例
     iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 60000:60030 -j ACCEPT 
 
     # 外部からの25番ポート(SMTP)へのアクセスを許可
     # ※SMTPサーバーを公開する場合のみ
     iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 25 -j ACCEPT
 
     # 外部からの465番ポート(SMTPS)へのアクセスを許可
     # ※SMTPSサーバーを公開する場合のみ
     iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 465 -j ACCEPT 
 
     # 外部からの110番ポート(POP3)へのアクセスを許可
     # ※POP3サーバーを公開する場合のみ
     iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 110 -j ACCEPT 
 
     # 外部からの995番ポート(POP3S)へのアクセスを許可
     # ※POP3Sサーバーを公開する場合のみ
 #    iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 995 -j ACCEPT 
 
     # 外部からの143番ポート(IMAP)へのアクセスを許可
     # ※IMAPサーバーを公開する場合のみ
 #    iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 143 -j ACCEPT
 
     # 外部からの993番ポート(IMAPS)へのアクセスを許可
     # ※IMAPSサーバーを公開する場合のみ
     iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 993 -j ACCEPT 
 
     # 外部からの1723番ポート(PPTP)へのアクセスを許可
     # 外部からのGREプロトコルへのアクセスを許可
     # ※PPTPサーバーを公開する場合のみ
     iptables -A INPUT -i $PUBLIC_WAN -p tcp --dport 1723 -j ACCEPT
     iptables -A INPUT -i $PUBLIC_WAN -p gre -j ACCEPT
 } 
 
 #----------------------------------------------------------#
 # 自ホストが各種サービスを公開する場合の設定(ここまで)     #
 #----------------------------------------------------------# 
 
 #----------------------------------------------------------#
 # 他ホストが各種サービスを公開する場合の設定(ここから)     #
 #----------------------------------------------------------#
 router_ne_server(){ 
 
     # 外部からの公開サーバーの22番ポート(SSH)へのアクセスを許可&転送
     # ※SSHサーバーを公開する場合のみ
 #    iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 22 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 22 -j DNAT --to $SERVER 
 
     # 外部からの公開サーバーのTCP/UDP53番ポート(DNS)へのアクセスを許可&転送
     # ※外部向けDNSサーバーを運用する場合のみ
 #    iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 53 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 53 -j DNAT --to $SERVER
 #    iptables -A FORWARD -i $PUBLIC_WAN -p udp -d $SERVER --dport 53 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p udp --dport 53 -j DNAT --to $SERVER
 
     # 外部からの公開サーバーの80番ポート(HTTP)へのアクセスを許可&転送
     # ※Webサーバーを公開する場合のみ
     iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 80 -j ACCEPT
     iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 80 -j DNAT --to $SERVER
 
     # 外部からの公開サーバーの443番ポート(HTTPS)へのアクセスを許可&転送
     # ※Webサーバーを公開する場合のみ
     iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 443 -j ACCEPT
     iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 443 -j DNAT --to $SERVER 
 
     # 外部からの公開サーバーの21番ポート(FTP)へのアクセスを許可&転送
     # ※FTPサーバーを公開する場合のみ
 #    iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 21 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 21 -j DNAT --to $SERVER 
 
     # 外部からの公開サーバーのPASV用ポート(FTP-DATA)へのアクセスを許可&転送
     # ※FTPサーバーを公開する場合のみ
     # ※PASV用ポート60000:60030は当サイトの設定例
 #    iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 60000:60030 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 60000:60030 -j DNAT --to $SERVER
 
     # 外部からの公開サーバーの25番ポート(SMTP)へのアクセスを許可&転送
     # ※SMTPサーバーを公開する場合のみ
 #    iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 25 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 25 -j DNAT --to $SERVER 
 
     # 外部からの公開サーバーの465番ポート(SMTPS)へのアクセスを許可&転送
     # ※SMTPSサーバーを公開する場合のみ
 #    iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 465 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 465 -j DNAT --to $SERVER
 
     # 外部からの公開サーバーの110番ポート(POP3)へのアクセスを許可&転送
     # ※POP3サーバーを公開する場合のみ
 #    iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 110 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 110 -j DNAT --to $SERVER
 
     # 外部からの公開サーバーの995番ポート(POP3S)へのアクセスを許可&転送
     # ※POP3Sサーバーを公開する場合のみ
 #    iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 995 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 995 -j DNAT --to $SERVER 
 
     # 外部からの公開サーバーの143番ポート(IMAP)へのアクセスを許可&転送
     # ※IMAPサーバーを公開する場合のみ
 #    iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 143 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 143 -j DNAT --to $SERVER
 
     # 外部からの公開サーバーの993番ポート(IMAPS)へのアクセスを許可&転送
     # ※IMAPSサーバーを公開する場合のみ
 #    iptables -A FORWARD -i $PUBLIC_WAN -p tcp -d $SERVER --dport 993 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p tcp --dport 993 -j DNAT --to $SERVER
 
     # 外部からの公開サーバーのUDP1194番ポート(OpenVPN)へのアクセスを許可&転送
     # ※OpenVPNサーバーを公開する場合のみ
 #    iptables -A FORWARD -i $PUBLIC_WAN -p udp -d $SERVER --dport 1194 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p udp --dport 1194 -j DNAT --to $SERVER
 
 #    iptables -A FORWARD -i $PUBLIC_WAN -p udp -d $SERVER --dport 2304 -j ACCEPT
 #    iptables -t nat -A PREROUTING -i $PUBLIC_WAN -p udp --dport 2304 -j DNAT --to $SERVER 
 
 }
 
 #----------------------------------------------------------#
 # 他ホストが各種サービスを公開する場合の設定(ここまで)     #
 #----------------------------------------------------------#
 
 # 公開サーバーが自ホストの場合のルール設定を行う
 [ "$SERVER" = "$IPADDR" ] || [ $SERVER = 127.0.0.1 ] && router_eq_server 
 
 # 公開サーバーが他ホストの場合のルール設定を行う
 [ "$SERVER" != "$IPADDR" ] && [ $SERVER != 127.0.0.1 ] && router_ne_server
 
 # 上記のルールにマッチしなかったアクセスはログを記録して破棄
 iptables -A INPUT -j LOG --log-tcp-options --log-ip-options --log-prefix '[IPTABLES INPUT] : '
 iptables -A INPUT -j DROP
 iptables -A FORWARD -j LOG --log-tcp-options --log-ip-options --log-prefix '[IPTABLES FORWARD] : '
 iptables -A FORWARD -j DROP 
 
 # 再起動時にも上記設定が有効となるようにルールを保存
 /etc/rc.d/init.d/iptables save
 
 # ファイアウォール起動
 /etc/rc.d/init.d/iptables start
 
 # パケット転送開始
 sysctl -w net.ipv4.ip_forward=1 > /dev/null
 sed -i '/net.ipv4.ip_forward/d' /etc/sysctl.conf
 echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

*** iptables の動作確認 [#a10469a7]
- 外部から自サーバーに対する port_scan をかけることのできるサービス [[Shields UP! - Internet Vulnerability Profiling:https://www.grc.com/x/ne.dll?bh0bkyd2]] を使ってポートの空き状況を確認した。

 GRC Port Authority Report created on UTC: 2007-09-22 at 18:18:15
 Results from scan of ports: 0-1055
 
     7 Ports Open
     1 Ports Closed
  1048 Ports Stealth
 ---------------------
  1056 Ports Tested
 
 Ports found to be OPEN were: 21, 25, 80, 110, 443, 465, 993
 The port found to be CLOSED was: 113
 Other than what is listed above, all ports are STEALTH.

&ref(port_scan.jpg);
*** iptables ログ [#x27fa455]
- iptables でどのようなログを出力するかは、個別に指定する必要がある
- iptables のログは kernel ログなので /var/log/messages に出力される
- syslog.conf を以下の様に変更して /var/log/kernel.log に出力されるように変更した

 # iptables ( = kernel.log )
 kern.*                                                  /var/log/kernel.log
  
 # Log anything (except mail) of level info or higher.
 # Don't log private authentication messages!
 # muna re-routed kernel log to /var/log/kernel.log to isolate iptables log
 *.info;mail.none;authpriv.none;cron.none;kernel.none    /var/log/message

*** [[iptables loganalyzer:http://iptablelog.sourceforge.net/]] の導入 [#te582d5a]
- 参考 URL
-- http://centossrv.com/iptables_log_analyzer.shtml
-- http://www.orangesignal.com/myserver/fc6/iptablelog.shtml <---- Fedora ベース
-- http://fedorasrv.com/iptables_log_analyzer.shtml <---- Fedora ベース

- mysql にデータベースを作成
-- データーベース名 = iptablelog
-- 管理者ユーザー名 = iptablelog_user@localhost
-- 管理者パスワード = iptable_admin

 mysql> set password for iptablelog_user@localhost=password('iptable_admin');
 Query OK, 0 rows affected (0.00 sec)
 
 [root@spirit ~]# mysql -u iptablelog_user -p < /var/www/html/pukiwiki/iptablelog/conf/iptables.mysql iptablelog
 Enter password:

- ulogd のインストール ( Cent OS には ulogd のパッケージがないのでソースからビルドする )

 [root@spirit download]#  wget ftp://ftp.netfilter.org/pub/ulogd/ulogd-1.24.tar.bz2
 [root@spirit download]#  tar xjvf ulogd-1.24.tar.bz2
 [root@spirit download]#  cd ulogd-1.24
 
 [root@spirit ulogd-1.24]# yum install mysql-devel
 [root@spirit ulogd-1.24]# ./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/local/lib --with-mysql
 [root@spirit ulogd-1.24]# make
 [root@spirit ulogd-1.24]# make install

-- /etc/ulogd.conf の編集

 38 # ulogd_BASE.so - interpreter plugin for basic IPv4 header fields
 39 #                 you will always need this
 40 plugin="/usr/local/lib/ulogd/ulogd_BASE.so"
 41 plugin="/usr/local/lib/ulogd/ulogd_LOCAL.so"  <------ 追加
 42 
 43 
 44 # output plugins.
 45 #plugin="/usr/local/lib/ulogd/ulogd_LOGEMU.so"  <------ コメントアウト
 46 #plugin="/usr/local/lib/ulogd/ulogd_OPRINT.so"
 47 plugin="/usr/local/lib/ulogd/ulogd_MYSQL.so"   <------ コメント削除(有効化)
 48 #plugin="/usr/local/lib/ulogd/ulogd_PGSQL.so"
 49 #plugin="/usr/local/lib/ulogd/ulogd_SQLITE3.so"
 50 #plugin="/usr/local/lib/ulogd/ulogd_PCAP.so"
  (snip)
 60 [MYSQL]
 61 table="ulog"
 62 pass="iptable_admin"
 63 user="iptablelog_user"
 64 db="iptablelog"
 65 host="localhost"

-- ulogd 起動設定

 [root@spirit ~]# service ulogd start
 Starting ulogd:                                            [  OK  ]
 
 [root@spirit ~]# chkconfig --add ulogd

*** Bittiorrent に対応したポート(6881-6999) のオープン (2008-12-29) [#g80a04df]

 iptables -A INPUT -p tcp --destination-port 6881:6999 -j ACCEPT
 iptables -A OUTPUT -p tcp --source-port 6881:6999 -j ACCEPT

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS