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
## Отработали ---------------------------------------------------------
Last updated
Was this helpful?