SSH: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 1: Строка 1:
[[Категория:Admin]]
{{Stub}}
{{Stub}}
{{span|font-size: 180%|Создание и настройка входа через ssh}}


== Создание и настройка входа через ssh ==
Рассматривается вопрос создания ключа пользователя и настройки для авторизации на сервере в ssh через ключ.
Рассматривается вопрос создания ключа пользователя и настройки для авторизации на сервере в ssh через ключ.
Предполагается что ssh-сервер запущен и имеет настройки, принятые по умолчанию в ALTLinux.
Предполагается что ssh-сервер запущен и имеет настройки, принятые по умолчанию в ALT Linux.


=== Введение ===
== Введение ==
ssh (secure shell) — программа для входа на удалённую машину и выполнения на ней команд.
ssh (secure shell) — программа для входа на удалённую машину и выполнения на ней команд.


=== Создание ключа ===
== Создание ключа ==
В ssh используется асимметричное шифрование, соответственно используется пара из закрытого и открытого ключа.
В ssh используется асимметричное шифрование, соответственно используется пара из закрытого и открытого ключа.
Для создания ключа на компьютере пользователя нужно выполнить
Для создания ключа на компьютере пользователя нужно выполнить
Строка 16: Строка 15:
На вопрос о файле для сохранения ключа нажать Enter (по умолчанию). Далее будет задан вопрос о пароле к ключу. Пароль нужно указать.
На вопрос о файле для сохранения ключа нажать Enter (по умолчанию). Далее будет задан вопрос о пароле к ключу. Пароль нужно указать.


В каталоге ~/.ssh
В каталоге {{path|~/.ssh}}
появляются файлы
появляются файлы
* id_dsa — секретный ключ
* id_dsa — секретный ключ
Строка 22: Строка 21:
<div style="display: inline; color: red;">Внимание! Никогда никому не пересылайте '''секретный''' ключ.</div>
<div style="display: inline; color: red;">Внимание! Никогда никому не пересылайте '''секретный''' ключ.</div>


=== Настройка входа (на сервере) ===
== Настройка входа (на сервере) ==
Для того, чтобы пользователь мог авторизоваться в системе через ssh-ключ, нужно в файл ~/.ssh/authorized_keys добавить содержимое файла id_dsa.pub. Если пользователь будет один входить под этой учётной записью, файл id_dsa.pub можно просто скопировать, назвав authorized_keys.
Для того, чтобы пользователь мог авторизоваться в системе через ssh-ключ, нужно в файл {{path|~/.ssh/authorized_keys}} добавить содержимое файла {{path|id_dsa.pub}}. Если пользователь будет один входить под этой учётной записью, файл {{path|id_dsa.pub}} можно просто скопировать, назвав authorized_keys.
Также можно воспользоваться утилитой ssh-copy-id, если копировать вручную не хочется:
Также можно воспользоваться утилитой {{prg|ssh-copy-id}}, если копировать вручную не хочется: {{cmd|ssh-copy-id user@host}}
 
ssh-copy-id user@host


'''Данные изменения проводятся в каталоге пользователя ''на сервере'''''.
'''Данные изменения проводятся в каталоге пользователя ''на сервере'''''.
Строка 36: Строка 33:
принадлежать файлы должны пользователю и его группе
принадлежать файлы должны пользователю и его группе


=== Использование ===
== Использование ==
  $ ssh user@host.name
  $ ssh user@host.name


=== Конфигурационный файл (у пользователя) ===
== Конфигурационный файл (у пользователя) ==
Для удобства в файле ~/.ssh/config можно указать сокращение
Для удобства в файле ~/.ssh/config можно указать сокращение
<pre>Host    myserv
<pre>Host    myserv
Строка 60: Строка 57:
Будет спрошен пароль и расшифрованный ключ запомнится на время вашего сеанса. Это сработает если запущен ssh-agent (в ALT Linux он запускается автоматически при графическом входе в систему).
Будет спрошен пароль и расшифрованный ключ запомнится на время вашего сеанса. Это сработает если запущен ssh-agent (в ALT Linux он запускается автоматически при графическом входе в систему).


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


====Инструкция по установке и настройке сервера ssh для администратора====
=== Инструкция по установке и настройке сервера ssh для администратора ===
Нужно установить пакет '''openssh-server''', включить автоматический запуск при загрузке системы:
Нужно установить пакет '''openssh-server''', включить автоматический запуск при загрузке системы:
  # chkconfig sshd on</pre>
  # chkconfig sshd on</pre>
Строка 76: Строка 73:
  # service sshd reload
  # service sshd reload


==== [[OpenLDAP|LDAP]] ====
=== [[OpenLDAP|LDAP]] ===
Чтобы sshd мог пускать пользователей из LDAP, нужно выполнить
Чтобы sshd мог пускать пользователей из LDAP, нужно выполнить
  control system-auth ldap
  control system-auth ldap


