[показать]
Эта статья направлена на повышение безопасности при работе с FTP сервером. Здесь не описаны методы взлома и способы его реализации. Вся информация дана для общего ознакомления с принципами подобных атак. Однако при этом тут изложены конкретные и пригодные для использования советы о том, как защитить свою работу по этому протоколу связи. Это — урок безопасности для пользователей служб FTP.
При работе по сети с FTP многие забывают (или даже вовсе не знают) о том, что по умолчанию все данные по этому протоколу передаются в открытом виде. Этот нюанс не критичен, когда вы пользуетесь услугами общественного FTP-сервера, тем более, если вы заходите на него с общеизвестным логином anonymous. Однако, совершенно по иному обстоят дела, когда вы используете конкретный FTP для личных нужд или по работе. А если это FTP-логин от сайта или от места “где деньги лежат”? Полагаю, никто бы не желал, чтобы его собственный логин для входа попал в чужие руки, это — как отдать ключи от квартиры чужому и незнакомому дядьке. Скажу по секрету, при обычном FTP-соединении вместе с логином в открытом виде почти следующим пакетом от вас передаётся и пароль для авторизации. Так что, если найдётся тот, кто заснифит/”унюхает” ваш трафик — он поимеет все ключи от вашего аккаунта и всего, что он за собой тянет. Схематически этот принцип показана в самом начале этой статьи.
Потом удивляются: “как это мой сайт взломали?”. Весьма просто…
Когда вы соединяетесь по FTP, ваш компьютер сначала устанавливает соединение с сервером, посылая синхронизирующий пакет связи SYN на указанный порт ftp (по умолчанию это 21 порт). Если сервер доступен и желает общаться, он обратно высылает с этого порта практически такой же синхронизирующий пакет SYN (от англ. synchronize — синхронизация). Это означает, что сервер готов к работе через FTP. После этого положительного ответа ваш компьютер должен подтвердить получение ответа с сервера ACK-пакетом (от англ. acknowledge — подтверждение). Это нулевой этап установки соединения, при котором устанавливается канал связи для дальнейшей передачи данных. На скриншоте ниже первые три строки (каждая строка — отдельный пакет).
1. После установки связи с сервером и открытия канала связи сервер может прислать пригласительную строку. Подразумевается, что клиент должен назвать себя, т.е. передать свой логин для входа. Это и делается: ваш FTP-клиент, такой как TotalComander, FileZila или же другие спросят его у вас, предлагая ввести в небольшом окошке (либо возьмут его из сохранённого ранее профиля). Передаётся логин на сервер пакетом с текстом “Request: USER XXXXX”, где вместо иксов нормальными буквами будет логин. Смотрите первую секцию на скрине. Сервер отвечает ACK пакетом, что он это понял, и следующим пакетом шлёт сообщение о том, что логин XXXXX одобрен, однако этот логин дополнительно нуждается в пароле.
2. Общение между машинами по сети всегда чёткое и лаконичное: каждый полученный пакет с данными должен быть проверен по контрольной сумме и подтверждён (исключение: UDP). Наш клиент подтверждает серверу получение последнего сообщения о том, что нужен пароль, и спрашивает этот пароль у нас (либо не спрашивает, и берет из уже сохранённого профиля, если он там указан). Уточнив пароль клиент посылает его серверу примерно так же, как и логин: “Request: PASS YYYYY”, где, как вы уже видимо понимаете, вместо YYYYY будет ваш пароль открытым текстом. Это бескомпромиссный Fail для любого веб-мастера. На скриншоте это показано синей строкой.
Как видим, всё довольно-таки печально. Ежели кто-то сможет на любом из промежуточных сетевых узлов вклинится и снифить трафик — он сможет отследить и перехватить передаваемые логин и пароль. У любого веб-мастера впервые узнавшего об этом уже должна начать развиваться первая стадия паники, нарушаться сон и немного трястись руки. Но не отчаивайтесь — лекарство есть.
В миру говорят: “меньше знаешь — крепче спишь”. Что ж, тот кто не осилил такое количество букв в этой статье пусть спит и рискует дальше. А вам, дорогой читатель скажу: лекарство от этой напасти нашли почти сразу же после того, как были обнаружены первые случаи подобных краж. Уверен, после изобретения письменности практически сразу появилась нужда защитить письменные послания от сторонних глаз. Самый древний метод защиты посланий и есть то лекарство, которое поможет вам спать спокойнее и безопаснее пользоваться столь нужным в работе FTP-сервисом. Естественно, вы уже знаете что это такое, хотя бы по названию этой статьи
[показать] Данные, которыми мы меняемся с FTP сервером, можно зашифровать.
Установка соединения и поднятие канала связи с сервером при зашифрованном соединении ничем не отличается от обычного открытого. Первые три строчки на скриншоте. А вот далее, после того как FTP-сервер прислал пригласительное сообщение, произносится волшебное слово!
[210x208] От вашего компьютера должно придти вместо логина запрос на установку шифра по определённому протоколу. В приведённом примере это выглядит так: “Request: AUTH TLS”. То есть, дословно переводя “Запрос: Хочу авторизацию TLS”, что интерпретируется, как “хрена лысого я вам в открытом виде вышлю пароль, сначала зашифруемся”. Если у сервера администратор побеспокоился в плане безопасности своих клиентов, то сервер без проблем примет это предложение и пришлёт ответ “AUTH TLS OK”. Такой ответ свободным текстом обычно переводится как: “Без проблем, к TLS’у готов”. Этот замечательный ответ подсвечен на скриншоте синей строкой. После этого следует обмен ключами, и все сообщения от сервера и от клиента со стороны будут выглядеть, как каша из символов, т.е. зашифрованными.
Немного подрастёт трафик, т.к. зашифрованные пакеты станут тяжелее — это плата за подобную защиту.
Поговаривают, что это — не панацея, и что такой трафик при должном техническом оснащении и серьёзной теоретической подготовке хакера может быть расшифрован. Даже если это и так — поверьте, встретить того, кто захочет рисковать, имея такие возможности и знания, спалиться на банальной краже ваших реквизитов от FTP… А вот всех остальных редисок эта мера останавливает просто “на ура!”.
Стоит упомянуть, что FTPS — это File Transfer Protocol + SSL, или FTP/SSL. Вы удивитесь, но начать работать с этим протоколом чрезвычайно просто. Всю работу по настройке и подготовке к этому должен провести сервер, а вернее его администратор. Если сервер настроен правильно и поддерживает FTPS, то от вас остаётся лишь поставить одну галочку в настройках вашего соединения, либо явно указать в адресе FTP сервера этот протокол (вместо ftp:// нужно указывать ftps:// — просто добавив английскую букву s к названию протокола).
Стырено: atlocal.net/codlarium/security-tips/2012/800/ftps-security-of-password/