СПАМ – трафік, або тонкощі роботи протоколу FTP
Всі користувачі Intrnet, напевно, коли-небудь у своєму житті стикалися з таким поняттям як СПАМ. У моєму "вільному трактуванні" СПАМ можна визначити як генерування нікому не потрібного поштового трафіку. Трафік, однак, може бути не тільки поштовий. А послужити добру службу у справі "не поштового спаму" може такий загальновідомий сервіс як FTP.
Загальновідомо, що FTP забезпечує передачу двійкових і текстових файлів з FTP-сервера і нього. Причому FTP-сервером може бути як комп'ютер із яким-небудь клоном UNIX, і комп'ютер під керуванням Windows NT, у якому працює FTP-сервер. Хочу відразу обмовитися тут не йтиметься про злом FTP-серверів, все сказане нижче є лише наслідком роботи малодокументованих можливостей протоколу FTP. У більшості комп'ютерних літератур не зазначено, що FTP забезпечує також можливість передачі файлів безпосередньо між серверами.
Торкнемося саме їх. Скільки разів твердили світові, що, даючи анонімним користувачам сервера право на запис, ви робите свій сервер потенційно вразливим. І тільки все не береться до уваги. Адже в цій ситуації цілком можливо, що який-небудь жартівник у мережі згенерує значний трафік з якогось достатньо потужного сервера на ваш злощасний FTP-сервер. І горе тоді організації (якщо у вас, звичайно, не необмежений трафік :). Звичайно - це не смертельно, але неприємно, адже доведеться платити за нікому не потрібний "СПАМ". А платити доведеться пристойно - ось вона зворотний бік швидкісного доступу в Internet :(.
А для того, щоб зрозуміти, як все це може бути здійснено на практиці, необхідно ближче розглянути роботу FTP-протоколу. Отже теорія:
Коли клієнт FTP з'єднується з FTP-сервером, створюється так зване керуюче з'єднання. В сутностіКеруюче з'єднання - це стандартний сеанс telnet як NVT. Клієнт відправляє команду на сервер через з'єднання, що управляє, а сервер повертає відповідь по цьому ж з'єднанню.
Коли користувач запитує пересилання файлу, відкривається окреме з'єднання передачі даних, і по ньому посилається файл. Зазвичай сервер використовує порт 21 для з'єднання керуючого і порт 20 для з'єднання пересилання даних.
--> PORT 128,36,4,22,10,53 200 PORT command successful
Сценарій для з'єднання такий: 1. Локальний клієнт отримує новий порт і використовує керуюче з'єднання, щоб повідомити сервер FTP номер свого порту. 2. FTP-сервер зв'язується із новим портом даних клієнта. 3. Дані передаються. 4. З'єднання закривається.
Можна використовувати інший сценарій. Якщо клієнт надсилає PASV, сервер повертає номер порту і переходить до прослуховування установки з'єднання даних від клієнта. Раніше переважало використання команди PORT. Однак тепер клієнт може надіслати команду PASV для пересилання файлів через просту систему захисту (firewall).
--> PASV 227 Entering Passive (x, x, x, x, 7,254)
--> PORT x,x,x,x,7,254 200 PORT Command successful.
FTP-протокол почав свою роботу з генерування "абсолютно непотрібного" для одержувача трафіку і можна відключатися та йти спати :).