Защитить ssh-сервер

Защитить ssh-сервер

У меня есть машина Debian, на которой запущено несколько служб, например Apache с http и https, Jabber и сервер OpenSH для администрирования. Сервер SSH не работает на порту 22. Он работает на порту 62111. Я защищаю OpenSH с помощью Fail2Ban. Поэтому всякий раз, когда злоумышленник пытается подключиться к SSH на порту 62111, у него есть две попытки, прежде чем он будет забанен на два дня с помощью Fail2Ban на порту 62111.

Я хотел бы запустить (поддельный) SSH-сервер на порту 22, и всякий раз, когда кто-то пытается подключиться к этому порту, он будет заблокирован.всеport by iptables навсегда или по крайней мере пока я не отменю правило iptables. Любое легальное SSH-подключение не будет пытаться подключиться к порту 22 по SSH, потому что каждый администратор знает правильный SSH-порт.

Идея в том, что злоумышленник сначала попытается атаковать порт 22. Поэтому у него даже нет возможности попытаться подключиться по SSH к порту 62111. Мне плевать, что эти взломщики видят мой сайт. Так что их можно заблокировать на любом порту (включая 80 и 443).

Есть ли у вас какие-нибудь предложения, как это сделать?

решение1

Я попробую предложить вам другое решение для параноиков:)

http://www.portknocking.org/view/

Он работает, требуя попыток подключения к серии предопределенных закрытых портов. Когда получена правильная последовательность портовых "стуков" (попыток подключения), брандмауэр открывает определенный порт(ы), чтобы разрешить подключение.

И, конечно же, только аутентификация по ключу SSH.

решение2

Не очень хорошая идея (на мой взгляд).

Подключение к порту 22 не означает автоматически, что кто-то пытается взломать ваш сервер.

Чтобы защитить свой сервер от хакеров/взломщиков, следуйте нескольким простым правилам (например).

  • Используйте такие инструменты, как fail2ban
  • всегда поддерживайте актуальность своих сервисов (ssh, http,...)
  • используйте надежные пароли (и меняйте их циклически)
  • использовать ssh-ключи для sshd и отключить аутентификацию по паролю

решение3

Если вы хотите запустить sshd на другом порту и по-прежнему использовать тот же fail2ban и т. д. - я нашел очень хорошее похожее руководство здесь:http://www.kudos.be/multiple_sshd

Я переопубликую и изменю кое-что для вас здесь:

Цель состоит в том, чтобы запустить один и тот же демон на двух разных портах и ​​отключить любую аутентификацию на одном экземпляре.

  1. Копировать конфигурацию:

    cd /etc/ssh/sshd_config /etc/ssh/sshd_config-fake

  2. изменить конфигурацию в соответствии с этим:

    изменить Port, SyslogFacility, *Authenticationстроки (отключить для подделки),PidFile

  3. создать символическую ссылку: ln -s /usr/sbin/sshd /usr/sbin/sshd-fake

  4. создайте скрипт инициализации: cp /etc/init.d/sshd /etc/init.d/sshd-fakeи измените содержимое файла sshd-fake соответствующим образом.

  5. изменить /etc/sysconfig/sshd-fake:OPTIONS="-f /etc/ssh/sshd_config-fake"

  6. добавить услугуchkconfig --add sshd-fake

  7. создайте конфигурацию pam:cp /etc/pam.d/sshd /etc/pam.d/sshd-fake

  8. отредактируйте /etc/pam.d/sshd-fake и запретите все, или используйте другой метод, например, разрешите пользователям, перечисленным в файле:http://linux.die.net/man/8/pam_listfile

  9. перезапустить службы:service sshd restart;service sshd-fake restart;chkconfig sshd-fake on

  10. настроить fail2ban соответствующим образом

решение4

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

iptables -I INPUT --m recent --name blocked --rcheck -j DROP
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --name blocked --set

Объяснение:

Вставьте правило межсетевого экрана (вверху) во входную цепочку, которое проверяет, находится ли исходный адрес пакета в списке «заблокированных», и если это так, ОТБРАСЫВАЕТ его.

Вставьте еще одно правило брандмауэра (выше того, которое мы только что вставили) во входную цепочку, которое добавляет исходный адрес любой попытки подключения к порту 22 в список «заблокированных».

Я не вижу необходимости запускать (поддельный) сервер или какой-либо прослушиватель на порту 22.

Редактировать: Глядя на мой ответ, я хочу добавить, что вам, вероятно, следует ограничить время действия вашего списка заблокированных каким-то другим способом, а не

«навсегда или по крайней мере пока я не отменю правило iptables»

поскольку вы получите много обращений с динамических IP-адресов, которые позже (в течение нескольких часов или даже минут) будут переназначены законным пользователям.

Видеть:http://www.netfilter.org/documentation/HOWTO/netfilter-extensions-HOWTO-3.html#ss3.16

Связанный контент