Настройка IPTABLES
На самом деле, жутко не люблю настраивать IPTables, поскольку синтаксис у него несколько инопланетный. Дома и на работе я как-то настроил один раз лет 10 назад и благополучно все забыл. Теперь вот приходится мучительно вспоминать: "Чем ты это делал? Ну вот этой вот мясорубкой.".
Ну чтоб с чем-то связаться по определенному порту.
iptables -A INPUT -p tcp --sport <# порта> -j ACCEPT
iptables -A OUTPUT -p tcp --dport <# порта> -j ACCEPT
Если порт UDP, меняем
-p tcp
на -p udp
iptables -A INPUT -p tcp --dport <# порта> -j ACCEPT
iptables -A OUTPUT -p tcp --sport <# порта> -j ACCEPT
#!/bin/bash
if [ -z "$1" ]; then
echo "parameters: <port> [t|f]"
exit
fi
echo "Open port "$1
if [ -z "$2" ]; then
#to computer
iptables -A INPUT -p tcp --dport $1 -j ACCEPT
iptables -A OUTPUT -p tcp --sport $1 -j ACCEPT
#from computer
iptables -A INPUT -p tcp --sport $1 -j ACCEPT
iptables -A OUTPUT -p tcp --dport $1 -j ACCEPT
else
if [ "$1"="t" ]; then
#to computer
iptables -A INPUT -p tcp --dport $1 -j ACCEPT
iptables -A OUTPUT -p tcp --sport $1 -j ACCEPT
else
#from computer
iptables -A INPUT -p tcp --sport $1 -j ACCEPT
iptables -A OUTPUT -p tcp --dport $1 -j ACCEPT
fi
fi
echo "OK"
На PasteBin
На GitHub
Да, бессовесно передрал со своего домашнего компа.
# Удаление всех правил
echo "Delete firewall rules..."
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X
# Запрет всего трафика
echo "Set main policy..."
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Включение логов (когда-то было для отладки)
#iptables -A INPUT -j LOG --log-prefix '[FW INPUT]:'
#iptables -A OUTPUT -j LOG --log-prefix '[FW OUTPUT]:'
#iptables -A FORWARD -j LOG --log-prefix '[FW FORWARD]:'
#Открываем порты VPN и протокол GRE для PPTP-VPN
#Есть как на сервере для виндовых клиентов,
#так и серверу может понадобиться соединяться с VPN
echo "Open VPN ports and GRE..."
#to computer (входящие)
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1723 -j ACCEPT
#from computer (исходящие)
iptables -A INPUT -p tcp --sport 1723 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT
#разрешить весь трафик на lo интерфейсе
echo "Accept all lo interface traffic..."
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#открыть порты для VPN-клиентов (входящие)
# ssh (22 port)
echo "Open 22 port (ssh) for VPN clients..."
iptables -A INPUT -s 172.16.1.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 172.16.1.0/24 -p tcp --sport 22 -j ACCEPT
# XDMCP
echo "Open 177 port UDP (XDMCP) for VPN clients..."
iptables -A INPUT -s 172.16.1.0/24 -p udp --dport 177 -j ACCEPT
iptables -A OUTPUT -s 172.16.1.0/24 -p udp --sport 177 -j ACCEPT
echo "Open 6000:6005 ports (Windows XDMCP) in both directions for VPN clients..."
iptables -A INPUT -s 172.16.1.0/24 -p tcp -m multiport --dports 6000:6005 -j ACCEPT
iptables -A OUTPUT -s 172.16.1.0/24 -p tcp -m multiport --sports 6000:6005 -j ACCEPT
iptables -A INPUT -s 172.16.1.0/24 -p tcp -m multiport --sports 6000:6005 -j ACCEPT
iptables -A OUTPUT -s 172.16.1.0/24 -p tcp -m multiport --dports 6000:6005 -j ACCEPT
echo "Open DNS for VPN clients..."
iptables -A INPUT -s 172.16.1.0/24 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -s 172.16.1.0/24 -p udp --sport 53 -j ACCEPT
iptables -A INPUT -s 172.16.1.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -s 172.16.1.0/24 -p udp --sport 53 -j ACCEPT
# Разрешить ICMP
echo "Allow ICMP and ports for TRACEROUTE..."
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
#открыть порты для traceroute
iptables -A INPUT -p udp -m multiport --sports 33434:33534 -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dports 33434:33534 -j ACCEPT
#Открыть стандартные порты (входящие)
echo "Open standart ports (DNS,WWW, email) from server"
# 53-DNS,80 8080/tcp - WWW, 443/tcp - https, 110,443,25,587 - e-mail 873/tcp - rsync (for sbopkg)
iptables -A INPUT -p udp -m multiport --sports 53,443 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --sports 53,80,8080,443,110,443,25,587,873 -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dports 53,443 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 53,80,8080,443,110,443,25,587,873 -j ACCEPT
#FTP (21,20,49152-65534 tcp) пока не нужен
#echo "Setup FTP access from server..."
# 21 & 49... from computer
#iptables -A INPUT -p tcp -m multiport --sports 21,49155:65534 -j ACCEPT
#iptables -A OUTPUT -p tcp -m multiport --dports 21,49155:65534 -j ACCEPT
# 20 - to computer
#iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
На PasteBin
Вроде все правильно, но стойкое ощущение, что где-то накосячил. Кто больше шарит в IPTABLES, приму все комментарии по поводу данной темы.
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2019/10/20/nast