Самое сложное — организовать, чтобы клиент подключился не к реальному Web-серверу, а к вашему компьютеру. Чаще всего мы в браузерах набираем символьные имена адресов, но соединение происходит по IP-адресу. Для такого сопоставления используются DNS-серверы. Хакер может обмануть клиента с помощью ложного DNS-ответа или подставного DNS-сервера и тем самым перенаправить трафик на себя.
Затем компьютер злоумышленника будет переадресовывать пакеты реальному Web-серверу и возвращать ответы клиенту (рис. 7.3). Таким образом, весь трафик будет проходить через компьютер хакера.
Рис. 7.3. Перехват трафика
Что опасного может увидеть хакер, когда клиент просматривает страницы на Web-сервере? Мы каждый день вводим на Web-страницах какие-либо данные, пароли, номера кредитных карт, и именно это является основной целью хакера. Но этот метод был хорош несколько лет назад, когда не было HTTPS-протокола и безопасного соединения с помощью SSL-шифрования.
Давайте вспомним, что для подключения по SSL любая программа-клиент (например, браузер) и Web-сервер обмениваются ключами, с помощью которых происходит шифрование. Для HTTPS помимо открытого и закрытого ключей необходимы подтвержденные сертификаты, которые выдаются специализированными компаниями. Программа-клиент проверяет сертификат, и если он достоверен (цифровая подпись принадлежит авторизованной фирме), то подключение разрешается. Сертификаты можно сгенерировать самостоятельно, а вот подпись подделать практически невозможно.
Если компьютер хакера просто будет передавать данные между клиентом и сервером, то трафик останется зашифрованным, и его просмотреть не удастся. Единственным вариантом может быть следующая схема:
1. На компьютере хакера генерируется пара ключей и сертификат.
2. Клиент подключается к компьютеру хакера и обменивается с ним ключами.
3. При передаче информации шифрование происходит с ключом, который сгенерировал хакер, поэтому он без проблем расшифровывает все данные.
4. Компьютер хакера соединяется с Web-сервером и получает его ключ.
5. Между компьютером хакера и Web-сервером устанавливается соединение по ключу Web-сервера.
При такой схеме клиент получает ключ, который сгенерирован хакером и не имеет нужной подписи. Это значит, что у клиента появится сообщение о подключении к сайту без необходимого сертификата. И вот тут происходит самое страшное — большинство пользователей, которые давно работают с Интернетом, устали смотреть на различные предупреждения, поэтому, не читая сообщения, нажимают кнопку OK для продолжения работы.
Решить проблему подложного подключения можно только защитой DNS-сервера, чтобы хакер не смог стать посредником в соединении между клиентом и сервером. Не используйте прокси-сервер, в происхождении которого вы не уверены, ведь он может принадлежать хакеру, и тогда весь ваш Web-трафик оказывается в опасности.
Можно еще попытаться перевоспитать пользователей, чтобы они читали все сообщения, которые отображает браузер. Но это сложно. Для этого необходимо, чтобы Web-браузер графически (иконками) ранжировал информацию по степени критичности. Таким образом, увидев сообщение об опасности, пользователь обязательно его прочтет. Если оповещение о подключении к сайту с неподписанным сертификатом сделать важным, то пользователи испугаются и прервут соединение. А ведь таких сайтов достаточно, и многие из них вполне уважаемые и защищенные. Просто подпись стоит денег, а не каждый хочет вкладывать дополнительные средства. А подписанными являются только коммерческие проекты. Но даже среди таких авторитетных ресурсов бывают проблемы. Сертификат действителен только в течение указанного в нем периода, а если администратор не уследил за датой, то он устареет.
Единственное, что должен помнить пользователь, при неавторизованном соединении нельзя вводить номера кредитных карт. Вот это предупреждение должно появляться большими буквами при подключении к серверу с неподписанным сертификатом.
Глава 8
Электронная почта
Для кого-то Интернет — это просмотр сомнительных страниц на WWW, для некоторых — способ найти соперника в игре, а многие используют сеть для работы или обучения. Но все мы не можем жить без общения, и несмотря на новые технологии, которые выдумывают для облегчения общения (чаты, IRC, ICQ и т.д.), электронная почта жила, живет и будет жить. Именно с электронной почты начали развиваться сети, и это был один из первых сервисов Интернета.
Лично для меня почтовый клиент стал основной программой, которой я пользуюсь чаще всего. Это переписка с читателями, друзьями, начальством и т.д. Так уж получилось, что люди, с которыми я работаю, находятся в других городах и даже странах. Расстояние до самых ближайших партнеров более 1000 км, а до издательства — 1600 км. Если раньше это было сопряжено с большими проблемами, то теперь, благодаря компьютеру, я могу жить в теплых краях, а выполнять работы для компании, которая находится на Аляске. Таким образом, легко сохранить ноги в тепле, а зарабатывать деньги в холодных областях.
Как работает электронная почта (E-mail)? Рассмотрим основные моменты отправки письма:
1. Пользователь создает в почтовом клиенте (программа электронной почты) письмо, указывает получателя и отправляет его почтовому серверу. В настоящее время для передачи сообщений чаще всего используются SMTP-серверы, а для работы с ними — SMTP-протокол.
2. Сервер, получив письмо, определяет место назначения. Адрес состоит из двух частей: имени пользователя и имени сервера, разделенных между собой знаком. Например, [email protected]. Здесь djon — это имя пользователя, а servername.com — имя сервера. С помощью DNS можно узнать IP-адрес сервера servername.com, которому должно быть доставлено письмо.
3. Письмо направляется серверу, на котором зарегистрирован получатель.
4. Получив письмо, сервер servername.com помещает его в почтовый ящик пользователя djon.
5. Пользователь просматривает свой почтовый ящик с помощью почтового клиента и может скачать письмо для чтения.
Описанный процесс похож на работу традиционной почты. Вместо серверов там выступают почтовые отделения, которые сортируют почту в зависимости от адреса назначения и передают письма на узел связи получателя.
Как я уже заметил, для передачи сообщений используется протокол SMTP, разработанный еще на заре становления Интернета. Его функций уже давно недостаточно, но он не утратил своей актуальности.
Несколько десятков лет назад для работы с почтой широко использовался протокол UUCP (Unix to Unix Copy, копирование между Unix-системами). Но он был слишком сильно привязан к ОС и при этом обладал ограниченными возможностями, поэтому не получил должного распространения и в настоящее время практически не используется.
Для приема почты есть три протокола:
1. POP3 — Post Office Protocol v3 (Почтовый протокол), в настоящее время наиболее распространенный протокол приема почты.
2. IMAP4 — существуют две интерпретации этого сокращения: Internet Message Access Protocol (Протокол доступа к сообщениям в сети Интернет) и Interactive Mail Access Protocol (Протокол интерактивного доступа к электронной почте). Этот протокол обладает большими возможностями по сравнению с POP3.
3. MAPI — Messaging Application Programming Interface (Интерфейс прикладного программирования электронной почты корпорации Microsoft), используется в сетях Microsoft на серверах Microsoft Exchange.
Самым распространенным средством доставки почты в Linux является самая старая программа sendmail. Она обладает большими возможностями, но достаточно сложна в использовании. Из-за своего почтенного возраста в сервере sendmail сохранилась возможность передачи по протоколу UUCP, что сейчас не так часто встретишь.
Принцип же работы sendmail достаточно прост. Получив письмо от клиента, программа определяет получателя и заносит необходимую для доставки служебную информацию в заголовок этого письма. Дальнейшие действия зависят от настроек. Например, письмо может быть отослано немедленно или помещено в хранилище. Через определенные промежутки времени накопившиеся письма отправляются своим адресатам.
8.1. Настройка sendmail
Основной конфигурационный файл, который вам понадобится — /etc/sendmail.cf. Сервер sendmail имеет плохую репутацию в связи со сложностью настройки. Действительно, если даже бегло посмотреть на /etc/sendmail.cf, то делается жутко от одного только размера в 32 Кбайта (более 1000 строк). А если заглянуть внутрь файла, то становится еще страшнее от непонятных ключей и директив.
В файле конфигурации sendmail все параметры сгруппированы по разделам.
Разбиение оформляется в виде следующих строк:
##################
# local info #
##################