/
Текст
Лабораторная работа №
6
(
2
часа)
Настройка
OpenSSH
и терминальные сервисы
Цели:
изучить основные способы применения
OpenSSH
для удален
ного
администрирования серверов под управлением
GNU
\
Linux
, получить навыки
установки, настройки и использования сервера и клиента
OpenSSH
, а также
сопутствующих утилит.
Инструкции по выполнению
:
Для выполнения лабораторной работы
потребуется доступ к двум
машинам (виртуальным или физическим).
Загрузите ОС
Linux
, войдите в сеанс и получите доступ к командной строке.
Перед выполнением заданий лабораторной работы ознакомьтесь с главой 22
пункт 10 (с.97
2
) книги «
UNIX
и
Linux
. Руководство системного
администрат
ора» Эви Немет и др, а также с главой 15 (с.359) книги Скотта
Граннемана «
Linux
. Карманный справочник». Внимательно прочитайте
условие лабораторной работы, выполните требуемые задания, ответьте на
приведенные вопросы и составьте итоговый отчет по работе.
Перед
началом
работы
проверьте
,
установлены ли
на
Вашей
машине
необходимые пакеты
(
openssh
-
server
,
openssh
-
client
)
.
В случае
необходимости установите их.
Достаточно часто при администрировании возникает необходимость
подключиться к удаленной системе. Это
может быть продиктовано
рассредоточенным расположением администрируемых машин,
необходимостью быстрого доступа к различным машинам и др. причинами.
Один из самых древних способов удаленного подключения
–
telnet
.
Несмотря на простоту, является очень небез
опасным в использовании:
данные, в том числе логин и пароль, передаются по сети в виде открытого
текста, что позволяет злоумышленнику их легко перехватить. В большинстве
современных дистрибутивов сервис
telnet
–
telnetd
,
-
даже не
устанавливается по умолча
нию. Если он установлен, очевидная
рекомендация:
apt
-
get purge telnetd
По той же причине не рекомендуются исторические альтернативы,
известные как
Remote
SHell
–
rsh
,
rlogin
и
rcp
(пакеты
rsh
-
server
и
rsh
-
client
).
В качестве частичной замены может использ
оваться сервис,
построенный на базе
Secure
Socket
Layer
–
telnetd
-
ssl
(серверная часть) и
telnet
-
ssl
(клиентская часть).
Наиболее распространенной альтернативой
telnet
’
у для удаленного
доступа является
SSH
–
Secure
SHell
. Он представляет собой безопасный
способ удаленного доступа
–
подключение требует аутентификации и все
передаваемые данных шифруются.
Кроме возможности удаленного доступа,
SSH
предоставляет средства
безопасной передачи файлов:
scp
и
sftp
.
Scp
(
secure
copy
) позволяет
копировать файлы анал
огично стандартной команде
cp
, но с
/
на удаленную
машину. При этом используется синтаксис, аналогичный
cp
в котором путь к
файлу на удаленной машине задается в формате:
имя_машины:путь_в_файловой_системе
sftp
(
secure
ftp
)
–
безопасный аналог протокола
FTP
,
позволяющий
копировать, удалять, переименовывать файлы, менять им разрешения и т.д.
В
Debian
GNU
\
Linux
SSH
представлен версией
OpenSSH
. Для
установки
SSH
может использоваться метапакет «
ssh
», включающий в себя
пакеты
ssh
-
server
и
ssh
-
client
.
OpenSSH
предл
агает несколько механизмов аутентификации
пользователя. Одним из способов является аутентификация по ключу. Это
удобно для частых подключений и для автоматизации подключений.
Для аутентификации по ключу, следует сгенерировать ключевую пару:
открытый и закр
ытый ключи:
ssh
-
keygen
-
t rsa
–
b 4096
Вопрос для любознательных: Что делает опция «
-
b
» и зачем она здесь
использована?
Ключи будут сохранены в домашнем каталоге пользователя в
подкаталоге
.
ssh
с именами
id
_
rsa
.
pub
и
id
_
rsa
.
После этого необходимо добавить
открытый ключ на сервер в
подкаталоге домашнего каталога пользователя
.
ssh
/
authorized
_
keys
:
ssh
-
copy
-
id
пользователь
@
server
Сгенерированный ключ может дополнительно защищаться паролем.
При этом при подключении будет требоваться его ввод. Частого ввода
паро
ля можно избежать, настроив
ssh
-
agent
.
При любом подозрении на компрометацию закрытого ключа, следует
удалить открытый ключ из
authorized
_
keys
на сервере и заменить его на
сгенерированный новый. При этом рекомендуется использовать
RSA
ключ
длиной не менее
1024 бит.
Настройка
SSH
-
сервера выполняется путём редактирования файлов
конфигурации:
/
etc
/
ssh
/
ssh
_
config
уровня компьютера и
.
ssh
/
config
для каждого пользователя по отдельности. Параметры конфигурации хорошо
прокомментированы в самом файле и в страницах
m
an
(
man
ssh
_
config
).
Задание. Изучите и настройте
sshd
согласно рекомендациям
повышения безопасности.
Запретите удалённый доступ к аккаунту
root
.
Запретите подключение с пустым паролем (или вообще запретите
парольную аутентификацию).
Установите нестандартн
ый порт для
SSH
.
Используйте длинные ключи
RSA
(больше 1024 бит).
Ограничьте список компьютеров, с которых разрешен доступ к
серверу (это можно сделать дважды: в настройках
sshd
и при
помощи
iptables
).
Регулярно просматривайте сообщения об ошибках аутентиф
икации
(
access
.
log
).
Другие рекомендации будут даны на лекции по безопасности.
Отметьте в отчете, каким образом выполнялись эти настройки.
Конфигурационный файл как правило состоит из набора секции
Host
с
указанием имени или
IP
-
адреса компьютера. Из опции
наиболее
интересными являются
User
–
задает имена пользователей на удаленной
системе, которым разрешен доступ и
Cipher
–
задает алгоритм шифрования
для указанной системы.
В качестве значения
Host
можно задать «*». Такая секция должна
задаваться последней
в конфигурационном файле.
Для подключения к удаленному серверу следует выполнить команду:
ssh
пользователь
@
сервер
или
ssh
-
p
порт пользователь@сервер
если из соображений безопасности для
ssh
был установлен не
стандартный порт.
Альтернативным способом по
дключения является использование
PuTTY
. Самостоятельно подключитесь при помощи
PuTTY
к
ssh
-
серверу и
запишите в отчет последовательность шагов, которые Вы выполнили.
Кроме консольного подключения
ssh
предоставляет возможность
«проброса» сессии
X
11
. Эта воз
можность по умолчанию отключена в
настройках
ssh
.
Задание: найдите в конфигурационном файле
ssh
(
/
etc
/
ssh
/
sshd
_
config
) опцию, отвечающую за «проброс» сессии
X
11
и
включите ее. Подключитесь к серверу, добавив к команде подключения «
-
X
».
Еще одной часто исп
ользуемой возможностью
SSH
является создание
шифрованных туннелей для
TCP
/
UDP
. Для этого используются опции «
-
L
» и
«
-
R
».
Эта возможность может использоваться для создания безопасного
подключения к удаленному рабочему столу по протоколу
VNC
(
Virtual
Network
Computing
).
Для этого вначале следует, используя
GUI
-
приложение
vino
в
Gnome
или команду
x
11
vnc
, разрешить разделение сессии
X
11
.
Если Вас устраивает передача данных по сети без шифрования, то
после этого можно переходить к следующему абзацу. Иначе, перед
подключением, следует создать шифрованный туннель. При работе,
VNC
использует по умолчанию порт
5900
для первого экрана (он называется
localhost
:0
),
5901
для второго (
localhost
:1
) и т.д. Можно использовать
команду:
ssh
-
L
localhost
:5901:
localhost
:5900
-
N
-
T
имя_компьютера
для создания шифруемого
ssh
-
туннеля.
После этого можно подключиться к удаленной сессии при помощи
VNC
-
клиента. В
Gnome
для этого может использоваться
vinagre
или
tsclient
, в
KDE
–
krdc
, а также команда
vncvie
wer
из пакета
xvnc
4
viewer
.
Зад
ание. Настройте
ssh
-
туннель для удаленного рабочего стола и
подключитесь к нему. Отметьте в отчете последовательность Ваших
действий.
Замечание. При работе с удаленным рабочим столом удобно включить
в
SSH
сжатие передаваемых данных. Кстати, каким параметро
м?
Дополнительно.
VNC
также может использоваться для доступа к
рабочей станции мобильным пользователям или для удаленного доступа из
дома (и наоборот). Настройка такого сервиса немного сложнее. Вначале
необходимо установить и настроить
vnc
4
server
, а также
изменить
конфигурацию менеджера графического входа (
gdm
,
gdm
3,
kdm
или
xdm
) на
приём
XDMCP
-
запросов. Затем запустить сервер через сетевого демона
inetd
таким образом, чтобы сессия автоматически запускалась, когда пользователь
пытается подключиться. Наприм
ер, Вы можете добавить в
/
etc
/
inetd
.
conf
:
5950
stream tcp nowait nobody.tty /usr/bin/Xvnc Xvnc
-
inetd
-
query localhost
-
once
-
geometry 1024x768
-
depth 16
securitytypes=none
Это достаточно безопасное решение, поскольку, только зная
локальную учетную запись,
можно будет пройти дальше менеджера
графического входа.
Такое решение допускает множественные параллельные подключения
и может использоваться как терминальный сервер:
vncviewer
сервер:50