Мой сервер подвергся атаке. Я регистрирую такие попытки:
Sep 22 06:39:11 s1574**** sshd[16453]: Failed password for invalid user amber from 64.215.17.4 port 35182 ssh2
Sep 22 04:39:11 s1574**** sshd[16454]: Received disconnect from 64.215.17.4: 11: Bye Bye
Sep 22 06:39:11 s1574**** sshd[16457]: Invalid user amber from 64.215.17.4
Sep 22 04:39:11 s1574**** sshd[16458]: input_userauth_request: invalid user amber
Sep 22 06:39:11 s1574**** sshd[16457]: pam_unix(sshd:auth): check pass; user unknown
Sep 22 06:39:11 s1574**** sshd[16457]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=dns2.rsd.com
Sep 22 06:39:11 s1574**** sshd[16457]: pam_succeed_if(sshd:auth): error retrieving information about user amber
Sep 22 06:39:14 s1574**** sshd[16457]: Failed password for invalid user amber from 64.215.17.4 port 35842 ssh2
Sep 22 04:39:14 s1574**** sshd[16458]: Received disconnect from 64.215.17.4: 11: Bye Bye
Что я могу сделать, чтобы заблокировать этот тип попыток доступа, что-то вроде блокировки IP, когда более 3 запретов?
решение1
Вы можете ограничить количество попыток входа в минуту с помощью
iptables
. Такие правила будут блокировать IP на одну минуту после трех попыток входа (взято изДневник гика – Смягчение последствий атак методом подбора пароля SSH с помощью Netfilter иrecent
модуля):iptables -A ВХОД -p tcp --dport 22 -m состояние --state НОВЫЙ -m недавний --set --name SSH iptables -A ВХОД -p tcp --dport 22 -m state --state НОВЫЙ -j SSH_WHITELIST iptables -A ВХОД -p tcp --dport 22 -m состояние --state НОВЫЙ -m недавний --update --seconds 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_brute_force iptables -A ВХОД -p tcp --dport 22 -m состояние --state НОВЫЙ -m недавний --update --seconds 60 --hitcount 4 --rttl --name SSH -j ОТКАЗ
Если вам нужна более настраиваемая версия sikytion, вы можете использоватьfail2banилиDenyHostsдля анализа журналов SSHd и блокировки подозрительных IP-адресов.
решение2
лучший практический способ - заблокировать все ненужные порты с помощью iptables и настроить ваш ssh на использование закрытого ключа для входа. Я знаю, что Putty и MobaXterm (оба бесплатных ssh-клиента) поддерживают вход с закрытым ключом. затем внутри вашего /etc/ssh/sshd_config удалите
PermitRootLogin yes
и добавить:
PermitRootLogin without-password
это приведет к тому, что даже если вы знаете пароль root, вы не сможете войти с ним в систему.
Вы можете использовать правила iptables, чтобы ограничить их, чтобы они не тормозили ваш сервер.
решение3
Установите программное обеспечение Denyhosts. Оно автоматически добавит такие хакерские IP в hosts.deny. Пакет доступен в репозитории epel.