=== Управление сессиями ===
== Управление сессиями ==
PAM session management в openssh той версии, которая находится в Сизифе и дистрибутивах, использует [http://www.citi.umich.edu/u/provos/ssh/privsep.html privilege separation] и потому исполняется с правами пользователя, а не root. Как следствие,
PAM session management в openssh той версии, которая находится в Сизифе и дистрибутивах, использует [http://www.citi.umich.edu/u/provos/ssh/privsep.html privilege separation] и потому исполняется с правами пользователя, а не root. Как следствие,
* [[pam_mktemp]] не сможет создать подкаталог в /tmp/.private/ с нужными правами, если его там нет;
* [[pam_mktemp]] не сможет создать подкаталог в /tmp/.private/ с нужными правами, если его там нет;
* pam_mkhomedir не сможет создать подкаталог с нужными правами, если его там нет;
* pam_mkhomedir не сможет создать подкаталог с нужными правами, если его там нет;
Строка 88: Строка 85:
В качестве объезда можно помещать эти модули в PAM account management.
В качестве объезда можно помещать эти модули в PAM account management.


=== Полезные советы ===
== Полезные советы ==


==== Предотвращение брутфорс-атак ====
=== Предотвращение брутфорс-атак ===
* Можно пересадить sshd на нестандартный порт
* Можно пересадить sshd на нестандартный порт
* Целесообразно ограничить число «ожидающих» соединений, когда пароль еще не введен. Для этого, в файле /etc/openssh/sshd_config укажите строку
* Целесообразно ограничить число «ожидающих» соединений, когда пароль еще не введен. Для этого, в файле /etc/openssh/sshd_config укажите строку
  MaxStartups 2:70:10
  MaxStartups 2:70:10
В этом случае у вас будут разрешены только 2 «ожидающих» соединения, и каждое следующее будет сброшено с вероятностью 70 %
В этом случае у вас будут разрешены только 2 «ожидающих» соединения, и каждое следующее будет сброшено с вероятностью 70 %
* Для особо изощрённой защиты можно использовать [http://sisyphus.ru/srpm/knock knock].
* Для особо изощрённой защиты можно использовать [http://sisyphus.ru/srpm/knock knock].
* Можно ограничить число попыток средствами iptables:
* Можно ограничить число попыток средствами iptables:
Строка 102: Строка 99:
Для оптимизации этого дела настроятельно рекомендуется завести цель LOGDROP.
Для оптимизации этого дела настроятельно рекомендуется завести цель LOGDROP.


==== Настройка второго sshd ====
=== Настройка второго sshd ===
Копируем /etc/init.d/sshd и указываем через -f другой конфигурационный файл?
Копируем /etc/init.d/sshd и указываем через -f другой конфигурационный файл?
Практика показывает, что надо менять весь набор: копировать /etc/init.d/sshd, /etc/sysconfig/sshd; (факультативно делать ссылки или копировать сам sshd, /etc/pam.d/sshd); изменять посредством /etc/sysconfig/sshd переменные PIDFILE, LOCKFILE, EXTRAOPTIONS.
Практика показывает, что надо менять весь набор: копировать /etc/init.d/sshd, /etc/sysconfig/sshd; (факультативно делать ссылки или копировать сам sshd, /etc/pam.d/sshd); изменять посредством /etc/sysconfig/sshd переменные PIDFILE, LOCKFILE, EXTRAOPTIONS.


==== Копирование ключа на сервер ====
=== Копирование ключа на сервер ===
Если вам нужно добавить на сервер, куда вы имеете доступ, чей-то ключ, используйте
Если вам нужно добавить на сервер, куда вы имеете доступ, чей-то ключ, используйте
  $ ssh-copy-id
  $ ssh-copy-id
Строка 112: Строка 109:
  $ ssh-copy-id -i friends_pub_key myserver
  $ ssh-copy-id -i friends_pub_key myserver


=== Ссылки ===
== Ссылки ==
* [http://ftp.altlinux.org/pub/distributions/ALTLinux/2.4/Master/docs/ch06s05.html#distrib.setup.network.ssh Документация ALM2.4]
* [http://ftp.altlinux.org/pub/distributions/ALTLinux/2.4/Master/docs/ch06s05.html#distrib.setup.network.ssh Документация ALM2.4]
* [http://www.nixp.ru/cgi-bin/go.pl?q=articles;a=ssh Настройка сервера SSH (теория и практика])
* [http://www.nixp.ru/cgi-bin/go.pl?q=articles;a=ssh Настройка сервера SSH (теория и практика])
Строка 122: Строка 119:
* http://fail2ban.sourceforge.net/
* http://fail2ban.sourceforge.net/
* http://www.csc.liv.ac.uk/~greg/sshdfilter/
* http://www.csc.liv.ac.uk/~greg/sshdfilter/
[[Категория:Admin]]

Версия от 19:18, 23 февраля 2009

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Создание и настройка входа через ssh

Рассматривается вопрос создания ключа пользователя и настройки для авторизации на сервере в ssh через ключ. Предполагается что ssh-сервер запущен и имеет настройки, принятые по умолчанию в ALT Linux.

Введение

ssh (secure shell) — программа для входа на удалённую машину и выполнения на ней команд.

Создание ключа

В ssh используется асимметричное шифрование, соответственно используется пара из закрытого и открытого ключа. Для создания ключа на компьютере пользователя нужно выполнить

$ ssh-keygen -b 2048 -t dsa

На вопрос о файле для сохранения ключа нажать Enter (по умолчанию). Далее будет задан вопрос о пароле к ключу. Пароль нужно указать.

В каталоге ~/.ssh появляются файлы

  • id_dsa — секретный ключ
  • id_dsa.pub — публичный ключ
Внимание! Никогда никому не пересылайте секретный ключ.

Настройка входа (на сервере)

Для того, чтобы пользователь мог авторизоваться в системе через ssh-ключ, нужно в файл ~/.ssh/authorized_keys добавить содержимое файла id_dsa.pub. Если пользователь будет один входить под этой учётной записью, файл id_dsa.pub можно просто скопировать, назвав authorized_keys. Также можно воспользоваться утилитой ssh-copy-id, если копировать вручную не хочется: ssh-copy-id user@host

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

Обратите внимание на права файлов:
-rw------- authorized_keys
-rw-r--r-- config

и на каталог

drwx------ .ssh

принадлежать файлы должны пользователю и его группе

Использование

$ ssh user@host.name

Конфигурационный файл (у пользователя)

Для удобства в файле ~/.ssh/config можно указать сокращение

Host    myserv
        HostName host.name

и вызывать просто как

$ ssh myserv

Можно добавить ещё настроек:

Host myserv
...
        User user
        Protocol 2
        ForwardX11 yes
        ForwardAgent yes
        Compression yes

Чтобы не указывать пароль каждый раз при обращении к серверу, можно запустить

$ ssh-add

Будет спрошен пароль и расшифрованный ключ запомнится на время вашего сеанса. Это сработает если запущен ssh-agent (в ALT Linux он запускается автоматически при графическом входе в систему).

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

Инструкция по установке и настройке сервера ssh для администратора

Нужно установить пакет openssh-server, включить автоматический запуск при загрузке системы:

# chkconfig sshd on

В файле /etc/openssh/sshd_config укажите строку AllowUsers с перечислением пользователей, имеющих право подключаться к системе.

Например

AllowUsers guest test best

А также рекомендуется выключить аутентификацию по паролю (исправить строчку PasswordAuthentication на):

PasswordAuthentication no

Для вступления настроек в силу:

# service sshd reload

LDAP

Чтобы sshd мог пускать пользователей из LDAP, нужно выполнить

control system-auth ldap

Управление сессиями

PAM session management в openssh той версии, которая находится в Сизифе и дистрибутивах, использует privilege separation и потому исполняется с правами пользователя, а не root. Как следствие,

  • pam_mktemp не сможет создать подкаталог в /tmp/.private/ с нужными правами, если его там нет;
  • pam_mkhomedir не сможет создать подкаталог с нужными правами, если его там нет;
  • pam_limits не сможет увеличить лимиты сверх тех, что есть у процесса openssh.

В качестве объезда можно помещать эти модули в PAM account management.

Полезные советы

Предотвращение брутфорс-атак

  • Можно пересадить sshd на нестандартный порт
  • Целесообразно ограничить число «ожидающих» соединений, когда пароль еще не введен. Для этого, в файле /etc/openssh/sshd_config укажите строку
MaxStartups 2:70:10

В этом случае у вас будут разрешены только 2 «ожидающих» соединения, и каждое следующее будет сброшено с вероятностью 70 %

  • Для особо изощрённой защиты можно использовать knock.
  • Можно ограничить число попыток средствами iptables:
iptables -A INPUT -p TCP --syn --dport 22 -m recent --name ssh_rate_limit --set
iptables -A INPUT -p TCP --syn --dport 22 -m recent --name ssh_rate_limit --update --seconds 60 --hitcount 4 -j LOG
iptables -A INPUT -p TCP --syn --dport 22 -m recent --name ssh_rate_limit --update --seconds 60 --hitcount 4 -j DROP

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

Настройка второго sshd

Копируем /etc/init.d/sshd и указываем через -f другой конфигурационный файл? Практика показывает, что надо менять весь набор: копировать /etc/init.d/sshd, /etc/sysconfig/sshd; (факультативно делать ссылки или копировать сам sshd, /etc/pam.d/sshd); изменять посредством /etc/sysconfig/sshd переменные PIDFILE, LOCKFILE, EXTRAOPTIONS.

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

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

$ ssh-copy-id

Например:

$ ssh-copy-id -i friends_pub_key myserver

Ссылки