#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