Хардкорная защита домашнего сервера: Настройка и сохранение правил через iptables-persistent По умолчанию в Ubuntu после перезагрузки сервера все правила iptables сбрасываются под ноль. Чтобы не городить костыли в rc.local, используем штатный сисадминский инструмент iptables-persistent.
1. Установка пакета:
Code:
sudo apt update && sudo apt install iptables-persistent -y
Во время установки установщик спросит: "Save current IPv4 rules?" — выбираем
Yes.
2. Базовый сисадминский конфиг боевого фаервола: Открываем файл правил IPv4:
Code:
sudo nano /etc/iptables/rules.v4
Забиваем туда жесткую структуру (разрешаем только SSH, HTTP, HTTPS, DNS, кэш-стек и петлю localhost, остальной входящий мусор — в DROP):
Code:
*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] # 1. Разрешаем уже установленные и зависимые соединения (чтобы не рвало сессии) -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # 2. Локальная петля (БЕЗ НЕЁ REDIS И MYSQL БУДУТ ОТВАЛИВАТЬСЯ!) -A INPUT -i lo -j ACCEPT # 3. Разрешаем пинги (ICMP) для диагностики -A INPUT -p icmp -j ACCEPT # 4. Открываем SSH (Обязательно твой порт, если менял с 22) -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT # 5. Открываем Web-сервер (Nginx / Joomla) -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT COMMIT
3. Проверка синтаксиса и применение без перезагрузки сервера:
Code:
sudo iptables-restore < /etc/iptables/rules.v4
4. Как обновлять правила в будущем: Если ты добавил правило через консоль (например, открыл новый порт), просто накати сохранение на диск одной командой:
Code:
sudo netfilter-persistent save