Способы ограничения возможности входа пользователей в Ubuntu | 8HOST.COM

Вступление

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

Данное руководство описывает основные понятия об управлении пользователями и регистрации их авторизации.

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

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

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

Базы данных

Не менее важным является защита данных находящихся в некой СУБД. Рассмотрим на примере MariaDB.

После успешной установки необходимо выполнить одну команду:

sudo mysql_secure_installation

После чего, программа задаст несколько вопросов касаемых безопасности.

Результат будет примерно таким:

Базовая безопасность в Linux | Serverspace

Также не рекомендуется выполнять соединения от имени пользователя root. Лучше создать одного пользователя и с ограниченными правами. Для сайта будет достаточно следующих прав для выполнения запросов вида:

SELECT – выборка из базы

UPDATE – Обновление записей

INSERT – добавление новых записей.

DELETE – удаление записей (иногда, но лучше не использовать).

Не рекомендуется наделять правами:

ALTER – изменение структуры таблиц

DROP – удаление баз данных и таблиц базы

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

Безопасное соединение по ssh

Важно! Данный пример подходит для Linux и MacOS.

В начале проверяем генерировались ли ранее ключи для данной учетной записи:

ls ~/.ssh/id_rsa*

Если результат будет не пустым, то следует пропустить шаг создания ключа. У нас пусто – создаем командой:

ssh-keygen -t rsa

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

Безопасное соединение по SSH

Запрещаем использование root в ssh – блог про линукс

Сегодня, сидя на работе, я забрел через SSH на один удаленный сервер, проблема в том, что при вводе рутового пароля он отказался пускать меня. В старые времена такое положение вещей меня бы озадачило, но тут я сразу смекнул в чем дело, root’y доступ на сервер просто запрещен. Мне такая штука очень понравилась, и так как часто с рабочего компьютера захожу на свой ноутбук по SSH я решил примутить такую же и у себя, для пущей безопасности. Зайдя на сервер я немного поковырялся в конфигах SSH и нашел то что искал.

Для чего необходимо закрывать доступ root’y? Ответ довольно простой, кто-нибудь может перехватить или украсть пароль, после чего получить права суперпользователя на сервере где у вас крутиться Web-шоп, правда неприятно?

Так вот, чтобы решить эту проблему необходимо отредактировать файл sshd_config, который является основным конфигурационным файлом для службы sshd. В разных системах он может находиться по разному, но зачастую это /etc/ssh/

Напомню, чтобы иметь возможность присоединяться по SSH к компьютеру, нужно установить пакет OpenSSH-server как один из вариантов:

#sudo apt-get install openssh-server

Открываем конфиг любым текстовым редактором:

#gedit /etc/ssh/sshd_config/

Найдите в нем секцию, содержащую строку «PermitRootLogin»

# Authentication:
LoginGraceTime 120

PermitRootLogin yes
StrictModes yes

Отредактируйте строку как показано ниже для отключения возможности подключаться через ssh рутом, изменив «yes» на «no».

PermitRootLogin no

После этого перезапустите sshd:

#/etc/init.d/sshd restart

Теперь вы в безопасности.

Немного о свойствах файла sshd_config и простейших параметрах которые стоит сразу изменить.

Port 22 — номер порта можно и поменять, в особенности если SSH пользуетесь вы один, а не целая группа админов. Именно 22-ой порт стоит первый в списке для сканирования и атак.

И напоследок, всем кто часто юзает SSH советую детально изучить тему безопасности, прочитать маны, дабы предостеречь себя от несчастных случаев…

Защита ssh-соединений с помощью fail2ban

Fail2Ban – приложение, которое позволяет блокировать SSH-подключения с определенного IP-адреса по достижении лимита. Разумно полагать, что если пользователь знает пароль к серверу, но ошибается при вводе, то достаточно будет 3-5 попыток. В случае с авторизацией по ключу – достаточно 1-2 попыток. В противном случае это брутфорс.

Как ограничить вход с помощью /etc/nologin

В экстренных ситуациях бывает необходимо запретить вход всем аккаунтам, кроме root.

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

В любом случае, это легко сделать, создав файл «/etc/nologin»:

sudo touch /etc/nologin

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

Пустой файл просто сбрасывает пользователей обратно в локальную оболочку без объяснения причин.

Дело в том, что пользователю просто возвращается содержимое файла. Если добавить в файл сообщение, то пользователи получат объяснение ошибки входа:

Как ограничить вход с помощью /etc/shadow

Другой подобный способ ограничения доступа – использование файла «/etc/shadow». Данный файл содержит хешированные пароли каждого пользователя системы.

Чтобы просмотреть хешированные пароли, введите:

sudo less /etc/shadowroot:$6$r79Dod3Y$3hi3QklpGEQMxwQGEss4ueNNPkoUrqUe3SwyAacaxl.Lmgq1r9i4mTblV1z6NfKMNXH1Cpnq.4iKhOiQd7Riy1:15953:0:99999:7:::daemon:*:15455:0:99999:7:::bin:*:15455:0:99999:7:::sys:*:15455:0:99999:7:::sync:*:15455:0:99999:7:::games:*:15455:0:99999:7:::man:*:15455:0:99999:7:::. . .

Второе поле (которое начинается с «$6$r79Dod3Y#3…» в первой строке) содержит хешированное значение пароля.

Как можно видеть, учетные записи системы вместо сложного хешированного значения имеют звездочку (*). Учетным записям со звездочкой во втором поле пароль не был установлен и они не могут пройти регистрацию при помощи пароля.

Значение пароля можно деактивировать (сделав его, по сути равным значению «*»), установив перед хешированным значением восклицательный знак (!).

Два инструмента могут заблокировать  указанную учетную запись.

Команда passwd может быть заблокирована с помощью флага «-l» и разблокирована флагом «-u»:

Как ограничить доступ с помощью /etc/passwd

Один из способов ограничения возможности входа – это задать регистрационной оболочке учетной записи специальное значение.

Примером этому является пользователь «messagebus» в файле «/etc/passwd»:

less /etc/passwd | grep messagebusmessagebus:x:102:104::/var/run/dbus:/bin/false

последнее значение – это оболочка или команда, которая запускается в случае успешного входа. Сейчас это «/bin/false».

Если войти в учетную запись messagebus как root-пользователь, ничего не произойдет, так как переключиться на этого пользователя не получится:

sudo su messagebus

Попробуйте переключиться на пользователя sshd:

sudo su sshdThis account is currently not available.

Это уведомление появилось потому, что оболочка пользователя sshd помещена в «/usr/sbin/nologin».

less /etc/passwd | grep sshdsshd:x:103:65534::/var/run/sshd:/usr/sbin/nologin

Итак, как же ограничить вход пользователей с помощью этих методов?

Как отключить доступ пользователю root по ssh

Прочитав этот совет, вы сможете защитить ваш Linux-сервер, отключив суперпользователю root доступ по SSH.

Откройте в вашем любимом текстовом редакторе (к примеру, в Vi) конфигурационный файл SSH (/etc/ssh/sshd_config): sudo vi /etc/ssh/sshd_config

Найдите в разделе ‘Authentication’ строку с параметром PermitRootLogin и измените ее вид на:# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
Это позволит отключить возможность удаленного доступа для пользователя root.

Внимание! Советую вам, перед выполнением вышеуказанного, создать пользователя, имя которого отлично от ‘root’, и назначить ему права суперпользователя. Это позволит вам удаленно выполнять административные задачи.

Настройка firewall

Хорошей привычкой является использование файрволла. Это главный инструмент безопасности любого сервера и/или сети находящейся за ним. Фильтрация трафика позволяет избежать различного рода вторжения. Мы рекомендуем предоставлять доступ только к тем TCP/UDP-портам, которые на самом деле необходимы. По критичным портам либо закрывать доступ к ним, либо ограничивать доступ к ним – только с определенных IP-адресов.

IPTables — утилита командной строки, стандартный интерфейс управления работой межсетевого экрана netfilter в Linux. Для использования IPTables требуются права суперпользователя. Существуют и альтернативные решения UFW и ShoreWall для Debian/Ubuntu и FirewallD для CentOS и Fedora.

Мы же рассмотрим настройку непосредственно IPTables.

Для просмотра действующих правил фильтрации используют следующие команды.

IPv4:

sudo iptables -L

IPv6:

sudo ip6tables -L

Стандартный вывод выглядит так:

Базовая безопасность в Linux | Serverspace

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

Настройка межсетевого экрана и политика его работы зависит от работы ваших сервисов, а также сервисов локальной сети (частный случай проброс порта для RDP). Прежде чем их применять проверьте совпадают ли наши примеры с вашими задачами.

Для IPv4 (файл /tmp/v4):

*filter

# Allow all loopback (lo0) traffic and reject traffic

# to localhost that does not originate from lo0.

-A INPUT -i lo -j ACCEPT

-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT

# Allow ping.

-A INPUT -p icmp -m state –state NEW –icmp-type 8 -j ACCEPT

# Allow SSH connections.

-A INPUT -p tcp –dport 22 -m state –state NEW -j ACCEPT

Общие требования к учетным данным

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

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

К паролям есть ряд общих требований:

  • не использовать пароли короче 10 символов;
  • использовать буквы верхнего и нижнего регистра, а также цифры;
  • использовать специальные символы, но только там, где это возможно.

Отключить доступ по ssh от имени "root", но?

Всем Привет!

Вопрос до боли тривиален.

Но возникла такая потребность:

Есть пользователи в группе ROOT (0), и собственно сам root включен.

Собственно отключение root”а:
в “/etc/ssh/sshd_config” ставил “PermitRootLogin no”.

Но остальные юзеры с правами root и из группы root не могут подключаться по ssh и sftp

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

Системные обновления

Своевременно устанавливать обновления для ОС – хорошая привычка. Разумеется, бывают случаи, когда обновление влечет за собой негативные последствия, но это происходит крайне редко. Данный процесс можно упростить, если использовать автообновления системы.

В разных дистрибутивах это делается по-своему:

Debian/Ubuntu используют пакет unattended upgrades для автоматических обновлений

CentOS использует yum-cron

В дистрибутиве Fedora используется dnf-automatic

Если сервер под критической нагрузкой, то следует использовать штатные средства.

Ubuntu/Debian:

sudo apt-get update

sudo apt-get upgrade

Fedora/Centos:

yum update

Важно! Обновление коснется только тех пакетов и приложений которые не были установлены путем компилирования и получены как исполняемые файлы.

Системные пользователи с ограниченными правами.

Подключение к серверу под учетной записью суперпользователя root небезопасно. Кроме того, мы рекомендуем сменить любого non-root пользователя присутствующего в системе по умолчанию. Да, хотя бы даже пароль.

Изменение пароля происходит командой:

passwd

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

Для Ubuntu/Debian:

Удаление правил

Как пример, удалим правило, которое мы добавили ранее:

sudo iptables -D INPUT 9

Т.е. будет удалено правило, в котором мы разрешали подключение к 8080 порту.

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

Итоги

Идентификация пользователей в Linux – достаточно гибкая область управления системой, так как одни и те же задания можно выполнить при помощи различных простых инструментов.

Tags:

Похожее:  SMS verification | Создаем свой интернет-магазин на WordPress. Все о WooCommerce.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *