# Iptables example

```
#!/bin/sh 

# 

#var to start iptables. 

ipt="/sbin/iptables" 

## -- Переменные -------------------------------------------------------- 

sport="1025" 

eport="57344" 

ext_if="enp2s2" 

int_if="enp2s1" 

domain="example.ru" 

ext_net="10.0.0.0/30" 

dns_srv="172.16.0.83" 

log_srv="172.16.0.5" 

vpn_srv="172.16.0.32" 

apache="172.16.19.252" 

vpn_srv1="172.16.0.33" 

int_net="172.16.0.0/16" 

itc="10.136.100.0/24" 

sand_net="192.168.134.0/24" 

mpls_net="172.17.0.0/16" 

umc_net="10.1.0.0/16" 

umc1_net="10.2.0.0/15" 

umc2_net="10.4.200.0/14" 

umc4_net="10.8.0.0/13" 

umc5_net="10.32.0.0/11" 

umc6_net="10.64.0.0/10" 

umc7_net="10.128.0.0/9" 

umc8_net="10.100.0.0/16" 

sw_net="192.168.1.0/29" 

vlan_net="172.16.27.0/24" 

wifi_net="10.168.111.0/24" 

vks_net="10.168.165.0/24" 

mgm_net="192.168.99.0/24" 

traf_in="traf_in" 

traf_out="traf_out" 

chains="services direct vlan_rd" 

#$traf_in $traf_out vlan_rd" 

directlist="/etc/rc.d/list.direct" 

chief="172.16.2.6" 

mk_s="188.225.17." 

mk="80.82." 

omk2="80.82." 

omk3="80.82." 

omk5="80.82.0" 

omk4="80.82.2" 

vlad="95.66." 

vsw1="195.82.8" 

vsw2="195.82.1" 

vsw3="195.82." 

vsw4="195.82." 

BROADCAST_SRC="0.0.0.0" 

BROADCAST_DEST="255.255.255.255" 

local_if="lo" 

IFC="/sbin/ifconfig" 

G="/bin/grep" 

SED="/bin/sed" 

AWK="/usr/bin/awk" 

ECHO="/bin/echo" 

 

echo "Start firewall service..." 

# Включаем форвардинг ip в ядре. 

/bin/echo 1 > /proc/sys/net/ipv4/ip_forward 

 

# Очищаем все цепочки 

# Сбросить правила и удалить цепочки 

$ipt -F 

$ipt -X 

$ipt -Z 

 

 

$ipt -P INPUT DROP 

$ipt -P OUTPUT ACCEPT 

$ipt -P FORWARD ACCEPT 

 

 

## -- Создаем цепочки --------------------------------------------------- 

for i in $chains; do 

    $ipt -N $i 

    done 

 

## -- Включаем в ядре защиту от ----------------------------------------- 

# SYN-cookies 

echo 1 > /proc/sys/net/ipv4/tcp_syncookies 

# Spoofing protection 

for i in /proc/sys/net/ipv4/conf/*/rp_filter; do 

    echo 1 > $i 

    done 

    # Set ip port range 

    echo "$sport $eport" > /proc/sys/net/ipv4/ip_local_port_range 

#    $ipt -A INPUT -i enp2s1 -p tcp --dport 445 -j ACCEPT 

#    $ipt -A INPUT -i enp2s1 -p tcp --sport 445 -j ACCEPT 

#    $ipt -A INPUT -i enp2s1 -p UDP --sport 137:139 -j ACCEPT 

#    $ipt -A INPUT -i enp2s1 -p UDP --dport 137:139 -j ACCEPT 

 

 

 

 

#SSH -окткрываем 22 

#======================= 

$ipt -A INPUT -p tcp -i $int_if -m tcp --dport 22 -j ACCEPT 

#разрешаем все на внутренних IF 

#======================== 

$ipt -A INPUT -i $int_if -j ACCEPT 

$ipt -A INPUT -i $local_if -j ACCEPT 

$ipt -A OUTPUT -o $int_if -j ACCEPT 

 

 

# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса. 

#$ipt -A INPUT -m state --state INVALID -j DROP 

#$ipt -A FORWARD -m state --state INVALID -j DROP 

 

# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED. 

$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

$ipt -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 

 

$ipt -A FORWARD -s 192.168.99.0/24 -j ACCEPT 

$ipt -A FORWARD -d 192.168.99.0/24 -j ACCEPT 

$ipt -t nat -A POSTROUTING -o $ext_if -s 192.168.99.0/24 -j MASQUERADE 

$ipt -t nat -A POSTROUTING -o $int_if -s 192.168.99.0/24 -j SNAT --to-source 172.16.0.1 

 

 

 

# SYN наводнение. 

# п~_я~@п╦п╡п╬п╢п╦я~B п╨ я~Aп╡я~Oп╥я~Kп╡п╟п╫п╦я~N я~Aп╦я~Aя~Bп╣п╪п╫я~Kя~E я~@п╣я~Aя~Cя~@я~Aп╬п╡, я~Bп╟п╨ я~Gя~Bп╬ я~@п╣п╟п╩я~Lп╫я~Kя~E п╬п╠п╪п╣п╫ п╢п╟п╫п╫я~Kп╪п╦ я~Aя~Bп╟п╫п╬п╡п╦я~Bя~Aя~O п╫п╣ п╡п╬п╥п╪п╬п╤п╫я~Kп╪. 

$ipt -A INPUT -p tcp ! --syn -m state --state NEW -j DROP 

$ipt -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP 

 

# UDP наводнение. 

$ipt -A INPUT -p UDP -s 0/0 --destination-port 138 -j DROP 

$ipt -A INPUT -p UDP -s 0/0 --destination-port 113 -j REJECT 

$ipt -A INPUT -p UDP -s 0/0 --source-port 67 --destination-port 68 -j ACCEPT 

$ipt -A INPUT -p UDP -j RETURN 

$ipt -A OUTPUT -p UDP -s 0/0 -j ACCEPT 

 

## -- блокирование широковещательных пакетов -------------------------- 

 

$ipt -A INPUT -i $ext_if -s $BROADCAST_DEST -j DROP 

$ipt -A INPUT -i $ext_if -d $BROADCAST_SRC -j DROP 

 

# запросы локальной сети 

$ipt -A INPUT -s $int_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $itc -d $itc -j ACCEPT 

$ipt -A INPUT -s $mgm_net -d $mgm_net -j ACCEPT 

# special net to local and vice versa 

$ipt -A INPUT -s $int_net -d $sand_net -j ACCEPT 

$ipt -A INPUT -s $sand_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $sand_net -d $sand_net -j ACCEPT 

 

 

$ipt -A INPUT -s $int_net -d $mpls_net -j ACCEPT 

$ipt -A INPUT -s $itc -d $mpls_net -j ACCEPT 

$ipt -A INPUT -s $int_net -d $umc_net -j ACCEPT 

$ipt -A INPUT -s $int_net -d $umc1_net -j ACCEPT 

$ipt -A INPUT -s $int_net -d $umc2_net -j ACCEPT 

$ipt -A INPUT -s $int_net -d $umc4_net -j ACCEPT 

$ipt -A INPUT -s $int_net -d $umc5_net -j ACCEPT 

$ipt -A INPUT -s $int_net -d $umc6_net -j ACCEPT 

$ipt -A INPUT -s $int_net -d $umc7_net -j ACCEPT 

$ipt -A INPUT -s $int_net -d $vsw_net -j ACCEPT 

$ipt -A INPUT -s $mpls_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $umc_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $umc1_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $umc2_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $umc4_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $umc5_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $umc6_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $umc7_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $umc8_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $vsw_net -d $int_net -j ACCEPT 

$ipt -A INPUT -s $vlan_net -d $vlan_net -j ACCEPT 

#=================== 

$ipt -A INPUT -s $vlan_net -d $vlan_net -j ACCEPT 

 

#запрет новых 

 

$ipt -A INPUT  -i $int_if -m state --state NEW,INVALID -j direct 

$ipt -A FORWARD -i $int_if -o $ext_if -m state --state NEW,INVALID -j direct 

 

 

# Trubodetal RADIO Net traffic 

$ipt -A INPUT -s $vlan_net -j vlan_rd 

# DHCP 

$ipt -A OUTPUT -p udp -m udp -o $int_if --dport 67 --sport 68 -j ACCEPT 

$ipt -A INPUT -p udp -m udp -i $int_if --dport 68 --sport 67 -j ACCEPT 

# Прямой доступ в Internet 

$ipt -A INPUT -i $int_if ! -d $int_net -j direct 

 

 

# Входящий траффик для direct клиентов 

#$ipt -A INPUT -i $ext_if ! -s $int_net -j $traf_in 

$ipt -A INPUT -i $ext_if -p tcp --sport 31892 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $omk -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $omk2 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $omk3 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $omk4 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $omk5 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $vlad -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $vsw1 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $vsw2 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $vsw3 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $vsw4 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s 80.82.164.19 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s 46.0.207.42 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s 62.106.122.130 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s 91.220.92.194 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s 78.110.244.206 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s $vlan_net -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -d $mgm_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s 80.82.164.46 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s 188.225.17.100 -d $int_net -j ACCEPT 

$ipt -A INPUT -i $ext_if -s 79.174.71.14 -d $int_net -j ACCEPT 

 

#================ 

 

# 

# Открытые наружу сервисы 

$ipt -A INPUT -i $ext_if -j services 

# Остальное LOG & DENY 

$ipt -A INPUT -j LOG --log-prefix "Packet log:" --log-level 4 

$ipt -A INPUT -j DROP 

 

## -- Цепочка FORWARD ---------------------------------------------- 

# по дефолту форвардинг разрешен всем из сети 172.16/16 

$ipt -A FORWARD -s $int_net -j ACCEPT 

$ipt -A FORWARD -d $int_net -j ACCEPT 

$ipt -A FORWARD  -s $mgm_net -j ACCEPT 

$ipt -A FORWARD  -d $mgm_net -j ACCEPT 

$ipt -A FORWARD -s $itc -j ACCEPT 

$ipt -A FORWARD -d $itc -j ACCEPT 

$ipt -A FORWARD -s $wifi_net -j ACCEPT 

$ipt -A FORWARD -d $wifi_net -j ACCEPT 

$ipt -A FORWARD -s $vks_net -j ACCEPT 

$ipt -A FORWARD -d $vks_net -j ACCEPT 

 

 

 

 

 

$ipt -A FORWARD -j LOG --log-prefix "Packet log:" --log-level 4 

$ipt -A FORWARD -j DROP 

 

## -- Цепочка OUTPUT ---------------------------------------------------- 

# дефолт - выпускать все пакеты 

$ipt -P OUTPUT ACCEPT 

# Учет исходящего трафика 

#$ipt -A OUTPUT -o $ext_if ! -d $int_net -j $traf_out 

 

## -- Настройка цепей учета трафика ------------------------------------- 

## Исходящий траффик клиента 

#ipt -A $traf_out -s proxy ! -d $ext_net 

#$ipt -A $traf_out -s it001 ! -d  $ext_net 

#ipt -A $traf_out -s $chief ! -d  $ext_net 

#ipt -A $traf_out -s it032 ! -d $ext_net 

#ipt -A $traf_out -s it034 ! -d $ext_net 

#ipt -A $traf_out -s it002 ! -d  $ext_net 

#ipt -A $traf_out -s dc01 ! -d $ext_net 

#ipt -A $traf_out -s it050 ! -d $ext_net 

 

# total 

#$ipt -A $traf_out ! -d $ext_net 

 

## Входящий траффик клиента 

#$ipt -A $traf_in ! -s $ext_net -d proxy -m 2 

#$ipt -A $traf_in ! -s $ext_net -d it001 -m 301 

#$ipt -A $traf_in ! -s $ext_net -d $chief -m 120 

#$ipt -A $traf_in ! -s $ext_net -d it032 -m 332 

#$ipt -A $traf_in ! -s $ext_net -d it034 -m 333 

#$ipt -A $traf_in ! -s $ext_net -d it050 -m 338 

#$ipt -A $traf_in ! -s $ext_net -d dc01 -m 335 

#$ipt -A $traf_in ! -s $ext_net -d it002 -m 336 

#$ipt -A $traf_in ! -s $ext_net -d it064 -m 339 

# total 

#$ipt -A $traf_in ! -s $ext_net 

 

## -- Настройка доступа в интернет --------------------------------------- 

# direct clients - outgoing 

for i in `cat $directlist`; do 

    $ipt -A direct -s $i -j ACCEPT 

    done 

 

## -- Настройка доступа в интернет --------------------------------------- 

# direct clients - outgoing 

for i in `cat $directlist`; do 

    $ipt -A direct -s $i -j ACCEPT 

    done 

#guest net 

    $ipt -A direct -s $vlan_net -j ACCEPT 

 

    $ipt -A direct -s $chief -j ACCEPT 

    $ipt -A direct -p udp -s $chief --sport 87 -j ACCEPT 

    $ipt -A direct -p udp -s $chief --dport 87 -j ACCEPT 

    $ipt -A direct -p tcp -s $chief --sport 1024 -j ACCEPT 

    $ipt -A direct -p tcp -s $chief --dport 1024 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net --dport 31892 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 80.82.164.25 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 80.82.164.17 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 80.82.164.27 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 80.82.164.18 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 80.82.164.19 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 80.82.164.22 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 80.82.164.55 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 80.82.164.59 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 195.82.136.8 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 195.82.136.10 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 195.82.136.11 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 195.82.136.12 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 195.82.137.133 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 195.82.137.241 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 188.225.17.100 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d $omk5 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d $vlad -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 91.220.12.154 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 194.154.67.126 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 46.0.207.42 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 62.106.122.130 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 91.220.92.194 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 78.110.244.206 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 95.181.147.22 -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d 83.234.76.10 -j ACCEPT 

    $ipt -A direct -s $mgm_net -j ACCEPT 

    $ipt -A direct -p tcp -s $int_net -d $omk_s -j ACCEPT 

 

 

#============== 

 

#ftp для srv03 

$ipt -A direct -p tcp -s 172.16.0.52 -d 83.220.60.235 --dport 0:65000 -j ACCEPT 

#$ipt -A direct -p tcp -s 172.16.0.52 -d 89.179.194.215 --dport 0:65000 -j ACCEPT 

$ipt -A direct -p tcp -s 172.16.3.3 -d 83.220.60.235 --dport 0:65000 -j ACCEPT 

# 99.199 

 

# VPN server 

$ipt -A direct -s $vpn_srv -j ACCEPT 

$ipt -A direct -s $vpn_srv1 -j ACCEPT 

$ipt -A direct -s $apache -j ACCEPT 

$ipt -A direct -p gre -s $vpn_srv -j ACCEPT 

$ipt -A direct -p gre -s $vpn_srv1 -j ACCEPT 

$ipt -A direct -p tcp --dport 50232 -s $apache -j ACCEPT 

$ipt -A direct -p udp -s $vpn_srv --sport isakmp -j ACCEPT 

$ipt -A direct -p udp -s $vpn_srv --sport l2tp -j ACCEPT 

$ipt -A direct -p udp -s $vpn_srv --sport 4500 -j ACCEPT 

$ipt -A direct -p icmp -s $vpn_srv --icmp-type 0 -j ACCEPT 

$ipt -A direct -p icmp -s $vpn_srv1 --icmp-type 0 -j ACCEPT 

$ipt -A direct -p icmp -s $vpn_srv --icmp-type 8 -j ACCEPT 

$ipt -A direct -p icmp -s $vpn_srv1 --icmp-type 8 -j ACCEPT 

# Don't LOG!!! 

#$ipt -A direct -s $sand_net -d ! $int_net -j DROP 

#$ipt -A direct -s class000 -d ! $int_net -j DROP 

# igmp requests 

$ipt -A direct -p igmp -j DROP 

# Остальное LOG & DENY 

$ipt -A direct -j LOG --log-prefix "Packet log:" --log-level 4 

$ipt -A direct -j DROP 

 

## -- Открытые наружу сервисы ------------------------------------------- 

# services 

$ipt -A services -p tcp --dport smtp -j ACCEPT 

$ipt -A services -p tcp --dport 53 -j ACCEPT 

$ipt -A services -p tcp --sport 53 -j ACCEPT 

$ipt -A services -p tcp --dport domain -j ACCEPT 

$ipt -A services -p udp --dport domain -j ACCEPT 

$ipt -A services -p tcp --dport www -j ACCEPT 

$ipt -A services -p tcp --dport 20 -j ACCEPT 

$ipt -A services -p tcp --dport 21 -j ACCEPT 

$ipt -A services -p udp --dport ntp -j ACCEPT 

$ipt -A services -p tcp --dport jabber-server -j ACCEPT 

# established connections 

$ipt -A services -p tcp --dport $sport: -j ACCEPT 

$ipt -A services -p udp --dport $sport: -j ACCEPT 

# direct clients - incoming 

for i in `cat $directlist`; do 

$ipt -A services -d $i -j ACCEPT 

        done 

#guset net на ружу~C 

 

$ipt -A services -d $vlan_net -j ACCEPT 

$ipt -A services -d $mgm_net -j ACCEPT 

 

 

# chief 

$ipt -A services -d $chief -j ACCEPT 

# VPN server 

$ipt -A services -p gre -d $vpn_srv -j ACCEPT 

$ipt -A services -p gre -d $vpn_srv1 -j ACCEPT 

$ipt -A services -p tcp --dport 50232 -d $apache -j ACCEPT 

$ipt -A services -p tcp -d $vpn_srv  --sport 1723 -j ACCEPT 

$ipt -A services -p tcp -d $vpn_srv1 --sport 1723 -j ACCEPT 

$ipt -A services -p tcp -d $apache --sport 50232 -j ACCEPT 

 

#$ipt -A services -p udp -d $vpn_srv --dport isakmp -j ACCEPT 

#$ipt -A services -p udp -d $vpn_srv --dport l2tp -j ACCEPT 

#$ipt -A services -p udp -d $vpn_srv --dport 4500 -j ACCEPT 

 

# WiFi 

$ipt -A direct -s $wifi_net -j ACCEPT 

$ipt -A services -d $wifi_net -j ACCEPT 

 

# VKS 

$ipt -A direct -s $vks_net -j ACCEPT 

$ipt -A services -d $vks_net -j ACCEPT 

 

# from cisco [ntp, log] 

$ipt -A services -s 10.0.0.1 -j ACCEPT 

$ipt -A services -s 172.16.3.254 -d 10.0.0.1 -j ACCEPT 

# passive ftp 

$ipt -A services -p tcp --sport ftp-data --dport $sport: -j ACCEPT 

# icmp 

$ipt -A services -p icmp --icmp-type 0 -j ACCEPT 

$ipt -A services -p icmp --icmp-type 3 -j ACCEPT 

$ipt -A services -p icmp --icmp-type 8 -j ACCEPT 

$ipt -A services -p icmp --icmp-type 11 -j ACCEPT 

$ipt -A services -p icmp --icmp-type 12 -j ACCEPT 

 

## -- Trubodetal RADIO VLAN --------------------------------------------- 

#dns 

#$ipt -A vlan_rd -p udp -d $dns_srv domain -j ACCEPT 

#$ipt -A vlan_rd -p tcp -d $dns_srv domain -j ACCEPT 

 

#syslog 

#$ipt -A vlan_rd -p udp -d $log_srv syslog -j ACCEPT 

 

# all other 

#$ipt -A input -s $int_net -d $vlan_net -j ACCEPT 

#$ipt -A input -s $vlan_net -d $int_net -j ACCEPT 

#$ipt -A input -s $vlan_net -d $vlan_net -j ACCEPT 

 

#$ipt -A vlan_rd -l -j ACCEPT 

 

## Отработали --------------------------------------------------------- 
```
