Настройка iptables Ubuntu

Установка IP Tables persistent на Ubuntu

aptitude install iptables-persistent

Обязательно включите NAT, если вы хотите использовать Docker или LXC

echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

При работе с iptables будьте осторожны.
Одно неверное движение и доступ к серверу может быть заблокирован!!!

Пример конфига /etc/iptables/rules.v4

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# Проброс SSH на 10.0.3.10
# -A PREROUTING ! -i lxcbr0 -p tcp -m tcp --dport 22340 -j DNAT --to-destination 10.0.3.10:22340

# Проброс HTTP на 10.0.3.10
# -A PREROUTING ! -i lxcbr0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.3.10:80
# -A PREROUTING ! -i lxcbr0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.0.3.10:443

# Проброс FTP на 10.0.3.10
# -A PREROUTING ! -i lxcbr0 -p tcp -m tcp --dport 21 -j DNAT --to-destination 10.0.3.10:21
# -A PREROUTING ! -i lxcbr0 -p tcp -m tcp --dport 30000:50000 -j DNAT --to-destination 10.0.3.10:30000-50000


COMMIT

*filter
:INPUT ACCEPT [19:913]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [39:3584]
:ALLOW-INPUT - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

# Разрешаем входящие соединения ssh
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

# Перейти к цепочке ALLOW-INPUT
-A INPUT -j ALLOW-INPUT

# Запрещаем остальные входящие соединения
-A INPUT -j REJECT
-A FORWARD -j REJECT

# Разрешить http
# -A ALLOW-INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# -A ALLOW-INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A ALLOW-INPUT -j RETURN

COMMIT


*mangle
:PREROUTING ACCEPT [389:34269]
:INPUT ACCEPT [389:34269]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [303:39898]
:POSTROUTING ACCEPT [303:39898]
COMMIT

Скопируйте этот же конфиг в /etc/iptables/rules.v6

Установите новые правила iptables:

iptables-restore < /etc/iptables/rules.v4
ip6tables-restore < /etc/iptables/rules.v6

Чтобы добавлять новые правила в iptables, например, тот же nginx нужно редактировать файл. Также вы можете выполнить команды:

iptables -I ALLOW-INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -I ALLOW-INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Они добавят в начало цепочки ALLOW-INPUT два новых правила, но при этом файл не изменят.