Защищенная оболочка SSH

(Часть 2)

Установка защищенной оболочки

Ssh довольно легко устанавливается на любых Unix-системах. Используется gnu autoconf для генерации конфигурационного shell-сценария. В большинстве случаев этот сценарий сам определит, что ему нужно знать о Вашей системе, и сгенерирует набор строительных "makefiles." Вы захотите, возможно, переопределить некоторые из опций для своей локальной установки. Чтобы начать процесс установки, скачайте свежую версию дистрибутива ssh с ftp-сервера. На сегодняшний день последняя версия 1.2.22. Получив дистрибутив, разархивирyйте (untar) его в локальный каталог. При использовании gnutar, команда выглядит так:

gtar -xzvf ssh-1.2.22.tar.gz

При этом создастся каталог ssh-1.2.22, который содержит все необходимые файлы для построения ssh. Ssh поставляется со своей собственной версией gnu multiprecision library (gmp), которая была специально для него модифицирована. Ssh содержит также gnu compression library (zlib). Теперь после разархивирования исходных файлов, перейдите в каталог ssh. Если Вас устраивают значения по умолчанию, можно просто начать конфигурационный процесс:

./configure

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

./configure --help

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

Вот те опции, которые вы можете захотеть изменить по сравнению с их значениями по умолчанию:

--prefix=
(/usr/local)

