У меня есть сервер с 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
Пройдя через ответы, я пришел к следующим выводам.
Чтобы иметь собственную регистрацию для apache, потребуются некоторые ненужные ресурсы, и, если действительно есть проблема, вы, вероятно, захотите просмотреть полный журнал без каких-либо пропусков.
Лучше просто игнорировать попадания и сосредоточиться на лучшем способе анализа журналов ошибок. Использование фильтров для ваших журналов хороший подход для этого.
Заключительные мысли по этому вопросу
Атака, упомянутая выше, не достигнет вашей машины, если вы хотя бы имеете современную систему, так что в основном не стоит беспокоиться.
Через некоторое время может быть сложно отфильтровать все поддельные атаки от реальных, поскольку журналы ошибок и журналы доступа становятся чрезвычайно большими.
Предотвращение этого в любом случае будет стоить вам ресурсов, и это хорошая практика, чтобы не тратить свои ресурсы на неважные вещи.
Решением, которое я использую сейчас, является Linux logwatch . Он посылает мне сводки журналов, и они фильтруются и группируются. Таким образом, вы можете легко отделить важное от неважного.
Спасибо всем за помощь, и я надеюсь, что этот пост может быть полезен и для кого-то еще.