Бесчисленные (несуществующие?) Процессы SSH - как остановить это?
Мой хостинг vServer угрожает расторгнуть наш контракт, если я не перестану создавать тысячи (точнее 9000) процессов SSH. Я не знаю, прекратили ли они процессы или они были такими, когда нашли их. Они отправили мне документ, содержащий тысячи строк, таких как
sshd 19716 0.0 0.0 0 0 ? Z Jan25 0:00 [sshd] <defunct>
sshd 19739 0.0 0.0 0 0 ? Z Jan25 0:00 [sshd] <defunct>
sshd 19753 0.0 0.0 0 0 ? Z Jan25 0:00 [sshd] <defunct>
sshd 19776 0.0 0.0 0 0 ? Z Jan26 0:00 [sshd] <defunct>
Я понятия не имею, как это произошло, и я хотел бы узнать решение, чтобы меня не отменили, прежде чем снова включить сервер!
Единственное, о чем я могу думать, это то, что я часто подключался к серверу с крайне нестабильным соединением. Может ли это привести к созданию тысяч процессов за недели и месяцы?
Может ли мой сервер быть взломан? Я не использую fail2ban (и не знаю как), но я использую ключевой файл.
Сервер работает на Debian с Apache и Tomcat.
1 ответ
Принять меры предосторожности. Варианты от лучшего до худшего.
Вариант 1: используйте fail2ban для ограничения количества сбоев
Установите fail2ban. Это ваш лучший вариант, поскольку он блокирует любого, кто пытается подключиться с неверными учетными данными после некоторых попыток.
Вариант 2: ограничить количество неудачных попыток в iptables
Настройте iptables, чтобы ограничить новые подключения к SSH.
# Create new SSHSCAN chain
iptables -N SSHSCAN
# Send new SSH attempts to SSHSCAN chain.
iptables -A INPUT -m tcp -p tcp --dport 22 -m state --state NEW -j SSHSCAN
# Identify a recent-match list, based on the source address
iptables -A SSHSCAN -m recent --set --name SSH --rsource
# Log and drop if there are more than 5
iptables -A SSHSCAN -m recent --update --seconds 10 --hitcount 5 --name SSH --rsource -j LOG --log-prefix "Anti SSH-Bruteforce: " --log-level 6
iptables -A SSHSCAN -m recent --update --seconds 10 --hitcount 5 --name SSH --rsource -j DROP
Проверьте информацию для получения дополнительной информации о недавнем матче в iptables.
Спасибо @gaurav-pundir за команды.
Вариант 3: ограничить источник доступа SSH
Optin 3 является настройкой брандмауэра, так что вы гарантируете, что только вы можете получить доступ: заблокируйте SSH, чтобы только вы могли получить ваш IP (если он статический) или сеть вашего провайдера. Параметр сетевого блока не является практичным, и у вас, вероятно, нет фиксированного IP-адреса. Даже если это худший вариант для динамических адресов, вы можете рассмотреть возможность его реализации, даже если у вас есть один из других реализованных вариантов.
Источник проблемы
Изменить: из вашего недавнего списка мне кажется, что ваше нестабильное соединение оставляет зомби-соединения. Это не решит вашу проблему, но не нанесет никакого вреда.