пятница, 28 декабря 2012 г.

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


Безопасное удаленное управление (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 это делается так:
Код: Выделить всё
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
Если программа не установлена, то ставим
Код: Выделить всё
apt-get install openssh-server
Проверяем, запущен ли процесс, принимающий соединения ssh:
Код: Выделить всё
$ ps -e|grep ssh
3070       ?    00:00:00    sshd
Проверяем, слушает ли эта служба внешние соединения и на каком порту (от имени администратора):
Код: Выделить всё
$ 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
Перезапускаем сервис
Код: Выделить всё
/etc/init.d/sshd restart
Не забудьте изменить правила файервола, если он у Вас уже настроен.

Авторизация по ключам
Помимо авторизации на удаленном сервере с использованием пароля можно использовать авторизацию по ключам (публичный и приватный), что сильно повышает безопасность не только нашего сервера, но и передаваемой по протоколу ssh информации. К тому же этот метод даёт возможность подключаться к серверу без ввода пароля, что может пригодиться для автоматического подключения. Для этого меняем на сервере в конфигурационном файле /etc/ssh/sshd_config значения на следующие:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Тут должно быть все понятно. Метод шифрования, аутентификация по открытому ключу и файл с хранимыми публичными ключами, с помощью которых будем расшифровывать принимаемые данные. После этого перезагружаем сервис. На клиентской машине нам необходимо сгенерировать два файла - открытый (публичный) и закрытый (приватный) ключи. Для этого выполняем команду
Код: Выделить всё
ssh-keygen -t rsa
если хотим заходить с помощью этого ключа без ввода пароля, то на вопрос просто жмем enter. Получим файлы id_rsa и id_rsa.pub, которые легли в директорию /home/user/.ssh. Публичный ключ необходимо скопировать на сервер, например, командой
Код: Выделить всё
scp ~/.ssh/id_rsa.pub [пользователь@]машина:/home/user/
или лучше
Код: Выделить всё
ssh-copy-id [-i файл_идентификации]* [пользователь@]машина
Далее заходим на сервер и добавляем принятый ключ в файл с хранимыми ключами, по которым разрешено подключаться
Код: Выделить всё
cat id_rsa.pub >> /home/user/.ssh/authorized_keys
После этого на сервере можно отключить аутентификацию по паролям, а подключаться к нему мы будем командой
Код: Выделить всё
ssh -p 2222 user@computername

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


Wiki SSH
OpenSSH: настройки, секреты, трюки и советы
20 советов по безопасному использованию сервера OpenSSH
Аутентификация на SSH сервере с использованием ключей

Комментариев нет:

Отправить комментарий