2
Ноя

Настройки iptables для SoftEther

Для тех кто использует SoftEther вместе с другими сервисами на сервере, скорее всего стал вопрос, как же ограничить доступ к тому или иному порту, оставив только нужные.  В итоге получим открытыми только нужные порты, указав виртуальный интерфейс SoftEther — tap_soft в разрешающих правилах, не нужно угадывать порты с которыми работает этот сервис + немного защиты от syn food атак.

Для начала необходимо очистить все правила фаервола и придать ему стандартный вид. Ну и чтобы не забанить себя во время очистки, сделаем небольшой скриптик с командами ниже:

nano /home/iptablses_0.sh

Содержимое:

#!/bin/sh
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo "ok"

Даём скрипту права и выполняем его

chmod 755 /home/iptablses_0.sh
/home/iptablses_0.sh

После чего добавляем правила

iptables -A INPUT -i lo -j ACCEPT 
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT 
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A INPUT -p icmp -j ACCEPT

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.7.0/24 -j SNAT --to-source ip_сервера
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -i tap_soft -j ACCEPT
iptables -A FORWARD -i tap_soft -j ACCEPT

iptables -N syn_flood
iptables -A INPUT -p tcp --syn -j syn_flood
iptables -A syn_flood -m limit --limit 500/s --limit-burst 2000 -j RETURN
iptables -A syn_flood -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P INPUT DROP

И сохраняем правила:

service iptables save

Смотрим что мы натворили

iptables -n -L -v --line-numbers