Назад | Перейти на главную страницу

Как исправить ошибку инициализации iptables?

Я инициализирую свои правила iptables через /etc/network/if-pre-up.d/iptables, используя iptables-restore. Это работает нормально, но я немного беспокоюсь о том, что произойдет, если этот сценарий по какой-то причине завершится неудачно (возможно, сохраненный файл iptables поврежден или что-то еще).

В случае неудачи сценария я бы хотел:

Есть ли хороший канонический способ сделать это? Переходя в нижнюю init этап? - Я не делал этого в течение долгого времени, и я думаю, что многое в init изменилось за последние годы (?) - на какой этап мне следует перейти и будут ли по-прежнему работать сервер OpenSSH и мои сетевые интерфейсы?

Спасибо

Крис

(В Debian Lenny)

Может быть, вы могли бы сделать это, посмотрев код возврата iptables-restore, примерно так:

iptables-restore < /path/to/iptables.rules
if [ $? -ne 0 ]; then
    iptables -P INPUT DROP
    iptables -A INPUT -p tcp -i $INTERFACE --dport 22 -j ACCEPT
fi

таким образом, если ваши правила не загружаются, iptables отбрасывает все входящие соединения, кроме ssh.

Я никогда не пробовал этого, но на ум приходит другое решение - привязать внешние службы к внутреннему IP-адресу, который вообще не маршрутизируется, даже петля, вероятно, сработает. Затем в качестве последних правил в сохраненной конфигурации IP-таблиц настройте прозрачный прокси-сервер для локальной службы.

Если IP-таблицы не открываются, вы просто не подключаете свои сервисы. Если он появится, ваши услуги станут доступны.

Единственная система, которую вы исключите из этой конфигурации, - это SSH, таким образом, у вас есть внеполосное управление.

Конечно, все журналы вашей службы будут иметь неправильный IP-адрес источника. Я думаю, что это касается того углового случая.