Як заблокувати IP в ssh


1

Дуже наполеглива людина намагається постійно отримувати (неавторизований) доступ до моєї системи протягом останніх кількох днів ... Є кілька мільйонів записів, наприклад /var/log/auth.log:

Jun 21 03:55:15 cloudy sshd[32487]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.20  user=root
Jun 21 03:55:16 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:19 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:21 cloudy sshd[32487]: Failed password for root from 116.31.116.20 port 30629 ssh2
Jun 21 03:55:21 cloudy sshd[32487]: Received disconnect from 116.31.116.20: 11:  [preauth]
Jun 21 03:55:21 cloudy sshd[32487]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.31.116.20  user=root

Я хотів би попросити деякі поради про те, як заблокувати цю особу від споживання ресурсів з комп'ютера, чи є можливість "жорсткого блокування" ІВ навіть від відкриття з'єднання ssh? Зауважте, я використовую Debian 8 як ОС.

Відповіді:


3

3
Це не буде працювати для всіх. hosts.deny є частиною назви зовнішньої бібліотеки Обгортки TCP . Сервер SSH буде враховувати цей файл лише у випадку, якщо підтримка tcp-обгортки була включена до того, хто його скомпілював. Поточні версії OpenSSH більше не міститься підтримка Wrapper TCP , хоча утримувачі дистрибутивів Linux можуть додати їх назад до пакетів OpenSSH, які вони розповсюджують.
Kenster

1

Також можна використовувати iptables

Створіть файл з ip адресами, які потрібно заблокувати blocked.ips.txt

Тепер створіть і запустіть скрипт, який містить наступне:

blocked=$(egrep -v -E "^#|^$" ./blocked.ips.txt)
for ip in $blocked
do
    iptables -I INPUT -s $ip -p tcp --dport ssh -j DROP
done

Біг iptables -L повинно давати висновок скинутих пакетів


1

Підхід iptables є найбільш прямим шляхом. Ерік Хандрікс запропонував його як сценарій.

Два нотатки: - скрипт повинен бути запущений після кожного перезапуску (якщо таблиці не резервуються внутрішньо з iptables). - викликати скрипт як є, двічі або більше буде дублювати записи.

Спробуйте просто забивати поганого хлопця з:

iptables -I ВХОДИ -s -p tcp --dport ssh -j DROP

У більшості дистрибутивів iptables має власний механізм збереження правил. Подивіться, чи є "/ var / lib / iptables / rules-save". Для вашого дистрибутива, він може сидіти в іншому місці (gentoo тут).

Після додавання кожного BAD IP, спробуйте:

iptables-save & gt; / var / lib / iptables / rules-save

Після перезавантаження перевірте, чи є "iptables -L" ...


0

Можливо, ви захочете використовувати Fail2Ban для моніторингу журналів і автоматичного блокування IP. Можна вказати період часу та кількість відмов для блокування IP-адреси, повідомити адміністратора, надіслати скаргу власнику IP

Докладніше див. https://www.upcloud.com/support/installing-fail2ban-on-debian-8-0/


0

На моєму сервері (Ubuntu 16.04) я використовую UFW (UncomplicatedFireWall), шар спрощення над iptables), який здається досить стандартним питанням на серверах Ubuntu (але повинен бути доступним для інших дистрибутивів). У цих випадках я використовую:

ufw insert 1 deny from nnn.nnn.nnn.nnn

UFW також дозволяє обмежити кількість з'єднань

ufw limit ssh/tcp

Зверніть увагу, що це також стосується успішних з'єднань, тому, якщо ви використовуєте сценарії, які використовують декілька команд ssh, ви повинні вимкнути цей ліміт для вашого IP, видавши:

ufw insert 1 allow in from nnn.nnn.nnn.nnn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.