Назад | Перейти на главную страницу

Защита SSH в Linux Ubuntu

Как я могу защитить SSH-доступ к Linux-серверу с Ubuntu k для нескольких пользователей?

Этот сервер будет для веб-приложения, но я не уверен, как оценить инструменты для выполнения этой задачи. Я пробовал несколько инструментов в прошлом, но не уверен, как они сочетаются друг с другом. Как я могу оценить свою безопасность SSH, а также инструменты и утилиты, которые я бы использовал для выполнения этой защиты?

Какие цели вы преследуете для своей безопасности? От кого ты это защищаешь?

Широкий спектр, используйте iptables для брандмауэра порта 22 против любых нежелательных IP-адресов, специально разрешив нужные IP-адреса, а затем заблокировав все остальное.

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

Но для уточнения мы должны знать, что вы делаете.

РЕДАКТИРОВАТЬ

Хорошо, принимая во внимание то, что вы сказали ниже в комментариях, вы хотите предотвратить несанкционированный доступ к машине. Вторая часть, гарантирующая, что ваши пользователи не делают ничего плохого, выходит за рамки этого конкретного вопроса, но это тоже достойная тема. Широко, но стоит спросить.

Первичный файл, который вам нужно отредактировать, - это / etc / ssh / sshd_config, и после каждого изменения конфигурации вам нужно запускать /etc/init.d/sshd restart (или /etc/init.d/ssh, если это debian / ubuntu система). Когда вы впервые узнаете, как настроить ssh, рекомендуется войти в систему на локальной консоли, поскольку неправильная конфигурация отключит ваш доступ.

Шаг 1: Убедитесь, что root не может войти в систему через ssh.

PermitRootLogin no

Если вам абсолютно необходимо иметь вход в систему с правами root, вы можете установить для него значение «без пароля», что требует от подключающегося пользователя предоставить сертификат и пройти аутентификацию таким образом.

Шаг 2. Разрешите (или запретите) каким-либо конкретным пользователям, которые должны (или не должны) иметь доступ

Для этого существуют различные директивы конфигурации, такие как DenyUsers, AllowUsers, DenyGroups и AllowGroups. Они принимают списки пользователей или групп, разделенные пробелами.

Одна из замечательных вещей заключается в том, что вы можете указать user @ host, поэтому, если вы хотите, чтобы Боб мог подключаться только со своей домашней машины, вы можете сказать

AllowUsers bob@bhome.local 

Шаг 3. Явно разрешите аутентификацию с открытым ключом

PubkeyAuthentication yes

Это значение по умолчанию, но мы хотим, чтобы он вступил в силу, потому что мы собираемся отключить возможность для пользователей вводить пароли в ...

Шаг 4. Отключите аутентификацию по паролю

Пароли можно украсть, подслушать или скопировать с стикера под клавиатурой. Сертификаты сделать сложнее. Убедитесь, что люди не могут использовать пароли таким образом:

PasswordAuthentication no

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

Protocol 2

OpenSSH поддерживает 2 протокола, которые творчески называются «1» и «2». «1» устарело, разрешает такие вещи, как шифрование DES и другие небезопасные вещи.

Чтобы подключиться, вам нужно будет получить сертификаты шпатлевки для пользователей. Самый простой способ - использовать PuttyGEN, который доступен на сайте Putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html).

Надеюсь, поможет!

Вдобавок ко всему, что было сказано на верхнем плакате, есть сценарий под названием «Denyhosts», который запрещает доступ ко всему, что плохо аутентифицируется три раза, или, для других таблиц IP, способ сделать то же самое:

http://dwm.me.uk/articles/2008/mitigating-ssh-attacks

вы можете попробовать принудительно использовать ключи ssh или ввести жесткий токен (например, yubikey), перемещающий ssh ​​от порта 22, помогает против скриптовых детей, но, безусловно, не защитит вас от кого-то, кто нацелился на вас как на жертву.

В дополнение ко всему, что предлагает @MattSimmons в своем отличный ответ Я бы сказал, что вместо того, чтобы самостоятельно управлять iptables, вы можете рассмотреть возможность использования:

fwknop - авторизация одиночного пакета и блокировка портов:

fwknop означает «FireWall KNock OPerator» и реализует схему авторизации, называемую авторизацией одиночного пакета (SPA). Этот метод авторизации основан на фильтре отбрасывания пакетов по умолчанию (fwknop поддерживает как iptables в системах Linux, так и ipfw в системах FreeBSD и Mac OS X) и libpcap. SPA - это, по сути, порт нового поколения.

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

Чтобы узнать больше о защите Linux, см. Руководство NSA по адресу:

Руководство по безопасной настройке Red Hat Enterprise Linux 5

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

Вы можете выполнять различные действия, например, устанавливать запретить хосты. Это заблокирует ssh с одного IP-адреса после трех неудачных попыток. Заблокированный IP-адрес будет указан в файле /ets/hosts.deny, и вы можете вручную добавить его в белый список, используя /etc/hosts.allow

Также разрешите известным пользователям использовать только ssh на хост. Вы можете сделать это с помощью модуля pam.d. Вы можете добавить правило в файл /etc/pam.d/sshd, как показано ниже, а файл / root / allow-users содержит список пользователей, авторизованных для ssh.

требуется авторизация pam_listfile.so item = user sense = allow file = / root / allow-users onerr = fail