Сценарий работы системы только с iptables на хосте, без firewalld:
[root@ip-172-31-95-207 ~]# cat iptables-firewall.sh
#!/bin/bash
iptables -F
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A INPUT -s 0/0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -s 0/0 -p tcp --dport 22 -j ACCEPT
iptables -t filter -P INPUT DROP
Проверяем iptables после добавления правил:
[root@ip-172-31-95-207 ~]# iptables -v -L -n --line-numbers
Альтернативные варианты просмотра правил:
[root@ip-172-31-95-207 ~]# iptables -S -t filter
[root@ip-172-31-95-207 ~]# iptables-save
Проверяем таблицу nat:
На локальном хосте работает веб-сервер Apache используя 8080 порт:
Открываем 8080 порт через iptables в таблице filter и цепочке INPUT, а так же добавляем в таблицу nat и цепочку PREROUTING редирект с 80 порта на 8080. В таблице nat цепочка PREROUTING сработает раньше с настроеным редиректом, поэтому в таблице filter и цепочке INPUT достаточно будет оставить открытым только один 8080 порт.
[root@ip-172-31-95-207 ~]# cat iptables-firewall.sh
#!/bin/bash
iptables -F
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A INPUT -s 0/0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -s 0/0 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -s 0/0 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
iptables -t filter -P INPUT DROP
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Подключаемся на публичный адрес и смотрим работает ли редирект с 80 порта на 8080:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 172.31.94.52:80
# iptables -t filter -I FORWARD -p tcp -d 172.31.94.52 --dport 80 -m state --state NEW -j ACCEPT
# iptables -t filter -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -t nat -A POSTROUTING -j MASQUERADE
Еще один пример небольшого конфига iptables:
[root@ip-172-31-95-207 ~]# cat iptables-rules.sh
#!/bin/bash
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j TOS --set-tos 0x10
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --name ssh-list --set -m comment --comment "track new ssh connections"
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --name ssh-list --update --seconds 1800 --hitcount 5 -j DROP -m coment --comment "drop ssh bruteforce atempt for 30 minutes after 4 atempts"
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -s 172.16.0.0/12 -j ACCEPT
# log iptables denied calls (access via 'dmesg' command)
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
iptables -A INPUT -j DROP
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j TOS --set-tos 0x10
iptables -t mangle -A OUTPUT -m tos --tos 0x10 -j LOG --log-prefix "iptables set TOS 0x10: " --log-level 4
iptables -A OUTPUT -j ACCEPT
iptables -A FORWARD -j DROP






Комментарии
Отправить комментарий