IP Tables

 

IP Taples Linux

 


Ползва се за различни случаи, за това не е раедактиран оставям го на Вас.


#!/bin/sh
######################
#Make and design by #
# D.Dimov           #
# SGP.inc           #
######################

#DNS1=217.10.240.242
#DNS2=217.10.240.2

INT=eth1
OUT=eth2
FRE=eth0
#ipt=/usr/local/sbin/iptables
ipt=/sbin/iptables
############# Network interface ip address ######################################
                                                                               #
########## WAN IP ###########################################################   #
IN_IP=`/sbin/ifconfig $INT | grep inet | cut -d : -f 2 | cut -d \ -f 1`   #   #
#############################################################################   #
                                                                               #
########## LAN TRUST IP #####################################################   #
OUT_IP=`/sbin/ifconfig $OUT | grep inet | cut -d : -f 2 | cut -d \ -f 1`   #   #
#############################################################################   #
########## LAN FREE-SERVER ##################################################   #
FRE_IP=`/sbin/ifconfig $FRE | grep inet | cut -d : -f 2 | cut -d \ -f 1`   #   #
#############################################################################   #
                                                                                #
#################################################################################
############ Flush all tables ###########
$ipt -F INPUT                           #
$ipt -F FORWARD                         #
$ipt -F OUTPUT                          #
$ipt -t nat -F PREROUTING               #
$ipt -t nat -F POSTROUTING             #
$ipt -F -t mangle                       #
$ipt -F                                 #
$ipt -X                                 #
#########################################

####### POLICY #########
$ipt -P INPUT ACCEPT   #
$ipt -P FORWARD ACCEPT #
$ipt -P OUTPUT ACCEPT #
########################

######## PERMIT DNS SERVER #################################
#$ipt -A INPUT -p udp -d $DNS1 --dport domain -j ACCEPT     #
#$ipt -A INPUT -p udp -d $DNS2 --dport domain -j ACCEPT     #
############################################################

######## ALLOW ESTABLISHED connections ###############################
$ipt -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT #
$ipt -A INPUT -p udp -m state --state ESTABLISHED,RELATED -j ACCEPT #
######################################################################

######### Allow HTTP servers #################
$ipt -A INPUT -p tcp --dport www -j ACCEPT  #
$ipt -A INPUT -p udp --dport www -j ACCEPT   #
##############################################

$ipt -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
######### Allow IRC ##########################
$ipt -A INPUT -p tcp --dport ircd -j ACCEPT #
$ipt -A INPUT -p tcp --dport ssh -j ACCEPT   #
##############################################

############ DMZ ################################################################################################
# forward traffic between DMZ and WAN servers SMTP, Mail etc                                          #
iptables -A FORWARD -i eth1 -o eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT                    #
iptables -A FORWARD -i eth2 -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT                      #
# Route incoming SMTP (port 25 ) traffic to DMZ server 10.10.10.100                                   #
iptables -t nat -A PREROUTING -p tcp -i eth2 -d 46.35.168.215 --dport 21 -j DNAT --to-destination 10.10.10.100      #
iptables -t nat -A PREROUTING -p tcp -i eth2 -d 46.35.168.215 --dport 23 -j DNAT --to-destination 10.10.10.100 #
#################################################################################################################

######### Allow SSH connection on this port ##
$ipt -A INPUT -p udp --dport 65506 -j ACCEPT #
$ipt -A INPUT -p tcp --dport 65506 -j ACCEPT #
##############################################

############ redirect IP ##########################################################################
# $ipt -A PREROUTING -t nat -p tcp -s 192.168.1.252 -j DNAT --to 213.167.1.130                   #
###################################################################################################

######### DROP INVALID PACKAGES #######################
$ipt -A INPUT -p tcp -m state --state INVALID -j DROP #
#######################################################

