防火墙脚本:

 

  1. #!/bin/sh 
  2.  
  3.  
  4. #Firewall version 1.0 
  5.  
  6.  
  7. #Mob.Server.Firewall - Initial SIMPLE IP Firewall script for Linux 2.6.x and iptables 
  8.  
  9.  
  10. # This script is only for the SuZhou Telcom. 
  11.  
  12.  
  13. # Copyright (C) 2008 By Steven.K.C Stevenchen8521@tom.com 
  14.  
  15.  
  16. ########################################################################### 
  17.  
  18. # 1. Configuration options. 
  19.  
  20. # 1.1 Internet Configuration. 
  21.  
  22.  
  23. INET_IP="58.x.x.x" 
  24.  
  25. INET_IFACE="eth0" 
  26.  
  27. INET_BROADCAST="58.x.x.x" 
  28.  
  29. # 1.2 Local Area Network configuration. 
  30.  
  31. # your LAN's IP range and localhost IP. /24 means to only use the first 24 
  32.  
  33. # bits of the 32 bit IP address. the same as netmask 255.255.255.0 
  34.  
  35.  
  36. LAN_IP="192.168.8.99" 
  37.  
  38. LAN_IP_RANGE="192.168.8.0/24" 
  39.  
  40. LAN_IFACE="eth1" 
  41.  
  42. # 1.3 Localhost Configuration. 
  43.  
  44.  
  45. LO_IFACE="lo" 
  46.  
  47. LO_IP="127.0.0.1" 
  48.  
  49. # 1.4 Our other networks 
  50.  
  51. #BEI JING 
  52.  
  53. BJ_1="218.30.x.x/27" 
  54.  
  55. # 1.5 IPTables Command configuration. 
  56.  
  57.  
  58. IPTABLES="iptables" 
  59.  
  60. # 1.6 Other Configuration. 
  61.  
  62.  
  63. # None 
  64.  
  65. case "$1" in 
  66.  
  67. start) 
  68.  
  69. # Clear the Iptables 
  70.  
  71. $IPTABLES -P INPUT ACCEPT 
  72.  
  73. $IPTABLES -P OUTPUT ACCEPT 
  74.  
  75. $IPTABLES -P FORWARD ACCEPT 
  76.  
  77. $IPTABLES -F 
  78.  
  79. $IPTABLES -t nat -F 
  80.  
  81. $IPTABLES -t mangle -F 
  82.  
  83. $IPTABLES -X 
  84.  
  85. $IPTABLES -t nat -X 
  86.  
  87. $IPTABLES -t mangle -X 
  88.  
  89. ########################################################################### 
  90.  
  91. # 2. Module loading. 
  92.  
  93. # Needed to initially load modules 
  94.  
  95.  
  96. /sbin/depmod -a 
  97.  
  98. # 2.1 Required modules 
  99.  
  100.  
  101. /sbin/modprobe ip_tables 
  102.  
  103. /sbin/modprobe ip_conntrack 
  104.  
  105. /sbin/modprobe iptable_filter 
  106.  
  107. /sbin/modprobe iptable_mangle 
  108.  
  109. #/sbin/modprobe iptable_nat 
  110.  
  111. /sbin/modprobe ipt_LOG 
  112.  
  113. /sbin/modprobe ipt_limit 
  114.  
  115. /sbin/modprobe ipt_state 
  116.  
  117. # 2.2 Non-Required modules 
  118.  
  119.  
  120. #/sbin/modprobe ipt_owner 
  121.  
  122. #/sbin/modprobe ipt_REJECT 
  123.  
  124. #/sbin/modprobe ipt_MASQUERADE 
  125.  
  126. #/sbin/modprobe ip_conntrack_ftp 
  127.  
  128. #/sbin/modprobe ip_conntrack_irc 
  129.  
  130. #/sbin/modprobe ip_nat_ftp 
  131.  
  132. #/sbin/modprobe ip_nat_irc 
  133.  
  134. ########################################################################### 
  135.  
  136. # 3. /proc set up. 
  137.  
  138. # 3.1 Required proc configuration 
  139.  
  140.  
  141. #echo "1" > /proc/sys/net/ipv4/ip_forward #open ip_forward 
  142.  
  143. #echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter 
  144.  
  145. #echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp 
  146.  
  147. #echo "1" > /proc/sys/net/ipv4/ip_dynaddr 
  148.  
  149. ########################################################################### 
  150.  
  151. # 4.    rules set up. 
  152.  
  153. # 4.1   Filter table 
  154.  
  155. # 4.1.1 Set policies 
  156.  
  157.  
  158. $IPTABLES -P INPUT DROP 
  159.  
  160. $IPTABLES -P OUTPUT DROP 
  161.  
  162. $IPTABLES -P FORWARD DROP 
  163.  
  164. # 4.1.2 Create userspecified chains 
  165.  
  166. Create chain for bad tcp packets 
  167.  
  168.  
  169. $IPTABLES -N bad_tcp_packets 
  170.  
  171. Create separate chains for ICMP, TCP and UDP to traverse 
  172.  
  173.  
  174. $IPTABLES -N allowed 
  175.  
  176. $IPTABLES -N tcp_packets 
  177.  
  178. $IPTABLES -N udp_packets 
  179.  
  180. $IPTABLES -N icmp_packets 
  181.  
  182. # 4.1.3 Create content in userspecified chains 
  183.  
  184.  
  185. ## bad_tcp_packets chain 
  186.  
  187.  
  188. $IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset 
  189.  
  190. $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:" 
  191.  
  192. $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP 
  193.  
  194.  
  195. # allowed chain 
  196.  
  197.  
  198. $IPTABLES -A allowed -p TCP --syn -j ACCEPT 
  199.  
  200. $IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT 
  201.  
  202. $IPTABLES -A allowed -p TCP -j DROP 
  203.  
  204.  
  205. # TCP rules 
  206.  
  207.  
  208. $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 21 -j allowed 
  209.  
  210. $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 20 -j allowed 
  211.  
  212. $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed 
  213.  
  214. $IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 53 -j allowed 
  215.  
  216. $IPTABLES -A tcp_packets -p TCP -s 59.x.x.x/32 --dport 22-j allowed 
  217.  
  218. $IPTABLES -A tcp_packets -p TCP -s $LAN_IP_RANGE --dport 22 -j allowed 
  219.  
  220.  
  221. # UDP ports 
  222.  
  223.  
  224. $IPTABLES -A udp_packets -p UDP -s 125.x.x.x/32 --destination-port 161 -j ACCEPT 
  225.  
  226.  
  227. In Microsoft Networks you will be swamped by broadcasts. These lines 
  228.  
  229. # will prevent them from showing up in the logs. 
  230.  
  231.  
  232. #$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d $INET_BROADCAST \ 
  233.  
  234. #--destination-port 135:139 -j DROP 
  235.  
  236.  
  237. # If we get DHCP requests from the Outside of our network, our logs will 
  238.  
  239. # be swamped as well. This rule will block them from getting logged. 
  240.  
  241.  
  242. #$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 \ 
  243.  
  244. #--destination-port 67:68 -j DROP 
  245.  
  246.  
  247. # ICMP rules 
  248.  
  249.  
  250. #$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT 
  251.  
  252. #$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT 
  253.  
  254. $IPTABLES -A icmp_packets -p ICMP -s 59.x.x.x/32 -j ACCEPT 
  255.  
  256. $IPTABLES -A icmp_packets -p ICMP -s $LAN_IP_RANGE -j ACCEPT 
  257.  
  258. $IPTABLES -A icmp_packets -p ICMP -s $BJ_1 -j ACCEPT