Запретить доступ по SSH пользователю или группе
Чтобы отключить или запретить доступ по SSH для пользователя или группы, вам необходимо добавить/изменить следующие директивы в файле sshd_config вашего удаленного сервера.
- DenyUsers
- DenyGroups
Чтобы запретить доступ по SSH конкретному пользователю с именем «sk», отредактируйте файл sshd_config:
$ sudo vi /etc/ssh/sshd_config
Добавьте/отредактируйте следующую строку в файле sshd_config.
DenyUsers sk
Убедитесь, что отступы правильные. Не используйте клавишу пробела. Нажмите клавишу Tab и добавьте имя пользователя.
Аналогичным образом, чтобы запретить доступ по SSH нескольким пользователям, укажите имена пользователей через пробел, как показано ниже.
DenyUsers user1 user2
Аналогичным образом, чтобы запретить доступ по SSH для всей группы, например root , добавьте:
DenyGroups root
Сохраните и выйдите из файла конфигурации ssh. Перезапустите службу ssh, чтобы изменения вступили в силу.
$ sudo systemctl restart sshd
Теперь попробуйте ssh на свой Linux-компьютер из заблокированной учетной записи пользователя, например sk:
$ ssh [email protected]
Вы получите следующее сообщение:
[email protected]'s password: Permission denied, please try again. [email protected]'s password:
Включить вход в систему с правами root
Теперь, когда мы знаем, что можно войти в систему как пользователь root, пришло время включить параметр входа в систему Root в файле конфигурации SSHD. Еще раз, начните с открытия терминала и подключения через SSH как обычный пользователь.
Примечание. Не хотите удаленно изменять свой SSH-сервер? Измените его локально, а не в терминале.
ssh
Мы подключены (удаленно) через SSH к серверу SSH. Затем повысите обычное соединение до Root-доступа, войдя в систему через su.
вс —
Затем, используя текстовый редактор Nano, откройте файл конфигурации SSH-сервера.
nano /etc/ssh/sshd_config
Просмотрите файл конфигурации, найдите «PermitRootLogin». Перед ним может стоять «нет». В этом случае измените «нет» на «да».
В других случаях SSH «PermitRootLogin» может сказать «запретить пароль». Удалите «запретить-пароль» и измените его на «да».
После изменения настроек Root для SSH-сервера вам необходимо сохранить изменения конфигурации. Изменения конфигурации сохраняются в Nano при нажатии комбинации клавиш Ctrl + O. Закройте редактор Nano, нажав Ctrl + X, когда конфигурация сохранится правильно.
7.4. Как сделать импорт или экспорт базы данных через SSH? Работа с БД по SSH
Для импорта сначала загружаете дамп на сервер. Дамп должен быть в формате .sql
Далее подключаетесь на сервер по ssh и выполняете команду:
mysql -u пользователь_БД -p имя_БД < файл_дампа_БД
В случае неудачи всегда будет указанна ошибка из за которой импорт не удался или прервался.
Для экспорта существует утилита, которая позволяет сделать бэкап базы данных в традиционном SQL-формате – mysqldump. Общий вид в командной строке:
mysqldump –u пользователь_БД -p имя-БД > файл_дампа_БД
Также утилита имеет много опций и ключей, рассмотрим несколько основных полезных примеров по использованию mysqldump.
mysqldump -–all-databases -uUSER -pPASSWORD > /path/mysql-db-server.sql
Команда с опцией -–all-databases сохраняет все базы данных пользователя USER на MySQL-сервере.
mysql -uUSER -pPASSWORD < /path/mysql-db-server.sql
Восстанавливает все БД mysql пользователя USER. Если USER — root — то все БД.
mysqldump -uUSER -pPASSWORD DATABASE table1 table2 table3 > /path/ DATABASE_t1-t2-t3.sql
Сохраняет таблицы table1, table2, table3, из базы DATABASE в файле DATABASE_t1-t2-t3.sql.
mysqldump —no-data -uUSER -pPASSWORD DATABASE > /path/DATABASE-schema.sql
Указав опцию —no-data команда сохранит структуру таблиц (без данных) в файле DATABASE_schema.sql.
mysqldump —add-drop-table -uUSER -pPASSWORD DATABASE > /path/DATABASE.sql
Опция —add-drop-table добавит команду DROP TABLE (удаление таблицы) перед созданием таблиц.
mysqldump —databases -uUSER -pPASSWORD DATABASE > /path/DATABASE.sql
Опция —databases добавит команду CREATE DATABASE перед созданием базы данных. Это позволяет не создавать и не задавать базу данных при восстановлении.
mysqldump -uUSER –pPASSWORD –h192.168.0.1 DATABASE > /path/DATABASE.sql
Команда сделает бэкап базы DATABASE с сервера с ip-адресом 192.168.0.1
mysqldump —max_allowed_packet=8M -uUSER –pPASSWORD DATABASE > /path/DATABASE.sql
Опция —max_allowed_packet=8M принудительно изменит размер пакета считываемых данных в оперативную память размером в 8 мегабайт.
mysqldump —quick -uUSER –pPASSWORD DATABASE > /path/DATABASE.sql
Опция —quick заставляет команду записывать данные непосредственно на диск.
mysqldump —default-character-set=cp1251 -uUSER –pPASSWORD DATABASE > /path/DATABASE.sql
Принудительно указываем кодировку cp1251.
mysqldump -uUSER –pPASSWORD DATABASE | gzip -c /path/DATABASE.sql.gz
Этой последовательностью получаем архивированный бэкап с помощью утилиты gzip (для последующего восстановления необходимо будет предварительно извлечь из архива).
Заливаем архив бекапа в базу
gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
или так
zcat /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
Создаём новую базу данных
mysqladmin -u USER -pPASSWORD create NEWDATABASE
Для просмотра списка баз данных можно использовать команду:
mysqlshow -u USER -pPASSWORD
А так же можно посмотреть список таблиц базы:
mysqlshow -u USER -pPASSWORD DATABASE
где:
USER — это имя пользователя базы данных;
PASSWORD — пароль пользователя;
SERVER — это имя (или ip-адрес) сервера базы данных;
DataBase — наименование базы данных;
NameFile.sql — имя файла, в который будет помещен дамп базы данных.
Применение корневых настроек
Теперь, когда в настройках включен вход в систему с правами root, вам необходимо перезапустить демон SSH, чтобы применить изменения. На большинстве компьютеров с Linux это легко сделать с помощью systemd. В терминале получите root-доступ с помощью su или sudo:
su -
или же
sudo -s
После получения root используйте systemd для перезапуска демона SSH.
systemctl restart sshd
Не использовать systemd? Вместо этого попробуйте эту команду:
service ssh restart
Если ни одна из команд не работает для перезапуска демона SSH, надежный способ — просто перезапустить сервер, на котором запущен SSH:
reboot
После перезагрузки изменения должны быть применены. Чтобы войти в систему как root, откройте терминал и попробуйте следующее:
4.4.3. Ограничение доступа root
Вместо того, чтобы полностью закрывать доступ пользователю root, администратор может разрешить доступ только к программам setuid, например, к su или sudo.
4.4.3.1. Команда su
Когда пользователь выполняет команду su, ему предлагается ввести пароль root, и после проверки он попадает в приглашение оболочки root.
Зарегистрировавшись с помощью команды su, пользователь является пользователем root и имеет все права администратора системы. Кроме этого, если пользователь стал root, с помощью команды su он может стать любым другим пользователем системы, не зная его пароля.
Учитывая мощь этой программы, администраторам в организациях, возможно, захочется ограничить круг лиц, имеющих к ней доступ.
Проще всего это можно сделать, добавив пользователей в специальную административную группу wheel. Для этого выполните от имени root следующую команду:
usermod -G wheel <username> |
В этой команде замените <username> именем пользователя, которого вы хотите добавить в группу wheel.
Чтобы проделать то же самое с помощью Менеджера пользователей, выберите в меню Приложения (на панели) => Системные параметры => Пользователи и группы или введите в приглашении оболочки команду system-config-users. Перейдите на вкладку Пользователи, выберите пользователя из списка и щёлкните в меню кнопки Свойства (или выберите в главном меню Файл => Свойства).
Затем перейдите на вкладку Группы и отметьте группу wheel, как показано на .
Рисунок 4-2. Вкладка Группы
Затем откройте файл настройки PAM для команды su (/etc/pam.d/su) в текстовом редакторе и уберите комментарий в следующей строке:
auth required /lib/security/$ISA/pam_wheel.so use_uid |
Сделав, это вы откроете доступ к этой программе только пользователям группы администраторов wheel.
Замечание | |
---|---|
Пользователь root по умолчанию включён в группу wheel. |
4.4.3.2. Команда sudo
Команда sudo предоставляют другую возможность получить права администратора. Когда доверенные пользователи указывают перед административной командой sudo, им предлагается ввести их собственный пароль. Затем, если его подлинность подтверждается и ему разрешена данная команда, эта команда будет выполняться, как будто она запущена пользователем root.
Общий формат команды sudo показан ниже:
sudo <command> |
В этом примере <command> нужно заменить командой, обычно выполняемой пользователем root user, например, mount.
Важно
Пользователи, запускающие команду sudo должны быть очень внимательны и, покидая свой компьютер, выходить из системы, так как если выполнить эту команду ещё раз в течение пяти минут, она не спросит пароль. Эту настройку можно изменить в файле конфигурации /etc/sudoers.. Команда sudo даёт большую гибкость
Например, только пользователи, перечисленные в файле /etc/sudoers, могут выполнить команду sudo, и эта команда будет выполнена в оболочке пользователя, а не root. Это значит, что оболочка root может быть полностью отключена, как описано в .
Команда sudo даёт большую гибкость. Например, только пользователи, перечисленные в файле /etc/sudoers, могут выполнить команду sudo, и эта команда будет выполнена в оболочке пользователя, а не root. Это значит, что оболочка root может быть полностью отключена, как описано в .
Команда sudo также ведёт исчерпывающий аудит. Каждая успешная попытка входа регистрируется в файле /var/log/messages, а выполненная команда, вместе с именем выполняющего её пользователя в файле /var/log/secure.
Другим преимуществом команды sudo является то, что администратор может открыть пользователям доступ только к нужным им командам.
Администраторы, желающие отредактировать файл конфигурации sudo, /etc/sudoers, должны использовать команду visudo.
Чтобы дать кому-то все привилегии администратора, введите visudo и добавьте в раздел привилегий пользователя примерно такую строку:
juan ALL=(ALL) ALL |
В этом примере пользователь juan может использовать sudo с любого компьютера и выполнить любую команду.
В приведённом ниже примере показано, как можно очень тонко настраивать sudo:
%users localhost=/sbin/shutdown -h now |
В данном примере любой пользователь, работающий на консоли, может выполнить команду /sbin/shutdown -h now.
Подробное описание параметров этого файла можно найти на странице man sudoers.
Запуск SSH без отсоединения от терминала
Запуск службы sshd описан в первой части. Также демон sshd можно запустить по имени файла. Для этого нужно указать полный путь до файла sshd, чтобы его узнать:
which sshd /usr/bin/sshd
Запущенная таким образом sshd отключиться от терминала (перейдёт в фоновое выполнение) и не будет выводить что-либо в стандартный вывод.
Можно запустить sshd как процесс без отсоединения от терминала (чтобы процесс не стал демоном), для этого используйте опцию -D — это позволяет упростить процесс мониторинга работы SSH, поскольку сообщения о событиях и проблемах службы будут выводиться в стандартный вывод. Дополнительно можно указать опцию -d для включения режима отладки:
sudo /usr/bin/sshd -D -d
Linux, MacOS, Windows 10
Создание SSH-ключей
Запустите терминал или Windows PowerShell на вашем компьютере и выполните команду:
ssh-keygen
Вы увидите примерно следующее сообщение:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Нажмите Enter — ключ будет сохранен в указанную директорию по умолчанию.
Далее вам будет предложено задать пароль (кодовую фразу) для ключа. Вы можете задать ее или оставить пустой, просто нажав Enter
Обратите внимание, что если вы зададите кодовую фразу, ее потребуется вводить при каждой авторизации по ключу.
Процедура создания ключей завершена, ключи сохранены в директории ~/.ssh/ в файлах id_rsa и id_rsa.pub. Теперь их необходимо скопировать на сервер.
Копирование ключей на сервер
-
Выполните в терминале следующую команду, указав вместо user имя пользователя, созданного на сервере, а вместо server — IP-адрес вашего сервера:
ssh-copy-id user@server #Например: ssh-copy-id [email protected]
-
В результате содержимое файла с публичным ключом id_rsa.pub будет скопировано в файл ~/.ssh/authorized_keys на сервере, и в дальнейшем вы сможете устанавливать соединение с сервером, используя команду:
ssh user@server #Например: ssh [email protected]
5: Устранение неполадок
Иногда при отключении сервера через панель управления эта процедура проходит некорректно. Это может произойти по разным причинам, чаще всего из-за внутренних условий самого сервера.
В таком случае будет применено «жёсткое» отключение сервера, что может привести к противоречиям на дисках и запретить монтирование файловой системы.
Если при монтировании файловой системы вы столкнулись с ошибкой:
Нужно запустить команду fsck для того, чтобы исправить файловую систему.
Примечание: Запуск команды fsck иногда может привести к повреждению данных на активных дисках. По этой причине рекомендуется запускать fsck на демонтированной файловой системе, чтобы минимизировать риск. Проблемы всё-таки могут возникнуть в ситуациях, когда значительный объем данных записывался на диск в момент отключения питания.
Чтобы исправить несовместимость, попробуйте автоматически исправить ошибки:
Команда запустит проверку файловой системы; при этом может потребоваться подтверждение операции (для этого введите y).
После этого файловая система будет очищена от ошибок и помечена как clean.
Далее нужно выполнить следующие действия.
Смонтируйте файловую систему:
Установите пароль для требуемого пользователя:
Закройте однопользовательское окружение:
Выполните загрузку сервера в обычном режиме.
FreeBSDSSH
4: Установите пароль
Итак, файловая система подготовлена. Измените пароль пользователя при помощи команды passwd.
Чтобы установить/переустановить пароль стандартного пользователя freebsd, наберите:
Система предложит выбрать и подтвердить новый пароль. У стандартного пользователя по умолчанию есть доступ к sudo, потому достаточно изменить только его пароль.
Если вы хотите изменить пароль пользователя root, введите:
После этого нужно выбрать и подтвердить новый пароль.
Получив пароль, можете выйти из однопользовательского окружения:
FreeBSD выйдет из однопользовательского режима и выполнит обычную загрузку сервера. Теперь вы можете войти при помощи пароля или SSH (если аутентификация на основе пароля разрешена для сессий SSH).
Если во время выполнения руководства у вас возникли какие-либо ошибки, читайте следующий раздел.
Настройка SSH
Настройка будет происходить под выделенный сервер, VDS, VPS на Debian, Ubuntu. Конфигурационный файл располагается тут: .
Если у вас обычный хостинг, всё и так должно быть настроено как надо, переходите к разделу авторизации по ключам.
По умолчанию, демон SSHD (именно в него мы вносим изменения) не нуждается в каких-либо настройках и работает нормально. Мы внесём лишь пару небольших изменений с целью ограничить доступ нежелательных лиц к серверу.
В результате внесения неправильных изменений в конфигурационный файл вы можете потерять доступ к серверу по ssh, поэтому убедитесь, что у вас есть альтернативные варианты для доступа к нему, например, с помощью панели управления ISPManager.
Основные действия
При использовании SSH-ключей для аутентификации сервер не защищён паролем.
Однако в некоторых ситуациях пароль может пригодиться. Например, если SSH-ключ был утерян или сбились внутренние сетевые настройки, вы не сможете аутентифицироваться при помощи ключей.
Чтобы восстановить доступ к серверу, рекомендуется обратиться к консоли управления сервером, при помощи которой можно создать пароль (опции Reset Root Password, Access или другой похожий вариант, предложенный консолью).
Большинство операционных систем генерирует пароль и отправляет его пользователю на электронный ящик. Однако такая функция недоступна в системе FreeBSD.
Чтобы установить или переустановить пароль в FreeBSD, нужно перезапустить сервер при помощи панели управления. Затем нужно открыть веб-консоль, чтобы загрузить сервер в однопользовательском режиме. Здесь можно смонтировать файловую систему и установить пароль для учётной записи пользователя.
Как выбрать интерфейс (IP) для прослушивания
В системе может быть несколько сетевых интерфейсов с несколькими IP адресами, по умолчанию sshd прослушивает их все, в том числе IPv6 адреса:
ListenAddress 0.0.0.0 ListenAddress ::
Если вы хотите, чтобы компьютер в локальной сети был доступен только для устройств в локальной сети, то можно указать его локальный IP:
ListenAddress 192.168.1.20
Кстати, смотрите статью «Как настроить Kali Linux на использование статичного IP адреса».
Директиву ListenAddress можно использовать несколько раз в одном конфигурационном файле. Разрешены следующие форматы:
ListenAddress hostname|address ListenAddress hostname:port ListenAddress IPv4_address:port ListenAddress :port
Если порт не указан, то sshd будет прослушивать на указанном порту в соответствии со всеми установленными опциями Port в этом файле.
Квалификатор rdomain является необязательным, он имеет отношение к маршрутизации.
Также обратите внимание, что с ListenAddress обязательно должен быть указано имя хоста (адрес) ИЛИ порт. Можно указать отдельно имя хоста (адрес), можно указать отдельно порт, а также можно указать их вместе
Во всех вариантах rdomain может отсутствовать.
Опции командной строки (об их использовании далее) имеют приоритет над директивами конфигурационного файла. В том числе опция для установки используемого порта приводят к тому, что Port в конфигурационном файле игнорируется. Но порты указанные с ListenAddress перезаписывают порты в строке команды.
Вы можете указать конкретный IP, который будет прослушиваться в ожидании подключений. А опцией AddressFamily вы можете выбрать для прослушивания все адреса, только IPv4 или только IPv6:
AddressFamily any
Варианты:
- any (по умолчанию — любые адреса),
- inet (использовать только IPv4),
- inet6 (использовать только IPv6),
Как проверить, существует ли пользователь в системе Linux
Теперь, когда мы знаем, как составить список всех пользователей, чтобы проверить, существует ли пользователь в нашем Linux-сервере, мы можем просто отфильтровать список пользователей, передав его по конвейеру команде grep.
Например, чтобы узнать, существует ли в нашей системе Linux пользователь с именем mial, мы можем использовать следующую команду:
getent passwd | grep mial
Если пользователь существует, приведённая выше команда распечатает краткую информацию о нём. Если нет вывода, что означает, что пользователя не существует.
Мы также можем проверить, существует ли пользователь, не используя команду grep, как показано ниже:
getent passwd mial
Как и раньше, если пользователь существует, команда отобразит информацию для входа в систему.
Если вы хотите узнать, сколько учётных записей пользователей у вас в системе, передайте вывод getent passwd команде wc:
getent passwd | wc -l
Как видно из вывода выше, на удалённом сервере Linux 510 учётных записи пользователей.
Использование ключа
Ввод пароля для подключения через SSH — раздражающая процедура. У меня почти никогда не получалось ввести его правильно с первого раза. Поэтому я начал искать информацию о том, как подключиться к серверу через SSH без пароля. Простое и безопасное решение — использование ключа. Почему это безопаснее? Потому что пароль можно подобрать. Чтобы исключить такую вероятность, многие пользователи выбирают авторизацию с помощью ключа.
Суть процедуры в формировании двух ключей: публичного и приватного. Первый копируется на сервер, а второй остается на компьютере пользователя и не передается по сети. В таком случае пароль при подключении не требуется. Когда вы подключаетесь к серверу через SSH, публичный ключ взаимодействует с приватным и открывает доступ к удаленному управлению.
Генерирование ключа и подключение на Windows
Для удобства используем программу PuTTy. Вместе с ней устанавливается утилита PuTTYgen — в ней можно сгенерировать публичный и приватный ключи.
- Запустите программу PuTTYgen.
- Нажмите на кнопку Gengerate.
- Водите курсором мышки по рабочему столу, чтобы сгенерировать случайные значения ключей.
- Нажмите на кнопку Save private key, чтобы сохранить на жестком диске приватный ключ. Место хранения может быть любым — его нужно указать в параметрах PuTTY. Сделаем это позже.
- Скопируйте публичный ключ в буфер обмена (Ctrl + C) и закройте генератор ключей.
Теперь нужно перенести публичный ключ на сервер. Запустите программу PuTTY и подключитесь к серверу с помощью пароля. Затем последовательно введите следующие команды:
mkdir ~/.ssh chmod 0700 ~/.ssh touch ~/.ssh/authorized_keys chmod 0644 ~/.ssh/authorized_keys
Эти команды создают на сервере папку и файл для хранения ключей, а также ограничивают к ним доступ — получить его может только владелец.
Следующий шаг — вставка публичного ключа из буфера обмена в файл authorized_keys. Для этого используется команда cat > .ssh/authorized_keys. После ввода команды щелкните по окну терминала правой кнопкой, чтобы вставить скопированный ранее публичный ключ. Для завершения ввода нажмите на сочетание клавиш Ctrl+D.
Вернитесь в настройки PuTTY. Перейдите в раздел Connection — SSH — Auth. Нажмите на кнопку Browse и укажите путь к приватному ключу, который вы ранее сохранили на жестком диске.
Теперь для подключения к серверу через SSH пароль не нужен — достаточно указать логин и IP-адрес сервера.
Генерирование ключа и подключение на Linux и macOS
Теперь посмотрим, как подключиться через SSH ключи на Linux и macOS.
- Запустите терминал на локальном компьютере.
- Выполните команду ssh-keygen, чтобы сгенерировать ключи.
- Нажмите на Enter, чтобы сохранить ключи.
Генератор предложит также задать кодовую фразу для ключа. Это дополнительная мера безопасности: если кто-то получит доступ к вашей локальной машине, то все равно не сможет подключиться к серверу через SSH. Минус один — вам тоже придется постоянно вводить ключевую фразу. Можно отказаться от этой меры защиты, просто нажав на клавишу Enter.
На этом процедура создания ключей завершена. Файлы d_rsa (приватный ключ) и id_rsa.pub (публичный ключ) хранятся в папке ~/.ssh/. Осталось скопировать открытую часть ключа на сервер.
- Вернитесь в терминал.
- Выполните команду ssh-copy-id [email protected], где root — логин для подключения к серверу по SSH, а 185.104.114.90 — IP-адрес или хост сервера.
После выполнения этой команды публичный ключ будет скопирован на сервер. Теперь вы можете подключаться к удаленной машине с помощью логина и IP-адреса — например, ssh [email protected]. Ключи будут сопоставляться автоматически.
Отключение запроса пароля
Суть приватных ключей в том, что они хранятся на локальных компьютерах. Если вы попытаетесь подключиться к серверу с другой машины, на которой нет ключа, то снова увидите запрос на ввод пароля. Чтобы авторизоваться можно было только по ключу, запретите использование пароля.
- Подключитесь к удаленному серверу.
- Выполните команду sudo nano /etc/ssh/sshd_config. Файл sshd_config откроется во встроенном текстовом редакторе.
- Найдите строку PasswordAuthentication yes и измените ее на PasswordAuthentication no.
- Сохраните изменения и перезапустите службу SSH командой sudo service ssh restart.
Авторизация по паролю отключена. Теперь подключиться к серверу можно только с помощью пары ключей.
Ограничение доступа root к службам с помощью PAM
Pluggable Authentication Modules (сокращенно PAM) — это централизованный, подключаемый, модульный и гибкий метод аутентификации в системах Linux. PAM через модуль /lib/security/pam_listfile.so обеспечивает большую гибкость в ограничении привилегий определенных учетных записей.
Вышеупомянутый модуль может использоваться для ссылки на список пользователей, которым не разрешено входить через некоторые целевые сервисы, такие как login, ssh и любые программы, поддерживающие PAM.
В этом случае мы хотим отключить доступ пользователя root к системе, ограничив доступ к службам входа и sshd. Сначала откройте и отредактируйте файл для целевой службы в каталоге /etc/pam.d/, как показано ниже.
$ sudo vim /etc/pam.d/login или sudo vim /etc/pam.d/sshd
Затем добавьте приведенную ниже конфигурацию в один из этих файлов (или в оба).
auth required pam_listfile.so \ onerr=succeed item=user sense=deny file=/etc/ssh/deniedusers
Когда вы закончите, сохраните и закройте каждый файл. Затем создайте простой файл /etc/ssh/deniedusers, который должен содержать по одному элементу в строке и не должен читаться всеми.
Добавьте в него имя root, затем сохраните и закройте его.
$ sudo vim /etc/ssh/deniedusers
Также установите необходимые разрешения на это.
$ sudo chmod 600 /etc/ssh/deniedusers
Этот метод влияет только на те программы и службы, которые поддерживают PAM. Вы можете заблокировать root-доступ к системе через ftp и почтовые клиенты и многое другое.
Для получения дополнительной информации обратитесь к соответствующим справочным страницам.
$ man pam_securetty $ man sshd_config $ man pam
Дополнительные настройки безопасности
Есть и другие рекомендуемые конфигурации, чтобы избежать нежелательных подключений к нашему SSH-серверу. Эти соединения:
- Войти : Мы установим время, необходимое для ввода пароля, чтобы злоумышленнику не приходилось «много думать».
- MaxAuthTries : Количество разрешенных попыток при вводе пароля перед отключением.
- MaxStartups : Количество одновременных входов в систему с IP-адреса, чтобы избежать использования грубой силы в нескольких сеансах одновременно.
- AllowUsers : Это для создания белого списка пользователей. Этот параметр позволяет нам настроить пользователей, которые смогут подключиться. Это очень ограничительная мера, но в то же время очень безопасная, поскольку она блокирует все подключения пользователей, которых нет в списке. Пользователи, которые у нас здесь, смогут подключиться, а остальные — нет.
- DenyUsers : Аналогично предыдущему, но теперь мы создаем черный список. Пользователи, которые у нас здесь, не смогут подключиться, а остальные подключатся.
- AllowGroups / DenyUsers : Точно так же, как указано выше, но вместо создания черного / белого списка пользователей это группы пользователей.
Например, файл конфигурации для sshd_config будет следующим:
Дополнительной мерой безопасности является настройка алгоритмов обмена ключами, симметричного шифрования, а также конфигурации HMAC для проверки целостности. В настоящее время рекомендуется применять следующую конфигурацию для обеспечения очень высокой безопасности:
С этой конфигурацией у нас будут лучшие криптографические наборы для сервера, однако старые клиенты могут не иметь возможности подключиться, поскольку они не поддерживают эти алгоритмы
Мы должны принять во внимание эту деталь и проверить, какие алгоритмы совместимы, а какие нет
Если мы создали новые ключи RSA или DSA для ключей с большей битовой длиной, мы должны поместить их в файл конфигурации (или заменить предыдущие, и, таким образом, нам не придется трогать файл конфигурации), таким образом мы получим дополнительная безопасность, если, например, мы используем ключи RSA длиной 4096 бит или выше.
Чтобы сгенерировать новые 4096-битные ключи RSA, нам просто нужно выполнить следующую команду:
Если мы хотим сгенерировать новые ключи ECDSA (с максимальной длиной 512 бит) или ED25519, нам нужно будет ввести следующие команды:
Как проверить конфигурационный файл сервера SSH без запуска службы
-t
Тестовый режим. Только проверяет правильность файла конфигурации и работоспособность ключей. Это полезно для надёжного обновления sshd, поскольку параметры конфигурации могут измениться.
-T
Расширенный тестовый режим. С этой опцией sshd проверит правильность файла конфигурации, выведет действующую конфигурацию в стандартный вывод и затем завершит работу. При желании, правила соответствия могут применяться путём указания параметров соединения с использованием одной или нескольких опций -C.
-C connection_spec
Укажите параметры соединения для использования в расширенном тестовом режиме -T. Если установлены, любые директивы Match в файле конфигурации, которые будут применяться, применяются до записи конфигурации в стандартный вывод. Параметры соединения предоставляются в виде пар «ключевое слово=значение» и могут предоставляться в любом порядке, с несколькими опциями -C или в виде списка через запятую. Ключевыми словами являются «addr», «user», «host», «laddr», «lport» и «rdomain», и они соответствуют адресу источника, пользователю, разрешённому имени хоста источника, локальному адресу, номеру локального порта и домену маршрутизации соответственно.
Настройка SSH входа без пароля
Чтобы настроить SSH-вход без пароля в Linux, все, что вам нужно сделать, это сгенерировать открытый ключ аутентификации и добавить его в файл удаленных хостов.
Следующие шаги описывают процесс настройки входа по SSH без пароля:
-
Проверьте существующую пару ключей SSH.
Перед созданием новой пары ключей SSH сначала проверьте, есть ли у вас уже ключ SSH на вашем клиентском компьютере, потому что вы не хотите перезаписывать существующие ключи.
Выполните следующую команду ls, чтобы проверить наличие существующих ключей SSH:
Если есть существующие ключи, вы можете использовать их и пропустить следующий шаг или создать резервную копию старых ключей и сгенерировать новый.
Если вы видите или это означает, что у вас нет ключа SSH, и вы можете перейти к следующему шагу и сгенерировать новый.
-
Создайте новую пару ключей SSH.
Следующая команда сгенерирует новую пару ключей SSH 4096 бит с вашим адресом электронной почты в качестве комментария:
Нажмите чтобы принять расположение и имя файла по умолчанию:
Затем инструмент попросит вас ввести безопасную парольную фразу. Независимо от того, хотите ли вы использовать кодовую фразу, решать вам, если вы решите использовать кодовую фразу, вы получите дополнительный уровень безопасности. В большинстве случаев разработчики и системные администраторы используют SSH без парольной фразы, поскольку они полезны для полностью автоматизированных процессов. Если вы не хотите использовать кодовую фразу, просто нажмите .
В целом взаимодействие выглядит так:
Чтобы убедиться, что ключи SSH сгенерированы, вы можете указать свои новые закрытые и открытые ключи с помощью:
-
Скопируйте открытый ключ
Теперь, когда вы сгенерировали пару ключей SSH, чтобы иметь возможность войти на свой сервер без пароля, вам необходимо скопировать открытый ключ на сервер, которым вы хотите управлять.
Самый простой способ скопировать ваш открытый ключ на сервер — использовать команду . На вашем локальном машинном терминале введите:
Вам будет предложено ввести пароль :
После аутентификации пользователя открытый ключ будет добавлен в файл удаленного пользователя, и соединение будет закрыто.
Если по какой-либо причине недоступна на вашем локальном компьютере, вы можете использовать следующую команду для копирования открытого ключа:
-
Войдите на свой сервер с помощью ключей SSH
После выполнения описанных выше действий вы сможете войти на удаленный сервер без запроса пароля.
Чтобы проверить это, просто попробуйте войти на свой сервер через SSH:
Если все прошло успешно, вы сразу же войдете в систему.
Как изменить порт, на котором работает сервер OpenSSH
Все настройки выполняются в файле /etc/ssh/sshd_config или в строке команды запуска sshd.
Для sshd.socket смена прослушиваемого службой порта происходит иначе.
Если вы используете sshd.service (объяснения в ), то смена порта также происходит в файле /etc/ssh/sshd_config. Для этого раскомментируйте директиву Port и укажите новое значение:
Port 2222
Опцию Port разрешено использовать несколько раз.
Также порт можно установить с помощью ListenAddress.
Если вы используете сокет sshd.socket и хотите поменять для SSH прослушиваемый порт, то вам нужно редактировать специальный файл следующим образом:
sudo systemctl edit sshd.socket
Там можно указать только порт:
ListenStream= ListenStream=23456
А также IP и порт:
ListenStream= ListenStream=172.0.0.1:12345
Обратите внимание, что использование ListenStream дважды в одном конфигурационном файле не является ошибкой. Если вы используете ListenStream только один раз с указанием порта, тогда будут прослушиваться и 22 порт и порт, который вы указали
Первое использование ListenStream= отключает прослушивание 22 порта.
Для sshd.socket другие настройки, как обычно, в файле /etc/ssh/sshd_config. Но директивы Port и ListenAddress будут игнорироваться (если выбрано прослушивание сокета).
Другие опции sshd
Рассмотрены самые востребованные опции конфигурационного файла sshd, кроме них имеется ещё много других, которые настраивают используемые шифры, могут более тонко определить порядок аутентификации и требования к подключающемуся, настраивают возможности пересылки (forwarding), установить выполняемую команду при подключении пользователя, вывод определённой информации при подключении и так далее.
С другими опциями конфигурационного файла sshd (на английском языке) вы сможете ознакомиться с помощью команды:
man sshd_config
Информацию об опциях командной строки можно увидеть с помощью:
man sshd