Зачем:
Получилось так, что за монитором, к которому была прикручена тестовая машина, с которой я статьи пишу, пришли злобные юзверы и сказали "отнимем". Ну что ж, надо - так надо, пусть отнимают...
Пока они посланы на перекур, сделаю-ка себе удаленный доступ на эту машину и отстегну им яблоко раздора…
Установка:
emerge -p openssh
[ebuild R ] net-misc/openssh-5.5_p1-r1
Оказывается, оно уже в системе есть, надо же, какие чудеса…
Настройка:
Для начала всех заинтересованных пошлю "курить до просветления" некие фундаментальные документы типа
1.
http://www.nixp.ru/articles/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D 0%B0-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0-SSH-%28%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F-%D0%B8-%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B0%2 9.html
2.
http://www.opennet.ru/docs/RUS/use_ssh/
Я же - просто приведу последовательность "с ноля" - как заставить все это работать.
И для этого создам пользователя-кошку, на котором и будем тренироваться.
adduser usertest
passwd usertest
mkdir /home/usertest
mkdir /home/usertest/.ssh
chmod -R 700 /home/usertest
От имени пользователя создадим ему ключи (приватная фраза, которую надо набрать, суть есть тот же пароль, так что делать длинным и запоминающимся):
usertest# ssh-keygen -t rsa -b 2048 -f $HOME/.ssh/id_rsa
usertest# ssh-keygen -t dsa -b 1024 -f $HOME/.ssh/id_dsa
usertest# cp $HOME/.ssh/id_rsa.pub $HOME/.ssh/authorized_keys
1. Подкладываю свой /etc/ssh/sshd_config
Код:
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 1m
PermitRootLogin no
StrictModes yes
MaxAuthTries 3
AllowUsers usertest
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
HostbasedAuthentication no
RhostsRSAAuthentication no
HostbasedAuthentication no
IgnoreUserKnownHosts no
IgnoreRhosts yes
PasswordAuthentication no
PermitEmptyPasswords no
ClientAliveInterval 0
ClientAliveCountMax 3
Compression delayed
MaxSessions 3
PrintMotd yes
PrintLastLog yes
UseDNS yes
Banner /etc/ssh/banner
Subsystem sftp /usr/lib/misc/sftp-server
2. Подкладываю свой /etc/ssh/ssh_config
Код:
ForwardX11 no
CheckHostIP yes
Port 22
Protocol 2
Cipher 3des
Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
3. Шутки ради приложу свой banner (/etc/ssh/banner):
Код:
Hi! SSH2 detected! Stop brutforce this node, stupid!
После всех "подкладываний" попробуем
testuser# ssh 192.168.0.xxx
ввод парольной фразы
Вуаля!
На самом же деле, что я сделал:
Завел своего типового пользователя, назначил ему пароль, взял с шифрованной флешки ключи и конфиги, создал все соответствующие каталоги и подсунул ключи-в-ключи, конфиги-в-конфиги. Не забыл добавить себя в группу wheel, чтобы изредка получать права рута.
Самое главное - выставить правильно права на файлы и каталоги, в противном случае будет отказ в соединении:
Права на домашний каталог:
testuser@router /home $ ls -al
drwx------ 11 testuser users 408 Май 6 15:12 testuser
Права на каталог ssh:
testuser@router ~ $ ls -al
drwx------ 2 testuser users 224 Мар 19 16:20 .ssh
Права на файлы ключей:
testuser@router ~/.ssh $ ls -al
-rw-r--r-- 1 testuser users 400 Фев 15 2008 authorized_keys
-rw------- 1 testuser users 736 Фев 15 2008 id_dsa
-rw-r--r-- 1 testuser users 608 Фев 15 2008 id_dsa.pub
-rw------- 1 testuser users 1743 Фев 15 2008 id_rsa
-rw-r--r-- 1 testuser users 400 Фев 15 2008 id_rsa.pub
-rw-r--r-- 1 testuser users 1994 Апр 1 12:17 known_hosts
Дополнительно:
Так как в 75% случаев я терминалюсь из всеми обожаемой Windows, то вопрос коннекта с линкусом решен следующим образом: Скачана и установлена программа
Putty, сделана запись на хост (из особых настроек только указание кодировки как UTF8 и расширил границы экрана). Ключ же, id_rsa, был конвертирован в abcd.ppk (родной для Putty формат ключей) программой
puttygen.exe (искать в каталоге, куда установлен Putty). Туннелирование средствами SSH расскажу, как появится на чем… …если доживу.
Безопасность:
В заблуждении своем SSH2 ключевой авторизации считаю довольно безопасной. Усилить ее можно, на мой взгляд, лишь контролем соединений через iptables - чтобы братья наши китайцы не долбились с перебором юзверов и паролей ssh1… и не засоряли логи.
Совсем, как всегда, забыл: неплохо было бы его добавить в автозагрузку:
rc-update add sshd default