Как восстановить доступ по SSH после блокировки iptables?

10

TL: DR

Я внес изменения в мой конфиг iptables, и теперь SSH отказывается от всех подключений. Могу ли я это исправить, не связываясь с моей хостинговой компанией?


Длинная версия

Хорошо, это, скорее всего, 100% моя вина ...

При подготовке к переносу веб-сайта на выделенный сервер мы получили новую хост-машину с ОС CentOS 5.6. На машине iptables довольно заблокирован, разрешены только ssh (22) и http (80), но нам также нужно было принимать FTP через порт 20 и 21.

Сегодня днем ​​я добавил строки в свои iptables, чтобы принимать входящее соединение с портами 20 и 21. Сначала это не сработало, потому что была reject allстрока над линиями, которые я добавил для ftp. Поэтому я переместил эту строку вниз, сохранил и перезапустил iptables, и ftp работал.

2 часа спустя, когда я пытаюсь подключиться снова, то port 22: Connection refused же самое для http.

Так что я не могу попасть на сервер через SSH, есть ли способ исправить это, не связываясь с моей хостинговой компанией?

Ян Хенкенс
источник

Ответы:

13

К сожалению нет. Нет, если у вас нет другого интерфейса управления, такого как удаленная последовательная консоль, iDRAC, iLO и т. Д. Испытайте его и не забудьте проверить настройки перед выходом в следующий раз;)

Майкл Лоуман
источник
12
Или, если вы экспериментируете с iptables, убедитесь, что вы временно установили задание cron, которое сбрасывает набор правил каждые 15 минут.
mailq
1
Извлеченный
Как бы вы включили SSH порт 22, используя iDRAC?
terrid25
@ terrid25, вы будете входить через последовательную консоль, прослушивая последовательный порт, к которому iDRAC дает вам доступ. Затем вы можете исправить iptables и идти своим путем. конечно, если ваш внешний контент не настроен с помощью удаленной консоли, и вы будете так же застряли, как ваш друг, без какого-либо удаленного управления.
Майкл Лоуман
7

Предполагая, что вы все еще можете использовать ftp на сервере, и вы можете войти в систему как пользователь root с помощью ftp (что маловероятно и обычно не рекомендуется) в некротированную (и т. Д.) Среду:

Поместите файл в /etc/cron.d со следующим содержимым:

* * * * * root /sbin/service iptables stop 
Марк Вагнер
источник
Это помогло мне, потому что я могу удаленно подключить образ восстановления и получить доступ к файловой системе.
Даниэль В.
0

Согласно этим инструкциям , вы также можете добавить:

scripts2/doautofixer?autofix=iptablesflush

... на ваш WHM URL Я сделал это и получил URL:

https://mysite:2087/SESSION_ID/scripts2/doautofixer?autofix=iptablesflush

Это сбросило мои iptables, и все снова стало хорошо с миром. :)

coderama
источник
0

В CentOS у вас есть файл, /etc/sysconfig/iptablesесли у вас его нет, вы можете создать его, просто используя iptables-saveдамп текущего набора правил в файл.

iptables-save > /etc/sysconfig/iptables

Для загрузки файла вам не нужно перезагружать машину, вы можете использовать iptables-restore

iptables-restore < /etc/sysconfig/iptables
Янус Роккьер
источник