powered by Wordpress
show/hide categories

Блокируем спам с помощью iptables

Entry posted 27 Dec 2006 at night in categories: webdev, blogs, programming, faq, linux

Поизучал сегодня логи сервера и заметил, что 99% спама идет из пары десятков подсетей (позор вам, китайские открытые прокси!). Спам фильтры для Wordpress - это вещь хорошая, но проверка каждого комментария довольно сильно нагружает сервер (каждый комментарий - это лишний httpd процесс + обращение к mysql базе).

Так что самым правильным решением я выбрал блокировку эти подсетей на уровне ядра. Для этого в Linux есть замечательная штука - iptables (английская справка - man iptables, русская - здесь). Итак, что у нас получилось:

  • Отслеживаем отправку комментариев:
    tail -f accesslog | grep 'post.php'
  • Спамеров - блокируем:
    /sbin/iptables -A INPUT -s 66.199.252.0/255.255.255.0 -p tcp -m multiport --dports 80 -j DROP
  • Контролируем результат:
    /sbin/iptables -L -v -n --line-numbers

В итоге - нагрузка сервера упала на порядок. Эффект достигнут!

« XNeur - аналог Punto Switcher для LinuxЦифровые фото 10×15 по 1 руб. »

17 Comments »

  1. Не спится в 2 часа ночи ? , на ночь самое оно логи изучать ^_^

    Comment by Nepall — 27 Dec 2006 at 09:43  Add karma Subtract karma  -1

  2. А Comment Blacklist не то же самое делает?

    Comment by Mishail — 27 Dec 2006 at 10:04  Add karma Subtract karma  +0

  3. Mishail: нет, не тоже. Нагрузка в разы больше из-за обращения к Apache и MySQL. Впрочем, я это уже говорил :)

    Comment by Gluek — 27 Dec 2006 at 10:22  Add karma Subtract karma  +0

  4. Эхъ, мне с моим хостером только мечтать о таком… Эти [censored] мне заявили на днях, что все операции можно сделать посредством FTP и cPanel (последней антидизайнерской наработке стоит, пожалуй, посвятить отдельный пост, благо она стоит на каждом втором хостинге). Надо им дать почитать эту запись, чтобы направить их на путь истинный :)

    Comment by cryonyx — 27 Dec 2006 at 14:24  Add karma Subtract karma  +0

  5. cryonyx: Ну на shared хостинге такого и не надут делать в принципе, так что по идее защиту от таких вещей должен сам хостер делать…

    Comment by Gluek — 27 Dec 2006 at 14:29  Add karma Subtract karma  +0

  6. Почему-бы сразу не взять список русских сетей и не заблочить все остальные? ;)

    Comment by Kolo — 27 Dec 2006 at 14:44  Add karma Subtract karma  +0

  7. Kolo: ну хотя-бы потому, что половина посетителей не из России смотрят ;)

    Comment by Gluek — 27 Dec 2006 at 14:46  Add karma Subtract karma  +0

  8. Ну и хрен с ними. Все-равно от них пользы никакой ;)

    Comment by Kolo — 27 Dec 2006 at 15:34  Add karma Subtract karma  +0

  9. 2Kolo
    Ну мы же делаем сайты не для себя, а для других, в том смысле, что сайт впервую очередь должен приносить пользу другим… Хотя зависит от сайта конечно, но в данном случае так.

    Comment by Gram — 27 Dec 2006 at 17:17  Add karma Subtract karma  +0

  10. Kolo: Как говорили одни известные личности - информация должна быть свободна (и доступна)…

    Comment by Gluek — 27 Dec 2006 at 17:27  Add karma Subtract karma  +0

  11. А зачем тебе -m multiport, если указан только 80?)))

    Comment by neptune — 27 Dec 2006 at 19:13  Add karma Subtract karma  +0

  12. neptune: да “80,443″ было сначала, а потом почему-то так осталось :)

    Comment by Gluek — 28 Dec 2006 at 00:31  Add karma Subtract karma  +0

  13. Неплохое решение когда сайт валяется на собственном серваке, а что же делать когда он на шаред хостинге :)

    Comment by Neoline — 29 Dec 2006 at 07:04  Add karma Subtract karma  +0

  14. Neoline: в файле .htaccess для Apache поставить:

    deny from 66.199.252

    Comment by Gluek — 29 Dec 2006 at 09:21  Add karma Subtract karma  +0

  15. Кста, не пробовал HashHash использовать?

    Comment by Mishail — 9 Jan 2007 at 02:49  Add karma Subtract karma  +0

  16. “я выбрал блокировку эти подсетей на уровне ядра”

    iptables в ядре? :)

    Comment by Dimonuch — 6 Aug 2007 at 23:53  Add karma Subtract karma  +0

  17. Да, а что?

    Основная часть функций пакетной фильтрации Iptables, вошедшая в код ядра операционной системы, может быть скомпилирована либо как часть ядра, либо в виде отдельных модулей.

    Comment by Gluek — 7 Aug 2007 at 00:09  Add karma Subtract karma  +0

comments rss trackback add to del.icio.us

Leave a comment

Или используйте OpenID:

Доступные для использования теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Все комментарии рекламного характера, а также комментарии не по теме заметок («оффтопик») будут удаляться.

Данная заметка была написана более года назад. Перед отправкой вашего комментария убедитесь, что он всё еще актуален.

Related posts