Как-то на досуге я занялся анализом приходящего спама и обратил внимание, что практически 98% спама в комментариях приходят с IP-адресов, замеченных в рассылке спама по электронной почте. А спамеры обычно попадают в черные списки (blacklist).

DNSBLDNS blacklist или DNS blocklist — списки хостов, хранимые с использованием системы архитектуры DNS. Обычно используются для борьбы со спамом. Почтовый сервер обращается к DNSBL, и проверят в нём наличие IP-адреса клиента, с которого он принимает сообщение. При положительном ответе считается, что происходит попытка приёма спам-сообщения, и оно блокируется (не принимается сервером, и, как правило, отправителю отсылается уведомление об этом).

Идея состоит в том, чтобы написать расширение для WordPress, проверяющее наличие IP-адреса комментатора в чёрном списке.

Есть два (интересующих в данный момент) типа DNSBL: LHSBL (Left Hand Side Blacklist) и RHSBL (Right Hand Side Blacklist). Основная разница в том, что в LHSBL проверяются IP-адреса, а в RHSBL проверяются доменные имена.

Проверка адреса в LHSBL

Пусть, например, имеется IP-адрес 62.85.45.84 (спамер, привет!). Допустим, мы хотим его проверить в списке dnsbl-3.uceprotect.net.

Для этого мы "обращаем" IP-адрес (то есть из 62.85.45.84 делаем 84.45.85.62) и добавляем его к имени хоста списка. в результате получим имя 84.45.85.62.dnsbl-3.uceprotect.net.

В PHP проверку можно сделать, например, при помощи функции gethostbyname(). Для простоты можно выполнить запрос и при помощи утилиты host:

[-]
View Code Bash
host -t any 84.45.85.62.dnsbl-3.uceprotect.net

В результате получим

84.45.85.62.dnsbl-3.uceprotect.net has address 127.0.0.2

Когда возвращается адрес 127.0.0.0/8, это означает, что адрес в черном списке (конкретное значение зависит от самого списка; например, 127.0.0.2 может означать открытый релей, 127.0.0.3 — открытый прокси-сервер и т.п.).

Если же возвращается ошибка NXDOMAIN (несуществующий домен), адрес не в черном списке.

В Windows, где утилиты host нет (поправьте меня, если ошибаюсь), проверку можно выполнить утилитой nslookup:

[-]
View Code Bash
nslookup 84.45.85.62.dnsbl-3.uceprotect.net

На моём компьютере ответ был таким:

Server:         10.10.0.15
Address:        10.10.0.15#53
Non-authoritative answer:
Name:   84.45.85.62.dnsbl-3.uceprotect.net
Address: 127.0.0.2

Проверка адреса в RHSBL

Проверка в RHSBL аналогична проверке в LHSBL; разница состоит в том, что вместо IP-адреса проверяется доменное имя.

Например, если мы хотим проверить oardo.com (Дэвид, привет!) в списке multi.surbl.org, нам нужно проверить существование имени (записи A или AAAA) oardo.com.multi.surbl.org:

[-]
View Code Bash
host -t any oardo.com.multi.surbl.org

Результат:

oardo.com.multi.surbl.org descriptive text "Blocked, oardo.com on lists [ob], See: http://www.surbl.org/lists.html"
oardo.com.multi.surbl.org has address 127.0.0.16

Аналогично, если запись не в черном списке, возвращается NXDOMAIN.

Пример очень простого скрипта на PHP (на коленке за 5 минут), проверяющего черные списки:

[-]
View Code PHP
<pre>
<?php
    $lhsbls = array(
        'dnsbl.ahbl.org',
        'dnsbl.isoc.bg',
        'cbl.abuseat.org',
        'bl.csma.biz',
        'list.dsbl.org',
        'bl.emailbasura.org',
        'dnsbl-1.uceprotect.net',
        'dnsbl-2.uceprotect.net',
        'dnsbl-3.uceprotect.net',
        'zen.spamhaus.org',
        'bl.spamcop.net',
        'bl.spamcannibal.org',
        'dnsbl.sorbs.net',
        'dnsbl.rangers.eu.org',
        'psbl.surriel.com',
        'combined.rbl.msrbl.net',
        'noptr.spamrats.com',
        'zombie.dnsbl.sorbs.net',
        'badconf.rhsbl.sorbs.net',
        'dyna.spamrats.com',
        'intercept.datapacket.net',
        'blacklist.hostkarma.com',
        'postmaster.rfc-ignorant.org',
        'abuse.rfc-ignorant.org',
        'whois.rfc-ignorant.org',
        'bogusmx.rfc-ignorant.org',
    );

    $rhsbls = array(
        'abuse.rfc-ignorant.org',
        'bogusmx.rfc-ignorant.org',
        'dsn.rfc-ignorant.org',
        'dynamic.rhs.mailpolice.com',
        'l1.apews.org',
        'multi.surbl.org',
        'multi.uribl.com',
        'postmaster.rfc-ignorant.org',
        'rddn.dnsbl.net.au',
        'rhsbl.ahbl.org',
        'rhsbl.sorbs.net',
        'webmail.rhs.mailpolice.com',
    );

    $ip   = 'IP ADDRESS HERE';
    $host = gethostbyaddr($ip);

    $rev = preg_replace('/^(\\d+)\.(\\d+)\.(\\d+)\.(\\d+)$/', '$4.$3.$2.$1', $ip);

    foreach ($lhsbls as $entry) {
        print "Querying {$entry}...";
        $res = gethostbyname($rev . '.' . $entry);
        print $res . "\n";
    }

    print "\n\n{$host}\n\n";
    foreach ($rhsbls as $entry) {
        print "Querying {$entry}...";
        $res = gethostbyname($host . '.' . $entry);
        print $res . "\n";
    }
?>

Будет время, нужно будет попробовать написать плагин для WordPress

Добавить в закладки
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • БобрДобр
  • Мистер Вонг
  • Yandex.Закладки
  • Текст 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Писали
  • СМИ 2
  • Моё Место
  • 100 Закладок
  • Ваау!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - IN.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA
  • Slashdot
  • Magnolia
  • Blogmarks
  • Current
  • Meneame
  • Oknotizie
  • Diigo
  • Funp
  • Hugg
  • Dealspl.us
  • N4G
  • Mister Wong
  • Faves
  • Yigg
  • Fresqui
  • Care2
  • Kirtsy
  • Sphinn

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

2
Май
2008

Комментарии к статье «Использование DNSBL для борьбы со спамом в комментариях» (2)  »

  1. oyfNJ says:

    Hi, Your Site is Very Informative, Thanks

  2. Vladimir says:

    oyfNJ, or whosoever you are (I guess you are a spam bot, but anyway)… All offtopic and spam links are ruthlessly killed by the Spam Recognition System, our secret weapon :-) So don’t waste your time :-)

    I remember one wise man saying, If you have nothing to do, don’t do it here, please!

Подписаться на RSS-ленту комментариев к статье «Использование DNSBL для борьбы со спамом в комментариях» Trackback URL: http://blog.sjinks.org.ua/php/123-using-dnsbl-to-fight-comment-spam/trackback/

Оставить комментарий к записи «Использование DNSBL для борьбы со спамом в комментариях»

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, Вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя