работает на Wordpress

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

Заметка написана ночью 27 декабря 2006 в категориях: 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

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

    Комментарий отправил автор Nepall утром 27 декабря 2006

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

    Комментарий отправил автор Mishail утром 27 декабря 2006

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

    Комментарий отправил автор Gluek утром 27 декабря 2006

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

    Комментарий отправил автор cryonyx в обед 27 декабря 2006

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

    Комментарий отправил автор Gluek в обед 27 декабря 2006

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

    Комментарий отправил автор Kolo в обед 27 декабря 2006

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

    Комментарий отправил автор Gluek в обед 27 декабря 2006

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

    Комментарий отправил автор Kolo в обед 27 декабря 2006

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

    Комментарий отправил автор Gram днем 27 декабря 2006

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

    Комментарий отправил автор Gluek днем 27 декабря 2006

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

    Комментарий отправил автор neptune вечером 27 декабря 2006

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

    Комментарий отправил автор Gluek ночью 28 декабря 2006

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

    Комментарий отправил автор Neoline ранним утром 29 декабря 2006

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

    deny from 66.199.252

    Комментарий отправил автор Gluek утром 29 декабря 2006

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

    Комментарий отправил автор Mishail ночью 9 января 2007

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

    iptables в ядре? :)

    Комментарий отправил автор Dimonuch поздним вечером 6 августа 2007

  17. Да, а что?

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

    Комментарий отправил автор Gluek ночью 7 августа 2007

Подписка на комментарии через RSS

Извините, комментирование этой заметки завершено.

Связанные записи