У меня есть 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
Перепубликуем и изменим для вас вещи здесь:
Цель состоит в том, чтобы запустить один и тот же демон с двумя разными портами и отключить любой вид аутентификации на одном экземпляре.
Копировать конфигурацию:
cd / etc / ssh / sshd_config / etc / ssh / sshd_config-fake
измените конфигурацию в соответствии с этим:
изменение Port
, SyslogFacility
, *Authentication
строки (отключить для подделки), PidFile
создать символическую ссылку: ln -s / usr / sbin / sshd / usr / sbin / sshd-fake
создать сценарий инициализации: cp /etc/init.d/sshd /etc/init.d/sshd-fake
и соответствующим образом измените содержимое файла sshd-fake.
измените / etc / sysconfig / sshd-fake: OPTIONS="-f /etc/ssh/sshd_config-fake"
добавить услугу chkconfig --add sshd-fake
создать конфигурацию pam: cp /etc/pam.d/sshd /etc/pam.d/sshd-fake
отредактируйте /etc/pam.d/sshd-fake и запретите все, или используйте другой метод, например, разрешите список пользователей из файла: http://linux.die.net/man/8/pam_listfile
перезапустить службы: service sshd restart;service sshd-fake restart;chkconfig sshd-fake on
настроить fail2ban соответственно
Плохая идея (ИМХО).
Подключение к порту 22 автоматически не означает, что кто-то пытается взломать ваш сервер.
Чтобы защитить ваш сервер от хакеров / взломщиков, следуйте некоторым простым правилам (например).