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

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

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, есть ли способ исправить это, не связываясь с моей хостинговой компанией?

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

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

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

* * * * * root /sbin/service iptables stop 

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

scripts2/doautofixer?autofix=iptablesflush

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

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

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

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

iptables-save > /etc/sysconfig/iptables

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

iptables-restore < /etc/sysconfig/iptables