#Сначала задаем переменные, чтобы потом обращаться к хостам через них. Впоследствие может сэкономить #много времени и нервов, если будете переносить данный скрипт на другие компьютеры и сети. EXTERNAL_INTERFACE="eth1" LOOPBACK_INTERFACE="lo" IPADDR="192.168.21.21" ANYWHERE="any/0" LOOPBACK="127.0.0.0/8" CLASS_A="10.0.0.0/8" CLASS_B="172.16.0.0/12"; CLASS_D_MULTICAST="224.0.0.0/4" CLASS_E_RESERVED="240.0.0.0/5" M_LAN="192.168.15.0/24" BROADCAST_SRC="0.0.0.0" BROADCAST_DEST="255.255.255.255" BROADCAST_17="192.168.17.255" PRIVPORTS="0:1023" ALL="1:65535" UNPRIVPORTS="1024:65535" PASSIVPORTS="15000:20000" XWINDOW_PORTS="6000:6063" SOCKS_PORTS="1080" NETBIOSUDP_PORTS="137:139" NS_SERVER="192.168.15.1" DNS_SERVER="192.168.15.4" MAIL_EXT_SERVER="192.168.0.2" MAIL_SERVER_EXCH3="192.168.15.235" PROXY_SERVER="192.168.15.4" PROXY_SERVER_ISA="192.168.15.190" PROXY_SERVER_ISA2="192.168.15.193" TIME_SERVER="192.168.15.4" NS_SERVER="192.168.15.1" #очистка существующих правил iptables -F iptables -X #политика по умолчанию - DENY iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP #разрешение неограниченного через LOOPBACK iptables -A INPUT -i $LOOPBACK_INTERFACE -j ACCEPT iptables -A OUTPUT -o $LOOPBACK_INTERFACE -j ACCEPT #запрещаем фрагменты пакетов iptables -A INPUT -f -i $EXTERNAL_INTERFACE -j DROP #запрет пакетов, которые содержат адрес источника, #принадлежащий диапазону классу A, #предназначенный для внутреннего использования. iptables -A INPUT -i $EXTERNAL_INTERFACE -s $CLASS_A -j DROP iptables -A INPUT -i $EXTERNAL_INTERFACE -d $CLASS_A -j DROP iptables -A OUTPUT -o $EXTERNAL_INTERFACE -s $CLASS_A -j DROP iptables -A OUTPUT -o $EXTERNAL_INTERFACE -d $CLASS_A -j DROP #запрет пакетов, которые содержат адрес источника, #принадлежащий диапазону классу B, #предназначенный для внутреннего использования. iptables -A INPUT -i $EXTERNAL_INTERFACE -s $CLASS_B -j DROP iptables -A INPUT -i $EXTERNAL_INTERFACE -d $CLASS_B -j DROP iptables -A OUTPUT -o $EXTERNAL_INTERFACE -s $CLASS_B -j DROP iptables -A OUTPUT -o $EXTERNAL_INTERFACE -d $CLASS_B -j DROP #запретить пакеты, якобы отправленные через lo0 iptables -A INPUT -i $EXTERNAL_INTERFACE -s $LOOPBACK -j DROP iptables -A OUTPUT -o $EXTERNAL_INTERFACE -s $LOOPBACK -j DROP #запретить некорректные широковещательные пакеты iptables -A INPUT -i $EXTERNAL_INTERFACE -s $BROADCAST_DEST -j DROP iptables -A OUTPUT -o $EXTERNAL_INTERFACE -d $BROADCAST_SRC -j DROP #запретить пакеты, содержащие в качестве источника класс D iptables -A INPUT -i $EXTERNAL_INTERFACE -s $CLASS_D_MULTICAST -j DROP iptables -A OUTPUT -o $EXTERNAL_INTERFACE -s $CLASS_D_MULTICAST -j DROP #запретить передачу и прием пакетов мультикаста с нашего узла iptables -A INPUT -i $EXTERNAL_INTERFACE -d $CLASS_D_MULTICAST -j DROP iptables -A OUTPUT -o $EXTERNAL_INTERFACE -d $CLASS_D_MULTICAST -j DROP #запретим пакеты с исходными адресами класса E iptables -A INPUT -s $CLASS_E_RESERVED -j DROP #разрешим необходимые для нормальной работы ICMP iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type 4 -s $ANYWHERE -d $IPADDR -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p icmp --icmp-type 4 -s $IPADDR -d $ANYWHERE -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type 12 -s $ANYWHERE -d $IPADDR -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p icmp --icmp-type 12 -s $IPADDR -d $ANYWHERE -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type 3 -s $ANYWHERE -d $IPADDR -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p icmp --icmp-type 3 -s $IPADDR -d $ANYWHERE -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type 11 -s $ANYWHERE -d $IPADDR -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p icmp --icmp-type 11 -s $IPADDR -d $ANYWHERE -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type 0 -s $ANYWHERE -d $IPADDR -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p icmp --icmp-type 0 -s $IPADDR -d $ANYWHERE -j ACCEPT #Нормальный ping iptables -A INPUT -i $EXTERNAL_INTERFACE -p icmp --icmp-type 8 -s $ANYWHERE -d $IPADDR -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p icmp --icmp-type 8 -s $IPADDR -d $ANYWHERE -j ACCEPT #запретим использование X-Window с удаленными машинами и попытки соединения iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -d $IPADDR --destination-port $XWINDOW_PORTS -j DROP iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR -d $ANYWHERE --destination-port $XWINDOW_PORTS -j DROP #запретим установление соединения с SOCKS iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp --syn -s $IPADDR -d $ANYWHERE $SOCKS_PORT -j DROP #разрешение работы SNMP с устройствами iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port $UNPRIVPORTS -d $M_LAN --destination-port 161 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp -s $M_LAN --source-port 161 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение взаимодействия c DNS iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port 53 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE --source-port 53 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение получения почты через POP3 exchenge & SSL с exchange2010 iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $MAIL_SERVER_EXCH3 --destination-port 110 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $MAIL_SERVER_EXCH3 --source-port 110 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $MAIL_SERVER_EXCH3 --destination-port 995 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $MAIL_SERVER_EXCH3 --source-port 995 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение отправки почты через SMTP exchenge2010 iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $MAIL_SERVER_EXCH3 --destination-port 25 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $MAIL_SERVER_EXCH3 --source-port 25 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение отправки и получения почты через SMTP m2 iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d 192.168.15.4 --destination-port 25 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s 192.168.15.4 --source-port 25 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d 192.168.15.4 --destination-port 110 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s 192.168.15.4 --source-port 110 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение работы tftp только с 21.254 и 15сети udp iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp -s $M_LAN --source-port $UNPRIVPORTS -d $IPADDR --destination-port $ALL -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port $ALL -d $M_LAN --destination-port $UNPRIVPORTS -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp -s 192.168.21.254 --source-port $UNPRIVPORTS -d $IPADDR --destination-port $ALL -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port $ALL -d 192.168.21.254 --destination-port $UNPRIVPORTS -j ACCEPT #разрешение обращение по TELNET к внешним серверам iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port 23 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port 23 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение обращение по SSH к внешним серверам iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port 22 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port 22 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение обращения по TELNET к нашей машине iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port $UNPRIVPORTS -d $IPADDR --destination-port 23 -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port 23 -d $ANYWHERE --destination-port $UNPRIVPORTS -j ACCEPT #разрешение обращения по SSH к нашей машине iptables -A INPUT -p tcp -s $ANYWHERE --source-port $UNPRIVPORTS -d $IPADDR --destination-port 22 -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port 22 -d $ANYWHERE --destination-port $UNPRIVPORTS -j ACCEPT #разрешение обращение по SSH к NS iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $NS_SERVER --destination-port 5623 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $NS_SERVER --source-port 5623 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение обращение по SSH к mail server iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $MAIL_EXT_SERVER --destination-port 5623 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $MAIL_EXT_SERVER --source-port 5623 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение обращение на 8080 к mail server iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $MAIL_EXT_SERVER --destination-port 8080 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $MAIL_EXT_SERVER --source-port 8080 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT # Как пример, запретить принимать все с узла 15.30 #iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s 192.168.15.30 -d $IPADDR -j DROP #Для примера, разрешаем все на 21.55 #iptables -A INPUT -m state --state RELATED,ESTABLISHED -i $EXTERNAL_INTERFACE -s 192.168.21.55 -d $IPADDR -j ACCEPT #iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -o $EXTERNAL_INTERFACE -s $IPADDR -d 192.168.21.55 -j ACCEPT #разрешение обращаться к удаленным FTP серверам iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port 21 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port 21 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #режим нормального канала данных iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port 20 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port 20 -j ACCEPT #режим пассивного канала данных iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port $PASSIVPORTS -d $ANYWHERE --destination-port $UNPRIVPORTS -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port $UNPRIVPORTS -d $IPADDR --destination-port $PASSIVPORTS -j ACCEPT #разрешение доступа к локальному FTP-серверу iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port $UNPRIVPORTS -d $IPADDR --destination-port 21 -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port 21 -d $ANYWHERE --destination-port $UNPRIVPORTS -j ACCEPT #режим нормального канала данных iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port 20 -d $ANYWHERE --destination-port $UNPRIVPORTS -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp ! --syn -s $ANYWHERE --source-port $UNPRIVPORTS -d $IPADDR --destination-port 20 -j ACCEPT #режим пассивного канала данных iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp ! --syn -s $IPADDR --source-port $PASSIVPORTS -d $ANYWHERE --destination-port $UNPRIVPORTS -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port $UNPRIVPORTS -d $IPADDR --destination-port $PASSIVPORTS -j ACCEPT #разрешение обращения к удаленным WWW-серверам iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port 80 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port 80 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #доступ к локальному WWW-серверу iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port $UNPRIVPORTS -d $IPADDR --destination-port 80 -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port 80 -d $ANYWHERE --destination-port $UNPRIVPORTS -j ACCEPT #разрешение обращения к PROXY 5623 iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $PROXY_SERVER --destination-port 5623 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $PROXY_SERVER --source-port 5623 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение обращения к PROXY ISA 8080 iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $PROXY_SERVER_ISA --destination-port 8080 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $PROXY_SERVER_ISA --source-port 8080 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $PROXY_SERVER_ISA2 --destination-port 8080 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $PROXY_SERVER_ISA2 --source-port 8080 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение обращения к нашему PROXY port 3128 с машины 21.212.21.213 iptables -A OUTPUT -o $EXTERNAL_INTERFACE -m iprange -p tcp -s $IPADDR --source-port 3128 --dst-range 192.168.21.212-192.168.21.213 --destination-port $UNPRIVPORTS -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -m iprange -p tcp --src-range 192.168.21.212-192.168.21.213 --source-port $UNPRIVPORTS -d $IPADDR --destination-port 3128 -j ACCEPT #разрешение получения времени с TIME_SERVER iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR -d $TIME_SERVER --destination-port 123 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp -s $TIME_SERVER --source-port 123 -d $IPADDR -j ACCEPT #разрешение взаимодействия с принтером bxer440 iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d 192.168.17.94 --destination-port 515 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s 192.168.17.94 --source-port 515 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение взаимодействия с принтером axer4525 iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d 192.168.17.206 --destination-port 515 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s 192.168.17.206 --source-port 515 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение netbios #разрешаем 139 порт по tcp iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port 139 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port 139 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешаем 137,138,139 порты по udp от нас iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p udp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port $NETBIOSUDP_PORTS -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p udp -s $ANYWHERE --source-port $UNPRIVPORTS -d $IPADDR --destination-port $NETBIOSUDP_PORTS -j ACCEPT #разрешаем connect на 445 порт по tcp от нас iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port 445 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port 445 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение работы rdp iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port 3389 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port 3389 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT #разрешение работы ldap iptables -A OUTPUT -o $EXTERNAL_INTERFACE -p tcp -s $IPADDR --source-port $UNPRIVPORTS -d $ANYWHERE --destination-port 389 -j ACCEPT iptables -A INPUT -i $EXTERNAL_INTERFACE -p tcp -s $ANYWHERE --source-port 389 -d $IPADDR --destination-port $UNPRIVPORTS -j ACCEPT