Есть локальная сеть с шлюзом. собственно пытаюсь настроить этот самый шлюз. раньше он был настроен при помощи ARNO_IPTABLES,но подумалось что лучше разобраться и настроить IPTABLES по нормальному. В результате прочтения огромного количества различных статей постарался набросать скриптик для настройки, хочется узнать мнение более опытных пользователей правильно ли я все написал и насколько данные настройки безопасны в плане проникновения из вне.
на шлюзе 2 сетевухи:
enp4s0 - смотрит в интернет.
enp2s0 - смотрит в локалку.
в локалке 2 подсети, на шлюзе поднят openvpn сервер для удаленной работы , ssh сервер для администрирования и DNS сервер.
сам скрипт:
#!/bin/bash
#очищаем таблицу iptables
iptables -F
#сначала все все пакеты отбросим
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# блокировка интернета для совсем обнаглевших сотрудников
#iptables -I FORWARD -s 192.168.1.14 -o enp4so -m conntrack --ctstate NEW -j DROP
#iptables -I FORWARD -s 192.168.1.43 -o enp4so -m conntrack --ctstate NEW -j DROP
# это должно разрешить пакеты по локально петле
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#это правило для ICMP пакетов, тоже нужно хорошенечко подумать , эти пакеты могут показать ненужную информацию о сервере наружу
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
# это разрешает динамические порты(список определен в /proc/sys/net/ipv4/ip_local_port_range) считается что это безопасно
iptables -A OUTPUT -p TCP --sport 32768:61000 -j ACCEPT
iptables -A OUTPUT -p UDP --sport 32768:61000 -j ACCEPT
# тут мы разрешаем попадание в сеть тех TCP и UDP пакетов которые были запрошены локальными приложениями
iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT
#открываем SSH во внутреннюю сеть и внешнюю сеть
iptables -A INPUT -i enp2s0 -p TCP --dport 22 -j ACCEPT
iptables -A OUTPUT -o enp2s0 -p TCP --sport 22 -j ACCEPT
iptables -A INPUT -i enp4so -p TCP --dport 2016 -j ACCEPT
iptables -A OUTPUT -o enp4so -p TCP --sport 2016 -j ACCEPT
iptables -A INPUT -i enp2s0 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -o enp2s0 -p udp --sport 53 -j ACCEPT
#открываем порты наружу для будущего open-vpn сервера
iptables -A INPUT -i enp4so -p TCP --dport 2017 -j ACCEPT
iptables -A OUTPUT -o enp4so -p TCP --sport 2017 -j ACCEPT
iptables -A INPUT -i enp4so -p UDP --dport 2017 -j ACCEPT
iptables -A OUTPUT -o enp4so -p UDP --sport 2017 -j ACCEPT
iptables -A INPUT -i enp2s0 -p TCP --dport 80 -j ACCEPT
iptables -A OUTPUT -o enp2s0 -p TCP --sport 80 -j ACCEPT
#порт MYSQL
iptables -A INPUT -i enp2s0 -p TCP --dport 3306 -j ACCEPT
iptables -A OUTPUT -o enp2s0 -p TCP --sport 3306 -j ACCEPT
#это тут для того чтобы подключившись через open-vpn можно было видеть локалную сеть, всю
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -i tun0 -s 10.8.0.0/24 -d 192.168.2.0/24 -j ACCEPT#чтобы машины из разных подсетей видели друг друга
iptables -A FORWARD -i enp2s0 -s 192.168.2.0/24 -d 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -i enp2s0 -s 192.168.2.0/24 -d 192.168.2.0/24 -j ACCEPT
# тут мы настраиваем маскарадинг
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -i enp2s0 -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -i enp2s0 -s 192.168.2.0/24 -j ACCEPT
iptables -P FORWARD DROP
iptables -t nat -A POSTROUTING -o enp4so -j MASQUERADE
# и для клиентов на ВПН
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
# разрешаем трафик rtcp между подсетями
iptables -A INPUT -i enp2s0 -p TCP --dport 554 -j ACCEPT
iptables -A OUTPUT -o enp2s0 -p TCP --sport 554 -j ACCEPT
#разрешаем NFS трафик межу подсетями
iptables -A INPUT -i enp2s0 -p TCP --dport 2049 -j ACCEPT
iptables -A OUTPUT -o enp2s0 -p TCP --sport 2049 -j ACCEPT
Рад буду любым комментариям, предложениям и культурной критике
