L i n u x P a r k при поддержке ВебКлуба |
Назад | Оглавление | Вперед |
Глава 11 Программы обеспечения безопасности (Сетевые сервисы) - SSH2В этой главеLinux OpenSSH Клиент/Сервер Конфигурация Настройка OpenSSH для использования с TCP-Wrappers inetd супер сервером Конфигурирование OpenSSH для каждого пользователя Утилиты пользователя OpenSSH Linux SSH2 Клиент/Сервер Конфигурации Настройка SSH2 для использования с TCP-Wrappers inetd супер сервером Конфигурирование SSH2 для каждого пользователя Утилиты пользователя SSH2 |
Сейчас стало ясно, что все пользователи Linux, должны использовать OpenSSH вместо SSH2 от компании Datafellows. Однако, для пользователей и организаций, которые хотят использовать коммерческую версию этого программного обеспечения, мы приводим следующее описание. Это SSH2 √ коммерческая версия SSH. В нашей конфигурации мы настраиваем SSH2 на поддержку работы с TCP-Wrappers из соображений безопасности.
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам ⌠/var/tmp■ (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем ⌠root■.
SSH2 версии 2.0.13
Пакеты.
Домашняя страница SSH2: http://www.ssh.org/
Вы должны скачать: ssh-2.0.13.tar.gz
Тарболы.
Хорошей идеей будет создать список файлов установленных в вашей системе до инсталляции SSH2 и после, в результате, с помощью утилиты diff вы сможете узнать какие файлы были установлены. Например,
До инсталляции:
find /* > SSH1
После инсталляции:
find /* > SSH2
Для получения списка установленных файлов:
diff SSH1 SSH2 > SSH2-Installed
Раскройте тарбол:
[root@deep /]# cp ssh-version.tar.gz /var/tmpПереместитесь в новый каталог SSH2 и выполните следующие команды:
CC="egcs" \Вышеприведенные опции говорят SSH2 следующее:
Команда "make clean" удаляет все предыдущие следы компиляции, чтобы избежать любых ошибок. Команда ⌠make■ компилирует все исходные файлы в исполняемые и в заключении команда ⌠make install■ инсталлирует двоичные и сопутствующие им файлы в определенное место.
Очистка после работы.
[root@deep /]# cd /var/tmpКоманда ⌠rm■, использованная выше, будет удалять все исходные коды, которые мы использовали при компиляции и инсталляции SSH2. Она также удалит .tar.gz архив.
Все программное обеспечение, описанное в книге, имеет определенный каталог
и подкаталог в архиве ⌠floppy.tgz■, включающей все конфигурационные файлы
для всех программ. Если вы скачаете этот файл, то вам не нужно будет вручную
воспроизводить файлы из книги, чтобы создать свои файлы конфигурации.
Скопируйте файл из архива и измените его под свои требования. Затем
поместите его в соответствующее место на сервере, так как это показано ниже.
Файл с конфигурациями вы можете скачать с адреса:
http://www.openna.com/books/floppy.tgz
Для запуска SSH2 клиента/сервера следующие файлы должны быть созданы или скопированы в нужный каталог:
Копируйте ssh2_config в каталог ⌠/etc/ssh2/■.
Копируйте sshd2_config в каталог ⌠/etc/ssh2/■.
Копируйте sshd в каталог ⌠/etc/pam.d/■.
Вы можете взять эти файлы из нашего архива floppy.tgz.
Файл ⌠/etc/ssh2/ssh2_config■ это конфигурационный файл для SSH2, действующий в масштабах системы, который определяет опции изменяющие действия клиентских программ. Он содержит пары ключ-значение, записанных в одну на строку, не зависящие от регистра. Здесь описаны наиболее важные ключи влияющие на безопасность; полный список вы можете найти странице руководства для ssh2 (1).
Редактируйте файл ssh2_config (vi /etc/ssh2/ssh2_config) и добавьте/или измените следующие параметры:
# ssh2_config # SSH 2.0 Client Configuration File *: Port 22 Ciphers blowfish Compression yes IdentityFile identification AuthorizationFile authorization RandomSeedFile random_seed VerboseMode no ForwardAgent no ForwardX11 no PasswordPrompt "%U's password: " Ssh1Compatibility no Ssh1AgentCompatibility none NoDelay yes KeepAlive yes QuietMode no
Port 22<br> Опция ⌠Port■ определяет на какой порт ssh присоединяется на удаленнный компьютер. По умолчанию √ 22.
Ciphers blowfish
Опция ⌠Ciphers■ определяет какой шифр должен быть использован для
шифрования сессии. blowfish использует 64-битные блоки и ключи до 448 бит.
Compression yes
Опция ⌠Compression■ определяет использовать ли во время сессии сжатие.
Сжате будет улучшать скорость связи и обмена файлами.
IdentityFile identification
Опция ⌠IdentityFile■ определяет альтернативное имя для пользовательского
идентификационного файла.
AuthorizationFile authorization
Опция ⌠AuthorizationFile■ определяет альтернативное имя для
пользовательского файла авторизации.
RandomSeedFile random_seed
Опция ⌠RandomSeedFile■ определяет альтернативное имя для пользовательского
файла с начальным числом для генерации псевдослучайных чисел (random seed
file).
VerboseMode no
Опция ⌠VerboseMode■ заставляет ssh2 печатать отладочные сообщения о ходе
его работы. Эта опция полезна при отладочных соединениях и проблемах с
настройками.
ForwardAgent no
Опция ⌠ForwardAgent■ определяет какой агент установления подлинности
соединения должен быть направлен на удаленную машину.
ForwardX11 no
Опция ⌠ForwardX11■ для людей, которые используют Xwindow GUI и хотят
автоматически перенаправлять сессии X11 на удаленную машину. Так как мы
устанавливали сервер и не инсталлировали GUI, мы можем спокойно
выключить эту опцию.
PasswordPrompt "%U's password: "
Опция ⌠PasswordPrompt■ определяет строку запроса пароля, которая будет
выводится пользователю, когда он подключается к системе. Переменные '%U' и
'%H' дают имя пользователя и хоста соответственно.
Ssh1Compatibility no
Опция ⌠Ssh1Compatibility■ определяет будут или нет использоваться SSH1
совместимые коды в SSH2 для ssh1 пользователей.
Ssh1AgentCompatibility none
Опция ⌠Ssh1AgentCompatibility■ определяет будет или нет направляться SSH1
агент соединений с SSH2 для пользователей ssh1.
NoDelay yes
Опция ⌠NoDelay■ определяет, что опция сокета TCP_NODELAY должна быть
включена. Рекомендуется установить ее в ⌠yes■ для улучшения сетевой
производительности.
KeepAlive yes
Опция ⌠KeepAlive■ определяет должна ли система отправлять keep alive
сообщения на удаленный сервер. Если эта опция установлена в ⌠yes■, то в
случае разрыва соединения или аварийного отказа удаленной машины будет
получено корректное извещение.
QuietMode no
Опция ⌠QuietMode■ определяет будет ли система запущена в тихом режиме. Эта
опция должна быть установлена в ⌠no■, потому что в бесшумном режиме,
никакой информации не заносится в с системные журналы регистрации, за
исключением фатальных ошибок. Так как мы хотим иметь информацию о
пользовательских сессиях, нам надо установить опцию в ⌠no■.
Файл ⌠/etc/ssh2/sshd2_config■ это конфигурационный файл для SSH2, действующий в масштабах системы, который определяет опции изменяющие действия демона. Он содержит пары ключ-значение, одну на строку, не зависящие от регистра. Здесь описаны наиболее важные ключи влияющие на безопасность sshd; полный список вы можете найти в man странице для sshd2 (8).
Редактируйте файл sshd2_config (vi /etc/ssh2/sshd2_config) и добавьте/или измените следующие параметры:
# sshd2_config # SSH 2.0 Server Configuration File *: Port 22 ListenAddress 192.168.1.1 Ciphers blowfish IdentityFile identification AuthorizationFile authorization HostKeyFile hostkey PublicHostKeyFile hostkey.pub RandomSeedFile random_seed ForwardAgent no ForwardX11 no PasswordGuesses 3 MaxConnections 5 PermitRootLogin no AllowedAuthentications publickey,password RequiredAuthentications publickey,password VerboseMode no PrintMotd yes CheckMail yes UserConfigDirectory "%D/.ssh2" SyslogFacility DAEMON Ssh1Compatibility no NoDelay yes KeepAlive yes UserKnownHosts yes AllowHosts 192.168.1.4 DenyHosts * QuietMode no # subsystem definitions subsystem-sftp sftp-server
Port 22
Опция ⌠Port■ определяет какой порт слушает ssh2 демон для входящих
соединений. По умолчанию - 22.
ListenAddress 192.168.1.1
Опция ⌠ListenAddress■ определяет IP адрес интерфейса к которому подключен
сокет ssh демона. По умолчанию это ⌠0.0.0.0■; для улучшения безопасности вы
можете ограничиться только одним адресом.
Ciphers blowfish
Опция ⌠Ciphers■ определяет какой шифр должен быть использован для
шифрования сессии. blowfish использует 64-битные блоки и ключи до 448 бит.
IdentityFile identification
Опция ⌠IdentityFile■ определяет альтернативное имя для идентификационного
файла пользователей.
AuthorizationFile authorization
Опция ⌠AuthorizationFile■ задает альтернативное имя для файла полномочий
пользователей (user's authorization file).
HostKeyFile hostkey
Опция ⌠HostKeyFile■ определяет место содержащее приватный ключ сервера.
По умолчанию ⌠/etc/ssh2/hostkey■.
PublicHostKeyFile hostkey.pub
Опция ⌠PublicHostKeyFile■ определяет альтернативный файл содержащий
публичный ключ сервера. По умолчанию - ⌠/etc/ssh2/hostkey.pub■.
RandomSeedFile random_seed
Опция ⌠RandomSeedFile■ определяет альтернативное имя для пользовательского
файла с начальным числом для генерации псевдослучайных чисел (random seed
file).
ForwardAgent no
Опция ⌠ForwardAgent■ определяет какой агент установления подлинности
соединения должен быть направлен на удаленную машину.
ForwardX11 no
Опция ⌠ForwardX11■ определяет должен ли сервер перенаправлять X11 пакеты
или нет. Так как мы установили сервер без GUI, то эту опцию устанавливаем в
no.
PasswordGuesses 3
Опция ⌠PasswordGuesses■ определяет как много попыток имеет пользователь,
чтобы ввести имя и пароль, при парольной аутентификации.
MaxConnections 5
Опция ⌠MaxConnections■ определяет максимальное число одновременных
соединений, которыми демон ssh2 может управлять.
PermitRootLogin no
Опция ⌠PermitRootLogin■ определяет может ли root подключаться, используя
ssh. Никогда не говорите ⌠yes■ в этой опции.
AllowedAuthentications publickey,password
Опция ⌠AllowedAuthentications■ определяет какие виды аутентификации
разрешено использовать. С этой опцией администратор может вынуждать
пользователей заканчивать несколько аутентификаций прежде чем они
расссматриваются как заверенные.
RequiredAuthentications publickey,password
Опция ⌠RequiredAuthentications■ связана с ⌠AllowedAuthentications■,
определяет какие метода аутентификации пользователь должен завершить
прежде чем продолжить свою работу. Этот параметр должен иметь те же
значения, что и ⌠AllowedAuthentications■ или сервер будет все время запрещать
соедиенния.
VerboseMode no
Опция ⌠VerboseMode■ заставляет демон ssh2 печатать отладочные сообщения о
ходе его работы. Эта опция полезна при отладочных соединениях и проблемах с
настройками.
PrintMotd yes
Опция ⌠PrintMotd■ определяет должен ли ssh2 демон печатать содержимое
файла ⌠/etc/motd■, когда пользователь входит на сервер. Файл ⌠/etc/motd■ также
известен как ⌠сообщение дня■.
CheckMail yes
Опция ⌠CheckMail■ определяет должен ли ssh2 демон печатать информацию о
новой почте, которая пришла пользователю.
UserConfigDirectory "%D/.ssh2"
Опция ⌠UserConfigDirectory■ определяет месторасположение
конфигурационных данных пользователей.
SyslogFacility DAEMON
Опция ⌠SyslogFacility■ определяет с какого средства (facility) поступают
сообщения в syslog от sshd2. facility представляет подсистему, которая создает
сообщение, в нашем случае DAEMON.
Ssh1Compatibility no
Опция ⌠Ssh1Compatibility■ определяет будут ли использоваться SSH1
совместимые коды в SSH2 для пользователей ssh1.
NoDelay yes
Опция ⌠NoDelay■ определяет, что опция сокета TCP_NODELAY должна быть
включена. Рекомендуется установить ее в ⌠yes■ для улучшения сетевой
производительности.
KeepAlive yes
Опция ⌠KeepAlive■ определяет должна ли система отправлять keep alive
сообщения на удаленный сервер. Если эта опция установлена в ⌠yes■, то в
случае разрыва соединения или аварийного отказа удаленной машины будет
получено корректное извещение.
UserKnownHosts yes
Опция ⌠UserKnownHosts■ определяет может ли быть использован домашний
каталог пользователя ⌠$HOME/.ssh2/knownhosts/■ для получения публичного
ключа хоста, когда используется "hostbased"-аутентификация.
AllowHosts 192.168.1.4
Опция ⌠AllowHosts■ определяет и контролирует какие компьютеры имеют
доступ к ssh2 сервису. Несколько хостов, разделенных пробелами, может быть
перечислено.
DenyHosts *
Опция ⌠DenyHosts■ определяет и контролирует какие хосты не имеют доступа к
ssh2 сервису. Несколько хостов, разделенных пробелами, может быть
перечислено. По умолчанию шаблон ⌠*■ означает все компьютеры.
QuietMode no
Опция ⌠QuietMode■ определяет будет ли система запущена в тихом режиме. Эта
опция должна быть установлена в ⌠no■, потому что в бесшумном режиме,
никакой информации не заносится в с системные журналы регистрации, за
исключением фатальных ошибок. Так как мы хотим иметь информацию о
пользовательских сессиях, нам надо установить опцию в ⌠no■.
Tcp-Wrappers может быть использован для запуска и остановки вашего ssh2 сервиса. Перед выполнением inetd читает информацию из конфигурационного файла /etc/inetd.conf.
Шаг 1.Редактируйте файл inetd.conf (vi /etc/inetd.conf) и добавьте в него следующую строку:
ssh stream tcp nowait root /usr/sbin/tcpd sshd √iЗАМЕЧАНИЕ. Параметр "-i" говорит, что sshd должен запускаться из inetd.
После редактирования файла ⌠etc/inetd.conf■ отправьте демону inetd сигнал SIGHUP, чтобы он перечитал файл конфигурации.
[root@deep /]# killall -HUP inetdРедактируйте файл hosts.allow file (vi /etc/hosts.allow) и добавьте следующую строку:
sshd: 192.168.1.4 win.openna.comКоторая значит, что клиенту с IP адресом ⌠192.168.1.4■ и именем компьютера ⌠win.openna.com■ разрешен ssh доступ к серверу.
Эти строки "демона" (для tcp-wrappers) используются sshd2:
ssh,ssh2 (может вызываться по имени ssh2 (обычно используется ssh)).
sshdfwd-X11 (если вы хотите разрешить/запретить X11-forwarding).
sshdfwd-<port-number> (для tcp-forwarding).
sshdfwd-<port-name> (номер порта определен в /etc/services. Ипсользуемый в
tcp-forwarding).
ЗАМЕЧАНИЕ. Если вы решили переключиться на использование ssh, сделайте так, чтобы вы инсталлировали и использовали его на всех ваших серверах. Наличие десяти защищенных серверов и одного незащищенного бесполезно.
Для лучшей безопасности вашего ssh2 сервера, вы можете настроить его на аутентификацию через PAM. Чтобы сделать это, надо создать файл ⌠/etc/pam.d/ssh■ file.
Создайте файл ssh (touch /etc/pam.d/ssh) и добавьте или измените, если нужно:
#%PAM-1.0Для получения большей информации, вот несколько man-страниц, которые можно прочитать:
$ man ssh-add2 (1) - добавляет identities агенту аутентификации
$ man ssh-agent2 (1) √ агент аутентификации
$ man ssh-keygen2 (1) √ генератор пары аутентификационных ключей
$ man ssh2 (1) - secure shell клиент (программа удаленного подключения)
$ man sshd2 (8) - secure shell демон
Создайте, локально, ваш личный и публичный ключи:
[root@deep /]# su adminСоздайте файл ⌠identification■ в вашем каталоге ⌠~/.ssh2■ на локальной машине:
[admin@deep]$ cd ~/.ssh2ЗАМЕЧАНИЕ. Опционально можно создать идентификационный файл и на удаленной машине. Он содержит имя приватного ключа, который используется при аутентификации.
Шаг 3Копируйте ваш публичный ключ с локальной машины (id_dsa_1024_a.pub) на удаленную в каталог ⌠~/.ssh2■ под именем, ⌠Local.pub■.
Шаг 4Создайте файл ⌠authorization■ в каталоге ⌠~/.ssh2■ на удаленной машине:
[admin@remote .ssh2]$ touch authorizationЗАМЕЧАНИЕ. ⌠~/■ означает ваш домашний каталог.
Шаг 5Добавьте следующую строку в файл ⌠authorization■ на удаленной машине:
[admin@remote .ssh2]$ vi authorization key Local.pubКоманды описанные ниже мы будем часто использовать, но на самом деле их много больше, и вы должны изучить man-страницы и документацию для получения деталей.
Ssh2⌠ssh2■ (Secure Shell) команда предоставляющая безопасную шифрованную связь между двумя недоверенными компьютерами через небезопасную сеть. Эта программа для безопасного подключения к удаленной машине и выполнения команд на ней. Она заменяет такие небезопасные программы, как telnet, rlogin, rcp, rdist и rsh.
Для подключения к удаленной машине используйте команду:
[root@deep /]# ssh2 -l <login_name> <hostname>например:
[root@deep /]# ssh2 -l admin www.openna.comГде <login_name> это имя, которое вы используете для соединения с ssh2 сервером и <hostname> это имя удаленного ssh2 сервера.
sftp2Утилита sftp2 (Secure File Transfer) √ это ftp-подобный клиент, который предоставляет возможность передачи файлов через сеть. До того, как начать использовать sftp2, вы должны подключиться к ssh2 серверу.
Для ftp через ssh2, используйте следующую команду:
[admin@deep /]$ sftp2 <hostname>Например:
[admin@deep /]$ sftp2 www.openna.comГде <hostname> - это имя удаленного сервера с которым вы хотите обмениваться файлами посредством sftp.
> /etc/pam.d/ssh > /etc/ssh2 > /etc/ssh2/hostkey > /etc/ssh2/hostkey.pub > /etc/ssh2/sshd2_config > /etc/ssh2/ssh2_config > /root/.ssh2 > /root/.ssh2/random_seed > /root/ssh2 > /usr/man/man1/ssh2.1 > /usr/man/man1/ssh-keygen2.1 > /usr/man/man1/ssh-add2.1 > /usr/man/man1/ssh-agent2.1 > /usr/man/man1/scp2.1 > /usr/man/man1/sftp2.1 > /usr/man/man1/ssh.1 > /usr/man/man1/ssh-add.1 > /usr/man/man1/ssh-agent.1 > /usr/man/man1/ssh-keygen.1 > /usr/man/man1/scp.1 > /usr/man/man1/sftp.1 > /usr/man/man8/sshd2.8 > /usr/man/man8/sshd.8 > /usr/bin/ssh2 > /usr/bin/scp2 > /usr/bin/sftp2 > /usr/bin/sftp-server2 > /usr/bin/ssh-agent2 > /usr/bin/ssh-keygen2 > /usr/bin/ssh-signer2 > /usr/bin/ssh-add2 > /usr/bin/ssh > /usr/bin/ssh-agent > /usr/bin/ssh-add > /usr/bin/ssh-askpass > /usr/bin/ssh-keygen > /usr/bin/scp > /usr/bin/sftp > /usr/bin/sftp-server > /usr/bin/ssh-signer > /usr/sbin/sshd2 > /usr/sbin/sshd
Назад | Оглавление | Вперед |