############ Use HIGH PORT's ###################################
echo "1025 32768" > /proc/sys/net/ipv4/ip_local_port_range     #
################################################################
# $ipt -A PREROUTING -t nat -p tcp -d 46.35.168.215 --dport 21 -j DNAT --to 10.10.10.100   #
# route delete -net 213.167.0.0 netmask 255.255.224.0
# route add -net 0.0.0.0 netmask 0.0.0.0 gw 46.40.88.1
# route add -net 213.167.0.0 netmask 255.255.224.0 gw 213.167.0.141
# route delete -net 217.22.58.0 netmask 255.255.255.0
# route add -net 217.22.58.0 netmask 255.255.255.0 eth2
# route add -net 217.22.58.0 netmask 255.255.255.0 gw 213.167.0.141
# $ipt -A PREROUTING -t nat -p tcp -d 83.217.75.190 --dport 80 -j DNAT --to 217.22.58.62   #
# route delete -net 213.247.251.0 netmask 255.255.255.0
# route add -net 213.247.251.0 netmask 255.255.255.0 gw 192.168.1.10
# $ipt -A PREROUTING -t nat -p tcp -d 213.247.251.91 --dport 80 -j DNAT --to 192.168.1.10   #
#$ipt -t nat -I PREROUTING -d 46.35.168.215 -p tcp -m tcp --dport 21 -j DNAT --to-destination 10.10.10.100
# $ipt -A FORWARD -p 21 -d 10.10.10.100 -j ACCEPT
# $ipt -A FORWARD -s 192.168.1.252 -d 0.0.0.0/0 -j DROP
# $ipt -A FORWARD -s 192.168.1.0/24 -d 192.168.0.0/24 -j DROP
# $ipt -A FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -j DROP
# $ipt -A FORWARD -s 192.168.4.0/24 -d 192.168.0.0/24 -j DROP
# $ipt -A FORWARD -s 192.168.4.0/24 -d 192.168.2.0/24 -j DROP
# $ipt -A FORWARD -s 192.168.4.0/24 -d 192.168.3.0/24 -j DROP
# $ipt -A FORWARD -s 192.168.1.0/24 -d 69.64.145.229/24 -j DROP
# $ipt -A FORWARD -s 69.64.145.229/24 -d 192.168.1.0/24 -j DROP
# $ipt -A PREROUTING -t nat -p tcp -d 80.72.68.217/32 -j DNAT --to 192.168.1.1:80
# $ipt -A PREROUTING -t nat -p udp -d 80.72.68.217/32 -j DNAT --to 192.168.1.1:80
# $ipt -A FORWARD -s 80.72.68.217/32 -d 0.0.0.0/32 -j DROP
#iptables -t nat -A PREROUTING -p tcp -i eth2 -d 46.35.168.215 --dport 21 -j DNAT --to-destination 10.10.10.100
#################### Prenasochvane na vrazkata navatre #########
echo "1" > /proc/sys/net/ipv4/ip_forward                      #
$ipt -t nat -A POSTROUTING -o eth0 -j MASQUERADE               #
$ipt -t nat -A POSTROUTING -o eth2 -j MASQUERADE               #
$ipt -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP     #
$ipt -A INPUT -i eth2 -m state --state NEW,INVALID -j DROP     #
$ipt -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP   #
$ipt -A FORWARD -i eth2 -m state --state NEW,INVALID -j DROP   #
#$ipt -t nat -A POSTROUTING -o eth2 -j MASQUERADE             #
################################################################

#################### TTL Settings #############################
# iptables -t mangle -A PREROUTING -i eth1 -j TTL --ttl-set 64 #

# iptables -t mangle -A PREROUTING -i eth1 -j TTL --ttl-dec 1 #

# iptables -t mangle -A POSTROUTING -o eth1 -j TTL --ttl-inc 1 #
################################################################

################### BROOD PORT #####################################################################
# $ipt -A PREROUTING -t nat -p udp -d $IN_IP --dport 6112 -j DNAT --to $OUT_IP:6112               #
####################################################################################################

################### WEB CAM ########################################################################
# $ipt -A PREROUTING -t nat -p tcp -d $IN_IP --dport 1003 -j DNAT --to $OUT_IP:8080             #
####################################################################################################
# iptables -A OUTPUT -j LOG --log-level info --log-prefix "OUTPUT:"
# iptables -A FORWARD -j LOG --log-level info --log-prefix "FORWARD:"


################## Bad TCP OPTIONS(128) ###########################
$ipt -A INPUT -i $INT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP #
$ipt -A INPUT -i $INT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP #
$ipt -A INPUT -i $INT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP #
$ipt -A INPUT -i $INT -p tcp --tcp-flags ALL FIN -j DROP         #
$ipt -A INPUT -i $INT -p tcp --tcp-flags ALL ALL -j DROP         #
$ipt -A INPUT -i $INT -p tcp --tcp-flags ALL NONE -j DROP         #
$ipt -A INPUT -i $INT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP #
$ipt -A INPUT -i $INT -p tcp --tcp-flags ACK,FIN FIN -j DROP     #
$ipt -A INPUT -i $INT -p tcp --tcp-flags ACK,PSH PSH -j DROP     #
$ipt -A INPUT -i $INT -p tcp --tcp-flags ACK,URG URG -j DROP     #
$ipt -A INPUT -i $INT -p tcp --tcp-option 64 -j DROP             #
$ipt -A INPUT -i $INT -p tcp --tcp-option 128 -j DROP             #
###################################################################

