У меня действительно большая проблема с моим корневым сервером под управлением Debian 8 (64-разрядная версия). Я установил некоторые правила iptables для блокировки определенных диапазонов IP-адресов, принадлежащих Китаю, и некоторых диапазонов из черного списка. Кажется, что-то пошло не так, и сервер недоступен через SSH, HTTP и так далее.

Я могу получить root-доступ к серверу через консоль KVM, предоставленную моим хостером. Но я не понимаю, как разрешить соединения сейчас. Я следовал некоторым учебникам в Интернете, чтобы очистить iptables, но это не сработало, поэтому я в итоге удалил iptables.

Но это все еще не работает. Я даже не могу установить какой-либо пакет через apt-get потому что он выдает ошибку извлечения.

1 ответ1

0

Иногда возникает необходимость настроить iptables на удаленном хосте. Часто правильные правила iptables могут быть получены с использованием метода насоса, и в таких случаях необходимо быть застрахованным. Здесь я опишу, как настроить iptables так безболезненно, что в случае блокировки доступа к самому себе этот доступ может быть получен снова.

Идея такова: в cron мы записываем правило, которое в определенный момент времени сбрасывает правила iptables. То есть, предположим, что я придумал цепочку правил и применил ее, и внезапно соединение с удаленным хостом внезапно прекратилось. Однако перед этим мы добавили в cron скрипт, который очистит все правила и доступ к удаленному серверу можно будет получить снова.

Важный! Правила Iptables применяются сразу после исполнения. Например, если вы введете:

$ iptables -A INPUT -p TCP --dport 22 -j DROP

Тогда соединение по ssh будет немедленно потеряно.

Создайте скрипт, который очистит все правила iptables:

# vim /etc/restore_iptables.conf
#!/bin/sh
IPT="/sbin/iptables"
# remove all rules
$IPT -F
$IPT -X
# allow all connections
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

Вам также необходимо сделать исполняемый скрипт:

# chmod +x /etc/restore_iptables.conf

Сценарий должен быть запущен сразу после запуска сетевых интерфейсов, в Debian достаточно добавить следующую строку:

# vim /etc/network/interfaces
auto lo
iface lo inet loopback
   pre-up /etc/iptables.conf

Теперь добавьте правило в cron, чтобы запускать скрипт резервного копирования каждые пять минут, например:

# crontab -e
*/5 * * * * /etc/restore_iptables.conf

Теперь мы можем проверить новые правила. Для этого создайте файл с правилами тестирования, например:

# vim /etc/test_iptables.conf
IPT="/sbin/iptables"
$IPT -F
$IPT -X
# we get a mistake and drop ssh connection
$IPT -A INPUT -p TCP --dport 22 -j DROP
$IPT -A OUTPUT -p TCP --sport 22 -j DROP

Запустить его:

# chmod +x /etc/test_iptables.conf
# /etc/test_iptables.conf

С такими правилами мы сразу же сбросим соединение по ssh. Однако мы все учли, достаточно подождать 5 минут, и вы можете восстановить соединение.

Убедившись, что все правила работают должным образом, вам нужно удалить или закомментировать правило в cron:

# crontab -e
#*/5 * * * * /etc/restore_iptables.conf

И скопируйте новый файл правил вместо нашей резервной копии:

# cat /etc/test_iptables.conf > /etc/restore_iptables.conf

Быть внимательным!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .