Подробный гайд: Настройка межсетевого экрана в Astra Linux с помощью iptables
Настройка межсетевого экрана в Astra Linux с помощью iptables — это стандартная и надежная практика. Хотя в современных версиях Astra Linux (начиная с 1.7.5) под капотом используется nftables, утилита iptables полностью поддерживается (через слой совместимости iptables-nft), и все классические команды работают без изменений.
Ниже представлен подробный, пошаговый гайд по настройке iptables в Astra Linux.
1. Подготовка и базовые понятия
Для настройки вам потребуются права суперпользователя. Переключитесь на root:
su -
Краткая теория:
Таблицы (Tables): filter (фильтрация пакетов, используется по умолчанию), nat (трансляция адресов), mangle (изменение заголовков). Мы будем работать в таблице filter.
Цепочки (Chains):
INPUT— для входящих пакетов (к вашему серверу).OUTPUT— для исходящих пакетов (от вашего сервера).FORWARD— для пакетов, проходящих через сервер (если он работает как роутер).
Правила (Rules) обрабатываются строго сверху вниз. Как только пакет совпадает с правилом, к нему применяется действие (Target), и дальнейший поиск прекращается.
2. Просмотр и очистка текущих правил
Перед настройкой полезно посмотреть, что уже работает:
# Просмотр правил с номерами строк (удобно для удаления)
iptables -L -n -v --line-numbers
# Просмотр только правил (без лишней информации)
iptables -S
Очистка правил (Сброс):
Внимание: если вы подключены по SSH, не очищайте правила, если не настроили доступ, иначе потеряете связь!
iptables -F # Удалить все правила из цепочек
iptables -X # Удалить все пользовательские цепочки
iptables -Z # Обнулить счетчики пакетов и байт
3. Пошаговая настройка правил
Мы будем настраивать классический защищенный профиль: запретить всё, что не разрешено явно.
Шаг 3.1. Разрешаем локальный интерфейс (Loopback)
Это необходимо для корректной работы локальных сервисов (например, базы данных или DNS).
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
Шаг 3.2. Разрешаем установленные и связанные соединения
Это критически важное правило. Оно позволяет серверу получать ответы на свои исходящие запросы и не разрывает уже установленные соединения (в том числе ваше текущее SSH-подключение).
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
(Примечание: в старых ядрах использовался модуль state, но conntrack — современный стандарт).
Шаг 3.3. Разрешаем SSH (Порт 22)
Если вы меняли порт SSH, укажите ваш порт вместо 22.
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Шаг 3.4. Разрешаем веб-трафик (HTTP/HTTPS)
Если на сервере крутится веб-сайт или API:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Шаг 3.5. Разрешаем ICMP (Ping)
Чтобы сервер отвечал на пинги (полезно для мониторинга):
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Шаг 3.6. Работа с конкретными IP-адресами
Разрешить доступ к SSH только с вашего рабочего IP (например, 192.168.1.50):
# Удаляем правило из Шага 3.3, если оно было добавлено, и добавляем строгое:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.1.50 --dport 22 -j ACCEPT
Заблокировать "плохой" IP-адрес:
iptables -I INPUT 1 -s 10.0.0.99 -j DROP # -I 1 вставляет правило в самое начало
Шаг 3.7. Установка политик по умолчанию (DROP)
Теперь, когда мы разрешили всё необходимое, мы говорим межсетевому экрану отбрасывать всё остальное.
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
4. Сохранение правил (Критически важно!)
В Astra Linux (как и в Debian) правила iptables хранятся в оперативной памяти. После перезагрузки они сотрутся, если их не сохранить.
В Astra Linux для этого используется пакет iptables-persistent.
1. Установите его:
apt update
apt install iptables-persistent
2. В процессе установки система спросит, сохранить ли текущие правила IPv4 и IPv6. Нажмите Yes (Да).
3. Если вы изменили правила позже, сохраните их вручную командой:
netfilter-persistent save
Альтернативный ручной способ сохранения:
iptables-save > /etc/iptables/rules.v4
5. Особенности Astra Linux
1. Уровни защищенности:
Если вы используете Astra Linux Special Edition (Смоленск) с Максимальным уровнем защищенности, в системе работает мандатное разграничение доступа (Parsec). Стандартный iptables работает корректно, но убедитесь, что сетевые метки (labels) Parsec не конфликтуют с вашими правилами. В режимах "Образцовый" или "Типовой" iptables работает абсолютно стандартно.
2. IPv6:
Все вышеперечисленные команды работают для IPv4. Если вам нужно настроить фильтр для IPv6, используйте утилиту ip6tables с абсолютно такими же синтаксисом и флагами. Сохраняются правила IPv6 в /etc/iptables/rules.v6.
3. UFW:
В Astra Linux также можно использовать более простой фронтенд ufw (Uncomplicated Firewall). Если вам не нужны сложные правила, можно установить его (apt install ufw), но iptables дает максимальный контроль.
6. Решение проблем и логирование
Что делать, если вы заблокировали себя (потеряли SSH)?
Не паникуйте. Правила сбрасываются при перезагрузке.
- Зайдите на сервер через физическую консоль или консоль гипервизора (VMware, VirtualBox).
2. Выполните сброс правил:
iptables -F
iptables -P INPUT ACCEPT
3. Скорректируйте правила, не забывая про порт SSH, и сохраните их снова.
Как посмотреть, что блокируется?
Чтобы видеть, какие пакеты отбрасываются политикой DROP, добавьте логирование перед последним правилом (или перед сменой политики):
iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: " --log-level 4
После этого отброшенные пакеты будут писаться в системный лог. Посмотреть их можно так:
grep "IPTABLES-DROP" /var/log/syslog
# или
dmesg | grep "IPTABLES-DROP"
Не забудьте удалить правило логирования, когда закончите отладку, иначе лог-файлы быстро разрастутся.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.