Iptables
Обновлено 11 марта 2019
Установка iptables
emerge -av net-firewall/iptables
Команды управления iptables
Проверка статуса:
/etc/init.d/iptables status
Запуск сервиса:
/etc/init.d/iptables start
Остановка сервиса:
/etc/init.d/iptables stop
Перезагрузка сервиса:
/etc/init.d/iptables restart
Добавление в автозагрузку:
rc-update add iptables default
При ручном добавлении правил необходимо выпонять сохранение текущих правил в /var/lib/iptables/rules-save, чтобы они применялись при старте системы:
/etc/init.d/iptables save
Создание скрипта с правилами для iptables
Совет! Для быстрого изменения параметров iptables лучше применять скрипт настроек. Использование скрипта позволяет более наглядно видеть все параметры, которые будут применены после его выполнения.
Создаём скрипт iptables.sh в любом удобном для вас месте и указываем в нём необходимые параметры:
/root/iptables.sh
#!/bin/bash # Очистка всех цепочек iptables iptables -F iptables -X iptables -Z # Политики для трафика, не соответствующего ни одному правилу iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # Разрешаем Ping iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # Прочие настройки iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT iptables -A INPUT -p icmp --icmp-type 12 -j ACCEPT iptables -A INPUT -p tcp --syn --dport 113 -j REJECT --reject-with tcp-reset # Доступ по ssh iptables -A INPUT -p TCP --dport 22 -j ACCEPT # Доступ к webserver по http и https iptables -A INPUT -p TCP --dport 80 -j ACCEPT iptables -A INPUT -p TCP --dport 443 -j ACCEPT #Сохраняем правила # Calculate/Gentoo хранит в /var/lib/iptables/rules-save rc-service iptables save
В конце скрипта указана команда для сохранения настроек
Назначаем скрипту права на запуск:
chmod +x /root/iptables.sh
Выполняем скрипт:
sh /root/iptables.sh
Вывод информации о правилах iptables
Информация об отсутствии правил:
iptables -L -v -n
... Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Информация о действующих правилах:
iptables -L -v -n
... Chain INPUT (policy DROP 31 packets, 2260 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 0 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 3 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 11 6 504 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 91 8220 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 3 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 11 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 12 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:113 flags:0x17/0x02 reject-with tcp-reset 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 80 packets, 9864 bytes) pkts bytes target prot opt in out source destination
Информация с параметрами, которые применяются при загрузке:
/var/lib/iptables/rules-save
# iptables-save # Generated by iptables-save v1.4.21 on Tue Dec 5 01:15:23 2017 *filter :INPUT DROP [3:172] :FORWARD DROP [0:0] :OUTPUT ACCEPT [897:354826] :DOCKER - [0:0] :DOCKER-ISOLATION - [0:0] :DOCKER-USER - [0:0] -A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 12 -j ACCEPT -A INPUT -p tcp -m tcp --dport 113 --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with tcp-reset -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 10050 -j ACCEPT -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT -A FORWARD -j DOCKER-USER -A FORWARD -j DOCKER-ISOLATION -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -o docker0 -j DOCKER -A FORWARD -i docker0 ! -o docker0 -j ACCEPT -A FORWARD -i docker0 -o docker0 -j ACCEPT -A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 9980 -j ACCEPT -A DOCKER-ISOLATION -j RETURN -A DOCKER-USER -j RETURN COMMIT # Completed on Tue Dec 5 01:15:23 2017 # Generated by iptables-save v1.4.21 on Tue Dec 5 01:15:23 2017 *nat :PREROUTING ACCEPT [48:2828] :INPUT ACCEPT [40:2444] :OUTPUT ACCEPT [9:540] :POSTROUTING ACCEPT [9:540] :DOCKER - [0:0] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE -A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p tcp -m tcp --dport 9980 -j MASQUERADE -A DOCKER -i docker0 -j RETURN -A DOCKER -d 127.0.0.1/32 ! -i docker0 -p tcp -m tcp --dport 9980 -j DNAT --to-destination 172.17.0.2:9980 COMMIT # Completed on Tue Dec 5 01:15:23 2017 # Generated by iptables-save v1.4.21 on Tue Dec 5 01:15:23 2017 *mangle :PREROUTING ACCEPT [25186740:78903988813] :INPUT ACCEPT [25137767:78901761780] :FORWARD ACCEPT [48:4224] :OUTPUT ACCEPT [16725801:4605075841] :POSTROUTING ACCEPT [16725849:4605080065] COMMIT # Completed on Tue Dec 5 01:15:23 2017