Archlinux установка sshd service

Обновлено: 04.07.2024

Этичный хакинг и тестирование на проникновение, информационная безопасность

Оглавление

Что такое и для чего нужен SSH

SSH — это набор программ, которые позволяют выполнить вход на удалённую машину для выполнения команд на ней. Он предназначен для обеспечения защищённой зашифрованной связи между двумя узлами через незащищённую сеть. Соединения X11, произвольные порты TCP и сокеты домена UNIX также могут быть переадресованы по защищённому каналу. В SSH входят программы, которые дополнительно позволяют передавать файлы по зашифрованному соединению.

SSH несёт в себе различные улучшения безопасности, среди них аутентификация пользователя/хоста, шифрование данных и целостность данных, благодаря чему невозможны популярные атаки вроде подслушивания (сниффинга), DNS/IP спуфинга, подделка данных (data forgery), перехват соединения (connection hijacking) и т. д. Пользователям ftp, telnet или rlogin, которые используют протокол, передающий данные в виде открытого текста, крайне рекомендуется переключиться на SSH.

OpenSSH — это реализация с открытым исходным кодом протокола SSH, позволяющая шифровать соединение в сети посредством набора программ. Если вам хочется иметь SSH на Linux, вы можете установить OpenSSH, который состоит из сервера OpenSSH и клиентских пакетов.

Технология работает по принципу сервер-клиент. То есть на удалённой машине, на которой вы хотите выполнять команды, нужно запустить сервер OpenSSH. К этому серверу можно подключаться с помощью клиентов OpenSSH. На одном компьютере могут быть одновременно установлены и сервер и клиент. Их запуск и настройка выполняется независимо друг от друга.

Утилиты SSH

К серверным утилитам OpenSSH относятся:

  • sshd (OpenSSH Daemon) — программа демон для ssh. sshd ожидает подключений от клиентов.
  • sftp-server (серверная подсистема SFTP) — это программа, которая участвует в передачи файлов по протоколу SFTP. sftp-server не предназначен для прямого вызова, обычно она задействуется автоматически демоном sshd.

Итак, на сервере основного внимания требует sshd, а программа sftp-server будет запущена автоматически по мере необходимости.

К клиентским утилитам OpenSSH относятся:

  • ssh (клиентская программа SSH) — это программа для выполнения входа на удалённую машину и выполнения команд на этой удалённой машине.
  • scp — программа для копирования файлов на удалённую машину с локальной, или в обратном направлении — с локальной на удалённую. При передаче данных используется зашифрованный канал.
  • sftp — это тоже программа для передачи файлов по безопасному каналу. Эта программа похожа на ftp.
  • ssh-keygen — утилита для создания ключей аутентификации и управления ими. Также она может использоваться для отзыва ключей.

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

Следующие утилиты присутствуют в пакете OpenSSH, но не требуют от пользователя явного запуска или применяются редко:

  • ssh-add — добавляет приватный ключ к агенту аутентификации.
  • ssh-agent — это программа для хранения закрытых ключей, используемая для аутентификации с открытым ключом (RSA, DSA, ECDSA, Ed25519). ssh-agent обычно запускается в начале сеанса X или сеанса входа в систему, а все другие окна или программы запускаются как клиенты для программы ssh-agent. Благодаря использованию переменных среды агент может быть найден и автоматически использован для аутентификации при входе на другие машины с использованием ssh.
  • ssh-keyscan — это утилита для сбора открытых ключей хоста SSH с нескольких хостов. Она была разработана для помощи в создании и проверке файлов ssh_known_hosts. ssh-keyscan предоставляет минимальный интерфейс, подходящий для использования скриптами оболочки и perl.
  • ssh-keysign — используется ssh для доступа к ключам локального хоста и генерирования цифровой подписи, необходимой во время аутентификации на основе хоста. ssh-keysign отключена по умолчанию и может быть включена только в глобальном файле конфигурации клиента /etc/ssh/ssh_config, если для EnableSSHKeysign установлено значение «yes». ssh-keysign предназначена не для вызова пользователем, а из ssh.
  • ssh-copy-id — использует локально доступные ключи для авторизации на удаленном компьютере.

Как установить OpenSSH

Для некоторых конфигураций служба OpenSSH установлена и включена по умолчанию. Как правило, это относится к системам, к которым затруднительно получить доступ иным способом, кроме как по SSH. Например, на хостингах VPS (виртуальных частных серверов) устанавливаемые системы практически всегда даже в минимальной конфигурации уже имеют установленную и запущенную службу SSH, поэтому после развёртывания нового сервера, клиенту достаточно подключиться используя присланные учётные данные.

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

В Debain и производных (Kali Linux, Linux Mint, Ubuntu), программы OpenSSH можно установить по отдельности, например, имеются пакеты для клиента и для сервера openssh-client и openssh-server. Либо можно установить метапакет ssh, который содержит и клиентскую, и серверную часть.

В Arch Linux клиент и сервер OpenSSH собраны в один пакет. Для установки OpenSSH в Arch Linux выполните:

В других дистрибутивах Linux поищите пакет openssh или ssh.

Управление службой OpenSSH

Клиент ssh запускается самим пользователем по мере необходимости.

Запуск службы OpenSSH требуется только на сервере.

  • sshd.service, который держит демона SSH постоянно активным и запускает новый процесс для каждого входящего подключения. Это особенно подходит для систем с большим количеством SSH трафика.
  • sshd.socket + sshd@.service, которые по требованию порождают экземпляры демона SSH для каждого подключения. Использование этой модели означает, что systemd прослушивает SSH сокет и запускает процесс демона только для входящего подключения. Это рекомендуемый способ запуска sshd практически во всех случаях. Удалено из пакета

Таким образом, если вы хотите воспользоваться первой моделью (демон SSH всегда активен), то для запуска службы и добавления её в автозагрузку наберите следующие команды:

Они добавят демона SSH в автозагрузку и запустят его прямо сейчас.

Для второй модели (запуск SSH только по требованию), сделайте так:

sudo systemctl start sshd.socket

sudo systemctl enable sshd.socket

Для проверки статуса службы:

Либо если вы используете сокет:

systemctl status sshd.socket


Обратите внимание, что в разных дистрибутивах служба может называться ssh или sshd, следовательно, в приведённых выше и далее командах, используйте имена:

Как проверить журнал событий SSH службы

События SSH можно разделить на события:

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

Просмотреть логи SSH можно различными способами, один из вариантов (помните, что в некоторых системах служба называется ssh.service, без буквы d):

Например, для вывода последних 100 записей:

Также можно просмотреть события SSH с помощью:

Универсальная команда в независимости от имени службы:

Как увидеть неудачные попытки входа SSH

Если настроен вход по паролю, то для вывода неудачных попыток наберите команду:

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


Если установить уровень вербальности на VERBOSE, то в журнале можно будет найти записи о неудачных попытках входа с помощью публичного ключа следующей командой:

Подробнее об этой настройке во второй часте.

Как просмотреть журнал подключений пользователей SSH

Чтобы показать подключения, когда вход был сделан по паролю:

Чтобы показать подключения аутентификации по публичному ключу:

Другой вариант просмотреть историю входов, это использовать следующую команду:

В данной статье я расскажу как происходит базовая установка и настройка Arch Linux в качестве сервера.

Загрузка ISO образа и запись диска

Загрузить ISO образ можно с официального сайта Arch Linux

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

Также можно загрузить образ на флешку.

После записи диска/флешки, вставьте его и дождитесь загрузки диска:

Окно загрузки Arch Linux

01_Select_Arch_linux_x86_64

В данном окне выберите Boot Arch Linux (x86_64)

Подключение будущего сервера к интернету

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

Проще всего проверить это выполнив команду ping:

02_check_internet_connection

Создание и монтирование разделов жесткого диска

03_select_label_type_dos

В моем случае у меня был диск на 80гб:

04_create_new_partition_for_free_space

Создадим / (корневой) раздел, размером 76гб:

05_create_partition_for_root

Создадим swap раздел (4гб):

06_create_partition_for_swap

Создадим файловую систему на корневом / разделе. Для этого отформатируем его в файловую систему ext4:

07_format_root_partition_with_ext4

Отформатируем раздел /dev/sda2 , для создания swap:

Подключим swap:

08_format_swap_partition

Примонтируем корневой раздел (/dev/sda1) в /mnt:

Установка базовой системы

Перед установкой вы можете изменить файл /etc/pacman.d/mirrorlist , для указания предпочтительных серверов обновлений:

09_mirrorlist

Также копия этого файла будет установлена в вашу систему.

Далее, установим базовую систему с помощью pacstrap. Если вы собираетесь компилировать ПО из AUR, также установите группу пакетов base-devel.

10_Install_the_Base_System

Генерация fstab

