tips/iptables/iptables01

Last-modified: 2006-11-10 (金) 21:36:27
#!/bin/bash
########################
# Command
########################
IPTABLES=/sbin/iptables
MYSELF=`ifconfig eth0|grep inet|tr -s ' '|cut -d ' ' -f 3|tr -d 'addr:'`
TRUST_HOST=219.186.166.92
LOOPBACK=127.0.0.1
ANY=0.0.0.0/0
#echo $MYSELF_ETH0
########################
# Flash rules
########################
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
########################
# Default Policy
########################
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
########################
# Loopback
########################
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
#$IPTABLES -A INPUT -s $LOOPBACK -d $LOOPBACK -j ACCEPT
#$IPTABLES -A OUTPUT -s $LOOPBACK -d $LOOPBACK -j ACCEPT
########################
# ICMP
########################
### IN ###
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -s $TRUST_HOST -d $MYSELF -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-reply -s $MYSELF -d $TRUST_HOST -j ACCEPT
### OUT ###
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -s $MYSELF -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-reply -d $MYSELF -j ACCEPT
##################################
# Spoofed Packet(Source)
##################################
#$IPTABLES -A INPUT -s 255.0.0.0/8 -j LOG --log-level info --log-prefix "SP(S:255.0.0.0/8):"
$IPTABLES -A INPUT -s 255.0.0.0/8 -j DROP
#$IPTABLES -A INPUT -s 0.0.0.0/8 -j LOG --log-level info --log-prefix "SP(S:0.0.0.0/8):"
$IPTABLES -A INPUT -s 0.0.0.0/8 -j DROP
#$IPTABLES -A INPUT -s 127.0.0.0/8 -j LOG --log-level info --log-prefix "SP(S:127.0.0.0/8):"
$IPTABLES -A INPUT -s 127.0.0.0/8 -j DROP
#$IPTABLES -A INPUT -s 10.0.0.0/8 -j LOG --log-level info --log-prefix "SP(S:10.0.0.0/8):"
$IPTABLES -A INPUT -s 10.0.0.0/8 -j DROP
#$IPTABLES -A INPUT -s 172.16.0.0/12 -j LOG --log-level info --log-prefix "SP(S:172.16.0.0/12):"
$IPTABLES -A INPUT -s 172.16.0.0/12 -j DROP
####
##$IPTABLES -A INPUT -s 192.168.0.0/16 -j LOG --log-level info --log-prefix "SP(S:192.168.0.0/16):"
#$IPTABLES -A INPUT -s 192.168.0.0/16 -j DROP
####
#$IPTABLES -A INPUT -s $MYSELF -j LOG --log-level info --log-prefix "SP(S:127.0.0.1):"
$IPTABLES -A INPUT -s $MYSELF -j DROP
##################################
# Spoofed Packet(Destination)
##################################
#$IPTABLES -A INPUT -d 10.0.0.0/8 -j LOG --log-level info --log-prefix "SP(D:10.0.0.0/8):"
$IPTABLES -A INPUT -d 10.0.0.0/8 -j DROP
#$IPTABLES -A INPUT -d 172.16.0.0/12 -j LOG --log-level info --log-prefix "SP(D:172.16.0.0/12):"
$IPTABLES -A INPUT -d 172.16.0.0/12 -j DROP
####
##$IPTABLES -A INPUT -d 192.168.0.0/16 -j LOG --log-level info --log-prefix "SP(D:192.168.0.0/16):"
#$IPTABLES -A INPUT -d 192.168.0.0/16 -j DROP
####
########################
# Broad Cast
########################
$IPTABLES -A INPUT -d 255.255.255.255 -j DROP
$IPTABLES -A INPUT -d 224.0.0.1 -j DROP
########################
# Return Packet
########################
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
########################
# Accept Server Service
########################
$IPTABLES -A INPUT -p tcp -d $MYSELF ! --syn -m state --state NEW -j DROP
### SSH ###
$IPTABLES -A INPUT -p tcp -d $MYSELF --dport 22 -m state --state NEW -j ACCEPT
### DNS ###
$IPTABLES -A INPUT -p udp -d $MYSELF --dport 53 -m state --state NEW -j ACCEPT
### HTTP ###
$IPTABLES -A INPUT -p tcp -d $MYSELF --dport 80 -m state --state NEW -j ACCEPT
### FTP ###
$IPTABLES -A INPUT -p tcp -d $MYSELF --dport 21 -m state --state NEW -j ACCEPT
########################
# OUTPUT
########################
$IPTABLES -A OUTPUT -p tcp -d $MYSELF ! --syn -m state --state NEW -j DROP
### DNS ###
$IPTABLES -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
### HTTP ###
$IPTABLES -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
########################
#
########################
#$IPTABLES -A OUTPUT -p tcp -s $MYSELF --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
########################
# Logging
########################
$IPTABLES -N LOGGING
$IPTABLES -A LOGGING -j LOG --log-level info --log-prefix "DROP:" -m limit
$IPTABLES -A LOGGING -j DROP
$IPTABLES -A INPUT -j LOGGING
$IPTABLES -A OUTPUT -j LOGGING