У мене є сервер з apache, і я нещодавно встановив mod_security2, тому що на мене сильно атакують:
Моя версія apache - apache v2.2.3, і я використовую mod_security2.c
Це були записи з журналу помилок:
[Wed Mar 24 02:35:41 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:31 2010] [error]
[client 202.75.211.90] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:47:49 2010] [error]
[client 95.228.153.177] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Wed Mar 24 02:48:03 2010] [error]
[client 88.191.109.38] client sent HTTP/1.1 request without hostname
(see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
Ось помилки з access_log:
202.75.211.90 - -
[29/Mar/2010:10:43:15 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:11:40:41 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
211.155.228.169 - -
[29/Mar/2010:12:37:19 +0200]
"GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 392 "-" "-"
Я спробував налаштувати mod_security2 так:
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecFilterSelective REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecFilterSelective REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
Справа в mod_security2 полягає в тому, що SecFilterSelective не можна використовувати, він дає мені помилки. Натомість я використовую таке правило:
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind"
SecRule REQUEST_URI "\w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:"
SecRule REQUEST_URI "w00tw00t\.at\.ISC\.SANS\.DFind:\)"
Навіть це не працює. Я вже не знаю, що робити. Хтось має поради?
Оновлення 1
Я бачу, що ніхто не може вирішити цю проблему, використовуючи mod_security. Поки що використання ip-таблиць здається найкращим варіантом для цього, але я думаю, що файл стане надзвичайно великим, оскільки ip змінюється серверно раз на день.
Я придумав ще 2 рішення, чи може хтось прокоментувати їх, чи вони хороші чи ні.
Перше рішення, яке мені спадає на думку, - це виключення цих атак з моїх журналів помилок apache. Це полегшить мені помітити інші термінові помилки, як вони трапляються, і не потрібно плювати через довгий журнал.
Я думаю, другий варіант краще, і це блокування хостів, які не надсилаються правильно. У цьому прикладі атака w00tw00t надсилається без імені хоста, тому я думаю, що я можу заблокувати хости, які не відповідають правильній формі.
Оновлення 2
Переглянувши відповіді, я прийшов до наступних висновків.
Для власного ведення журналу для апачу буде потрібно кілька непотрібних ресурсів, і якщо дійсно є проблема, ви, ймовірно, захочете подивитися на повний журнал, нічого не пропускаючи.
Краще просто ігнорувати звернення та сконцентруватися на кращому способі аналізу своїх журналів помилок. Використання фільтрів для ваших журналів - хороший підхід до цього.
Заключні думки з цього приводу
Згадана вище атака не охопить вашу машину, якщо ви принаймні маєте сучасну систему, тому в основному немає ніяких турбот.
Через деякий час важко відфільтрувати всі неправдиві атаки з реальних, оскільки і журнали помилок, і журнали доступу стають надзвичайно великими.
Запобігання цього будь-яким способом коштуватиме вам ресурсів, і це хороша практика не витрачати свої ресурси на неважливі речі.
Я використовую зараз рішення - логвапут Linux . Він надсилає мені підсумки журналів, і вони фільтруються та групуються. Таким чином ви можете легко відокремити важливе від неважливого.
Дякую всім за допомогу, і я сподіваюся, що ця публікація може бути корисною і для когось іншого.