1    #! /bin/sh
 2
 3    trusthost='192.168.0.20'
 4    internal_net='192.168.0.0/24'
 5    my_internal_ip='192.168.0.1'
 6    proxy_port='3128'
 7    proxy_ip='192.168.0.30'
 8
 9    echo 1 > /proc/sys/net/ipv4/ip_forward
10
11    ##############
12    #Flush & Reset
13    ##############
14    /sbin/iptables -F
15    /sbin/iptables -t nat -F
16    /sbin/iptables -X
17
18    ##############
19    #Deafult Rule
20    ##############
21    /sbin/iptables -P INPUT DROP
22    /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
23
24    /sbin/iptables -P OUTPUT ACCEPT
25
26    /sbin/iptables -P FORWARD DROP
27    /sbin/iptables -A FORWARD -i eth1 -o eth0 -s $internal_net -j ACCEPT
28    /sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
29
30    #########
31    #loopback
32    #########
33    /sbin/iptables -A INPUT -i lo -j ACCEPT
34
35    ###############################
36    #ICMP trusthost->my_internal_ip
37    ###############################
38    /sbin/iptables -A INPUT -p icmp --icmp-type echo-request -s $trusthost -d $my_internal_ip -j ACCEPT
39    ###############################
40    #ICMP my_internal_ip->trusthost
41    ###############################
42    /sbin/iptables -A INPUT -p icmp --icmp-type echo-reply -s $trusthost -d $my_internal_ip -j ACCEPT
43    ###############################
44    #ssh trusthost-> my_internal_ip
45    ###############################
46    /sbin/iptables -A INPUT -p tcp --syn -m state --state NEW -s $trusthost -d $my_internal_ip --dport 22 -j ACCEPT
47    ###############################
48    #Proxy internal_net-> myhost
49    ###############################
50    /sbin/iptables -A INPUT -p tcp --syn -m state --state NEW -s $internal_net -d $my_internal_ip --dport $proxy_port -j ACCEPT
51    #################
52    #SNAT(masquerade)
53    #################
54    /sbin/iptables -t nat -A POSTROUTING -o eth0 -s $internal_net -j MASQUERADE
55
56    ####################
57    #Transparently proxy
58    ####################
59    iptables -t nat -A PREROUTING -i eth1 -s ! $proxy_ip -p tcp --dport 80 -j DNAT --to $proxy_ip:$proxy_port
60    iptables -t nat -A POSTROUTING -o eth1 -s $internal_net -d $proxy_ip -j SNAT --to $my_internal_ip
61    iptables -A FORWARD -s $internal_net -d $proxy_ip -i eth1 -o eth1 -p tcp --dport $proxy_port -j ACCEPT
62
63
64    ################################################
65    #Blocking Private Address
66    ################################################
67    /sbin/iptables -A OUTPUT -o eth0 -d 10.0.0.0/8 -j DROP
68    /sbin/iptables -A OUTPUT -o eth0 -d 176.16.0.0/12 -j DROP
69    /sbin/iptables -A OUTPUT -o eth0 -d 192.168.0.0/16 -j DROP
70    /sbin/iptables -A OUTPUT -o eth0 -d 127.0.0.0/8 -j DROP
71
72    #########
73    #logging
74    #########
75    /sbin/iptables -N LOGGING
76    /sbin/iptables -A LOGGING -j LOG --log-level warning --log-prefix "DROP:" -m limit
77    /sbin/iptables -A LOGGING -j DROP
78    /sbin/iptables -A INPUT -j LOGGING
79    /sbin/iptables -A FORWARD -j LOGGING
80
  テンプレート8(行番号付き)