tcpdump: відсіювання HTTP GET

Уявимо себе адміністратором сервера, що перебуває під атакою–відплатою за EX.ua (одразу зауважу, що я не є таким адміністратором, у мене просто гарна уява).

У першу чергу, нам було би цікаво, що саме летить на нас, що саме «валить» наш сайт «із ніг».

Щоб довідатися, є різні способи — скажімо, дивитися журнал веб-сервера, дивитися трафік на сервері утилітою tcpdump чи подібною; можна на проміжному комутаторі відгалужувати трафік і дивитися його tcpdump’ом десь на іншому комп’ютері… Але, так чи інакше, завжди цікаво знайти найбільш універсальний інструмент.

На мій погляд, найбільш універсальним інструментом є саме tcpdump.

Одразу зауважу, що ми можемо «попрохати» tcpdump писати трафік у файл, кожні N секунд закривати файл і починати новий, а на щойно закритому виконувати певну дію (запускати скрипт) — таким чином ми можемо не лише збирати, а й у режимі «майже реального» часу аналізувати інформацію і виконувати певні дії. Це все вміє сам tcpdump, ми маємо лише все продумати і написати скрипти .)

Наприклад, може бути зручним використання утиліти fail2ban; але цей скрипт працює на одному ядрі і на гарно навантаженому сервері (яким, імовірно, є кожен сервер під атакою) почувається невпевнено. Але ми можемо суттєво полегшити йому життя, якщо не змушуватимемо читати журнал веб-сервера, а «згодовуватимемо» вже добре проаналізовану інформацію. Наприклад, із зібраної tcpdump’ом інформації відбирати адреси, з яких надходить більше X [кіло]запитів за одиницю часу.

Отже, tcpdump виглядить («має вигляд» — «виглядить», а не «виглядає»!) досить зручним інструментом. Тож спробуємо з його допомогою ловити лише HTTP GET пакети.

А тепер зазирнемо у нутрощі пакетів »