LinuxForum.Fans
Тема

Безопасное удаленное управление (ssh)

Автор: forkostya 8 сообщений 12852 просмотров
#1443

Автор: Кузнецов Константин

Безопасное удаленное управление (ssh)

План:
1. Введение в удаленное управление
2. ssh - неотъемлемый инструмент администратора
3. Установка, настройка, управление
4. Используемая и рекомендуемая литература

-----------------------------------------------------------------------------------------

1. Введение в удаленное управление

Мечта и цель любого администратора - приложить максимально усилий к тому, чтобы ничего не делать. То есть настроить сервер так, чтобы он не ломался и работал исправно. Но если вдруг что-то пошло не так, или просто необходимо внести некоторые изменения в систему, хороший (ленивый) администратор будет делать это именно через удаленное управление. Но случае с Ubuntu-server обычно у нас не будет никакой графической оболочки, то есть всякие VNC отпадают сразу же. В данной статье я расскажу, с помощью каких средств можно управлять нашим удаленным сервером из любой точки земного шара через глобальную сеть Интернет так, чтобы это было удобно и безопасно.

-----------------------------------------------------------------------------------------

2. ssh - неотъемлемый инструмент администратора

SSH (англ. Secure Shell — «безопасная оболочка»[1]) — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы имеются для большинства сетевых операционных систем.

SSH позволяет безопасно передавать в незащищенной среде практически любой другой сетевой протокол, таким образом, можно не только удаленно работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры)[2]. Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удаленного запуска клиентов X Window System.

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

-----------------------------------------------------------------------------------------

3. Установка, настройка, управление

Итак, установив на наш сервер операционную систему, мы можем отключить от него монитор, мышь, клавиатуру и убрать в серверную, т.к. управлять мы им будем удаленно с любого компьютера. Но прежде чем сделать это, нам необходимо убедиться в том, что мы сможем к нему удаленно подключиться. Соединяться мы будем по протоколу ssh (tcp порт 22). Для этого нам сначала нужно установить пакет openssh-server, либо проверить, вдруг он уже установлен.
В системе debian/ubuntu это делается так:

text
dpkg -l|grep openssh-server

Вывод будет приблизительно таким (если ssh установлен):

ii openssh-client 4.3p2-9 Secure shell client, an rlogin/rsh/rcp repla
ii openssh-server 4.3p2-9 Secure shell server, an rshd replacement
ii ssh 4.3p2-9etch2 Secure shell client and server (transitional
Если программа не установлена, то ставим
text
apt-get install openssh-server

Проверяем, запущен ли процесс, принимающий соединения ssh:

text
$ ps -e|grep ssh
3070       ?    00:00:00    sshd

Проверяем, слушает ли эта служба внешние соединения и на каком порту (от имени администратора):

text
$ sudo netstat –pnat|grep ssh
tcp    0 0 0.0.0.0:22    0.0.0.0:*    LISTEN 3070/sshd

Порт tcp №22, как мы и предполагали. Значит, ничто не может нам помешать, при соединении с сервером по этому протоколу кроме файерволов на удаленном и на локальном компьютере.
Клиентское ПО для соединения с сервером по протоколу ssh называется PuTTy для windows или windows mobile и openssh-client для linux, который уже входит в поставку дистрибутива ubuntu.
Для безопасности советую перенастроить ssh-сервер на другой свободный порт, например 2222 или 3333. Это действительно помогает, так как после подключения сервера к сети Интернет, на 22 порт пытаются подсоединиться разные вредоносные программы, подбирающие пароль. При соединении с удаленным сервером нам выдается предложение авторизоваться на сервере. Т.е. необходимо ввести имя учетной записи и пароль. При этом ввод пароля вообще никак не отображается (ни звездочками, ни точечками).

Изменяем слушаемый порт
Нам необходимо авторизоваться на сервере под учетной записью root, изменить конфигурационный файл /etc/openssh/sshd_config и перезапустить этот сервис. Для этого подключаемся и изменяем в конфиге строчку

#Port 22
на
Port 2222
Перезапускаем сервис
text
/etc/init.d/sshd restart

Не забудьте изменить правила файервола, если он у Вас уже настроен.

Авторизация по ключам
Помимо авторизации на удаленном сервере с использованием пароля, можно использовать авторизацию по ключам (публичный и приватный), что сильно повышает безопасность не только нашего сервера, но и передаваемой по протоколу ssh информации. К тому же этот метод даёт возможность подключаться к серверу без ввода пароля, что может пригодиться для автоматического подключения. Для этого меняем на сервере в конфигурационном файле /etc/ssh/sshd_config значения:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Тут должно быть все понятно. Метод шифрования, Аутентификация по открытому ключу и файл с хранимыми публичными ключами, с помощью которых будем расшифровывать принимаемые данные. После этого перезагружаем сервис. На клиентской машине нам необходимо сгенерировать два файла - открытый (публичный) и закрытый (приватный) ключи. Для этого выполняем команду
text
ssh-keygen -t rsa

если хотим заходить с помощью этого ключа без ввода пароля, то на вопрос просто жмем enter. Получили файлы id_rsa и id_rsa.pub, которые легли в директорию /home/user/.ssh. Публичный ключ необходимо скопировать на сервер, например, командой

text
scp ~/.ssh/id_rsa.pub [пользователь@]машина:/home/user/

или лучше

text
ssh-copy-id [-i файл_идентификации]* [пользователь@]машина

Далее заходим на сервер и добавляем принятый ключ в файл с хранимыми ключами, по которым разрешено подключаться

text
cat id_rsa.pub >> /home/user/.ssh/authorized_keys

После этого на сервере можно отключить аутентификацию по паролям, а подключаться к нему мы будем командой

text
ssh -p 2222 user@computername

-----------------------------------------------------------------------------------------

4. Используемая и рекомендуемая литература

http://ru.wikipedia.org/wiki/SSH
OpenSSH: настройки, секреты, трюки и советы
20 советов по безопасному использованию сервера OpenSSH
Аутентификация на SSH сервере с использованием ключей

#41475

Только недавно установил Ubuntu server, подскажите как редактировать:

text
/etc/openssh/sshd_config

Или как авторизироваться под рутом. С помощью пароля суперпользователя авторизироватся не получается...

З.Ы. Не могу авторизироваться если набираю имя пользователя@хост:

text
ssh nigelist@proxy

Пишет что неправильный пароль:

text
Permission denied, please try again.

А если авторизироваться через ip все проходит номально?

text
ssh nigelist@192.168.29.*

З.З.Ы. Хотя через PuTTY нормально авторизируется через хост

___________________________________________________________________
Добавлено: 15.05.2010г. 14:13 РМ


Кажется в статье неправильно указан путь до sshd_config, по этому пути у меня ничего нет:

text
/etc/openssh/sshd_config

Зато есть здесь:

text
/etc/ssh/sshd_config
#41497
forkostya написал:
изменить конфигурационный файл /etc/openssh/sshd_config и перезапустить

и

Nigelist написал:
Для этого меняем на сервере в конфигурационном файле /etc/ssh/sshd_config значения:

в первом случае скорее всего опечатка, правильно /etc/ssh/sshd_config

#41507

i2ks, подскажите как изменить на клиентской машине порт через который я подключаюсь к серверу? Чтобы не набирать каждый раз:

text
ssh -p 2222 user@host
#41508
Nigelist написал:
i2ks, подскажите как изменить на клиентской машине порт через который я подключаюсь к серверу? Чтобы не набирать каждый раз:
text
ssh -p 2222 user@host

настройки клиента смотрите, а так же файл /etc/ssh_config
пример:

text

tcp        0      0 ::1:49077                   ::1:2222                    ESTABLISHED 
tcp        0      0 ::1:2222                    ::1:49077                   ESTABLISHED 

who

text

i2ks     pts/1        2010-05-15 12:48 (localhost)
i2ks     pts/2        2010-05-15 12:49 (:0.0)

/etc/ssh_config

text

...
Port 2222
...

/etc/ssh_sshd_config

text

...
Port 2222
...
#41509

Также в ответ на команду:

text
/etc/init.d/sshd restart

Пишет:

text
-bash: /etc/init.d/sshd: Нет такого файла или каталога
#42313

Ну там надо посмотреть, может /etc/init.d/opensshd ?

#42350

forkostya, спасибо, но уже разобрался. В Ubuntu 10.04 это сейчас делается так:

text
service sshd restart
service sshd start
service sshd stop
Войдите или зарегистрируйтесь, чтобы ответить.