まずバーチャルサーバーのネットワーク環境がどうなっているのかを調べます。
$ /sbin/ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:296391 errors:0 dropped:0 overruns:0 frame:0 TX packets:296391 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:60641629 (57.8 MiB) TX bytes:60641629 (57.8 MiB) venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1 RX packets:21080132 errors:0 dropped:0 overruns:0 frame:0 TX packets:13070613 errors:0 dropped:75 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:23033207973 (21.4 GiB) TX bytes:4211702096 (3.9 GiB) venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:153.127.248.201 P-t-P:153.127.248.201 Bcast:153.127.248.201 Mask:255.255.255.255 UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
二つのネットワークアダプタが設定されており、それぞれvenet0とvenet0:0と名づけられています。
venet0:0のほうにグローバルIPアドレスがあてられていて外部とはこちらを介して通信するようです。
次に経路を調べます。
$ /sbin/route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface link-local * 255.255.0.0 U 1002 0 0 venet0 default * 0.0.0.0 U 0 0 0 venet0
出て行くほうはvenet0を介しているようです。 なぜこのように(ネットワークアダプタが二つでデータの入るほうと出るほうが別々に)設定されているかはわかりませんが、課金などと関係あるのかもしれません。
#!/bin/bash # Script for firewall # 2014/2/26 Takamasa Suzuki IPTABLES="/sbin/iptables" IP_ADDR=`/sbin/ifconfig venet0:0 | grep "inet addr" | sed -e "s/.*inet addr:\([0-9.]\+\) .*/\1/"` # Policy POLICY=DROP if [ -n "$1" ] ; then POLICY=ACCEPT fi for CHAIN in INPUT OUTPUT FORWARD ; do $IPTABLES -P $CHAIN $POLICY $IPTABLES -F $CHAIN done $IPTABLES -X # 全てのユーザー定義のチェーンを削除する $IPTABLES -Z # 全てのチェーンのパケット情報を0にする if [ "$POLICY" == ACCEPT ] ; then $IPTABLES -L -n exit fi # for loopback interface $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -o lo -j ACCEPT # ICMP (ping) if [ PING ] ; then $IPTABLES -A INPUT -p ICMP -j ACCEPT $IPTABLES -A OUTPUT -p ICMP -j ACCEPT fi # basic networking $IPTABLES -A INPUT -d $IP_ADDR -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -s $IP_ADDR -j ACCEPT # Services in TCP for SERVICE in 2022 http https smtp smtps submission pop3 pop3s imap imaps ; do $IPTABLES -A INPUT -d $IP_ADDR -m state --state NEW -p tcp --dport $SERVICE -j ACCEPT done $IPTABLES -L -n
# /firewall.sh # service iptables save
sshやメールサーバーに対し手当たり次第のユーザー名とパスワードでログインを試みようとする輩がいるので、それをブロックします。
# iptables -A INPUT -p tcp --dport 2022 --syn -m recent --name badhost \ --rcheck --seconds 60 --hitcount 5 -j LOG --log-prefix "iptables_reject ssh:" # iptables -A INPUT -p tcp --dport 2022 --syn -m recent --name badhost \ --rcheck --seconds 60 --hitcount 5 -j REJECT # iptables -A INPUT -p tcp --dport 2022 --syn -m recent --name badhost \ --set -j LOG --log-prefix "recent_set"