Сгенерируем файл fstab с UUID в качестве имен устройств:

Проверим правильность сгенерированного fstab:

11_generate_fstab

Войдем (chroot) в свежеустановленную, но не настроенную систему:

Настройка интернет соединения

Для начала узнаем имя сетевой карты сервера:

17_configure_network_connection1

В нашем случае это enp0s3. Попытаемся получить IP автоматически, используя DHCP:

Установка языка, часового пояса и прочих настроек

В этом шаге зададим язык системы, время, дату и часовой пояс.

Для начала откроем файл /etc/locale.gen:

13_setting_language

После чего сгенерируем выбранные локали:

Укажем язык по умолчанию:

Для русской локали следует заменить en_US.UTF-8 на ru_RU.UTF-8

14_generate_languages

Далее укажем часовой пояс, но перед этим найдем наш часовой пояс (в статье будет использован часовой пояс America/New_York):

15_setting_time_zone

Например, для России и московского времени это будет часовой пояс Europe и подпояс Moscow.

Создадим ссылку на выбранный часовой пояс:

Настроим системные часы:

Установка репозитория Arch Linux

Настроим репозиторий Arch Linux, для этого откроем файл /etc/pacman.conf

Включим репозиторий multilib, он нужен, если вы на 64-битной версии захотите запустить 32-битные приложения. Для включения репозитория нужно раскомментировать строки:

Добавим неофициальный репозиторий:

16_setting_repository

Сохраним изменения и обновим репозиторий Arch Linux:

Настройка имени сервера (hostname)

Запишем нужное имя сервера в файл /etc/hostname:

Например:

Замените archserver на нужное вам имя.

Проверим установленное имя:

12_setting_hostname1

Создание пользователя и выдача sudo привилегий

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

Например:

Далее установим sudo и bash-completion:

Откроем файл /etc/sudoers

найдем и раскомментируем следующую строку:

Указание пароля для root пользователя

Укажем пароль для root пользователя:

И введем новый пароль 2 раза

Установка SSH сервера

Установим SSH сервер:

Добавим его в автозагрузку:

Установка и настройка загрузчика GRUB

Установим пакеты grub и os-prober:

Установим grub на жесткий диск:

Создадим файл конфигурации GRUB:

Выход из системы(chroot) и отмонтирование файловой системы

Выйдем из chroot сессии:

Отмонтируем файловую систему:

Перезапустим Arch Linux:

Подключение по SSH

Теперь мы можем подключиться к нашему серверу по SSH:

Новичок в Linux? Не знаете, что такое SSH и что с ним можно делать? В этой статье мы собираемся объяснить, как настроить и использовать SSH в Linux. Мы рассмотрим, как это работает, и некоторые полезные вещи, которые вы можете с ним сделать. Давайте начнем!

Тем не менее, рекомендуется установить SSH-сервер на каждом ПК с Linux. Таким образом, всегда может быть двусторонняя связь, и любой компьютер может отправлять и получать соединение. Вот как это запустить.

Установите SSH Tools

Ubuntu

Arch Linux

Debian

Fedora / OpenSUSE

Хотя SSH уже может быть установлен, сервер может быть не включен. Чтобы включить его, откройте терминал и введите:

Другой

Другие дистрибутивы Linux, не упомянутые здесь, могут иметь инструменты SSH, необходимые для того, чтобы все работало. В противном случае лучше обратиться к официальному руководству для используемой вами версии Linux. Или выполните поиск в том месте, где вы обычно устанавливаете программы, и выполните поиск: openssh-server, ssh, sshd и т. Д.


Отредактируйте файл конфигурации с помощью: sudo nano /etc/ssh/ssh_config

Ubuntu / Debian:

Arch / OpenSUSE / Fedora:

Примечание: Если вы не планируете перенаправлять свой SSH-порт в Интернет, нет необходимости менять SSH-порт. Если он остается в локальной сети, все в порядке.

Подключитесь по SSH к вашему серверу с помощью: ssh -p portnumber remote@host

Передача файлов из командной строки


SSH полезен, когда вам нужно получить удаленный доступ к другому компьютеру. Это может быть компьютер, к которому вы получаете доступ через Интернет, или компьютер, находящийся в той же комнате. Иногда при удаленном доступе к ПК с Linux вам может потребоваться доступ к файлам. Возможно, это файлы конфигурации или важные документы. Отправка файлов на удаленный компьютер, когда у вас есть доступ только к терминалу Linux, может быть очень утомительной.

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

scp / путь / к / файлам или папкам user @ ipaddress: / path / to / destination

Замените / path / to / и т. Д., Чтобы отразить свои потребности. Например, ваш может выглядеть примерно так;

Безопасный FTP-сервер в любом месте


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

Удаленное резервное копирование

Примечание: в этом примере используется жесткий диск / dev / sda. Вам нужно будет изменить команду в соответствии с вашими потребностями.

Резервное копирование раздела

Весь диск

Также можно получить образ жесткого диска (или разделов) удаленного диска:

Резервное копирование раздела

Весь диск

Извлеките изображение с помощью: gzip -d image.img.gz

Просмотр удаленных программ локально

Включите перенаправление окна X11, отредактировав файл конфигурации ssh: sudo nano /etc/ssh/ssh_config


Перезапустите службу SSH.

Ubuntu / Debian:

Arch / OpenSUSE / Fedora:

При подключении через SSH используйте переключатель -X.

Вывод

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

1: вход в систему как root

Когда IP-адрес и root-пароль установлены, войдите на сервер как главный пользователь, или root. На компьютере Mac вход можно выполнить через терминал, на ПК – через PutTTy.

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

The authenticity of host '123.45.67.890 (123.45.67.890)' can't be established.
ECDSA key fingerprint is 79:95:46:1a:ab:37:11:8e:86:54:36:38:bb:3c:fa:c0.
Are you sure you want to continue connecting (yes/no)?

Наберите «yes», затем введите root-пароль.

2: изменение пароля

На данный момент root-пароль установлен по умолчанию и был выслан при регистрации сервера. Первое, что нужно сделать – изменить его на свое усмотрение.

3: создание нового пользователя

После изменения пароля входить на VPS как root-пользователь больше не понадобится. Теперь нужно создать нового пользователя и передать ему все root-привилегии на сервере.

Для нового пользователя можно выбрать любое имя. В данном руководстве используется имя «exampleuser».

useradd -m exampleuser

Флаг «-m» создает домашний каталог для нового пользователя.

Чтобы изменить пароль нового пользователя, вызовите команду:

4: root-права

На данный момент все привилегии управления сервером принадлежат пользователю root. Теперь необходимо передать все root-права новому пользователю.

Выполняя какую-либо задачу с нового пользователя, рекомендуется использовать фразу «sudo» перед командой. Данная фраза полезна по двум причинам: 1) она предупреждает любые разрушающие систему ошибки; 2) она сохраняет все запущенные с её помощью команды в файл /var/log/secure, который при необходимости можно просмотреть.

Затем необходимо отредактировать конфигурацию sudo. Vi, текстовый редактор, который используется для данного файла, не распознает клавиш со стрелкой. Для перемещения вниз используется клавиша «j», вверх – «k», влево – «h», вправо – «l». Кроме того, текст можно отредактировать при помощи клавиши «а» и удалить, нажав «Escape» и затем «х».

Найдите раздел под названием user privilege specification («настройка пользовательских привилегий»).

Он выглядит так:

Внесите приведенную ниже строку под этой строкой, чтобы передать все привилегии новому пользователю:

exampleuser ALL=(ALL) ALL

Нажмите Escape, и затем Shift ZZ, чтобы сохранить изменения и выйти.

5: конфигурирование SSH

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

Откройте конфигурационный файл:

Найдите следующие разделы и внесите необходимую информацию. Убедитесь, что строки также были раскомментированы, в противном случае изменения не вступят в силу (слова и фразы файла можно найти, нажав Control-W):

Port 25000
PermitRootLogin no

Port: хотя порт 22 используется по умолчанию, его можно заменить любым номером в диапазоне от 1025 до 65536. В данном примере используется порт 25000. Не забудьте записать новый номер порта. В дальнейшем он понадобится при входе на сервер. Данное изменение усложнит вход для неавторизованных пользователей.

PermitRootLogin: чтобы деактивировать вход с root, измените в данной строке yes на no. С этого момента на сервер можно войти только через нового пользователя.

6: финальная перезагрузка

Перезагрузите SSH, чтобы привести новые порты и настройки в исполнение:

systemctl restart sshd

Чтобы проверить новые настройки (не выходите из root), откройте новое окно терминала и войдите как новый пользователь.

Не забудьте внести новый номер порта.

ssh -p 25000 exampleuser@123.45.67.890

Убедившись, что на сервер можно войти с помощью нового пользователя, можете выйти из root.

Читайте также: