Настройка правил iptables в Linux
Основы Iptables
- ACCEPT: разрешить передачу пакета.
- DROP: запретить передачу пакета.
- RETURN: пропустить текущую цепочку и перейти к следующему правилу в цепочке, которая ее вызвала.
- INPUT – используется для контроля входящих пакетов. Можно разрешать или блокировать подключения по порту, протоколу или IP-адресу источника.
- FORWARD – используется для фильтрации пакетов, приходящих на сервер, но перенаправляемых куда-либо еще.
- OUTPUT – используется для фильтрации исходящих пакетов.
Пример настройки iptables
sudo apt-get update
sudo apt install -y iptables iptables-persistent
Очистка всех существующих правил:
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
Просмотр текущих правил:
sudo iptables -L -v --line-numbers
Установка политики FORWARD и OUTPUT в ACCEPT:
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
Создание цепочки WHITELIST:
sudo iptables -N WHITELIST
Разрешение трафика на локальном узле:
sudo iptables -I INPUT -i lo -j ACCEPT -m comment --comment 'Allowing local traffic'
Открыть порты 80 и 443:
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
Разрешить установленные и связанные соединения:
sudo iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment 'Allowing established and related connections'
Добавить определенные правила в WHITELIST:
sudo iptables -A WHITELIST -s IP_SERVERZABBIX -p tcp --dport 10050 -m comment --comment "Monitoring Zabbix server" -j ACCEPT
sudo iptables -A WHITELIST -s ВАШ_IP -p tcp --dport 22 -m comment --comment "IP Jumpbox SSH" -j ACCEPT
Применить цепочку WHITELIST к INPUT:
sudo iptables -A INPUT -j WHITELIST
Установить политику по умолчанию INPUT в DROP:
sudo iptables -P INPUT DROP
Блокируем нулевые пакеты:
Нулевые пакеты (null packets) — это пакеты без установленного флага, часто используемые для сканирования.
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
Закрываемся от SYN-флуд атак:
Чтобы защититься от SYN-флуд атак, можно ограничить количество новых соединений от одного источника.
sudo iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP
Пояснение:
--limit 10/s
— позволяет максимум 10 новых соединений в секунду.--limit-burst 20
— допускает до 20 соединений при начальном резком увеличении, после чего применяется ограничение.
Оптимизация и общее упорядочение правил:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
Сохранить и перезагрузить правила:
sudo iptables-save > /etc/iptables/rules.v4
sudo netfilter-persistent save
sudo netfilter-persistent reload
Отображение текущих правил iptables:
sudo iptables -L INPUT --line-numbers
sudo iptables -L WHITELIST --line-numbers
sudo iptables -t nat -L --line-numbers
sudo iptables -S
Восстановление настроек
Если вы еще не сохраняли настройки, и хотите вернуться к первоначальным настройкам. Используйте iptables-restore.
В Ubuntu/Debian
sudo iptables-restore < /etc/iptables.rules
В Centos/Redhat
iptables-restore < /etc/sysconfig/iptables
Вы также можете скачать bash файл с github
git clone https://github.com/Shipssv83/Iptables-ruls.git
sudo chmod +x iptables-ruls.sh
sudo ./iptables-ruls.sh