Advertisement
Guest User

rc.firewall

a guest
Apr 16th, 2014
426
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.13 KB | None | 0 0
  1. LAN_IFACE=eth1
  2. LAN_IP=192.168.1.22
  3. LAN_IP_RANGE=192.168.1.0/24
  4. LAN_BCAST_ADRESS=192.168.1.255/24
  5.  
  6. LAN2_IP=192.168.2.22
  7. LAN2_IP_RANGE=192.168.2.0/24
  8. LAN2_BCAST_ADRESS=192.168.2.255/24
  9.  
  10. INET_IFACE=eth0
  11. STATIC_IP=192.168.100.1
  12. LO_IFACE=lo
  13. LOCALHOST_IP=127.0.0.1
  14.  
  15. PPP0_IFACE=ppp0
  16. PPP0_IP=$(ifconfig $PPP0_IFACE | grep inet | cut -f2 -d ':' | cut -f1 -d ' ')
  17. echo $PPP0_IP
  18.  
  19. IPTABLES="/usr/sbin/iptables"
  20. IPSET="/usr/sbin/ipset"
  21.  
  22. /sbin/modprobe ip_tables
  23. /sbin/modprobe ip_nat
  24. /sbin/modprobe ip_conntrack
  25. /sbin/modprobe iptable_filter
  26. /sbin/modprobe iptable_mangle
  27. /sbin/modprobe iptable_nat
  28. /sbin/modprobe ipt_LOG
  29. /sbin/modprobe ipt_limit
  30. /sbin/modprobe ipt_state
  31.  
  32. /sbin/modprobe ipt_owner
  33. /sbin/modprobe ipt_REJECT
  34. /sbin/modprobe ipt_MASQUERADE
  35. /sbin/modprobe ip_conntrack_ftp
  36. /sbin/modprobe ip_conntrack_irc
  37. /sbin/modprobe ip_nat_ftp
  38. /sbin/modprobe ip_nat_irc
  39.  
  40. echo 1 > /proc/sys/net/ipv4/ip_forward
  41. echo 1 > /proc/sys/net/ipv4/conf/$INET_IFACE/proxy_arp
  42.  
  43. $IPTABLES -F
  44. $IPTABLES -X
  45. $IPTABLES -t nat -F
  46. $IPSET -X
  47. $IPSET -N whitelist bitmap:ip,mac range $LAN_IP_RANGE
  48. $IPSET -N whitelistd bitmap:ip,mac range $LAN_IP_RANGE
  49. $IPSET -N ipwhite iphash
  50.  
  51. for i in $(cat /home/scripts/iplist/ipmac.lst | cut -d '#' -f 1)
  52. do
  53.     if [ ! a"$i" == a ]; then
  54.         $IPSET add whitelist $i    #                  
  55.     fi
  56. done
  57.  
  58. for i in $(cat /home/scripts/iplist/ipmac_dubles.lst | cut -d '#' -f 1)
  59. do
  60.     if [ ! a"$i" == a ]; then
  61.         $IPSET add whitelistd $i    #                  
  62.     fi
  63. done
  64.  
  65. for i in $(cat /home/scripts/iplist/ip.lst | cut -d '#' -f 1)
  66. do
  67.     if [ ! a"$i" == a ]; then
  68.         $IPSET add ipwhite $i     #                    
  69.     fi
  70. done
  71.  
  72. $IPTABLES -P INPUT DROP
  73. $IPTABLES -P OUTPUT DROP
  74. $IPTABLES -P FORWARD DROP
  75.  
  76. $IPTABLES -N bad_tcp_packets
  77.  
  78. $IPTABLES -N allowed
  79. $IPTABLES -N icmp_packets
  80. $IPTABLES -N tcp_packets
  81. $IPTABLES -N udpincoming_packets
  82. $IPTABLES -N fw_allow
  83.  
  84. $IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m conntrack --ctstate NEW -j REJECT --reject-with tcp-reset
  85. $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m conntrack --ctstate NEW -j LOG --log-prefix "Bad TCP packet: "
  86. $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m conntrack --ctstate NEW -j DROP
  87.  
  88. $IPTABLES -A allowed -p TCP --syn -j ACCEPT
  89. $IPTABLES -A allowed -p TCP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  90. $IPTABLES -A allowed -p TCP -j DROP
  91.  
  92. $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT
  93. $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 3 -j ACCEPT
  94. $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 5 -j ACCEPT
  95. $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
  96. $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
  97.  
  98. $IPTABLES -A fw_allow -j ACCEPT
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105. $IPTABLES -t nat -A POSTROUTING -o $PPP0_IFACE -s $LAN_IP_RANGE -j SNAT --to-source $PPP0_IP
  106.  
  107. $IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
  108. $IPTABLES -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  109.  
  110. $IPTABLES -A FORWARD -p udp -i $LAN_IFACE --dport 67 -j DROP
  111. $IPTABLES -A FORWARD -p udp -i $LAN_IFACE --dport 68 -j DROP
  112. $IPTABLES -A FORWARD -p ALL -i $LAN_IFACE -m set --match-set whitelist src,src -j fw_allow
  113. $IPTABLES -A FORWARD -p ALL -i $LAN_IFACE -m set --match-set whitelistd src,src -j fw_allow
  114. $IPTABLES -A FORWARD -p ALL -i $LAN_IFACE -m set --match-set ipwhite src -j fw_allow
  115.  
  116. $IPTABLES -A FORWARD -m limit --limit 1/hour --limit-burst 5 -j LOG --log-level notice --log-prefix "IPT FORWARD packet died: "
  117.  
  118. $IPTABLES -A INPUT -p tcp -j bad_tcp_packets
  119. $IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
  120. $IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
  121. $IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udpincoming_packets
  122. $IPTABLES -A INPUT -p ALL -d $STATIC_IP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  123. $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d 255.255.255.255 -j ACCEPT
  124. $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BCAST_ADRESS -j ACCEPT
  125. $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_IP -j ACCEPT
  126. $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN2_BCAST_ADRESS -j ACCEPT
  127. $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN2_IP -j ACCEPT
  128. $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $STATIC_IP -j ACCEPT
  129. $IPTABLES -A INPUT -p ALL -i $LO_IFACE -d $LOCALHOST_IP -j ACCEPT
  130. $IPTABLES -A INPUT -p ALL -i $LO_IFACE -d $LAN_IP -j ACCEPT
  131. $IPTABLES -A INPUT -p ALL -i $LO_IFACE -d $LAN2_IP -j ACCEPT
  132. $IPTABLES -A INPUT -p ALL -i $LO_IFACE -d $STATIC_IP -j ACCEPT
  133. $IPTABLES -A INPUT -p ALL -i $PPP0_IFACE -d $PPP0_IP -j ACCEPT
  134. $IPTABLES -A INPUT -p ALL -i $PPP0_IFACE -d $LAN_BCAST_ADRESS -j ACCEPT
  135. $IPTABLES -A INPUT -m limit --limit 1/hour --limit-burst 5 -j LOG --log-level notice --log-prefix "IPT INPUT packet died: "
  136.  
  137. $IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
  138. $IPTABLES -A OUTPUT -p ALL -s $LOCALHOST_IP -j ACCEPT
  139. $IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
  140. $IPTABLES -A OUTPUT -p ALL -s $LAN2_IP -j ACCEPT
  141. $IPTABLES -A OUTPUT -p ALL -s $STATIC_IP -j ACCEPT
  142. $IPTABLES -A OUTPUT -p ALL -s $PPP0_IP -j ACCEPT
  143. $IPTABLES -A OUTPUT -m limit --limit 1/hour --limit-burst 5 -j LOG --log-level notice --log-prefix "IPT OUTPUT packet died: "
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement