Как защитить сервер ubuntu от атак brutforce ssh?

Это не изменит шрифт при загрузке, но для консоли на Ctrl + Alt + F [1-6]

Установите пользовательские шрифты Ubuntu для вашей консоли:

sudo apt-get install fonts-ubuntu-font-family-console

И создайте скрипт /usr/local/bin/fontset с помощью этой команды:

#!/bin/sh
setfont /usr/share/consolefonts/Uni3-TerminusBold32x16.psf.gz

(выберите желаемый фон из папки /usr/share/consolefonts/)

Вы можете вызвать fontset каждый раз на консоли после использования Ctrl + Alt + Alt

или добавьте эту строку в свой /root/.profile

[ ! -t 0 ] && sleep 1 & /usr/local/bin/fontset

(не добавляйте это в ваш файл .profile или вы получаете сообщение об ошибке при графической загрузке)

source: Изменение размера шрифта на экране сообщений о загрузке и консоли

19
задан 28 March 2011 в 04:21

70 ответов

Альтернативой fail2ban является CSF: ConfigServer Security & amp; Firewall .

Он поставляется с LFD: демоном входа в систему, который может обнаруживать несколько неудачных попыток входа в систему для различных служб и блокирует нарушающий IP-адрес (временно или постоянно).

У этого есть некоторые другие варианты, которые могут помочь против наводнений и, возможно, обнаружить вторжения.

Недостатки:

  • Вы должны использовать CSF в качестве своего брандмауэра, чтобы LFD выполнять свою работу. Поэтому, если у вас есть существующий брандмауэр, вам нужно будет заменить его CSF и переносить конфигурацию.
  • Он не упакован для Ubuntu. Вы должны будете доверять автоматическим обновлениям с configserver.com или отключать автоматические обновления.
  • Я слышал, что он довольно популярен, поэтому умные злоумышленники, вероятно, знают, как отключить обнаружение вторжений до их обнаружения!
0
ответ дан 10 August 2018 в 10:04

Я получаю атаки ssh с грубой силой на своих серверах со скоростью от 1 до 2 в день. Я установил denyhosts (пакет ubuntu: denyhosts). Это очень простой, но эффективный инструмент для этой цели: по существу он периодически проверяет ваши журналы, чтобы обнаруживать атаки с использованием грубой силы, и помещает IP-адреса, откуда эти атаки попадают в ваш файл /etc/hosts.deny. Вы не услышите от них снова, и ваша нагрузка должна быть значительно уменьшена. Он очень настраивается через его конфигурационный файл /etc/denyhosts.conf, чтобы настроить такие проблемы, как количество попыток совершить нападение и т. Д.

Из-за его прозрачной работы вы можете легко увидеть, что происходит (уведомление по электронной почте: «ага, другая подлая атака сорвана!») и отменить ошибки из-за того, что ваши пользователи неоднократно вводили в заблуждение свои пароли.

Конечно, все, что ранее говорилось о переключении на другие методы проверки подлинности, но иногда ваши требования не согласуются с требованиями ваши пользователи.

Кроме того, ограничение скорости нового соединения в iptables может быть лучшим выбором, а затем запретить доступ через hosts.deny. Итак, взгляните на fail2ban. Но если вы знаете, что ваша главная задача ssh - ваша главная проблема (вручную просмотрите /var/log/auth.log, чтобы определить это), пойдите с этим очень легким и малоэффективным инструментом.

8
ответ дан 10 August 2018 в 10:04

Прежде всего, вы должны не использовать пароли и вместо этого использовать ключи. Нет необходимости использовать пароль. Если это сработает для вас, вы можете настроить OpenSSH-сервер, чтобы он не реагировал на вход в систему.

https://help.ubuntu.com/10.04/serverguide/C/openssh-server. html

Использование fail2ban также может быть вариантом.

https://help.ubuntu.com/community/Fail2ban [ ! d5]

3
ответ дан 10 August 2018 в 10:04

Насколько широко распространен сервер в сети? Возможно, вы можете поговорить с сетевым администратором и проверить, можно ли контролировать и ограничивать доступ к сети на сервер. Даже если логины входа в систему безопасны, кажется, что сервер может пострадать от простой атаки DoS / DDoS.

0
ответ дан 10 August 2018 в 10:04
  1. Измените порт sshd на что-то нестандартное
  2. Используйте knockd для реализации системы -dock-knocking
  3. Использовать iptables ' recent и hashlimit соответствует ограничению последовательных попыток SSH
  4. Не использовать пароли, а вместо этого использовать ключи SSH
6
ответ дан 13 August 2018 в 16:23
  • 1
    -1 для первого совета, усложняет ситуацию, поскольку на самом деле нет реального повышения безопасности – steabert 28 March 2011 в 14:18
  • 2
    Если вы используете ключи ssh и отключите аутентификацию пароля через ssh, мне действительно нужно 1,2,3? – Dziamid 28 March 2011 в 16:48
  • 3
    @steabert помогает против сценаристов-девичников, которые просто пытаются использовать свой путь через порт 22. Это мой опыт: кто-то держит bruteforcing сервер, обращенный к Интернету, когда я его настраивал, заставляя систему отправлять мне предупреждения после предупреждений. Я переместил порт, и предупреждения утихли. – pepoluan 28 March 2011 в 18:05
  • 4
    @Dziamid ssh ключи не позволяют кому-то проникнуть в вашу систему. но это не мешает им подключиться к порту 22. – pepoluan 28 March 2011 в 18:06
  • 5
    @Dziamid Нет, не правильно. Другие методы проверки подлинности (RSAAuthentication, PubkeyAuthentication, #KerberosAuthentication и т. Д.) Все еще поддерживают контакт через порт 22. – DrSAR 28 March 2011 в 23:45

Вы собираетесь разрешить службу SSH миру? Или просто членам команды в определенных местах? Мой ответ немного зависит от серьезности вашей задачи.

В любом случае вам нужно сделать все, чтобы убедиться, что сервер SSH не разрешает вход в систему для пользователя root.

  1. В файле / etc / ssh / sshd_config убедитесь, что вы никогда не разрешаете регистрацию root, кроме как с помощью SSH-ключа.

В моих системах у меня есть этот параметр

  PermitRootLogin без пароля  

, но я замечаю в более новые Ubuntu у них есть

  PermitRootLogin forbit-password  

Если вы читаете «man sshd_config», я думаю, это означает, что этот новый «запрет-пароль» означает то же самое и, безусловно, более очевидно по смыслу. Это НЕ по умолчанию для некоторых Linux-систем, но, вероятно, должно быть.

Теперь о вашей проблеме. Имеет ли ваш системный сервер только некоторые пользователи в определенных местах? Сделайте это!

  1. отредактируйте /etc/hosts.deny и вставьте ALL: ALL

Затем отредактируйте /etc/hosts.allow и введите IP-адреса или которые хотят разрешить использование SSH. Нотация там немного запутанна, потому что если вы хотите разрешить все системы с номерами IP, такими как 111.222.65.101 - 111.222.65.255, вы помещаете такую ​​запись в hosts.allow

  ALL:  127.0.0.1 sshd: 111.222.65.  sshdfwd-X11: 111,222,65.   

Это мощное решение.

Это решение существовало до создания IP-таблиц, это (я думаю) намного проще для администрирования, но это не так хорошо, как IP-адрес таблиц, потому что процедуры IP-таблиц будут определять врагов раньше, чем программы, управляемые hosts.allow и hosts.deny. Но это верный огонь, простой способ закрыть множество проблем, а не только из SSH.

Обратите внимание на проблему, которую вы создаете для себя. Если вы хотите открыть FTP-сервер, веб-сервер или что-то еще, вам нужно будет сделать записи в хостах.

Вы можете достичь той же основной цели, перейдя в iptables и брандмауэр. В каком-то смысле это предпочтительное решение, потому что вы блокируете врагов на внешней границе. Ubuntu имеет «ufw» (несложный брандмауэр), а «man ufw» - множество примеров. Я бы предпочел иметь хороший графический интерфейс, чтобы пройти через это, мне не нужно делать это все время. Может быть, другие могут сказать нам, есть ли сейчас.

  1. Другие сообщения здесь предлагают использовать открытый ключ SSH только для ваших пользователей. Это, безусловно, поможет, ценой сложности и разочарования для ваших пользователей. В нашей лаборатории 15 компьютеров. Пользователи идут среди компьютеров. Требование аутентификации ключа SSH вызовет большую проблему, потому что люди переходят с одного компьютера на другой.

Еще один источник разочарования произойдет, когда некоторые пользователи накапливают разные ключи ssh для разных серверов. Поскольку у меня есть ключи SSH для примерно 12 различных проектов, теперь ssh терпит неудачу, потому что у меня слишком много открытых ключей (требуется либо «ssh -o PubkeyAuthentication = false», либо создание записи в файле .ssh / config. Это PITA)

  1. Если вы должны оставить сервер открытым для SSH из большого мира, то определенно вы должны использовать процедуру отклонения, чтобы блокировать местоположения, которые часто пытаются войти в систему. Для этого есть 2 хорошие программы , мы использовали denyhosts и fail2ban.

В наших системах Centos Linux я заметил, что они отказались от пакета denyhosts и только предлагают fail2ban. Мне понравилось denyhosts, потому что он создал список проблемных диапазонов пользователей / ip, а затем в hosts.deny, этот список был отмечен. Вместо этого мы установили fail2ban, и все в порядке. Я понимаю, что вы предпочтете блокировать этих плохих пользователей на внешнем краю сервера, поэтому блокировщики на основе ip-таблиц, например fail2ban, на самом деле лучше. Denyhosts работает на вторичном уровне, после того как враги получили прошлые iptables, они затем отклоняются демоном sshd.

В обеих этих программах немного утомительно вывести пользователей из тюрьмы, если они забыли свой пароль и попробовали несколько раз войти в систему. Немного сложно вернуть людей, когда они сделать ошибки входа. Вы бы предположили, что будет графический интерфейс точки и щелчка, где вы могли бы просто указать и позволить людям вернуться, но это не так. Я должен делать это каждые несколько месяцев и забывать, как между временами, поэтому я написал инструкции для себя на моей веб-странице http://pj.freefaculty.org/blog/?p=301

0
ответ дан 13 August 2018 в 16:23

Альтернативой fail2ban является CSF: ConfigServer Security & amp; Firewall .

Он поставляется с LFD: демоном входа в систему, который может обнаруживать несколько неудачных попыток входа в систему для различных служб и блокирует нарушающий IP-адрес (временно или постоянно).

У этого есть некоторые другие варианты, которые могут помочь против наводнений и, возможно, обнаружить вторжения.

Недостатки:

  • Вы должны использовать CSF в качестве своего брандмауэра, чтобы LFD выполнять свою работу. Поэтому, если у вас есть существующий брандмауэр, вам нужно будет заменить его CSF и переносить конфигурацию.
  • Он не упакован для Ubuntu. Вы должны будете доверять автоматическим обновлениям с configserver.com или отключать автоматические обновления.
  • Я слышал, что он довольно популярен, поэтому умные злоумышленники, вероятно, знают, как отключить обнаружение вторжений до их обнаружения!
0
ответ дан 13 August 2018 в 16:23

Насколько широко распространен сервер в сети? Возможно, вы можете поговорить с сетевым администратором и проверить, можно ли контролировать и ограничивать доступ к сети на сервер. Даже если логины входа в систему безопасны, кажется, что сервер может пострадать от простой атаки DoS / DDoS.

0
ответ дан 13 August 2018 в 16:23

Прежде всего, вы должны не использовать пароли и вместо этого использовать ключи. Нет необходимости использовать пароль. Если это сработает для вас, вы можете настроить OpenSSH-сервер, чтобы он не реагировал на вход в систему.

https://help.ubuntu.com/10.04/serverguide/C/openssh-server. html

Использование fail2ban также может быть вариантом.

https://help.ubuntu.com/community/Fail2ban [ ! d5]

3
ответ дан 13 August 2018 в 16:23
  • 1
    Как подключиться к серверу, если я потеряю его открытый ключ? – Dziamid 27 March 2011 в 23:56
  • 2
    Только через консоль или прямой доступ. Я уверен, что вы не потеряете свой ключ, если сможете управлять сервером. – ddeimeke 28 March 2011 в 08:34

Я получаю атаки ssh с грубой силой на своих серверах со скоростью от 1 до 2 в день. Я установил denyhosts (пакет ubuntu: denyhosts). Это очень простой, но эффективный инструмент для этой цели: по существу он периодически проверяет ваши журналы, чтобы обнаруживать атаки с использованием грубой силы, и помещает IP-адреса, откуда эти атаки попадают в ваш файл /etc/hosts.deny. Вы не услышите от них снова, и ваша нагрузка должна быть значительно уменьшена. Он очень настраивается через его конфигурационный файл /etc/denyhosts.conf, чтобы настроить такие проблемы, как количество попыток совершить нападение и т. Д.

Из-за его прозрачной работы вы можете легко увидеть, что происходит (уведомление по электронной почте: «ага, другая подлая атака сорвана!») и отменить ошибки из-за того, что ваши пользователи неоднократно вводили в заблуждение свои пароли.

Конечно, все, что ранее говорилось о переключении на другие методы проверки подлинности, но иногда ваши требования не согласуются с требованиями ваши пользователи.

Кроме того, ограничение скорости нового соединения в iptables может быть лучшим выбором, а затем запретить доступ через hosts.deny. Итак, взгляните на fail2ban. Но если вы знаете, что ваша главная задача ssh - ваша главная проблема (вручную просмотрите /var/log/auth.log, чтобы определить это), пойдите с этим очень легким и малоэффективным инструментом.

8
ответ дан 13 August 2018 в 16:23
  • 1
    В последнее время мой /var/log/auth.log значительно вырос. Входит ли такая запись Mar 27 10:28:43 smartfood sshd [17017]: Не удалось пароль для root из 218.15.136.38 порт 33119 ssh2 27 марта 10:28:47 smartfood sshd [17019]: pam_unix (sshd: auth ): ошибка аутентификации; logname = uid = 0 euid = 0 tty = ssh ruser = rhost = 218.15.136.38 user = root указывает на атаку? – Dziamid 28 March 2011 в 04:11
  • 2
    Ну, это означает, что кто-то на IP 218.15.136.38 попытался войти в систему как root. Возможно, вы были, но, скорее всего, не потому, что с помощью tools.whois.net/whoisbyip , я вижу, что этот IP-адрес зарегистрирован в Китае, что вполне может быть из Минска ;-) Итак, да, это выглядит как догадка вашего пароля. Мораль: отключите вход root через ssh (PermitRootLogin no in / etc / ssh / sshd_config), потому что нет веских оснований оставлять это. А затем рассмотрите denyhosts или fail2ban. Кроме того, убедитесь, что у вас есть брандмауэр, позволяющий использовать только необходимый доступ через порт 22 и все, что вам нужно (но не более) – DrSAR 28 March 2011 в 09:40

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

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