Содержание

SSH

1.Создание SSH ключей

 ssh-keygen -o -a 256 -t ed25519 -C "$(hostname)-$(date +'%d-%m-%Y')"

Лучше выбирать ed25519, т.к. он короче и безопаснее.

2. Копирование ключей на сервер

  ssh-copy-id username@remote_host
  # или
  cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
  # или
  cat ~/.ssh/id_rsa.pub
  mkdir -p ~/.ssh
  echo public_key_string >> ~/.ssh/authorized_keys 

если генерируем ключ в puttygen, то вставляем в .ssh/authorized_keys открытый ключ

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

3. Вход на сервер

  ssh username@remote_host    

4. Запрет входа под паролем

  sudo nano /etc/ssh/sshd_config
  PasswordAuthentication no
  sudo systemctl restart ssh

Полезные опции

PrintMotd noЗапрет вывода message of the day
PrintLastLog no Запрет вывода IP последнего логона

Конфигурационные файлы

/etc/ssh/sshd_configфайл конфигурации сервера OpenSSH
/etc/ssh/ssh_configфайл конфигурации клиентской части OpenSSH
~/.ssh/ директория, в которой хранятся пользовательские SSH настройки
~/.ssh/authorized_keys или ~/.ssh/authorized_keysсписок ключей (RSA или DSA), которые используются для подключения к пользовательским аккаунтам
/etc/nologinесли данный файл существует в системе, то sshd запретит подключаться всем пользователям кроме root в систему
/etc/hosts.allow и /etc/hosts.denyсистема запрета (часть безопасности). Работает по аналогии с ACL

Проверка конфигурационного файла

  sudo sshd -t

Конфиг запуска

sudo nano /etc/systemd/system/sshd.service

Права на файлы

Если аутентификация не проходит с помощью сертифката, а в логах по

  journalctl -u ssh

появляется ошибка

  Authentication refused: bad ownership or modes for file /root/.ssh/authorized_keys

то нужно поменять владельца и права на папку, файл.

  chmod -R u+rwx,go-rwx ~/.ssh

или

  chmod -R 0700 ~/.ssh

Проверка прав

  ls -ld .ssh/

Рекомендации по безопасности

Используйте SSH второй версии

 в файле /etc/ssh/sshd_config указана опция Protocol 2.

Ограничивайте SSH доступ

  AllowUsers root merion networks - разрешить доступ пользователей  root merion networks

С другой стороны, вы можете разрешить доступ всем пользователям, кроме указанных:

   DenyUsers root merion networks

Время неактивности

Важно указывать время, в течение которого, неактивная сессия будет терминирована (завершена). Это можно сделать следующими опциями:

   ClientAliveInterval 300
   ClientAliveCountMax 0

В данной настройке мы указали время бездействия равным 300 секунд (5 минут).

Про файлы .rhosts

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

  IgnoreRhosts yes   

Никакой аутентификации на базе хоста!

Так называемая Host-Based Authentication позволяет пользователю с определенного хоста подключаться к серверу. Отключаем:

   HostbasedAuthentication no

Прямое подключение через root

Не нужно открывать root. Максимум, советуем использовать прямое root подключение на время проведения работ. Затем отключать. Лучше давать su (sudo) доступ для некоторых категория пользователей. Закрыть можно вот так:
  PermitRootLogin no

Сделайте баннер

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

22 порт только изнутри!

Сделайте доступ к 22 порту системы только через цепочку фаервол правил. Лучше всего, оставить доступ только изнутри LAN. Например, в Iptables можно дать доступ для 192.168.11.0/24:

  1. A RH-Firewall-1-INPUT -s 192.168.11.0/24 -m state –state NEW -p tcp –dport 22 -j ACCEPT

Где слушать

По умолчанию SSH слушает подключения на всех доступных интерфейсах. Мы рекомендуем сменить порт по умолчанию и указать IP – адрес, на котором необходимо ожидать подключения. Например, мы укажем порт 962 и IP – адрес 192.168.11.24

  Port 962
  ListenAddress 192.168.11.24

Запретить пустые пароли

Бывают пользователи без паролей. Их доступ к SSH так же необходимо запретить с помощью опции:

  Port 962
  PermitEmptyPasswords no

Анализируйте логи

Установите логирование событий в режим INFO или DEBUG – это позволит иметь расширенный контроль над системой:

   LogLevel INFO    
  

SCP

Синтаксис

  scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
ПараметрОбъяснение
-P - Указывает на порт ssh удалённого хоста
-p - Сохраняет дату модификации и доступ к файлу
-q - Убирает полоску прогрусса и информационные сообщения
-C - Включить компрессию
-r - Копировать папки рекурсивно
ПримерОбъяснение
scp file.txt remote_username@10.10.0.2:/remote/directoryCopy a Local File to a Remote System with the scp Command
scp file.txt remote_username@10.10.0.2:/remote/directory/newfilename.txt
scp -r /local/directory remote_username@10.10.0.2:/remote/directory
scp "~Projects/*.txt" remote_username@10.10.0.2:/home/user/Projects/
scp -p file.txt remote_username@10.10.0.2:/remote/directory/
scp remote_username@10.10.0.2:/remote/file.txt /local/directoryCopy a Remote File to a Local System using the scp Command
scp user1@host1.com:/files/file.txt user2@host2.com:/files Copy a File Between Two Remote Systems using the scp Command
scp -3 user1@host1.com:/files/file.txt user2@host2.com:/filesCopy a File Between Two Remote Systems using the scp Command