Linux глазами хакера - Михаил Флёнов
Шрифт:
Интервал:
Закладка:
DATA
Текст письма
.
Рассмотрим, что означают эти строки, которые на самом деле являются командами SMTP-сервера:
□ HALO mailserver.com — строка приветствия SMTP-сервера. Параметр maiiserver.com необходимо заменить на реальное имя сервера;
□ MAIL from: [email protected] — адрес отправителя письма;
□ RCPT ТО: [email protected] — получатель письма;
□ DATA — после команды идет содержимое письма.
Последняя строка в файле должна состоять только из одной точки, потому что SMTP-сервер символы <CR> и <LF> (конец строки и перевод каретки) воспринимает как конец письма. Когда вы нажимаете клавишу <Enter>, то в ОС Windows создается как раз такая пара символов. ОС Linux ограничивается только переводом каретки. Для нас главное, чтобы в тексте был переход на новую строку, а какой он, — не имеет значения, потому что файл будет передаваться в ASCII-режиме.
Этот файл загружаем на FTP-сервер и выполняем следующие две команды:
PORT 192,168,1,1,25
RETR filename
В первой строке мы просим сервер соединиться с компьютером, имеющим адрес 192.168.1.1. Для этого используется FTP-команда port, которой необходимо передать 5 чисел: первые 4 — это IP-адрес компьютера, последний параметр определяет порт. С помощью этой директивы можно производить сканирование портов на сервере вручную, но в данном случае у нас другая цель.
Вторая команда посылает на этот сервер файл с именем filename, который содержит SMTP-команды. Для SMTP-сервера все выглядит так, как будто FTP-сервер направляет ему директивы для отправки письма, которое он и отошлет. А получатель не сможет определить источник. Все параметры приведут его только к FTP-серверу. Получается, что злоумышленник может абсолютно анонимно отправить письмо, и его никто не найдет.
Таким способом могут рассылаться вирусы, троянские программы или даже спам. Есть еще один вариант использования почтовых сообщений — поместить на FTP-сервер большой файл и заставить бесконечно передавать его на SMTP-сервер. Если запустить несколько таких процессов, то при слабеньком канале SMTP-сервера получится полноценная DoS-атака.
Защититься от этой атаки на стороне SMTP-сервера можно только с введением обязательной авторизации. В этом случае хакеру необходимо будет знать реальные параметры учетной записи, которой разрешен доступ. На стороне FTP-сервера также защищаемся с помощью аутентификации. Никаких анонимных подключений быть не должно, тем более с правами на запись файлов.
10.8. Дополнительная информация
Я не стал описывать все директивы конфигурационных файлов, которые доступны в wu-ftp-сервере. Их слишком много, и мы остановились только на основных.
Для получения дополнительной информации можно выполнить команду man файл.
В качестве параметра укажите имя конфигурационного файла, о котором вы хотите узнать больше.
Помимо этого, можно почитать документы из директории /usr/share/doc/wu-ftpd-Х.X.Х, где X.Х.X — это номер версии установленного у вас wu-ftp-сервера.
Все изменения, которые вносятся в конфигурационный файл, вступают в силу немедленно. Единственное ограничение — клиенты должны заново подключиться к серверу, иначе они будут продолжать работать со старыми настройками.
При администрировании FTP-сервера вам помогут следующие команды:
□ ftpd — позволяет запустить сервер с особыми параметрами. Атрибутов очень много, поэтому для получения подробной информации о них можно обратиться к документации (выполнить команду man ftpd). Лично мне еще ни разу не приходилось прибегать к использованию ключей, потому что единожды настроив конфигурацию, сервер работает стабильно;
□ ftprestart — используется для перезапуска FTP-сервера;
□ ftpshut — корректно завершает работу сервера. Например, если вы хотите обновить программное обеспечение, то не стоит отключать сервис аварийно. Используйте эту команду со следующими ключами:
• -l n — не принимать новые соединения за n минут до завершения работы FTP-сервера. Укажите приемлемое время, чтобы клиенты успели корректно завершить работу с сервером;
• -d n — разорвать соединения за n минут до завершения работы FTP-сервера. Я рекомендую установить разрыв непосредственно перед завершением или указать 1 минуту;
• время — задает момент завершения работы FTP-сервера и схож с аналогичным параметром в команде shutdown для Linux. Вы можете указать вместо времени ключевое слово now, чтобы завершить работу немедленно, но я рекомендую использовать ключ +n (где n — это количество минут до завершения работы) или указать точное время в формате HHMM (часы — минуты);
□ ftpcount — выводит количество подключенных по FTP пользователей. Когда в системе происходит что-то неладное, то я всегда проверяю, есть ли соединения клиентов по FTP. Если да, то следующим этапом нужно узнать, кто подключен;
□ ftpwho — возвращает список подключенных к FTP-серверу клиентов с указанием учетной записи, использовавшейся при подключении. Иногда одного взгляда достаточно, чтобы определить соединение злоумышленника. Например, имеется учетная запись человека, который не может быть в данное время на FTP;
□ ckconfig — проверяет конфигурацию FTP-сервера и выводит отчет для каждого конфигурационного файла wu-ftp-сервера.
10.9. Резюме
Протокол FTP и серверы различных производителей за время своего существования имели множество проблем с безопасностью. Если сложить ошибки FTP и программы Sendmail, то результат может затмить даже потери от внедрения вирусов.
Главная проблема протокола FTP заключается в том, что он создавался как дружественный и удобный для пользователя. Вторая проблема — использование двух портов. Авторизация происходит только при подключении на 21 порт, а работа с каналом для передачи данных происходит без какого-либо подтверждения подлинности клиента.
Если во времена создания FTP-протокола он был действительно необходим для обмена данными, то в настоящее время от него следует избавляться. Если вы хотите дать пользователям возможность только скачивать информацию, то обратите внимание на HTTP-протокол. Он безопаснее, и с его помощью можно даже организовать загрузку файлов на сервер.
Если необходим обмен данными в локальной сети, то можно использовать Samba-сервер или опять же HTTP-протокол. Многие администраторы не хотят настраивать Web-сервер только ради обмена данными и устанавливать на него потенциально опасные сценарии. Но нельзя забывать, что FTP также может оказать медвежью услугу. Из двух зол нужно выбирать меньшее. Если у вас уже работает Web-сервер, то максимально используйте его возможности, и тогда можно будет закрыть 21 порт, тем самым оградив себя от вероятных ошибок, которые могут с ним прийти.
Если вам лично необходим доступ к серверу для работы с файлами удаленно, то советую использовать пакет SSH и встроенный SFTP-протокол, который шифрует данные, такое соединение перехватить намного сложнее.
Глава 11
DNS-сервер
Каждый компьютер, подключенный к сети, должен иметь свой адрес, чтобы его легко можно было найти и обмениваться с ним данными. Это как телефонные аппараты. Чтобы кому-нибудь позвонить, нужно знать его номер телефона, иначе коммутатор не сможет понять, с кем вас соединить.
Когда вы хотите получить Web-страничку с сервера, то необходимо знать его адрес. В запросе нужно указать свои координаты, чтобы сервер знал, куда вернуть требуемую страничку. Здесь просматривается аналогия с почтой. Вы отправляете письмо на определенный адрес, и если хотите, чтобы вам ответили, то должны указать обратный адрес.
В эпоху зарождения сетей компьютеров в ней было мало, поэтому для адресации был выбран самый простой вариант — числа. С увеличением количества компьютеров сетевая общественность стала осознавать, что помнить больше 20 адресов невозможно, поэтому было принято решение найти какой- либо способ, упрощающий запоминание.
Изменять принцип нумерации поздно, да и выбранная IP-система очень удобна для обработки на программном уровне компьютерами и сетевыми устройствами. Немного поколдовав, умные люди придумали создать централизованную базу данных, устанавливающую соответствие IP-адресов и символьных имен. Таким образом, пользователь оперирует именами узлов, а программа уже по базе DNS находит нужный IP-адрес и по нему соединяется с компьютером/сервером.
Этот метод очень сильно упростил задачу. Раньше, чтобы найти сервер, нужно было четко знать его IP-адрес. Теперь в простой ситуации можно обойтись даже без поисковых систем типа yahoo или google. Например, если нужен сайт корпорации Microsoft, то можно попробовать набрать в браузере адрес www.microsoft.com. Таким образом, Web-серверы фирм можно найти просто по их имени, и не надо запоминать лишнюю информацию.