Я новичок в сетевом администрировании, поэтому учтите, что я еще не настолько опытен.
У меня есть корневой сервер Ubuntu с панелью plesk.
Вчера мы с друзьями заметили, что качество речи на нашем TS3 стало очень плохим. Я отправил эхо-запросы на сервер, и произошла очень большая потеря пакетов.
После этого я немного погуглил и обнаружил, что существует auth.log
.
Я загрузил его и немного прокрутил, а затем обнаружил следующее:
May 13 10:01:27 rs204941 sshd[9351]: input_userauth_request: invalid user student [preauth]
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): check pass; user unknown
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.220.198.102
May 13 10:01:29 rs204941 sshd[9351]: Failed password for invalid user student from 112.220.198.102 port 39806 ssh2
May 13 10:01:29 rs204941 sshd[9351]: Received disconnect from 112.220.198.102: 11: Bye Bye [preauth]
May 13 10:01:31 rs204941 sshd[9353]: Invalid user student from 112.220.198.102
Похоже, кто-то много раз пытался войти в систему через SSH.Я прокрутил немного и увидел, что этот кто-то пытается использовать много разных имен пользователей: студент, технический специалист, psi, новости, ...
Сотни этих логинов были отображены в файле.
Я просмотрел статистику трафика на сайте моего центра обработки данных. Было всего 17 МБ в час. У меня 100-мегабитная магистраль, поэтому проблема с передачей данных не возникает.
На данный момент я никак не могу получить доступ к серверу.
Мой вопрос: как мне снова получить доступ, как подавить эту атаку и предотвратить последующие атаки?
Как получить доступ?
Не понятно, почему вы не можете получить доступ к своей учетной записи.
Если ваша машина подвергается атаке или высокой нагрузке, вам следует поговорить со своим провайдером об ограничении доступа (IP-ограничения) или отключении сервера от сети (отключение от сети Интернет).
Также может потребоваться доступ вне диапазона, с которым может помочь провайдер.
Если кто-то взломал ваш сервер, возможно, потребуется восстановить его из резервной копии или использовать образ восстановления.
Как предотвратить атаки на ваш сервер, в частности SSH
Не позволяйте им попасть на ваш компьютер в первую очередь! Есть много способов остановить попытки грубой силы до того, как они доберутся до вашего хоста, или даже на уровне SSH.
Сказав это, защита вашей операционной системы с помощью чего-то вроде fail2ban - отличная идея. http://en.wikipedia.org/wiki/Fail2ban
Fail2ban похож на DenyHosts ... но в отличие от DenyHosts, которые фокусируется на SSH, fail2ban может быть настроен на мониторинг любой службы, которая записывает попытки входа в лог-файл, и вместо того, чтобы использовать /etc/hosts.deny только для того, чтобы блокировать IP адреса/хозяева, fail2ban может использовать Netfilter/iptables и TCP-обертки /etc/hosts.deny.
Есть ряд важных методов безопасности, которые вы должны учитывать, чтобы предотвратить использование грубой силы при входе в систему:
SSH:
Приложение:
Это моя альтернатива решение для SSH-атак. Идея состоит в том, чтобы закрыть демон SSH, если он не используется. Нет открытого порта, нет атаки. Можешь попробовать. Это открытый исходный код https://github.com/indy99/nnet_port_guard
как я могу подавить эту атаку и предотвратить последующие атаки
Обычно я меняю порт ssh по умолчанию с 22 на другой, например, 1122. Это предотвращает многие автоматические атаки от bot, но простое сканирование портов может обнаружить его. В любом случае:
vi /etc/ssh/sshd_config
и отредактируйте Порт 22 на Порт 1122 , но этого недостаточно.
Я использую log2iptables https://github.com/theMiddleBlue/log2iptables вместо Fail2ban, потому что это простой сценарий Bash, который анализирует любой файл журнала с помощью регулярного выражения и выполняет iptables. Например, когда происходит 5 совпадений, log2iptables удаляет конкретный IP-адрес. Это круто, потому что использует Telegram API и может отправить мне сообщение на телефон, когда обнаружит проблему :)
надеюсь, это поможет!
Я только что собрал это вместе, запускал каждые 15 минут как задание cron и т. Д .:
for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
count1=`grep $z /etc/hosts.deny | wc -l`
count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
sudo cp /etc/hosts.deny.bak /etc/hosts.deny
sudo chmod 666 /etc/hosts.deny
if [ $current ] ; then
echo "sshd : $current , $z" >> /etc/hosts.deny
else
echo "sshd : $z" >> /etc/hosts.deny
fi
sudo chmod 644 /etc/hosts.deny
fi
done
Автоматизированное решение для Centos / RHEL для блокировки злоумышленников
Вот сценарий для Centos, который проверяет неудачные попытки входа по ssh для недействительных учетных записей пользователей и неверных паролей для действующих учетных записей. Если исходный IP-адрес попадал в нас более трех раз и еще не был в запрещенном списке, он добавляется в запрещенный список. Я запускаю это каждые 15 минут из crontab root. Я также запретил вход в систему с правами суперпользователя через ssh, поэтому эта комбинация сохраняет довольно тихую работу.
#/bin/bash
# Save a copy of the existing hosts.deny file for safety
cp /etc/hosts.deny /etc/hosts.deny.bak
# Get a list of the offending IP addresses and process them
for z in `grep "Invalid\|Failed" /var/log/secure | awk '{ print $NF }' | sort | uniq`
do
# Get the number of times this IP hit us
hits=`grep "Invalid\|Failed" /var/log/secure* | grep $z | wc -l`
# Check whether this IP is already blocked
blocked=`grep $z /etc/hosts.deny | wc -l`
# If they hit us more than 3 times and are not already on the deny list
# add them to the deny list
if [ $hits -gt 3 -a $blocked -eq 0 ]
then
echo "sshd : $z" >> /etc/hosts.deny
fi
done