А что вы собственно подразумеваете под защитой?
Вам нужно чтобы атаки полностью прекратились? Если так, то единственный способ - отключить доступ по SSH.
Если же вам нужно чтобы атаки не увенчались успехом, то собственно чем плох fail2ban ?
Urukhayy: вообще-то одна из основополагающих рекомендаций по защите от атак это смена порта, поэтому неправильно говорить "пришлось менять", его нужно было поменять. :)
Urukhayy: А логи смотрели, баны то собственно были? Т.е он не банил атакующих или атаковали с многих адресов? Какой диапазон бана ставили? Рута вообще не стоит через SSH пускать, только простых пользователей, если надо после входа повышать привилегии. Почему пароль а не ключ?
Oleg Di: Согласен с Вами, только вот у некоторых хостеров, хостеровский бот, который конектится к VDS или VPS, чтобы снять бекапы. При смене порта, естественно бекапов уже не будет. Например, у ангелов так.
Urukhayy: По поводу просмотра банов - fail2ban это программа которая контролирует попытки авторизации на порту и в случае нескольких неудачных попыток блокирует доступ с данного адреса на некоторое время. Количество попыток и время указываются в настройках, так же программа ведет лог(если вы разрешили), и показывает когда кого и за что забанила, и на сколько.
Т.е ее мало установить, ее надо еще и настроить, чтобы она знала что контролировать, и проверить как она работает. Только тогда будет толк.
По поводу запрета root-
Идете в конфиг демона ssh, ищете там PermitRootLogin и меняете значение yes на no.
В итоге пользователь root по ssh зайти не сможет, вход возможен только обычным юзером.
Подключаетесь обычным юзером и работаете, а ежели надо сделать что то требующее рута, то просто повышаете привилегии до рута перед выполнением конкретного действия.
Urukhayy: "И что за ключ?" ключ для авторизации. Вы подключаетесь используя не логин/пароль, а сгенерированный вами закрытый/открытый ключ. На сервере укладываете открытый (публичный) ключ, а сами ходите через указания закрытого. Быстро, просто, безопасно. А вообще гугл всё про это знает гораздо больше.
Главное: Вход _только_ по ключам.
Потом уже можно fail2ban, ограничить доступ по определенным IP, сменить порт.
Ну и это всегда так, если ssh или, например, asterisk висит наружу, сразу набегут боты.
Urukhayy: зависит от ОС в debian сразу работает из коробки, в gentoo может надо и подопиливать конфиги.
что нужно настроить в любом случае - в jail.conf прописать ignoreip (доверенные ипы)
ну и по желанию поправить bantime и maxretry, если все работает этой настройки для защиты ssh достаточно.