Чтение онлайн

ЖАНРЫ

Linux глазами хакера

Флёнов Михаил Евгеньевич

Шрифт:

В данном сообщении говорится, что начат процесс генерации публичного и закрытого RSA-ключей. Вам предлагается ввести пароль или оставить его пустым. Я рекомендую лучше указать достаточно длинный пароль (не менее 10 символов, а лучше фразу). После нажатия клавиши <Enter> вам предложат подтвердить комбинацию, чтобы исключить ошибки при вводе.

Если все прошло успешно, то вы должны увидеть следующее сообщение:

Your identification has been saved in ~/ssn/myrsakey.

Your public key has been saved in ~/ssh/myrsakey.pub.

В первой строке нас проинформировали о том, что закрытый ключ сохранен в файле ~/ssh/myrsakey,

а открытый — в ~/ssh/myrsakey.pub.

Получив ключи, вы должны отправить файл ~/ssh/myrsakey.pub на удаленный компьютер, чтобы SSH-сервер мог использовать его для аутентификации. Для передачи можно смело использовать открытые каналы связи, потому что публичный ключ ничего не стоит без фразы, которую вы ввели, и без секретного ключа. Даже если хакер сможет получить файл myrsakey.pub, пользы от этого не будет никакой.

Администратор сервера должен добавить содержимое публичного ключа в файл .ssh/authorized_keys. Для этого можно выполнить на сервере следующую команду:

cat myrsakey.pub .ssh/authorized_keys

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

RSAAuthentication yes

PubkeyAuthentication yes

Для подключения к серверу выполните команду:

ssh -i ~/.ssh/myrsakey

С помощью параметра

– i
мы указываем файл публичного ключа. Если этого не сделать, то будет использоваться id_rsa — файл по умолчанию, его имя задает директива
IdentityFile
в конфигурационном файле SSH-клиента.

Теперь сервер будет запрашивать у вас не пароль, а слово, которое вы указали при генерации публичного ключа:

Enter passphrase for key

Если в конфигурационном файле SSH-сервера изменить параметр

PasswordAuthentication
на
no
, то пароль проверяться не будет, а связь будет устанавливаться только на основании ключей. Для обеспечения безопасной связи этого достаточно.

5.3.7. X11 в терминале

Использование командной строки для управления удаленной системой позволяет значительно сэкономить трафик. Но иногда нужен графический режим. Я не рекомендую его использовать в целях безопасности и для повышения производительности, но пользователи Windows могут просто не смириться с командной строкой. Если вы любите красивые окна, то SSH-сервер может перенаправить X11 (графическую оболочку ОС Linux) на ваш терминал. Для этого в конфигурационном файле sshd_config должны быть указаны следующие три директивы:

□ 

X11Forwarding yes
— разрешает переправлять ОС Linux графический режим X11;

□ 

X11DisplayOffset 10
— первый номер дисплея, доступный для SSH-сервера. По умолчанию 10, и это значение можно так и оставить;

□ 

X11UseLocalhost yes
— если параметр равен
yes
, то в качестве X-сервера будет использоваться локальный. В этом случае клиент будет работать с нашим X11, а служебная информация, передаваемая по сети, будет шифроваться.

Если вы хотите подключаться к графической оболочке Linux из Windows, то вам понадобится программа типа X11 для этой ОС. В качестве примера могу порекомендовать X-Win32-клиент, который можно скачать с сайта http://www.starnet.com/.

Я

не рекомендую использовать XII, потому что эта технология отлажена еще очень плохо, и существуют методы подделки и взлома соединения.

5.3.8. Защищенная передача данных

В состав пакета SSH входят еще две полезные программы — это sftp-server (FTP-сервер с поддержкой шифрования передаваемых данных) и sftp (FTP-клиент для подключения к SFTP-серверу). Давайте посмотрим на последнюю строку файла конфигурации SSH-сервера /etc/ssh/sshd_config:

Subsystem sftp /usr/libexec/openssh/sftp-server

Директива

Subsystem
определяет дополнительные сервисы. В данной строке запускается sftp-server из пакета OpenSSH.

Работа с клиентом sftp не отличается от работы SSH-клиента. Выполните команду

sftp localhost
и перед вами появится приглашение авторизации, которую мы рассматривали в разд. 5.3.5. Введя правильный пароль, вы оказываетесь в командной строке FTP-клиента и можете передавать или принимать файлы, используя команды FTP-протокола. Этот протокол мы будем подробно рассматривать в гл. 10, а сейчас вам достаточно знать, что большинство команд схожи с директивами Linux для управления файлами.

Попытайтесь сейчас воспользоваться клиентом sftp для подключения к своей системе. Авторизовавшись, можно попробовать выполнить команды

ls
или
cd
, чтобы убедиться в работоспособности программы. Для выхода из sftp наберите команду
exit
. Основные команды FTP-протокола можно увидеть в приложении 1.

Если вам необходимо передать на сервер или скачать с него секретную информацию (например, документы или файл паролей), то используйте для этого безопасное соединение по SFTP. Простые FTP-клиенты передают файлы в открытом виде (без шифрования), поэтому любой хакер сможет прослушать трафик и узнать информацию, которая поможет взломать ваш сервер.

Вы должны учитывать, что далеко не все серверы и клиенты FTP поддерживают шифрование SSH, поэтому убедитесь в поддержке этого протокола со стороны вашего программного обеспечения.

5.4. Демон inetd/xinetd

Для того чтобы сервер смог обрабатывать запросы клиентов, программа должна быть постоянно загружена и связана с определенным портом. В этом нет ничего сложного, но зачем постоянно держать программу в памяти, особенно если она слишком большая, а работает очень редко. Намного лучше, когда один сервис в системе будет следить за портами, и если пользователь обращается к определенному каналу, то эта программа запустит необходимый сервис. В ОС Linux такая возможность есть, и для этого используется демон inetd или более новая версия — xinetd.

Как определить, что запускать? Для этого используется файл /etc/services, в котором находится список сервисов и их портов в следующем формате:

имя порт/протокол псевдоним

□ 

имя
— название сервиса, который необходимо запускать;

□ 

порт
— номер канала, который должен прослушиваться;

□ 

протокол
— сервис inetd умеет работать с TCP- и UDP-протоколам, порты которых не пересекаются (и они совершенно разные), то необходимо в явном виде указывать протокол;

Поделиться с друзьями: