Архив метки: ssh

Как увеличить время сессий SSH на Linux

Как увеличить время сессий SSH на Linux. Сегодня в статье поговорим о настройке увеличения время вашей сессии SSH на операционных системах Linux.

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

Настраиваем SSH на Ubuntu

Для работы ssh-сервера , а также ssh-клиента будем использовать всем известный пакет OpenSSH




Установка SSH




Установим OpenSSH командой:




sudo apt install ssh




Настройка сервера




При установке SSH-сервер автоматически прописывается в автозагрузку. Управлять его запуском, остановкой или перезапуском можно с помощью команд:




sudo service ssh stop|start|restart




Основной файл конфигурации SSH-сервера — файл /etc/ssh/sshd_config, доступный для чтения или редактирования только суперпользователю. После каждого изменения этого файла ssh-сервер необходимо перезапускать для применения изменений.




Пример конфигурации SSH-сервера в Ubuntu 18.04:




 # Какие порты, IP-адреса и протоколы мы слушаем
Port 22

# “any” - любые #
# “inet” (только IPv4) #
# “inet6” (только IPv6) #
AddressFamily inet

# По каким интерфейсам/сетям разрешен доступ, если
# не указывать, то слушает по всем адресам.
#ListenAddress ::
#ListenAddress 0.0.0.0

# Протокол на котором будет работать SSH (рекомендуется второй)
Protocol 2

# Указывает файл, содержащий закрытый хост-ключ для протокола версии 2
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key

#Разделение  привилегий включена для безопасности
UsePrivilegeSeparation yes

# Продолжительность жизни и размер бит ключа для протокола версии 1
#KeyRegenerationInterval 3600
#ServerKeyBits 1024

# Логирование
# DAEMON #
# USER #
# AUTH #
# LOCAL0 #
# LOCAL1 #
# LOCAL2 #
# LOCAL3 #
# LOCAL4 #
# LOCAL5 #
# LOCAL6 #
# LOCAL7 #
SyslogFacility AUTH
# SILENT #
# QUIET #
# FATAL #
# ERROR #
# INFO #
# VERBOSE #
# DEBUG #
# DEBUG1 #
# DEBUG2 #
# DEBUG3 #
LogLevel INFO

# Аутентификация:
 LoginGraceTime 45

# Разрешить или нет доступ root пользователю.
# “yes” - суперпользователь может зайти.
# Применяется текущая глобальная схема аутентификации.
# “without-password” - суперпользователь может зайти.
# Парольная аутентификация для него будет отключена.
# “forced-commands-only” - суперпользователь сможет зайти,
# пользуясь аутентификацией на основе публичного ключа и
# только если передаст необходимую к исполнению команду.
# Все остальные методы аутентификации для суперпользователя будут заблокированы.
# “no” - суперпользователь не может использовать ssh для входа в систему.
PermitRootLogin no
StrictModes yes

# Указывает, разрешена ли "чистая" RSA-аутентификация.
# Актуально только для протокола версии 1.
RSAAuthentication yes

# Использовать аутентификацию по публичному ключу
PubkeyAuthentication yes

# Указывает файл, в котором содержатся публичные ключи, используемые 
# для аутентификации пользователей.
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Запрещает использование файлов .rhosts и .shosts #
# в процессе аутентификации, основанной на проверке хоста.
IgnoreRhosts yes
# Для этой работы вам также потребуется ключи хоста в /etc/ssh_known_hosts
RhostsRSAAuthentication no
# аналогично для версии протокола 2
HostbasedAuthentication no
# Указывает должен ли sshd игнорировать пользовательские
# "известные хосты" ~/.ssh/known_hosts для RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# Включает аутентификацию по пустому паролю (НЕ РЕКОМЕНДУЕТСЯ)
PermitEmptyPasswords no

# Указывает, разрешить ли аутентификацию вида вопрос-ответ
ChallengeResponseAuthentication no

# Указывает, разрешена ли аутентификация по паролю
PasswordAuthentication no

# Kerberos опции
# Указывает, требует ли пароль, предоставленный #
# пользователем для аутентификации
#KerberosAuthentication no
# Если активен AFS и пользователь получил Kerberos 5 TGT,
# пытаться ли получить AFS токен до того, как пользователь
# получит доступ к своей домашней папке.
# По умолчанию - “no”.
#KerberosGetAFSToken no
# Указывает, как поступать в случае, если аутентификация
# через Kerberos завершилась неудачей. Если
# значение = "yes" - пароль будет проверен при помощи
# любого дополнительного локального механизма авторизации,
# например - /etc/passwd.
# По умолчанию - “yes”.
#KerberosOrLocalPasswd yes
# Указывает, нужно ли автоматически уничтожать файл с
# кэшем тикета пользователя по завершению сеанса.
# По умолчанию - “yes”.
#KerberosTicketCleanup yes

