Chinaunix首页 | 论坛 | 博客
  • 博客访问: 215465
  • 博文数量: 87
  • 博客积分: 192
  • 博客等级: 入伍新兵
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-14 07:44
文章分类

全部博文(87)

文章存档

2013年(1)

2012年(86)

分类:

2012-04-14 16:50:45


  1. #echo "Starting kerryhu-iptables rules..."
  2. #!/bin/bash
  3. #this is a common firewall created by 2010-3-27
  4. #define some variable
  5. IPT=/sbin/iptables
  6. CONNECTION_TRACKING="1"
  7. INTERNET="eth0"
  8. CLASS_A="10.0.0.0/8"
  9. CLASS_B="172.16.0.0/12"
  10. CLASS_C="192.168.0.0/16"
  11. CLASS_D_MULTICAST="224.0.0.0/4"
  12. CLASS_E_RESERVED_NET="240.0.0.0/5"
  13. BROADCAST_SRC="0.0.0.0"
  14. BROADCAST_DEST="255.255.255.255"
  15. LOOPBACK_INTERFACE="lo"
  16. #Remove any existing rules
  17. $IPT -F
  18. $IPT -X
  19. #setting default firewall policy
  20. $IPT --policy OUTPUT ACCEPT
  21. $IPT --policy FORWARD DROP
  22. $IPT -P INPUT DROP
  23. #stop firewall
  24. if [ "$1" = "stop" ]
  25. then
  26. echo "Filewall completely stopped!no firewall running!"
  27. exit 0
  28. fi
  29. #setting for loopback interface
  30. $IPT -A INPUT -i lo -j ACCEPT
  31. $IPT -A OUTPUT -o lo -j ACCEPT
  32. # Stealth Scans and TCP State Flags
  33. # All of the bits are cleared
  34. $IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
  35. # SYN and FIN are both set
  36. $IPT -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
  37. # SYN and RST are both set
  38. $IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
  39. # FIN and RST are both set
  40. $IPT -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
  41. # FIN is the only bit set, without the expected accompanying ACK
  42. $IPT -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
  43. # PSH is the only bit set, without the expected accompanying ACK
  44. $IPT -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
  45. # URG is the only bit set, without the expected accompanying ACK
  46. $IPT -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
  47. # Using Connection State to By-pass Rule Checking
  48. if [ "$CONNECTION_TRACKING" = "1" ]; then
  49. $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  50. $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  51. $IPT -A INPUT -m state --state INVALID -j DROP
  52. $IPT -A OUTPUT -m state --state INVALID -j DROP
  53. fi
  54. ##################################################################
  55. # Source Address Spoofing and Other Bad Addresses
  56. # Refuse spoofed packets pretending to be from
  57. # the external interface.s IP address
  58. # Refuse packets claiming to be from a Class A private network
  59. $IPT -A INPUT -i $INTERNET -s $CLASS_A -j DROP
  60. # Refuse packets claiming to be from a Class B private network
  61. $IPT -A INPUT -i $INTERNET -s $CLASS_B -j DROP
  62. # Refuse packets claiming to be from a Class C private network
  63. $IPT -A INPUT -i $INTERNET -s $CLASS_C -j DROP
  64. $IPT -A INPUT -i $INTERNET -s 0.0.0.0/8 -j DROP
  65. $IPT -A INPUT -i $INTERNET -s 169.254.0.0/16 -j DROP
  66. $IPT -A INPUT -i $INTERNET -s 192.0.2.0/24 -j DROP
  67. ###################################################################
  68. #setting access rules
  69. #也可以对出站的诅求做一些严格的控制
  70. #时钟同步
  71. #$IPT -A OUTPUT -d 192.43.244.18 -j ACCEPT
  72. #允许ping出
  73. #$IPT -A OUTPUT -p icmp -j ACCEPT
  74. #$IPT -A OUTPUT -o $INTERNET -p udp --dport 53 -j ACCEPT
  75. #$IPT -A OUTPUT -o $INTERNET -p tcp --dport 80 -j ACCEPT
  76. #$IPT -A INPUT -i $INTERNET -p tcp -m mac --mac-source 00:02:3F:EB:E2:01 --dport 22 -j ACCEPT
  77. $IPT -A INPUT -i $INTERNET -p tcp -s 192.168.9.201 --dport 65535 -j ACCEPT
  78. $IPT -A INPUT -i $INTERNET -p tcp --dport 443 -j ACCEPT
  79. $IPT -A INPUT -i $INTERNET -p tcp --dport 80 -j ACCEPT
  80. #限制连往本机的web服务,单个IP的并发连接不超过30个,超过的被拒绝
  81. #$IPT -A INPUT -i $INTERNET -p tcp --dport 80 -m connlimit --connlimit-above 30 -j REJECT
  82. #限制连往本机的web服务,单个IP在60秒内只允许最多新建30个连接,超过的被拒绝
  83. #$IPT -A INPUT -i $INTERNET -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 30 -j REJECT
  84. #$IPT -A INPUT -i $INTERNET -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT
  85. #限制连往本机的web服务,1个C段的IP的并发连接不超过100个,超过的被拒绝
  86. #$IPT -A INPUT -i $INTERNET -p tcp --dport 80 -m iplimit --iplimit-above 100 --iplimit-mask 24 -j REJECT
  87. #$IPT -A INPUT -i $INTERNET -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT
  88. #$IPT -A INPUT -i $INTERNET -p udp --dport 123 -j ACCEPT

阅读(1136) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~