Linux глазами хакера - Михаил Флёнов
Шрифт:
Интервал:
Закладка:
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-протоколам, порты которых не пересекаются (и они совершенно разные), то необходимо в явном виде указывать протокол;
□ псевдоним — вымышленное имя для сервиса.
Например, в файле /etc/services вы найдете следующие строки:
tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
...
...
ftp 21/tcp
ftp 21/udp fsp fspd
...
...
Я специально выбрал такие строки, чтобы вы увидели варианты описания различных сервисов.
Если вы используете старый дистрибутив ОС Linux, то в нем, скорей всего, еще работает inetd. Но мы уже говорили, что давнишний дистрибутив не может быть безопасным, и с ним что-либо делать бесполезно. Лучший защита — обновление, и тогда основным сервисом станет xinetd, который становится, если уже не стал, стандартом для всех.
Я рекомендую переход на xinetd, потому что в нем появилось много дополнительных возможностей, которые делают удобным администрирование и повышают безопасность. Например, в сервис xinetd встроены проверка всех удачных и неудачных соединений, возможность контроля доступа и даже предоставление его строго в определенное время.
5.4.1. Конфигурирование xinetd
Основной конфигурационный файл для xinetd — это /etc/xinetd.conf. В нем описываются настройки по умолчанию для запускаемых сервисов и директория, в которой будут находиться конфигурационные файлы, влияющие на работу конкретных сервисов. Рассмотрим по листингу 5.3 содержимое этого файла.
Листинг 5.3. Файл конфигурации /etc/xinetd.conf#
# Simple configuration file for xinetd
# Пример конфигурационного файла для xinetd
#
# Some defaults, and include /etc/xinetd.d/
# Некоторые параметры по умолчанию
# и подключение директории /etc/xinetd.d/
defaults {
instances = 60
logotype = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d
После ключевого слова defaults в фигурных скобках описываются настройки по умолчанию для всех сервисов. Любое из этих значений можно изменить для каждого отдельного сервиса.
Последняя строка подключает директорию /etc/xinet.d:
includedir /etc/xinetd.d
В этом каталоге для каждой службы есть собственный конфигурационный файл, где можно изменить параметры. Имена файлов соответствуют названиям сервисов, а содержимое — похоже на /etc/xinetd.conf. В листинге 5.4 приведено содержимое конфигурационного файла /etc/xinet.d/telnet для сервиса Telnet.
Листинг 5.4. Конфигурационный файл для сервиса Telnet# default: on
# По умолчанию включен
# description: The telnet server serves telnet sessions;
# it uses unencrypted username/password
# pairs for authentication.
# Описание: Telnet-сервис обслуживает telnet-сессии.
# Он использует не зашифрованные имя пользователя
# и пароль для аутентификации
service telnet {
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
Рассмотрим основные параметры, которые можно изменять:
□ disable — если этот параметр установить в true, то сервис будет запрещен для исполнения;
□ flags — атрибуты выполнения сервиса;
□ socket_type — тип используемого сокета. Для протокола TCP здесь должно быть значение stream, а для протокола UDP — dgram;
□ protocol — используемый для передачи данных протокол (TCP или UDP);
□ server — полный путь к запускаемой программе;
□ user — права доступа. В большинстве случаев можно увидеть имя пользователя root. Это нормально, потому что в ОС Linux для работы с номерами портов менее 1024 необходимы права администратора. В настоящее время большинство сервисов понижают свои права в соответствии с установками;
□ instances — максимальное количество одновременно работающих экземпляров программы;
□ log_type — запись событий будет производиться в указанный файл или системный журнал;
□ log_on_success и log_on_failure — информация, которая будет сохраняться в журнале при удачном и неудачном входе в систему соответственно, Здесь можно указывать значения: PID, HOST или USER;