# GSSAPI опции
# Указывает, разрешена ли аутентификация пользователя на
# основе GSSAPI. По умолчанию - "no"
#GSSAPIAuthentication no
# Указывает, нужно ли автоматически уничтожать
# пользовательский кэш аутентификационных полномочий при
# завершении сеанса.
# По умолчанию - "yes"
#GSSAPICleanupCredentials yes

# Указывает, разрешено ли перенаправление графической
# подсистемы X11.
#X11Forwarding yes
# Указывает номер первого дисплея, доступного sshd в
# качестве перенаправления X11.
#X11DisplayOffset 10

# Указывает, должен ли sshd выводить на экран информацию /etc/motd
# при интерактивном входе пользователя.
PrintMotd no
# Указывает, должен ли sshd выводить на экран дату и время
# последнего сеанса при интерактивном входе пользователя.
# По умолчанию - “yes”.
PrintLastLog yes

# Указывает, нужно системе посылать TCP сообщения клиенту с целью 
# поддержания соединения.
TCPKeepAlive yes

# Задает количество сообщений к клиентам, которые sshd
# посылает подряд, не получая какого либо ответа от
# клиента. Если пороговое значение будет достигнуто, а
# клиент так и не ответил - sshd отключит клиента, прервав
# ssh сессию.
#ClientAliveCountMax

# Задает временной интервал в секундах. Если в течении
# этого интервала не было обмена данными с клиентом, sshd
# посылает сообщение по зашифрованному каналу,
# запрашивающее ответ от клиента. По умолчанию - 0, т.е.
# не посылать таких сообщений. Эта директива работает
# только для протокола ssh2.
#ClientAliveInterval

# Указывает, должен ли использоваться login для
# интерактивного сеанса. Значение по умолчанию - “no”.
#UseLogin no

# Указывает максимальное число одновременных
# неавторизованных подключений к sshd.
# Дополнительно, можно задать ранний сброс соединений,
# указав в качестве параметра три значения, разделенные
# двоеточием “start:rate:full” (например: "3:30:30").
# sshd отклонит попытку соединения с вероятностью равной
# “rate/100” (т.е. в нашем примере - 30%), если уже
# имеется “start” (3) неавторизованных соединений.
# Вероятность увеличивается линейно и любые попытки
# соединения будут отклонены, если число неавторизованных
# соединений достигнет значения “full” (30). #
MaxStartups 3:30:30

# Указывает какой файл содержит текстовый баннер, который
# будет показан пользователю ПЕРЕД процедурой
# аутентификации. Опция доступна только для протокола ssh2.
Banner /etc/issue.net

# Разрешить клиенту передавать региональные переменные окружения
AcceptEnv LANG LC_*

# Определяет и настраивает внешнюю подсистему (например
# демона передачи файлов - file transfer daemon).
Subsystem sftp /usr/lib/openssh/sftp-server

# Включает интерфейс PAM (Pluggable Authentication Module
# interface).Если задано значение "yes" - для всех типов
# аутентификации помимо обработки модуля сессии и аккаунта
# PAM будет использоваться аутентификация на основе
# запроса-ответа (ChallengeResponseAuthentication и
# PasswordAuthentication) Т.к. аутентификация
# запросов-ответов в PAM обычно выполняет ту же роль,
# что и парольная аутентификация, вам следует отключить
# либо PasswordAuthentication, либо
# ChallengeResponseAuthentication. Стоит отметить, что
# если директива UsePAM включена - вы не сможете запустить
# sshd от имени пользователя, отличного от root.
# Значение по умолчанию - “no”.
UsePAM yes




Можно скопировать приведенный выше текст в ваш собственный sshd_config и использовать в дальнейшем.




Рекомендуемые параметры. Безопасность




Сам по себе, неправильно настроенный SSH-сервер — огромная уязвимость в безопасности системы, т. к. у возможного злоумышленника есть возможность получить практически неограниченный доступ к системе. Помимо этого, у sshd есть много дополнительных полезных опций, которые желательно включить для повышения удобства работы и безопасности).




Port, ListenAddress и AddressFamily




На нашем ресурсе есть статья про правильную настройку ssh сервера.



[endtxt]



2019-10-24T12:05:15
SSH

Защита SSH с помощью Fail2Ban

Сегодня рассмотрим защиту SSH-сервиса от  Brute Force – атака перебором, при помощи программы Fail2Ban.

При покупки VPS или вы организуете свой сервер на Linux. Для администрирования данного сервера предоставляется/организуется доступ по SSH протоколу. Но как известно, если есть открытый порт, то его можно скомпрометировать (взломать). Для защиты от таких попыток взлома протокола SSH в Linux системах используется утилита Fail2Ban. Читать

Правильная настройка SSH на Ubuntu Server

Сегодня в статье поговорим о правильной настройке SSH на Ubuntu Server 18.04 LTS.




Практически сразу после запуска сервера на порту 22 наблюдается бурная активность ботов-брутфорсчиков. Для того чтобы защититься от их атак и снизить нагрузку на сервер первым делом устанавливаем и настраиваем Fail2Ban для SSH.




Далее переходим к настройке конфигурационного файла ssh




Настройка sshd_config




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




sudo nano /etc/ssh/sshd_config




Первое что нужно сделать, так это сменить порт ssh с 22 на любой другой. Ищем строку Port 22 и заменяем её например на Port 2222




Port 2222




Порты 21, 22, 80, 139, 443, 1194, 3306, 8080 — советую не использовать.




Второе – ограничим тип адресов для подключения (IPv6 либо IPv4). Если у вас на сервере не используется IPv6, то дописываем в файл:




AddressFamily inet




Третье – запретим root авторизацию




PermitRootLogin no




Четвертое – разрешаем подключение только под определенным логином:




AllowUsers user




где список пользователей пишется через пробел.




Пятое – запрещаем попытку входа с пустым паролем:




PermitEmptyPasswords no




Шестое – настраиваем вход по ключу.




PubkeyAuthentication yes




Далее на машине с который будете подключаться к серверу набираем следующие команды:




ssh-keygen 




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




Далее копируем наш публичный ключ на сервер:




ssh-copy-id ваш_user@IP_сервера.ru




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




ssh ваш_user@IP_сервера.ru




Седьмое – запрещаем вход по паролю




PasswordAuthentication no




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




Восьмое – сохраняем правки и перезапускаем ssh демон:




sudo /etc/init.d/ssh restart




Соединение по SSH с сервером




Теперь можем перезайти с новыми параметрами на ваш сервер. В терминале набираем:




ssh -p 2222 user@sshserver




На всякий случай посмотрим открытые порты:




netstat -tupln | grep LISTEN




Вы должны увидеть порт 2222




В случае ошибок полезно бывает смотреть лог /var/log/secure либо использовать опции -v, -vv или -vvv для вывода детального лога соединения:




ssh -vvv user@sshserver



[endtxt]




RSS



Добавление RSS-ленты на главную страницу этого сайта не поддерживается, так как это может привести к зацикливанию, замедляющему работу вашего сайта. Попробуйте использовать другой блок, например блок Последние записи, для отображения записей сайта.


2019-09-15T21:49:19
SSH

Настройка сервера OpenSSH в Ubuntu Linux

Настроить SSH-сервер в Ubuntu очень просто. Сервером выбора является OpenSSH.

Запустите эту команду из окна терминала:

sudo apt-get установить ssh

Чтобы проверить, что это работает, вы можете попробовать ssh на свой компьютер:

> ssh localhost

Не удается установить подлинность хоста «localhost (127.0.0.1)».
Отпечаток ключа RSA: 98: 8a: b8: b2: 9e: 8a: 84: e0: d4: 08: 27: fb: 74: f0: de: d4.
Вы уверены, что хотите продолжить подключение (да/нет)? Читать

Копирование файлов по ssh. Команда scp

Сегодня в статье мы рассмотрим пример как можно копировать файлы или даже целые директории через протокол SSH.




SSH — сетевой протокол, позволяющий производить удалённое управление операционной системой, а также туннелирование TCP-трафика (например, для передачи файлов). Данный протокол зашифровывает весь трафик, включая и передаваемые пароли. SSH-клиенты и SSH-серверы доступны для большинства сетевых операционных систем.




Для копирования файлов по ssh между компьютерами под управлением Linux применяется команда scp.




Команда scp




Рассмотрим, как можно копировать файлы с одного компьютера на другой по ssh, используя команду scp.




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




scp [опции] что_копируем куда_вставляем




Аргумент что_копируем и куда_вставляем могут быть, как локальными путями, так и удаленными. То есть можно копировать файлы с удаленного компьютера на локальный и наоборот или же копировать файлы с удаленного компьютера на другой удаленный компьютер.




Копирование файлов




Копирование локального файла на удаленный компьютер




Скопируем локальный файл file.txt на удалённый компьютер в директорию пользователя user.




scp file.txt user@192.168.0.2:/home/user




  • user – это имя пользователя на удалённом ПК.



  • 192.168.0.2 – IP адрес удаленного ПК



  • /home/user – директория пользователя.




Давайте выполним копирование, но уже с указанием порта для ssh.




scp -P 2222 file.txt user@192.168.0.2:/home/user




Копирование файла с удаленного компьютера на локальный




Скопируем файл с удаленного компьютера в нашу текущую директорию.




scp user@192.168.0.2:/home/user/file.txt .




Копирование директории




Скопируем с нашего локального компьютера директорию ~/files на удаленный компьютер в директорию /home/user.




scp -r ~/files user@192.168.0.2:/home/user




Копирование со сжатием данных




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




scp -C file.txt user@192.168.0.2:/home/user




Сохранение атрибутов файла




Чтобы результирующий файл получил те же атрибуты что и исходный файл, используется опция -p (не путать с опцией -P для указания порта). При использовании опции -p сохраняются права доступа к файлу, владелец файла, временные метки и так далее.




scp -p file.txt user@192.168.0.2:/home/user




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




man scp



[endtxt]



2019-07-04T07:00:52
SSH