Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.238.86.122] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте! Имеется Ubuntu 16.04 и VPN-сервер: XL2TPD PPP IPSec Libreswan Samba (папка с общим доступом находится на сервере Ubuntu).
Уже один раз меня хакали. Не хочу, чтобы впредь это повторялось. Как грамотно прописать правила для iptables, чтобы не было открытого прямого доступа? Я сделал так (/etc/iptables/rules.v4): # eth0 подключен к интернету. # eth1 подключен к частной подсети. # Внешний интерфейс сервера IF_EXT="ens3" # Внутренние интерфейсы (обслуживающие ВПН-клиентов) IF_INT="ppp+" # Сеть, адреса из которой будут получать ВПН-клиенты NET_INT="112.128.72.0/24" LOOP="127.0.0.1" *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s ${NET_INT} -o eth0 -j MASQUERADE -t nat -A POSTROUTING -s ${NET_INT} -j MASQUERADE -o ${IF_EXT} -t nat -A POSTROUTING -o eth0 -s ${NET_INT} -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # -A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol none -j DROP -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p udp -m multiport --dports 500,4500 -j ACCEPT -A INPUT -p udp -m udp --dport 1701 -m policy --dir in --pol ipsec -j ACCEPT -A INPUT -p udp -m udp --dport 1701 -j DROP -A FORWARD -m conntrack --ctstate INVALID -j DROP -A FORWARD -i eth0 -o ${IF_INT} -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i ${IF_INT} -o eth0 -j ACCEPT -A FORWARD -s ${NET_INT} -d ${NET_INT} -i ${IF_INT} -o ${IF_INT} -j ACCEPT -A FORWARD -j DROP # Разрешаем весь трафик на петлевом интерфейсе -A INPUT -i lo -j ACCEPT # Запретить внешним пакетам использовать петлевой адрес -A INPUT -i eth0 -s ${LOOP} -j DROP -A FORWARD -i eth0 -s ${LOOP} -j DROP -A INPUT -i eth0 -d ${LOOP} -j DROP -A FORWARD -i eth0 -d ${LOOP} -j DROP # Все, что приходит из Интернета, должно иметь настоящий интернет-адрес -A FORWARD -i eth0 -s 192.168.0.0/16 -j DROP -A FORWARD -i eth0 -s 172.16.0.0/12 -j DROP -A FORWARD -i eth0 -s 10.0.0.0/8 -j DROP -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP # Разрешаем всё для ВПН-клиентов -A INPUT -i ${IF_INT} -s ${NET_INT} -j ACCEPT # Разрешаем входящие соединения к L2TP # Но только с шифрованием! -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT # Разрешаем IPSec -A INPUT -p esp -j ACCEPT -A INPUT -p ah -j ACCEPT -A INPUT -p udp --dport 500 -j ACCEPT -A INPUT -p udp --dport 4500 -j ACCEPT # Разрешаем доступ к серверу по SSH -A INPUT -m tcp -p tcp --dport 2002 -j ACCEPT # Разрешаем входящие ответы на исходящие соединения -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # NAT для локальной сети (ВПН-клиентов) -A FORWARD -i ${IF_INT} -o ${IF_EXT} -s ${NET_INT} -j ACCEPT -A FORWARD -i ${IF_EXT} -o ${IF_INT} -d ${NET_INT} -m state --state RELATED,ESTABLISHED -j ACCEPT # Блокировать исходящие NetBios (если у вас запущены машины с Windows # в частной подсети). Это не повлияет на NetBios # трафик, который проходит через VPN-туннель, но он остановится # локальные машины Windows от вещания себя # интернет. -A FORWARD -p tcp --sport 137:139 -o eth0 -j DROP -A FORWARD -p udp --sport 137:139 -o eth0 -j DROP -A OUTPUT -p tcp --sport 137:139 -o eth0 -j DROP -A OUTPUT -p udp --sport 137:139 -o eth0 -j DROP # Проверка правильности адреса источника на пакетах, выходящих в интернет -A FORWARD -s ! ${NET_INT} -i eth1 -j DROP # Разрешить локальную петлю -A INPUT -s ${LOOP} -j ACCEPT -A INPUT -d ${LOOP} -j ACCEPT # Drop входящих эхо-запросов -A INPUT -p icmp --icmp-type echo-request -j DROP # Drop пакетов из частных подсетей -A INPUT -i eth1 -j DROP -A FORWARD -i eth1 -j DROP # Сохранять состояние соединений из локальной машины и частных подсетей -A OUTPUT -m state --state NEW -o eth0 -j ACCEPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A FORWARD -m state --state NEW -o eth0 -j ACCEPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Самба ВКЛ -A INPUT -p tcp -m tcp --dport 445 –s ${NET_INT} -j ACCEPT -A INPUT -p tcp -m tcp --dport 139 –s ${NET_INT} -j ACCEPT -A INPUT -p udp -m udp --dport 137 –s ${NET_INT} -j ACCEPT -A INPUT -p udp -m udp --dport 138 –s ${NET_INT} -j ACCEPT -A INPUT -i eth0 -s ${NET_INT} -p udp --dport 137:138 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -d ${NET_INT} -p udp --sport 137:138 -m state --state ESTABLISHED -j ACCEPT -A INPUT -i eth0 -s ${NET_INT} -p tcp --dport 139 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -d ${NET_INT} -p tcp --sport 139 -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -o eth0 -d ${NET_INT} -p udp --sport 445 -m state --state ESTABLISHED -j ACCEPT -I INPUT -i eth0 -p tcp --dport 137 -j DROP -I INPUT -i eth0 -p tcp --dport 138 -j DROP -I INPUT -i eth0 -p tcp --dport 139 -j DROP -I INPUT -i eth0 -p tcp --dport 445 -j DROP -I INPUT -i eth0 -p tcp --dport 1701 -j DROP COMMIT Подскажите, пожалуйста, всё ли правильно у меня написано? |