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

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

У меня есть debian-машина, на которой запущено несколько служб, таких как apache с http и https, jabber и сервер openssh для администрирования. SSH-сервер не работает на порту 22. Он примерно на порте 62111. Я защищаю openssh с помощью fail2ban. Таким образом, всякий раз, когда злоумышленник пытается подключиться к ssh через порт 62111, он делает две попытки, прежде чем он будет заблокирован на два дня с помощью fail2ban на порту 62111.

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

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

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

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

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

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

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

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

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

Пояснение:

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

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

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

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

"навсегда или, по крайней мере, до тех пор, пока я не откажусь от правила iptables"

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

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

Я хочу запустить 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 соответственно

Плохая идея (ИМХО).

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

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

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