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

Материал из ALT Linux Wiki
(К викификации)
м (minor fixes)
Строка 14: Строка 14:
=== Введение ===
=== Введение ===


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


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


В ssh используется ассиметричное шифрование, соответственно используется пара из закрытого и открытого ключа.
В ssh используется асимметричное шифрование, соответственно используется пара из закрытого и открытого ключа.
Для создания ключа на компьютере пользователя нужно выполнить
Для создания ключа на компьютере пользователя нужно выполнить
<pre>$ ssh-keygen -b 2048 -t dsa</pre>
<pre>$ ssh-keygen -b 2048 -t dsa</pre>
Строка 26: Строка 26:
В каталоге ~/.ssh
В каталоге ~/.ssh
появляются файлы
появляются файлы
* id_dsa — секретный ключ
* id_dsa — секретный ключ
* id_dsa.pub — публичный ключ
* id_dsa.pub — публичный ключ
<div style="display: inline; color: red;">Внимание! Никогда никому не пересылайте секретный ключ.</div>
<div style="display: inline; color: red;">Внимание! Никогда никому не пересылайте '''секретный''' ключ.</div>


=== Настройка входа (на сервере) ===
=== Настройка входа (на сервере) ===
Строка 45: Строка 45:
=== Использование ===
=== Использование ===


<pre>$ ssh user@server.fullname.ru</pre>
<pre>$ ssh user@host.name</pre>


=== Конфигурационный файл (у пользователя) ===
=== Конфигурационный файл (у пользователя) ===
Строка 51: Строка 51:
Для удобства в файле ~/.ssh/config можно указать сокращение
Для удобства в файле ~/.ssh/config можно указать сокращение
<pre>Host    myserv
<pre>Host    myserv
         HostName server.fullname.ru</pre>
         HostName host.name</pre>


и вызывать просто как
и вызывать просто как
Строка 158: Строка 158:
Для этого, в файле /etc/openssh/sshd_config укажите строку
Для этого, в файле /etc/openssh/sshd_config укажите строку
<pre>MaxStartups 2:70:10</pre>
<pre>MaxStartups 2:70:10</pre>
В этом случае у вас будут разрешены только 2 «ожидающих» соединения, и каждое следующее будет сброшено с вероятностью 70 %
В этом случае у вас будут разрешены только 2 «ожидающих» соединения, и каждое следующее будет сброшено с вероятностью 70 %


Для особо изощрённой защиты можно использовать knock.
Для особо изощрённой защиты можно использовать knock.
Строка 175: Строка 175:


=== Ссылки ===
=== Ссылки ===
* ALM24Doc:ch06s05.html#distrib.setup.network.ssh
* [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 (теория и практика])
* [http://www.opennet.ru/openforum/vsluhforumID14/179.html Настройка SSH в cygwin]
* [http://www.opennet.ru/openforum/vsluhforumID14/179.html Настройка SSH в cygwin]

Версия от 18:26, 26 сентября 2008

42px-Wikitext-ru.svg.png
Эту статью следует викифицировать.
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


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

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


Введение

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, если копировать вручную не хочется. Данные изменения проводятся в каталоге пользователя на сервере.

Обратите внимание на права файлов:
-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 он запускается автоматически при графическом входе в систему).

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

sshd

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

# chkconfig sshd on

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

AllowUsers guest test best

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

PasswordAuthentication no

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

# service sshd reload

LDAP

Чтобы sshd мог пускать пользователей, живущих в LDAP, нужно немного подправить /etc/pam.d/sshd

auth     required	pam_userpass.so
auth	 sufficient	pam_ldap.so use_first_pass
auth     required	pam_tcb.so shadow fork prefix=$2a$ count=8 nullok nodelay blank_nolog use_first_pass
auth     required	pam_nologin.so
account  include	system-auth
password include	system-auth
session  include	system-auth

Думаю, не будет лишним указать содержимое /etc/pam.d/system-auth и system-auth-use_first_pass

Предупреждение: с openssh-server версии openssh-3.6.1p2-alt6 из ALTLinux Master 2.4 pam_mkhomedir

НЕ РАБОТАЕТ

, это решенный баг. См. тж. ниже.

system-auth

#%PAM-1.0
auth     sufficient	pam_ldap.so
auth     required	pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass

account  sufficient	pam_ldap.so
account  required	pam_tcb.so shadow fork
password sufficient	pam_ldap.so
password required	pam_passwdqc.so min=disabled,24,12,8,7 max=40 passphrase=3 match=4 similar=deny random=42 enforce=users retry=3
password required	pam_tcb.so use_authtok shadow fork prefix=$2a$ count=8 write_to=tcb
session  required       pam_mkhomedir.so skel=/etc/skel/ umask=0026

session  sufficient	pam_ldap.so
#session  required      pam_mkhomedir.so skel=/etc/skel/ umask=0026
session  required	pam_tcb.so
session  required	pam_limits.so
system-auth-use_first_pass
#%PAM-1.0
#auth     required	pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass
#password required	pam_tcb.so use_authtok shadow fork prefix=$2a$ count=8 write_to=tcb
auth sufficient /lib/security/pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass
auth required /lib/security/pam_ldap.so use_first_pass
password sufficient /lib/security/pam_ldap.so use_authok
password required /lib/security/pam_tcb.so use_authtok shadow fork prefix=$2a$ count=8 write_to=tcb

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

Date: Fri, 27 May 2005 13:24:49 +0400
From: "Dmitry V. Levin" <ldv@>
To: <sisyphus@>
Subject: Re: [sisyphus] openssh update

PAM session management в openssh той версии, которая находится в
Сизифе/дистрибутивах и использует privilege separation, исполняется
с правами пользователя, а не root'а.  Как следствие,
- pam_mktemp не сможет создать подкаталог в /tmp/.private/ с нужными
  правами, если его там нет;
- pam_mkhomedir не сможет создать подкаталог с нужными правами, если его
  там нет;
- pam_limits не сможет увеличить лимиты сверх тех, что есть у процесса
  openssh.

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

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

Как отучить взломщиков подбирать пароли

Например, можно перенести sshd на другой порт, а на родной порт (22) ssh натравить portsentry.

On Mon, Sep 26, 2005 at 12:28:57PM +0400, ABATAPA wrote:
> Можно сделать еще проще: разрешить такие пакеты не чаще, скажем, N в 5 минут с 
> каждой сети C средствами IPTables. Если сам ошибся - можно и подождать.
wrar:
Разве это не limit делается?

Так же целесообразно ограничить число «ожидающих» соединений, когда пароль еще не введен. Для этого, в файле /etc/openssh/sshd_config укажите строку

MaxStartups 2:70:10

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

Для особо изощрённой защиты можно использовать knock. См. также http://www.linux.com/article.pl?sid=05/09/15/1655234 и http://fail2ban.sourceforge.net/ И ещё http://www.csc.liv.ac.uk/~greg/sshdfilter/

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

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

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

$ ssh-copy-id

например,

$ ssh-copy_id -i friends_pub_key myserver

Ссылки