Подробный гайд: Решение проблем с защитой от сетевых угроз в ALT Linux 10.2
Важно:
- Перед внесением изменений создайте резервную копию конфигурационных файлов и, по возможности, точку восстановления системы.
Содержание
- Диагностика проблемы
- Проверка и настройка firewall (etcnet/iptables)
- Настройка и отладка AppArmor
- Проверка SELinux (если используется)
- Анализ сетевых сервисов и портов
- Частые проблемы и решения
- Полезные команды и утилиты
1. Диагностика проблемы
Быстрая проверка состояния защиты:
# Проверка статуса firewall
sudo systemctl status network
efw default show 2>/dev/null || echo "etcnet firewall не активен"
# Проверка AppArmor
sudo aa-status
# Проверка активных правил iptables
sudo iptables -L -n -v
# Проверка открытых портов
sudo netstat -tulpn
# или
sudo ss -tulpn
Логи для анализа:
# Логи ядра и безопасности
sudo journalctl -k | grep -iE "apparmor|iptables|firewall|denied"
sudo tail -f /var/log/messages | grep -iE "firewall|apparmor|security"
# Логи AppArmor
sudo aa-logprof
2. Проверка и настройка firewall (etcnet/iptables)
ALT Linux 10.2 использует систему etcnet для управления сетью и фаерволом.
Проверка конфигурации etcnet
1. Убедитесь, что фаервол включён в настройках:
# Проверьте файл настроек интерфейса
cat /etc/net/ifaces/default/options | grep CONFIG_FW
# Должно быть: CONFIG_FW=yes
2. Проверьте параметры firewall:
cat /etc/net/ifaces/default/fw/options
Ключевые параметры:
FW_TYPE=iptables— тип фаерволаIPTABLES_INPUT_POLICY=DROP— политика по умолчанию для входящихIPTABLES_OUTPUT_POLICY=ACCEPT— политика для исходящих
Перезапуск и применение правил
# Полная перезагрузка правил фаервола
sudo efw default stop
sudo efw all start
# Или для конкретного интерфейса
sudo efw eth0 reload
# Проверка применённых правил
sudo iptables -L -n --line-numbers
sudo iptables -t nat -L -n
Пример базовой конфигурации /etc/net/ifaces/default/fw/iptables/filter/INPUT:
# Разрешить локальный трафик
accept all from any to 127.0.0.1
# Разрешить установленные соединения
accept all from any if state established,related
# Разрешить SSH (с ограничением попыток)
accept tcp from any to any dport 22 if state new
# Разрешить веб-сервер
accept tcp from any to any dport 80
accept tcp from any to any dport 443
# Запретить всё остальное (по умолчанию)
policy DROP
Правила можно писать в «читабельном» синтаксисе, если включена опция
IPTABLES_HUMAN_SYNTAX=yes.
Если правила не применяются:
1. Проверьте, загружены ли необходимые модули ядра:
lsmod | grep -E "iptable|nf_|ip_set"
2. При необходимости добавьте в /etc/net/ifaces/default/fw/iptables/modules:
iptable_filter
iptable_nat
nf_conntrack
nf_conntrack_ipv4
3. Перезапустите сетевую службу:
sudo systemctl restart network
3. Настройка и отладка AppArmor
AppArmor — система мандатного контроля доступа, ограничивающая возможности приложений.
Установка и активация
# Установка пакетов
sudo apt-get update
sudo apt-get install apparmor apparmor-utils apparmor-profiles
# Активация сервиса
sudo systemctl enable --now apparmor
# Проверка статуса
sudo aa-status
Создание профиля для приложения
# Автогенерация базового профиля
sudo aa-autodep /usr/bin/ваше_приложение
# Интерактивная настройка
sudo aa-genprof /usr/bin/ваше_приложение
Тестирование в режиме «жалоб» (complain)
# Перевод профиля в режим мониторинга
sudo aa-complain /usr/bin/ваше_приложение
# Запустите приложение и выполните типичные операции
# Анализ логов и обновление профиля
sudo aa-logprof
# После успешного теста — включите строгий режим
sudo aa-enforce /usr/bin/ваше_приложение
Если приложение не работает в режиме enforce:
1. Проверьте логи нарушений:
sudo journalctl -k | grep apparmor
# или
sudo dmesg | grep -i apparmor
2. Временно переключите профиль в режим complain:
sudo aa-complain /path/to/profile
- Добавьте недостающие разрешения через
aa-logprofили вручную отредактируйте профиль.
4. Пример разрешения сетевого доступа в профиле:
network inet tcp,
network inet udp,
4. Проверка SELinux (если используется)
Если в системе активирован SELinux, он может конфликтовать с AppArmor или блокировать сетевой трафик.
Проверка статуса:
getenforce
sestatus
Временное отключение (для диагностики):
sudo setenforce 0
Постоянное отключение (если не используется):
# Отредактируйте конфиг
sudo nano /etc/selinux/config
# Измените строку:
SELINUX=disabled
# Перезагрузите систему
В ALT Linux по умолчанию рекомендуется использовать AppArmor, а не SELinux.
5. Анализ сетевых сервисов и портов
Поиск «лишних» открытых портов:
# Прослушивающие сервисы
sudo netstat -tulpn
# или современный аналог
sudo ss -tulpn
# Проверка, какие сервисы слушают все интерфейсы (0.0.0.0)
sudo netstat -tulpn | grep "0.0.0.0:"
Отключение ненужных сервисов:
# Просмотр активных сервисов
sudo systemctl list-units --type=service --state=running
# Отключение и остановка ненужного сервиса
sudo systemctl disable --now имя_сервиса
Настройка сервиса на прослушивание только localhost:
Пример для SSH (/etc/openssh/sshd_config):
ListenAddress 127.0.0.1
После изменения: sudo systemctl restart sshd
6. Частые проблемы и решения
| Проблема | Возможная причина | Решение |
|---|---|---|
| Правила iptables не применяются | Не загружены модули ядра | Добавьте модули в /etc/net/ifaces/default/fw/iptables/modules и выполните efw default restart |
| AppArmor блокирует приложение | Профиль слишком строгий или отсутствует | Переведите профиль в режим complain, проанализируйте логи через aa-logprof, добавьте разрешения |
| Сеть работает, но фаервол «молчит» | CONFIG_FW не установлен в yes |
Отредактируйте /etc/net/ifaces/default/options, добавьте CONFIG_FW=yes |
| После обновления перестал работать доступ | Изменились политики по умолчанию | Проверьте IPTABLES_*_POLICY в fw/options, при необходимости временно установите ACCEPT для диагностики |
| Конфликт AppArmor и SELinux | Одновременно активны две системы мандатного контроля | Отключите SELinux (SELINUX=disabled в /etc/selinux/config), оставьте AppArmor |
| Правила «исчезают» после перезагрузки | Изменения внесены напрямую в iptables, а не в конфиг etcnet | Все правила редактируйте только в файлах /etc/net/ifaces/*/fw/iptables/... |
7. Полезные команды и утилиты
Для управления firewall (etcnet):
efw default show # Показать правила для default-интерфейса
efw eth0 reload # Перезагрузить правила для eth0
efw all stop # Остановить фаервол на всех интерфейсах
efw default flush # Очистить все правила (без удаления цепочек)
Для AppArmor:
aa-status # Статус модуля и профилей
aa-genprof /path/to/app # Создание профиля
aa-logprof # Обновление профиля по логам
aa-enforce /path/to/profile # Включить строгий режим
aa-complain /path/to/profile # Режим мониторинга
aa-disable /path/to/profile # Отключить профиль
Для диагностики сети:
iptables -L -n -v # Показать правила с пакетами/байтами
iptables-save > backup.txt # Экспорт правил
tcpdump -i any port 22 # Перехват трафика (для отладки)
nmap -sS 127.0.0.1 # Сканирование локальных портов (требует установки)
Для работы с логами:
journalctl -u apparmor -f # Логи AppArmor в реальном времени
journalctl -u network -f # Логи сетевой службы
dmesg | grep -iE "drop|deny|apparmor" # Ядерные сообщения
Полный цикл восстановления защиты
Если защита «сломалась» после обновления или изменения конфигурации:
# 1. Резервное копирование
sudo cp -r /etc/net/ifaces /root/net_backup_$(date +%F)
sudo cp -r /etc/apparmor.d /root/apparmor_backup_$(date +%F)
# 2. Перезагрузка сетевой службы с применением правил
sudo systemctl restart network
sudo efw default restart
# 3. Проверка AppArmor
sudo systemctl restart apparmor
sudo aa-status
# 4. Тестовая проверка доступа
sudo iptables -L INPUT -n | head -20
curl -I http://localhost # для веб-сервера
ssh -o ConnectTimeout=5 localhost # для SSH
# 5. Анализ логов при проблемах
sudo journalctl -xe | tail -50
Совет:
- Для тестирования изменений в фаерволе используйте отдельный терминал с активной сессией
rootилиsudo, чтобы не потерять доступ к системе при ошибке в правилах.
Если проблема сохраняется — предоставьте вывод команд aa-status, efw default show и iptables -L -n -v для более точной диагностики.