Как предотвратить большое количество неудачных попыток входа с ПОДДЕЛЬНЫХ IP-адресов?

Как предотвратить большое количество неудачных попыток входа с ПОДДЕЛЬНЫХ IP-адресов?

Мой системный файл журнала (/var/log/auth.log) показывает сотни и сотни разных IP, пытающихся войти в мою систему. Как я могу предотвратить все эти атаки? Похоже, что все IP-адреса поддельные («pin» или «traceroute») всегда показывает сотни разных IP-адресов в файле auth.log??

Мне очень нужна помощь с этим! Спасибо!

Я читаю, что другие люди предлагают

  • StrictModes да (что это делает?)
  • hosts.allow ALL : (позволит ли это мне подключиться, если IP-адрес принадлежит кафе и это «я, я»?)

Вот как выглядит мой брандмауэр «iptables»..

asher@starparty:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

Я читаю, что другие люди рекомендуют...

  • iptables -I ВВОД -s -p tcp -m tcp --dport 22 -j ПРИНЯТЬ

ПРИМЕР ВЫВОДА УДАЛЕННОГО ВХОДА SSH: "tail /var/log/auth.log"

Dec  3 21:24:31 StarParty sshd[66702]: Failed password for root from 51.210.122.207 port 45722 ssh2
Dec  3 21:24:32 StarParty sshd[66702]: Received disconnect from 51.210.122.207 port 45722:11: Bye Bye [preauth]
Dec  3 21:24:32 StarParty sshd[66702]: Disconnected from authenticating user root 51.210.122.207 port 45722 [preauth]
Dec  3 21:24:38 StarParty sshd[66712]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=150.158.171.64  user=root
Dec  3 21:24:40 StarParty sshd[66712]: Failed password for root from 150.158.171.64 port 55444 ssh2
Dec  3 21:24:41 StarParty sshd[66721]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=142.93.34.237  user=root
Dec  3 21:24:41 StarParty sshd[66712]: Received disconnect from 150.158.171.64 port 55444:11: Bye Bye [preauth]
Dec  3 21:24:41 StarParty sshd[66712]: Disconnected from authenticating user root 150.158.171.64 port 55444 [preauth]
Dec  3 21:24:44 StarParty sshd[66721]: Failed password for root from 142.93.34.237 port 58226 ssh2
Dec  3 21:24:44 StarParty sshd[66721]: Received disconnect from 142.93.34.237 port 58226:11: Bye Bye [preauth]
Dec  3 21:24:44 StarParty sshd[66721]: Disconnected from authenticating user root 142.93.34.237 port 58226 [preauth]
Dec  3 21:25:00 StarParty sshd[66728]: Unable to negotiate with 218.92.0.212 port 45440: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1 [preauth]
Dec  3 21:25:01 StarParty CRON[66730]: pam_unix(cron:session): session opened for user root by (uid=0)
Dec  3 21:25:01 StarParty CRON[66730]: pam_unix(cron:session): session closed for user root
Dec  3 21:25:26 StarParty sshd[66776]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=150.158.171.64  user=root
Dec  3 21:25:27 StarParty sshd[66776]: Failed password for root from 150.158.171.64 port 33534 ssh2
Dec  3 21:25:30 StarParty sshd[66776]: Received disconnect from 150.158.171.64 port 33534:11: Bye Bye [preauth]
Dec  3 21:25:30 StarParty sshd[66776]: Disconnected from authenticating user root 150.158.171.64 port 33534 [preauth]

"tcpdump -A"

curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256...Arsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256,[email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]@openssh.com,[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1....none,[email protected],[email protected].......................
21:27:59.780431 IP 46.101.194.220.40238 > starparty.ssh: Flags [.], ack 1098, win 501, options [nop,nop,TS val 431378467 ecr 1031716663], length 0
21:27:59.781114 IP 46.101.194.220.40238 > starparty.ssh: Flags [P.], seq 22:462, ack 1098, win 501, options [nop,nop,TS val 431378471 ecr 1031716663], length 440
[email protected],ecdh-sha2-nistp256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1...#ecdsa-sha2-nistp256,ssh-rsa,ssh-dss...daes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc,des-cbc-ssh1...daes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,blowfish-cbc,3des-cbc,des-cbc-ssh1...   hmac-sha1...    hmac-sha1....none....none......
21:27:59.781131 IP starparty.ssh > 46.101.194.220.40238: Flags [.], ack 462, win 507, options [nop,nop,TS val 1031716853 ecr 431378471], length 0
21:27:59.983564 STP 802.1d, Config, Flags [none], bridge-id 8000.14:cc:20:b5:54:68.8003, length 35

Другая помощь, которую я нашел, это... https://help.ubuntu.com/community/IptablesHowTo

решение1

Вы можете попробовать использовать программу Fail2Banhttps://www.fail2ban.org/wiki/index.php/Главная_страница

Это автоматически заблокирует исходный IP-адрес от неудачных попыток входа в систему.

Он работает довольно хорошо, и у вас также есть много опций для его настройки. Например, сколько попыток до бана или как долго он будет заблокирован.

Но вы должны подумать, действительно ли вы хотите иметь SSH-открытый для всего мира. Так что если ваша машина подключена к Интернету напрямую, я бы рекомендовал использовать брандмауэр, где все заблокировано по умолчанию. И открытый для ssh-только с этого IP, который вам нужен, должен быть открыт.

решение2

Есть несколько вещей, которые могут снизить риск безопасности, связанный с открытым для всего мира протоколом SSH.

  • Fail2ban (уже упоминалось) хорош. Он поддерживает блокировку навсегда или только на некоторое время в брандмауэре.

  • Запустите SSH на странном высокоуровневом порту, что-то выше 8000. Это ничего не остановит, но трафик значительно сократится, поскольку большинство скрипт-кидди будут проверять порт 22.

  • Убедитесь, что PermitRootLogin в sshd_config не запущен со значением Yes. Вам не нужны входы root через ssh. Вы можете войти по ssh как обычный пользователь, а затем su. Таким образом, для получения доступа администратора необходимы два пароля (если только это не Ubuntu или что-то подобное, где у обычного пользователя есть полномочия sudo).

  • Рассмотрите возможность двухфакторной аутентификации. Это можно сделать с помощью коммерческих продуктов, таких как Duo, или с помощью чего-то вроде Google Authenticator. Шаги для такой настройки будут предоставлены поставщиком.

  • Отправка электронного письма при успешном входе в систему. Это позволяет вам немедленно узнать, есть ли доступ, прежде чем хакер, возможно, получит возможность уничтожить любые установленные вами защитные меры. Для этого вам нужно добавить строку сеанса в /etc/pam.d/sshd, которая будет выглядеть примерно так:

    требуется сеанс pam_exec.so /root/scripts/send-ssh-notice.sh

    Пример скрипта, который может предоставить подробную информацию в переменных, доступен на github:Размещенный на Github sshlogin_alert.sh

    (Да, я предоставил ссылку в своем ответе, а почему бы и нет? Код Github поддерживается, поддерживает форки и имеет хорошую обратную связь. Я не буду пересматривать свой опубликованный ответ в ближайшие месяцы или годы. Кроме того, следует отдать должное тому, кто его заслуживает, и этот пользователь Github проделал хорошую работу.)

решение3

ГРУСТНО... так ТАК ГРУСТНО?

может мне просто придется «остановить мой sshd-сервер»?

:(

Может быть, есть какой-то «ПРОСТОЙ» способ без установки дополнительного ПО?

Это пока не решает проблему... но я думаю, что это правильный путь?

sudo gedit /etc/ssh/ssh_config 
sudo systemctl restart ssh.service

Вот как выглядит «ssh_config»...

Include /etc/ssh/ssh_config.d/*.conf

Host *
# PermitRootLogin no
#   ForwardAgent no
#   ForwardX11 no
#   ForwardX11Trusted yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
Port 22
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,[email protected]
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes

Есть ли какие-то возможные изменения в «iptable»?

Связанный контент