Как ответить на sshd атаки перебором

Я недавно получил уведомление от OSSEC HIDS, который предупреждает меня об атаке перебором SSHD. Ниже я сообщаю о целом сообщении ради полноты:

OSSEC HIDS Notification.
2020 Mar 03 12:00:17

Received From: commodore->/var/log/auth.log
Rule: 5712 fired (level 10) -> "SSHD brute force trying to get access to the system."
Src IP: 188.166.xxx.xxx
Portion of the log(s):

Mar  3 12:00:16 commodore sshd[21661]: Disconnected from invalid user www 188.166.xxx.xxx port 45788 [preauth]
Mar  3 12:00:16 commodore sshd[21661]: Invalid user www from 188.166.xxx.xxx port 45788
Mar  3 11:59:53 commodore sshd[21204]: Disconnected from invalid user weblogic 188.166.xxx.xxx port 34582 [preauth]
Mar  3 11:59:53 commodore sshd[21204]: Invalid user weblogic from 188.166.xxx.xxx port 34582
Mar  3 11:59:08 commodore sshd[21198]: Disconnected from invalid user stack 188.166.xxx.xxx port 40352 [preauth]
Mar  3 11:59:08 commodore sshd[21198]: Invalid user stack from 188.166.xxx.xxx port 40352
Mar  3 11:58:28 commodore sshd[21193]: Disconnected from invalid user jira 188.166.xxx.xxx port 46186 [preauth]
Mar  3 11:58:28 commodore sshd[21193]: Invalid user jira from 188.166.xxx.xxx port 46186

Для укрепления Доступа SSH к моей машине, я загрузил свой открытый ключ на мой VPS и отключил аутентификацию по паролю SSH. Таким образом, я отредактировал /etc/ssh/sshd_config следующим образом:

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
Banner none
AllowTcpForwarding no
GatewayPorts no
AddressFamily inet

В настоящее время мои правила iptables:

-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p icmp -m state --state NEW -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables_INPUT_denied: " --log-level 7
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -m limit --limit 5/min -j LOG --log-prefix "iptables_FORWARD_denied: " --log-level 7
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN

Так как я не опытный администратор, я ценил бы, если Вы могли бы предложить то, что ответ, я ожидал использовать против этого вида нападений. Мой sshd и конфигурации брандмауэра достаточно, или некоторые дальнейшие действия требуются, те, которые блокируются 188.166.xxx.xxx IP-адрес?

5
задан 4 March 2020 в 20:30

2 ответа

Можно использовать fail2ban. Это сделает временный блок IP-адресов со слишком многими попытками.

Можно проверить это: Как установить fail2ban на Сервере Ubuntu 18.04. Это работает на другие версии также.

4
ответ дан 17 March 2020 в 00:09

Можно использовать recent модуль в iptables, чтобы автоматически идентифицировать и запретить плохих парней. Однако в последние годы крупные игроки (главным образом китайский) просто переключались на другой IP-адрес на той же подсети и продолжали свое нападение, таким образом, я теперь блок с произвольной битовой маской. (Я не забочусь о сопутствующем ущербе, но другие могли бы.) На самом деле, я теперь использую ipsec и блок весь Китай, но это - другой предмет. Пример iptables правила:

# Dynamic Badguy List. Detect and DROP Bad IPs that do password attacks on SSH.
# Once they are on the BADGUY list then DROP all packets from them.
# Sometimes make the lock time very long. Typically to try to get rid of coordinated attacks from China.
$IPTABLES -A INPUT -i $EXTIF -m recent --mask $BIT_MASK --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info
$IPTABLES -A INPUT -i $EXTIF -m recent --mask $BIT_MASK --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j DROP
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 -m recent --mask $BIT_MASK --set --name BADGUY_SSH -j ACCEPT

Где этим правилам предшествовало бы где-нибудь это:

# Allow any related traffic coming back to the server in.
#
#
$IPTABLES -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m state --state ESTABLISHED,RELATED -j ACCEPT

И в моем случае:

#Arbitrary bit mask for the automatic IP blocking stuff (v2.08)
#
BIT_MASK="255.255.252.0"

Обратите внимание, что я также делаю еще одно изменение в /etc/ssh/sshd_config файл для сокращения количества попыток входа в систему для каждого подключения:

#Smythies.com
#Limit the number of bad passwords per connection to 2. Default is 6.
#Then the iptables connection counter will kick in sooner to drop
#password attack hackers.
MaxAuthTries 2
3
ответ дан 17 March 2020 в 00:09

Другие вопросы по тегам:

Похожие вопросы: