Обзор
iptables реализует политику безопасности системы, определяя правила для входящих и исходящих сетевых пакетов. Каждое правило указывает действие (target), такое как ACCEPT (разрешить), DROP (отбросить) или REJECT (отклонить), для пакетов, соответствующих определенным условиям. Обычно используются цепочки INPUT, OUTPUT и FORWARD, а также цепочки PREROUTING и POSTROUTING для функций NAT.
Основные функции
- Фильтрация пакетов (брандмауэр)
- Преобразование сетевых адресов (NAT)
- Переадресация и перенаправление портов
- Контроль трафика на основе конкретных IP-адресов, портов и протоколов
Основные опции
Команда iptables используется с различными опциями для добавления, удаления, изменения или просмотра текущих правил.
Управление правилами
Условия соответствия
Цель (действие)
Сгенерированная команда:
Комбинируйте команды.
Описание:
`iptables` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Примеры настройки общих правил брандмауэра с помощью iptables. Рекомендуется всегда создавать резервные копии текущих правил перед добавлением новых.
Просмотр всех текущих правил
sudo iptables -L -v -n
Просматривает правила с подробной информацией и IP-адресами в числовом формате.
Разрешить SSH (порт 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Разрешает входящие SSH-соединения извне.
Блокировать определенный IP-адрес
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
Блокирует весь входящий трафик с определенного IP-адреса (например, 192.168.1.100).
Разрешить весь исходящий трафик
sudo iptables -P OUTPUT ACCEPT
Устанавливает политику по умолчанию для цепочки OUTPUT, разрешающую весь исходящий трафик из системы.
Перенаправление порта веб-сервера (80 -> 8080)
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Перенаправляет запросы, поступающие на порт 80, на локальный порт 8080. (Используется таблица NAT)
Маскировка для внутренней сети (NAT)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Изменяет IP-адрес источника для трафика из внутренней сети, выходящего через внешний интерфейс (например, eth0). (Используется таблица NAT)
Установка
iptables предустановлен в большинстве дистрибутивов Linux. Если он не установлен, вы можете установить его с помощью следующих команд.
Debian/Ubuntu
sudo apt update
sudo apt install iptables
CentOS/RHEL/Fedora
sudo dnf install iptables
Советы и предостережения
Правила iptables могут быть потеряны при перезагрузке системы, поэтому важно знать, как сохранять правила на постоянной основе. Также следует быть осторожным с порядком правил и политиками по умолчанию.
Постоянное сохранение правил
Правила iptables по умолчанию являются временными и должны быть сохранены для сохранения после перезагрузки. Рекомендуемые методы могут различаться в зависимости от дистрибутива.
- **Debian/Ubuntu**: Установите `sudo apt install iptables-persistent`, затем сохраните правила командой `sudo netfilter-persistent save`. Правила будут сохранены в `/etc/iptables/rules.v4` и `/etc/iptables/rules.v6`.
- **CentOS/RHEL/Fedora**: Установите `sudo dnf install iptables-services`, затем включите службу командой `sudo systemctl enable iptables && sudo systemctl start iptables`, и сохраните правила командой `sudo iptables-save > /etc/sysconfig/iptables`.
- **Общий метод**: Сохраните правила в файл с помощью `sudo iptables-save > /path/to/rules.v4`, а затем создайте скрипт, который загружает этот файл при загрузке командой `sudo iptables-restore < /path/to/rules.v4`.
Важность порядка правил
Правила iptables применяются последовательно сверху вниз в цепочке. Когда пакет соответствует определенному правилу, выполняется действие этого правила, и проверка последующих правил прекращается. Поэтому важно размещать более конкретные правила (например, блокировка определенного IP) выше более общих правил (например, разрешение всего HTTP).
Осторожность при установке политики по умолчанию
Будьте очень осторожны при установке политики по умолчанию для цепочки (например, `iptables -P INPUT DROP`). Перед изменением политики по умолчанию на DROP сначала добавьте правила, разрешающие необходимые службы, такие как SSH-соединения. В противном случае все сетевые подключения к системе могут быть заблокированы, что сделает доступ невозможным.
Переход на nftables
В современных дистрибутивах Linux `nftables` часто используется в качестве основного фреймворка брандмауэра вместо iptables. `nftables` объединяет функции iptables и предоставляет улучшенный синтаксис. Команда `iptables` может внутренне работать как уровень совместимости, использующий `nftables`, поэтому рекомендуется проверить основной инструмент брандмауэра вашей системы.