################### BAD NETWORK's #######################################################
                                                                                       #
################### Seting the Private network ####################                     #
$ipt -t nat -A PREROUTING -i $INT -s 128.0.0.0/16 -j DROP         #                     #
$ipt -t nat -A PREROUTING -i $INT -s 169.254.0.0/16 -j DROP       #                     #
$ipt -t nat -A PREROUTING -i $INT -s 172.16.0.0/12 -j DROP       #                     #
$ipt -t nat -A PREROUTING -i $INT -s 191.255.0.0/16 -j DROP       #                     #
# $ipt -t nat -A PREROUTING -i $INT -s 192.0.0.0/24 -j DROP       #                     #
$ipt -t nat -A PREROUTING -i $INT -s 192.0.2.0/24 -j DROP         #                     #
$ipt -t nat -A PREROUTING -i $INT -s 192.88.99.0/24 -j DROP       #                     #
# $ipt -t nat -A PREROUTING -i $INT -s 192.168.0.0/16 -j DROP     #                     #
$ipt -t nat -A PREROUTING -i $INT -s 198.18.0.0/15 -j DROP       #                     #
$ipt -t nat -A PREROUTING -i $INT -s 224.0.0.0/4 -j DROP         #                     #
$ipt -t nat -A PREROUTING -i $INT -s 240.0.0.0/4 -j DROP         #                   #
# $ipt -t nat -A PREROUTING -i $OUT -s 211.10.15.0/24 -j DROP     #                     #
# $ipt -t nat -A PREROUTING -i $INT -s $IN_IP -j DROP             #                     #
###################################################################                    #
################## Refuse bogus IP ranges ######################################       #
$ipt -N BOGUS                                                                   #       #
$ipt -F BOGUS                                                                  #       #
$ipt -A BOGUS -i $INT -s 255.255.255.255/32 -j DROP   # Broadcast             #       #
# $ipt -A BOGUS -i $INT -s 127.0.0.0/8 -j DROP           # Loopback             #       #
$ipt -A BOGUS -i $INT -s 169.254.0.0/16 -j DROP       # Link                   #       #
$ipt -A BOGUS -i $INT -s 192.0.2.0/24 -j DROP         # Test-net               #       #
$ipt -A BOGUS -i $INT -s 248.0.0.0/5 -j DROP           # Unallocated           #       #
#$ipt -A BOGUS -i $INT -s 10.0.0.0/8 -j DROP           # Class A private       #       #
$ipt -A BOGUS -i $INT -s 172.16.0.0/16 -j DROP         # Class B private       #       #
# $ipt -A BOGUS -i $INT -s 192.168.0.0/16 -j DROP       # Class C private     #       #
$ipt -A BOGUS -i $INT -s 224.0.0.0/4 -j DROP           # Class D multicast     #       #
$ipt -A BOGUS -i $INT -s 240.0.0.0/5 -j DROP           # Class E reserved       #       #
#################################################################################       #
                                                                                     #
#########################################################################################

################## ALLOW INCOMING SAMBA SERVER ###################
# netbios-ns     137/tcp   NETBIOS Name Service                 #
# netbios-ns     137/udp   NETBIOS Name Service                 #
# netbios-dgm     138/tcp   NETBIOS Datagram Service             #
# netbios-dgm     138/udp   NETBIOS Datagram Service            #
# netbios-ssn     139/tcp   NETBIOS Session Service             #
# netbios-ssn     139/udp   NETBIOS Session Service             #
###################################################################
# $ipt -N allow-samba-input                                      #
# $ipt -F allow-samba-input                                       #
# $ipt -A allow-samba-input -i $OUT -p udp --dport 137 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p tcp --sport 137 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p udp --sport 137 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p tcp --dport 138 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p udp --dport 138 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p tcp --sport 138 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p tcp --dport 139 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p udp --dport 139 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p tcp --sport 139 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p udp --sport 139 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p tcp --dport 445 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p udp --dport 445 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p tcp --sport 445 -j ACCEPT   #
# $ipt -A allow-samba-input -i $OUT -p udp --sport 445 -j ACCEPT   #
$ipt -A OUTPUT -o eth2 -p tcp --dport 137:139 -j DROP          #          
$ipt -A OUTPUT -o eth2 -p udp --dport 137:139 -j DROP          #
$ipt -A OUTPUT -o eth5 -p tcp --dport 137:139 -j DROP          #          
$ipt -A OUTPUT -o eth5 -p udp --dport 137:139 -j DROP          #
####################################################################

