Thank you for reading this post, don't forget to subscribe!
Установка IP Tables persistent на Ubuntu
1 |
aptitude install iptables-persistent |
Обязательно включите NAT, если вы хотите использовать Docker или LXC
1 2 |
echo 1 > /proc/sys/net/ipv4/ip_forward echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf |
При работе с iptables будьте осторожны.
Пример конфига /etc/iptables/rules.v4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
*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:
1 2 |
iptables-restore < /etc/iptables/rules.v4 ip6tables-restore < /etc/iptables/rules.v6 |
Чтобы добавлять новые правила в iptables, например, тот же nginx нужно редактировать файл. Также вы можете выполнить команды:
1 2 |
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 два новых правила, но при этом файл не изменят.
Удаляем ufv.
apt remove ufw
если необходимо то создаём файл:
/etc/init.d/iptables
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#!/bin/sh ### BEGIN INIT INFO # Provides: iptables-persistent # Required-Start: mountkernfs $local_fs # Required-Stop: $local_fs # Default-Start: S # Default-Stop: # Short-Description: Set up iptables rules ### END INIT INFO case "$1" in start) if [ -f /etc/iptables/rules ]; then iptables-restore </etc/iptables/rules fi ;; stop|force-stop|restart|force-reload|status) ;; *) echo "Usage: $0 {start|stop|force-stop|restart|force-reload|status}" >&2 exit 1 ;; esac exit 0 Релоадим systemd: systemctl daemon-reload Добавляем в автозапуск: |
systemctl enable iptables
systemctl start iptables