Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- clear
- iptables -F
- #-X : Delete chain.
- iptables -X
- iptables -t filter -F
- iptables -t filter -X
- iptables -t nat -F
- iptables -t nat -X
- iptables -t mangle -F
- iptables -t mangle -X
- #flush ipset
- ipset flush
- ipset destroy
- #variables:
- DMZ_S=172.16.0.3
- FW1_1=172.16.0.1
- FW1_2=10.99.0.1
- FW2_1=172.16.0.2
- FW2_2=192.168.100.1
- CORP_ADMIN=192.168.100.100
- CORP_SN=192.168.0.0/16
- PROD_SN=10.99.0.0/16
- DMZ_SN=172.16.0.0/16
- #ipsets:
- #local subnets:
- ipset -N LOCALNET nethash
- ipset -A LOCALNET 192.168.0.0/16
- ipset -A LOCALNET 172.16.0.0/16
- ipset -A LOCALNET 10.99.0.0/16
- #firewalls:
- ipset -N FWS iphash
- ipset -A FWS $FW1_1
- ipset -A FWS $FW1_2
- ipset -A FWS $FW2_1
- ipset -A FWS $FW2_2
- #-P : Set the default policy (such as DROP, REJECT, or ACCEPT).
- iptables -P INPUT DROP
- iptables -P OUTPUT DROP
- iptables -P FORWARD DROP
- ####### Custom Chains #########
- iptables -N INTERNAL
- iptables -N EXTERNAL
- iptables -N LOGGING
- iptables -N IN_IN
- iptables -N CORP_PROD
- iptables -N CORP_DMZ
- iptables -N PROD_CORP
- iptables -N PROD_DMZ
- iptables -N DMZ_PROD
- iptables -N DMZ_CORP
- iptables -N I_IN
- iptables -N I_CORP
- iptables -N I_PROD
- iptables -N I_DMZ
- iptables -N IN_I
- iptables -N CORP_I
- iptables -N PROD_I
- iptables -N DMZ_I
- iptables -N SANATIZE
- ######## NAT + Accept ESTABLISHED/RELATED #####
- iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
- iptables -A FORWARD -j SANATIZE #TODO: SANATIZE
- iptables -A FORWARD -m set --match-set LOCALNET dst -j INTERNAL
- iptables -A FORWARD -m set ! --match-set LOCALNET dst -j EXTERNAL
- iptables -A FORWARD -j LOGGING #TODO: LOGGING
- iptables -A FORWARD -m pkttype --pkt-type multicast -o eth0 -j DROP #E7
- iptables -A FORWARD -m pkttype --pkt-type multicast -j ACCEPT #E7
- iptables -A INPUT -p tcp --dport 22 -s $CORP_ADMIN -j ACCEPT
- ######### INTERNAL #############
- iptables -A INTERNAL -m set --match-set LOCALNET src -j IN_IN
- iptables -A INTERNAL -m set ! --match-set LOCALNET src -j I_IN
- iptables -A INTERNAL -j LOGGING #TODO
- ############ IN_IN ################
- iptables -A IN_IN -s $PROD_SN -d $CORP_SN -j PROD_CORP
- iptables -A IN_IN -s $PROD_SN -d $DMZ_SN -j PROD_DMZ
- iptables -A IN_IN -s $CORP_SN -d $PROD_SN -j CORP_PROD
- iptables -A IN_IN -s $CORP_SN -d $DMZ_SN -j CORP_DMZ
- iptables -A IN_IN -s $DMZ_SN -d $CORP_SN -j DMZ_CORP
- iptables -A IN_IN -s $DMZ_SN -d $PROD_SN -j DMZ_PROD
- ########### PROD_CORP #################
- iptables -A PROD_CORP -p tcp -s 10.99.0.0/16 -d 192.168.0.0/16 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
- iptables -A PROD_CORP -p ICMP --icmp-type 0 -j ACCEPT
- iptables -A PROD_CORP -j ACCEPT
- ########### PROD_DMZ #################
- iptables -A PROD_DMZ -p tcp --match multiport --dport 1,7,9,13,17,19,21,25,37,53,79,80,110,113,443,465,990,995,6667 -j ACCEPT
- iptables -A PROD_DMZ -p udp --match multiport --dport 7,13,17,19,37,53,123,5353 -j ACCEPT
- iptables -A PROD_DMZ -p ICMP --icmp-type 0 -j ACCEPT
- itpables -A PROD_DMZ -p tcp --dport 25,80,443 -j ACCEPT
- iptables -A PROD_DMZ -p tcp --dport 80 -m quota --quota 12582912 -j DROP
- iptables -A PROD_DMZ -p tcp --syn -m connlimit --connlimit-above 4 -j DROP
- iptables -A PROD_DMZ -p icmp --icmp-type 0,3,11,12 -j ACCEPT
- iptables -A PROD_DMZ -p tcp --dport 22 -s 192.168.100.100 -j ACCEPT
- iptables -A PROD_DMZ -limit 4/minute --limit-burst 6/minute -j LOGGING
- iptables -A PROD_DMZ -p tcp --dport 22 -s $CORP_ADMIN -j ACCEPT
- iptables -A PROD_DMZ -j ACCEPT
- ########### CORP_PROD #################
- iptables -A CORP_PROD -s 192.168.100/24 -d 10.99.0.0/16 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
- iptables -A CORP_PROD -s 192.168.0.0/16 -d 10.99.0.0/16 -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
- iptables -A CORP_PROD -m pkttype --pkt-type multicast -m set --match-set LOCALNET src -j ACCEPT
- iptables -A CORP_PROD -p icmp -m set --match-set LOCALNET src -j ACCEPT
- iptables -A CORP_PROD -p tcp -j ACCEPT
- iptables -A CORP_PROD -p icmp -j ACCEPT
- iptables -A CORP_PROD -p udp --dport 53 -m pkttype -pkt-type unicast -j ACCEPT
- iptables -A CORP_PROD -j ACCEPT
- ########### CORP_DMZ #################
- itpables -A CORP_DMZ -p tcp --dport 25,80,443 -j ACCEPT
- iptables -A CORP_DMZ -p tcp --dport 80 -m quota --quota 12582912 -j DROP
- iptables -A CORP_DMZ -p tcp --syn -m connlimit --connlimit-above 4 -j DROP
- iptables -A CORP_DMZ -p icmp --icmp-type 0,3,11,12 -j ACCEPT
- iptables -A CORP_DMZ -limit 4/minute --limit-burst 6/minute -j LOGGING
- iptables -A CORP_DMZ -p tcp --dport 1:1024 -j ACCEPT
- iptables -A CORP_DMZ -p udp --dport 1:1024 -j ACCEPT
- iptables -A CORP_DMZ -p udp --dport 53 -m pkttype -pkt-type unicast -j ACCEPT
- iptables -A CORP_DMZ -j ACCEPT
- ########### DMZ_PROD #################
- #iptables -t mangle -i DMZ_PROD -p tcp --dport 22 -s 172.16.0.0/16 -d 10.99.0.0/16 -j CLASSIFY --set-class 1:12
- iptables -A DMZ_PROD -m pkttype --pkt-type multicast -j ACCEPT
- iptables -A DMZ_PROD -p icmp -m set --match-set LOCALNET src -j ACCEPT
- iptables -A DMZ_PROD -j LOG_DMZ
- iptables -A DMZ_PROD -j ACCEPT
- ########### DMZ_CORP #################
- iptables -A DMZ_CORP -p TCP --dport 22 -d 192.168.100.100 -j ACCEPT
- iptables -A DMZ_CORP -j LOG_DMZ
- iptables -A DMZ_CORP -d $CORP_ADMIN --sport 22 -s 172.16.0.3 -j ACCEPT
- iptables -A DMZ_CORP -j ACCEPT
- ############ I_IN ################
- iptables -A I_IN -d $CORP_SN -j I_CORP
- iptables -A I_IN -d $PROD_SN -j I_PROD
- iptables -A I_IN -d $DMZ_SN -j I_DMZ
- ############ I_CORP ############
- iptables -A I_CORP -d 192.168.100/28 -p tcp --dport 22 -j ACCEPT
- iptables -A I_CORP -j ACCEPT
- ############ I_PROD ############
- iptables -A I_PROD -p icmp --icmp-type 0 -m set ! --match-set LOCALNET src -j ACCEPT
- iptables -A I_PROD -j ACCEPT
- ############ I_DMZ ############
- iptables -A I_DMZ -p udp --dport 53 -j DROP
- itpables -A I_DMZ -p tcp --dport 25,80,443 -j ACCEPT
- iptables -A I_DMZ -p tcp --dport 80 -m quota --quota 12582912 -j DROP
- iptables -A I_DMZ -p tcp --syn -m connlimit --connlimit-above 4 -j DROP
- iptables -A I_DMZ -p icmp --icmp-type 3,11,12 -j ACCEPT
- iptables -A I_DMZ -limit 4/minute --limit-burst 6/minute -j LOGGING
- iptables -A I_DMZ -j ACCEPT
- ######### EXTERNAL #############
- iptables -A EXTERNAL -s $PROD_SN -j PROD_I
- iptables -A EXTERNAL -s $CORP_SN -j CORP_I
- iptables -A EXTERNAL -s $DMZ_SN -j DMZ_I
- ########### PROD_I ############
- iptables -A PROD_I -p udp --dport 53 -j ACCEPT
- iptables -A PROD_I -p tcp --dport 1:1024 -j ACCEPT
- iptables -A PROD_I -p ICMP --icmp-type 0 -j ACCEPT
- iptables -A PROD_I -j LOGGING
- iptables -A PROD_I -j ACCEPT
- ########### CORP_I ############
- iptables -A CORP_I -p tcp --dport 1025:65535 --sport 1025:65535 -j DENY
- iptables -A CORP_I -p udp --dport 53 -m pkttype -pkt-type unicast -j ACCEPT
- iptables -A CORP_I -j ACCEPT
- ########### DMZ_I ############
- iptables -A DMZ_I -p udp --dport 53 -d 8.8.8.8 -j ACCEPT
- iptables -A DMZ_I -j LOG_DMZ
- iptables -A DMZ_I -j ACCEPT
- watch -n 2 -d iptables -nvL
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement