御世話になります。堀口です。
以前助けて頂いたiptablesの話の続きなのですが、どうしても、ntpのポートを
開けることができません。何がいけないのか、御指導願えますか。雑誌を参考
に、firewallというスクリプトを作成し、init.dから起動しています。
ntp関連の行は以下のとおりです。
$IPTABLES -A INPUT -i ppp0 -p tcp --dport ntp -j ACCEPT
$IPTABLES -A INPUT -i ppp0 -p udp --dport ntp -j ACCEPT
$IPTABLES -A INPUT -i ppp0 -p tcp --sport ntp -j ACCEPT
$IPTABLES -A INPUT -i ppp0 -p udp --sport ntp -j ACCEPT
初めは --dportの方だけだったのですが、--sportも加えてみました。
外部からnmapを走らせてみると、以下の様にntpは閉まっています。
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
123/tcp closed ntp
何かどなたかお気付きになることがありましたら、お教えください。
以下はfirewallスクリプトの全体です。
よろしくお願いいたします。
堀口 定則
#!/bin/sh
#
# firewall This script starts firewall
# chkconfig: 2345 98 99
# description: firewall setting
IPTABLES="/sbin/iptables"
start(){
# Initialize setting
$IPTABLES -F
# IP Masquerade
/sbin/modprobe iptable_nat; echo 1 > /proc/sys/net/ipv4/ip_forward
# Accept all policy by default.
$IPTABLES -P INPUT DROP; $IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP
# Accept local loop back
$IPTABLES -A INPUT -i lo -j ACCEPT
# Accept all from interface ppp0 for test
#$IPTABLES -A INPUT -i ppp0 -j ACCEPT
# Allow TCP for SSH connection
$IPTABLES -A INPUT -i ppp0 -p tcp --dport 22 -m state --state \
INVALID,NEW -j LOG --log-prefix "iptables(ssh connection): "
$IPTABLES -A INPUT -i ppp0 -p tcp --dport ssh -m state --state \
NEW,ESTABLISHED -j ACCEPT
# Allow TCP for http connection
$IPTABLES -A INPUT -i ppp0 -p tcp --dport http -j ACCEPT
#Allow TCP for ntp connection
$IPTABLES -A INPUT -i ppp0 -p tcp --dport ntp -j ACCEPT
$IPTABLES -A INPUT -i ppp0 -p udp --dport ntp -j ACCEPT
$IPTABLES -A INPUT -i ppp0 -p tcp --sport ntp -j ACCEPT
$IPTABLES -A INPUT -i ppp0 -p udp --sport ntp -j ACCEPT
# Allow TCP for connection established
$IPTABLES -A INPUT -p tcp --dport 1024: ! --syn -j ACCEPT
# Allow connection from the LAN
$IPTABLES -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
# Allow DNS query
$IPTABLES -A INPUT -p udp --dport 1024: --sport 53 -j ACCEPT
# Allow IP Masquerading to LAN
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0/0 -o \
ppp0 -j MASQUERADE
# Allow forward from outside to LAN that are already connected
$IPTABLES -A FORWARD -i ppp0 -o eth0 -d 192.168.1.0/24 \
-m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow connection from LAN to outside
$IPTABLES -A FORWARD -i eth0 -o ppp0 -s 192.168.1.0/24 \
-m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Deny IP Masquerade from out side (new and invalid)
$IPTABLES -A FORWARD -i ! ppp0 -m state --state NEW,INVALID -j DROP
# Deny all that were not allowed.
$IPTABLES -A INPUT -i ! lo -j DROP
}
stop(){
$IPTABLES -F
}
case "$1" in
start)
echo -n "Starting firewall:";start; echo;;
stop)
echo -n "Shutting dow firewall:";stop;echo;;
status)
$IPTABLES -L;;
*)
echo "Usage: firewall {start|stop|status}";exit 1
esac
exit 0