--exec-prefix= (--prefix's value)

Эти опции сообщают процессу конфигурации конечные каталоги для программ и файлов поддержки.

--x-includes= (search)
--x-libraries= (search)


--with-idea (default)
--without-idea

Здесь указывается не включать поддержку для шифрования IDEA. IDEA требует в большинстве стран лицензии на коммерчесkое использование.

--with-login[=] (no)

Дается указание использовать /bin/login (или ) для завершения соединения. Обычно ssh сам осуществляет этапы регистрации, но некоторые узлы имеют специальные программы регистрации, и данная опция позволяет не вставлять соотаетствующий код в сам ssh, а вызывать эти специализированные прогпаммы регистрации.

--with-rsh[=]
--without-rsh
--program-transform-name='program' (no default)

Здесь ssh указывается где будут находится r-программы, когда ssh потребуется вернуться к использованию rsh. Ssh сконструирован так, что он может быть установлен для замены существующих r-команд, но автоматически переключится на использование rsh, если удаленный хост не поддерживает ssh. Для этих целей ssh должен знать каталог, где находятся rsh, rlogin и rcp.

--with-etcdir= (/etc)

Это каталог, который будет содержать системные файлы ssh. Именно здесь находятся host keys, конфигурационные файлы и т.д.

 
--with-securid[=] (no)

Это обеспечивает поддержку системы аутентификации SecurID фирмы Security Dynamics. Необязательный параметр пути указывает процедуре конфигурации, где найти заголовочные файлы и библиотеку sdiclient.a.

--with-tis[=] (no)


--with-kerberos5[=] (no)

Эта опция обеспечивает поддержку Kerberos версия 5 для аутентификации пользователей. Если путь не указан, то при конфигурировании по умолчанию будет использовано /usr/local для корня дерева установки Kerberos.

--with-libwrap[=] (no)

Эта опция обеспечивает поддержку библиотеки tcp_wrapper. Необязательный путь указывает, где найти библиотеку, если она отсуствует в локальном каталоге. Заголовочный файл tcpd.h ищется в стандартном пути для include.

--with-socks (no)
--with-socks4[=] (no)
--with-socks5[=] (no)

Обеспечивает поддержку socks proxy. Если Вы используете опцию --with-socks, то процесс конфигурации попытается сначала найти библиотеку libsocks5, а затем библиотеку libsocks версии 4.

--with-rsaref[=] (no)


--enable-group-writeability yes|no (no)

Обычно sshd проверяет, что файлы аутентификации пользователя могут изменяться только пользователем. Установка данной опции разрешает право записи в файлы для членов группы. Делать это надо осторожно, поскольку такое изменение распространяется на всю систему.

--disable-server-port-forwardings (no)
--disable-client-port-forwardings (no)
--disable-server-x11-forwarding (no)
--disable-client-x11-forwarding (no)

Эти опции отменяют переадресовку произвольных TCP портов или X11 как для клиента, так и для сервера.

--disable-asm (no)

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

./configure --with-rsh --prefix=/local --with-libwrap=. --with-rsaref
creating cache ./config.cache
checking host system type... sparc-sun-solaris2.5.1
checking cached information... ok
checking for gcc... gcc
checking whether the C compiler (gcc ) works... yes
[...]
checking whether to use libwrap... yes
checking whether to use rsaref... yes
[...]
creating ./config.status
creating Makefile
creating sshd.8
creating ssh.1
creating make-ssh-known-hosts.1
creating zlib-1.0.4/Makefile
creating config.h

После окончания процесса конфигурации наберите make, а затем make install. Если Вы не уверены, что именно будет установлено где, то можно набрать make -n install, и Вы увидите, что должно произойти при установке.

После установки ssh, необходимо запустить daemon. Кроме того нужно сконфигурить Daemon, чтобы он всегда запускался при загрузке машины. Этого можно добиться с помощью inetd, но такой путь не рекомендуется из-за начальной задержки при запуске daemon и генерации нового серверного ключа. Лучше запускать daemon отдельно (standalone) через сценарий запуска Вашей системы. Для Solaris, поместите сценарий в /etc/init.d и установите ссылку (link) в стартовый каталог rc3.d с соответствующим именем. Пример можно увидеть по адресу http://sunsite.unc.edu/pub/packages/security/ssh/contrib/solaris-autostart.

Конфигурация сервера - опции командной строки для sshd

Поскольку многие опции командной строки sshd можно задать в конфигурационном файле, мы рассмотрим только те, которые доступны лишь в командной строке. Опции для sshd включают:

    
    -d

Режим отладки.

 
    -f  

Эта опция указывает местоположение и имя конфигурационного файла. Значение по умолчанию /etc/sshd_config.

    
    -i 

Эта опция указывает ssh, что он работает под inetd. Это не рекомендуется поскольку sshd должен сгенерить серверный ключ до связи с клиентом, что вызывает заметную задержку для клиента. Установки конфигурационного файла для sshd Конфигурационный файл для sshd (/etc/sshd_config) позволяет Вам установить опции, меняющие работу демона. Ниже приведены основные ключевые слова.

AllowHosts шаблон
AllowUsers шаблон 
AllowGroups шаблон 

Эти ключевые слова определяют набор хостов, пользователей или пользователей в первичной групе (группе пользователя по умолчанию), которым разрешено соединение или регистрация в системе. Шаблон - это разделенный пробелами список хостов, регистрационных или групповых имен и может содержать модификаторы (wildcards) '*' и '?'. Никакие другие системы или пользователи не имеют доступа (tcp_wrappers обычно бывают полезнее, чем AllowHosts).

DenyHosts pattern
DenyUsers pattern
DenyGroups pattern

Обратное по отношению к AllowHosts, AllowUsers и AllowGroups. Эти ключевые слова определяют набор хостов, пользователей или пользователей в первичной групе, которым не разрешено соединение или регистрация в системе. Шаблон - это разделенный пробелами список хостов, регистрационных или групповых имен и может содержать модификаторы (wildcards) '*' и '?'. Все другие системы или пользователи имеют доступ

X11Forwarding yes|no (yes)

Приятным свойством ssh является автоматическая переадресация сеансов X11 по шифрованному каналу. Данная опция позволяет отменить указанную переадресацию.

AllowTCPForwarding yes|no (yes)

При значении "no" отменяет переадресацию произволтных TCP портов по шифрованному каналу.

IgnoreRhosts yes|no (no)

Запрещает использование файлов пользователя .rhosts или .shosts для аутентификации. /etc/hosts.equiv и /etc/shosts.equiv остаются действительными.

PermitRootLogin yes|no|nopwd (yes)

Указывает возможность регистрации root через ssh. Nopwd запрещает использование пароля для регистраций root, но другие формы аутентификации сохрвняют силу.

PrintMotd yes|no (yes)

Указывает sshd выводить на экран содержимое /etc/motd во время регистрации.

RhostsAuthentication yes|no (no)
RhostsRSAAuthentication yes|no (yes)
RSAAuthentication yes|no (yes)
KerberosAuthentication yes|no (yes)
TISAuthentication yes|no (no)

Указываются разрешенные типы пользовательской аутентификации. Примечание: RhostsAuthentication по умолчанию отменено при компиляции. Kerberos и TIS требуют предварительного конфигурирования до компиляции.

StrictModes yes|no (yes)

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

SyslogFacility DAEMON | USER | AUTH | LOCAL[0-7] (DAEMON)

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

Umask numeric-value (no umask set)

Устанавливает umask по умолчанию для sshd и всех его "потомков".

Конфигурирование клиента: Опции командной стоки для ssh

Ка и для sshd, многие опции командной строки клиента продублированы в конфигурационном файле.

    -f 
    -n 

    -l login_name 
    -o option 

    -p port 
    -t 
    -L local_port:host:host_port 
    -R server_port:host:host_port 
    -v 
    -V 
 

Установки конфигурационного файла для ssh

Конфигурационные файлы для клиентских программ находятся в двух местах. Общесистемный конфигурационный файл лежит в /etc/ssh_config. Конфигурационный файл пользователя лежит в $HOME/.ssh/config.

Host шаблон

Hostname hostname

User username

Cipher idea | 3des | blowfish (IDEA)

Compression yes|no (no)

FallBackToRsh yes|no (yes)

ForwardX11 yes|no (yes)

LocalForward port host:port
RemoteForward port host:port

RhostsAuthentication yes|no
RhostsRSAAuthentication yes|no
RSAAuthentication yes|no
PasswordAuthentication yes|no
KerberosAuthentication yes|no
TISAuthentication yes|no


StrictHostKeyChecking yes|no|ask (ask)

Допонительные средства безопасности

Ssh имеет дополнительные возможности, которые делают его еще более безопасным для удаленного администрирования. Сюда относится возможность ssh управлять функциональностью определенного ключа при регистрации. (Это свойство требует исполбзования RSA Authentication.) Управление осуществляется с помощью опций в файле $HOME/.ssh/authorized_keys.

TCP wrappers

Пакет tcp_wrappers (Wietse Venema) обеспечивает дополнительные свойства безопасности, которыми может воспользоваться ssh. Если ssh скомпилированн с возможносью использовать, то Вы получаете возможность управлять основными ssh-соединениями, переадресацией X11 и переадресацинй TCP портов с помощью файлов /etc/hosts.allow и /etc/hosts.deny, которые управляют также другими "wrapped"-приложениями. Ключевые слова для использования в файлах allow и deny: sshdfwd-X11, sshdfwd- или sshdfwd-. Если переадресуемый порт имеет запись в файле /etc/services file, то должно использоваться имя службы (service).

Сервер контролирует доступ к любому удаленному переадресованному портк (используя опции -R или RemoteForward), а клиент контролирует доступ ко любому из переадресуемых локальных портов (используя -L или LocalForward). Когда хост пытается соединится с переадресуемым портом, этот хост проверяется относительно содержимого файлов /etc/hosts.allow и /etc/hosts.deny, и принимается соответствующее решение о предоставлении доступа.

Итак, Ssh является мощным инструментом, который может помочь Вам улучшить защищенность Ваших систем. Его улучшенная аутентификация пользователей и сквозное шифрование позволяют предотвратить многие опасности, подстерегающие сетевые системы. Даже незащищенные tcp-протоколы могут стать безопасными при переадресации по защищенным каналам ssh.

При использовании ssh, необходимо выработать определенную политику соединений. Сюда должны относиться переадресация портов и X11, доступ root, и т.д. Системные конфигурационные файлы (ка для сервера, так и для клиентов) должны проверяться на соответствие с такой политикой доступа. Для систем, нуждающихся в повышенной безопасности, должны быть отменены альтернативные механизмы соединения вроде telnet или rsh.

Ресурсы

  • ssh ftp site ftp://ftp.cs.hut.fi/pub/ssh
  • http://www.securitydynamics.com/
  • TIS firewall toolkit http://www.tis.com
  • Kerberos FAQ http://www.ov.com/misc/krb-faq.html
  • tcp_wrapper library ftp://ftp.win.tue.nl/pub/security/index.html
  • Wietse Venema's tcp_wrappers package ftp://ftp.win.tue.nl/pub/security/tcp_wrappers_7.6.tar.gz
  • Secrets of a Super Hacker, by The Knightmare, Loompanics Unlimited http://www.amazon.com/exec/obidos/ISBN=1559501065/sunworldonlineA
  • Loompanics Unlimited http://www.loompanics.com
  • CERT* Summary CS-98.01 - SPECIAL EDITION ftp://ftp.cert.org/pub/cert_summaries/CS-98.01
  • Casper Dik's fastpatch ftp://ftp.wins.uva.nl/pub/comp/solaris/auto-install
  • Joe Shamblin's PatchReport ftp://x86.cs.duke.edu/pub/PatchReport/

Версии ssh

  • Datafellows (commercial version) http://www.Datafellows.com
  • Windows 95/NT http://guardian.htu.tuwien.ac.at/therapy/ssh
  • Another Windows 95/NT http://public.srce.hr/~cigaly/ssh
  • OS/2 ftp://ftp.cs.hut.fi/pub/ssh/os2
  • PalmPilot http://www.isaac.cs.berkeley.edu/pilot
  • Amiga http://www.lysator.liu.se/~lilja/amigassh
  • http://www.aminet.org

документация по ssh

  • ssh home page http://www.cs.hut.fi/ssh
  • ssh FAQ http://www.uni-karlsruhe.de/~ig25/ssh-faq
  • Kimmo Suominen's ssh tutorial http://www.tac.nyc.ny.us/~kim/ssh

newsgroup - comp.security.ssh

Новости в области безопасности

  • CERT ssh security advisory ftp://info.cert.org/pub/cert_advisories/CA-98.03.ssh-agent
  • CERT Apache security advisory ftp://ftp.cert.org/pub/cert_bulletins/VB-98.02.apache
  • SunSolve обжедоступная страница исправлений http://sunsolve.sun.com/sunsolve/pubpatches/patches.html