################### BAD PORTS,TROJAN,BACKDOOR PORTS #############################################
$ipt -N bad-ports                                                                              #
$ipt -F bad-ports                                                                               #
$ipt -A bad-ports -p tcp -m multiport --dport 3049,1999,4329,1,2,13,98,111,901,902 -j DROP     #
$ipt -A bad-ports -p udp -m multiport --dport 3049,1999,4329,1,2,13,98,111,901,902 -j DROP     #
$ipt -A bad-ports -p tcp --dport 12345 -j DROP                                                 #
$ipt -A bad-ports -p udp --dport 12345 -j DROP                                                  #
$ipt -A bad-ports -p tcp --dport 1524 -j DROP                                                   #
$ipt -A bad-ports -p udp --dport 1524 -j DROP                                                   #
$ipt -A bad-ports -p tcp --dport 2049 -j DROP                                                   #
$ipt -A bad-ports -p udp --dport 2049 -j DROP                                                   #
$ipt -A bad-ports -p tcp --dport 27444 -j DROP                                                 #
$ipt -A bad-ports -p udp --dport 27444 -j DROP                                                 #
$ipt -A bad-ports -p tcp --dport 31335 -j DROP                                                 #
$ipt -A bad-ports -p udp --dport 31335 -j DROP                                                  #
$ipt -A bad-ports -p tcp --dport 27665 -j DROP                                                 #
$ipt -A bad-ports -p udp --dport 27665 -j DROP                                                 #
$ipt -A bad-ports -p tcp --dport 31337 -j DROP                                                 #
$ipt -A bad-ports -p udp --dport 31337 -j DROP                                                 #
$ipt -A bad-ports -p tcp --dport 65535 -j DROP                                                  #
$ipt -A bad-ports -p udp --dport 65535 -j DROP                                                 #
#################################################################################################

################### BLOCK OS Fingerprint Detection ##############################################
$ipt -N os-fingerprint                                                                         #
$ipt -F os-fingerprint                                                                         #
$ipt -A os-fingerprint -p tcp --dport 0 -j DROP                                                 #
$ipt -A os-fingerprint -p udp --dport 0 -j DROP                                                 #
$ipt -A os-fingerprint -p tcp --sport 0 -j DROP                                                #
$ipt -A os-fingerprint -p udp --sport 0 -j DROP                                                 #
$ipt -A os-fingerprint -p icmp --icmp-type address-mask-request -j DROP                         #
$ipt -A os-fingerprint -p icmp --icmp-type address-mask-reply -j DROP                           #
#################################################################################################

################### DROP Bad flags, block portscans, SYN floods ################################
$ipt -N bad-flags                                                                             #
$ipt -F bad-flags                                                                             #
$ipt -A bad-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP                                 #
$ipt -A bad-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP                         #
$ipt -A bad-flags -p tcp --tcp-flags ALL NONE -j DROP                                         #
$ipt -A bad-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP                                 #
#################################################################################################
################### FLOOD PROTECT ##############################################################
$ipt -N protect                                                                                 #
$ipt -F protect                                                                                 #
$ipt -A protect -i $INT -s $IN_IP -j DROP                                                      #
$ipt -A protect -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP                                         #
$ipt -N FLOOD                                                                                   #
$ipt -F FLOOD                                                                                   #
$ipt -A FLOOD -p tcp --syn -m limit --limit 2/s -j RETURN                                       #
$ipt -A FLOOD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 2/s -j RETURN             #
$ipt -A FLOOD -p tcp -j DROP                                                                    #
$ipt -A INPUT -p tcp ! --syn -m state --state NEW -j DROP                                       #

$ipt -t filter -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 150 -j DROP      #

################### Drop Fragments ##############################################################
#################################################################################################
############### INPUT Connection's #########################
$ipt -A INPUT -j BOGUS                                    #
$ipt -A INPUT -p tcp -m state --state NEW -j FLOOD         #
$ipt -A INPUT -i $INT -j protect                           #
$ipt -A INPUT -j bad-flags                                 #
$ipt -A INPUT -j bad-ports                                #
# $ipt -A INPUT -j allow-samba-input                       #
$ipt -A INPUT -j os-fingerprint                           #
############################################################


# printf "\e[0;31mBACA LI BACA " printf "\e[0;37m" ; echo