効果的なスパム察策技術。

スパムずは䜕かを知っおいる人はほずんどおらず、それを取り陀いお欲しくない。 同時に䌁業のメヌルサヌバヌの「マスタヌ」である人々は、最終的には、スパマヌに察しお倚少なりずも効果的な救枈策を持っおいたす。


私たちはグレヌリスト技術グレヌリストに぀いお話しおいる。 簡単に蚀えば、この技術の本質は、盞手のサヌバヌの暙準ぞの準拠を確認するこずず、文字の送信速床を制埡するこずです。 4xx゚ラヌを受信した堎合、送信者のメヌルサヌバヌは埌でメヌルを送信しようずしたす。 通垞、スパマヌはこの゚ラヌを無芖しお、次の手玙を別の送信者からメヌルドメむン内の別のアドレスに送信しようずしたす。 その結果、この条件を満たさないすべおの詊行は砎棄されたす。

完党で詳现な説明が䞍圓に倚くのスペヌスを占めるため、テクノロゞヌのすべおの埮劙な点を理解したい人は、包括的な情報ぞのリンクを提䟛する怜玢゚ンゞンに送りたす。

方針。
各テクノロゞヌには、開発者からの倚くの実装がありたす。 䟋倖ではなく、グレヌリストのテクノロゞです。 最も成功した実装の1぀であるポリシヌに぀いおお話したいず思いたす。 このプログラムは、人気のあるpostfixメヌルサヌビスず䞀緒にむンストヌルするのが最も簡単で、以䞋に瀺すように、わずか数秒で接続したす。

policydの本質は、メヌルサヌバヌずの倖郚からの接続のリストを維持するこずです。 システムにレタヌを最初に配信しようずするず、接続は最初から終了し、送信システムはメヌルシステムが䞀時的に利甚できないこずを瀺すメッセヌゞを衚瀺し、埌でメッセヌゞの配信を詊みるよう招埅されたす。 同時に、送信者情報はMySQLデヌタベヌスに入りたす。 送信偎システムの送信者、受信者、IPのアドレスはデヌタベヌスに蚘録されたす。 ポリシヌシステムでは、このような゚ントリはトリプレットず呌ばれたす。

指定された期間たたはそれ以降埌に送信者がメッセヌゞを再床配信しようずするず、最初の接続に関する情報が利甚可胜であるこずを確認および確認したため、Postfixがメッセヌゞを受信し、ナヌザヌのメヌルボックスにメッセヌゞを配信するために必芁なアクションを実行できるようになりたす。

この送信者からシステムのナヌザヌぞの埌続の同様のメッセヌゞはすべお遅延なく配信され、配信成功のカりンタヌは埐々に増加したす。 送信者システムから圓瀟ぞの同じトリプレットの成功した​​配信の数が1぀のドメむンから別のドメむンぞの500接続のラむンを超えた堎合この倀は構成で調敎するこずもできたす、送信システムのIPはホワむトリストに移動し、将来フィルタリングされたせん。

メッセヌゞが再送信されない堎合、次のシナリオが有効になりたす。 れロ倀のトリプレットが500を超えるず、ipシステムずの接続の倱敗数も考慮されたす。ipシステムもリストされたす。 しかし、今回は黒で。 その埌、このアドレスからのすべおの接続はすぐに終了し、゚ラヌ550が発生したす。これにより、メヌルシステムのリ゜ヌスずトラフィックが確実に節玄されたす。

テクノロゞヌの本質が䜕であるかをすでに理解しおいるず思いたす。 ご存じのように、ほずんどのスパマヌ゜フトりェアは送信゚ラヌを凊理せず、再送信したせん。 これは、グレヌリストの長所ず短所の䞡方です。 実際には、本栌的なsmtp接続を確立し、すべおのルヌルに埓っお凊理する本栌的なシステムから送信されるスパムメッセヌゞは、正圓なメッセヌゞず同じ方法で配信されたす。 この理由は完党に透過的です-Policydはメッセヌゞの内容を分析したせん。 接続のみを制埡し、蚱可するか切断したす。

ただし、spamassassinたたはdspamを配眮するための第2の防衛戊線に悩む人はいたせんこれは良いこずです。 ぀たり、メッセヌゞ眲名いわゆるベむで機胜するシステムです。

ポリシヌをむンストヌルしたす。
前述のように、それほど高床ではないメヌルシステム管理者であっおも、policydの蚭定は難しくありたせん。 プロゞェクトアドレス[1]で、システムの最新バヌゞョンの゜ヌスをい぀でもダりンロヌドできたす珟時点ではバヌゞョン1.80です。 アヌカむブのサむズは非垞に小さく、わずか63キロバむトです。 Gentooナヌザヌは[2]でebuildを芋぀けるこずもできたす。 すぐにポリシヌ付きパッケヌゞがメむンのPortageツリヌに行くず思いたす。

アセンブリは事前蚭定を必芁ずせず、makeコマンドの出力には必芁な説明が含たれおいたす。

ルヌト/usr/src/policyd-v1.80 /make

可胜なオプションは次のずおりです。

ビルドする
むンストヌルする| むンストヌルストリップ
アップグレヌドする
きれいにする


最初に実行

ビルドする

そしお

むンストヌルする

実際のむンストヌル甚。 デフォルトでは、プログラムは/ usr / local / policydにむンストヌルされたす。 このディレクトリには4぀のファむルが含たれたす。 どこで
クリヌンアップ-デヌタベヌスから叀い情報を削陀するためのプログラム。
policyd-実際のポリシヌサヌビス。
policyd.conf-構成ファむル。
statsgentooでは、このコマンドはpolicyd_statsず呌ばれたすは、Policydの䜜業に関する統蚈を衚瀺するためのプログラムです。

PolicydはMySQLデヌタベヌスず連携するため、むンストヌルず必芁な暩限の発行が必芁です。 デヌタベヌスをむンストヌルする最も簡単な方法は、アヌカむブに含たれる回路図ファむルからです。 これは簡単なコマンドで実行されたす

ルヌト/usr/src/policyd-v1.80 /mysql -p <DATABASE.mysql

その埌、mysqlに移動しおPolicydのナヌザヌに暩限を発行するだけです。

mysqlは、policydのすべおを蚱可したす* 'somepassword'で識別されるpostfix @ localhostぞ。


これで、Postfix構成ファむルにPolicydぞの呌び出しを远加できたす。 これは、main.cfで次のように行われたす。 行内

smtpd_recipient_restrictions =

グレヌリストサヌビスに呌び出しを远加したす

check_policy_service inet127.0.0.110031

もちろん、これはポリシヌサヌビスぞのデフォルトの呌び出しです。 別のアドレスたたはポヌトを割り圓おる堎合は、ここでパラメヌタヌを指定する必芁がありたす。

トリプレットのクリヌンアップずリストクリヌニングを機胜させるには、crontabに次の行を远加したす。

0 * * * * / usr / local / policyd / cleanup -c /usr/local/policyd/policyd.conf


たたは、/ etc / cron.hourlyディレクトリに同様のbashスクリプトを配眮したす

gentooのパッケヌゞの堎合、/ etc / cron.hourlyに必芁なスクリプトが自動的にむンストヌルされたす。

その埌、Policydのむンストヌルは完了したず芋なすこずができたす。

ポリシヌを蚭定したす。
すべおのポリシヌ蚭定は、/ usr / local / policyd / policyd.confファむルで行われたす。 この蚘事では、䞻にグレヌリストの操䜜に泚意を払いたすが、プログラム自䜓にはさらにいく぀かの蚭定ず機胜がありたす。 それらに関する情報が必芁な堎合は、おそらくそれらを最も効果的に䜿甚する方法に関する別の远加蚘事を曞くでしょう。 それたでの間、構成ファむルの最も重芁なパラメヌタヌに泚意を払いたしょう。 䞀般に、構成ファむルにはかなり理解しやすいコメントが備わっおおり、英語の技術蚀語の最䜎限の知識で非垞に単玔なものを把握するこずに泚意する必芁がありたす。

たず、これらはMySQLデヌタベヌスにアクセスするための蚭定です。 倉数MYSQLHOST、MYSQLDBASE、MYSQLUSER、およびMYSQLPASSにはそのような「おしゃべり」の名前があるため、それらの意味を説明する䟡倀はないず思いたす。

FAILSAFEは、デヌタベヌスぞのアクセスがない堎合にポリシヌが電子メヌルをスキップするこずを蚱可したすたたは蚱可したせん。 私にずっおは、MySQLが機胜しない堎合、Postfixは文字をどこに眮くかわからないため、このオプションは関係ありたせん。

DAEMON CONFIGセクションでは、次のオプションが興味深いです

DEBUG = 3は、手始めに、Policydの䜜業に関する非垞に詳现な情報を芋たいこずを瀺したす。

DAEMON = 0は、ポリシヌずしおサヌビスずしおではなく、アプリケヌションずしお起動されるこずを意味したす。 その埌、このパラメヌタヌを1に倉曎したす。

BINDHOSTずBINDPORTは、Policydぞの呌び出しがあるアドレスずポヌトを瀺したす。

SYSLOG_FACILITY = "LOG_MAIL | LOG_INFO」は、サヌビスの操䜜に関する情報が、メヌルシステム自䜓の操䜜ず同じファむルほずんどのシステムのsyslogに反映されるこずを瀺しおいたす。

CONN_ACLは、どのネットワヌクアドレスがサヌビスぞのアクセスを蚱可されおいるかを瀺したす。

次は、構成ファむルの2぀の最も重芁なセクションです。 これはホワむトリストずブラックリストです。 それらの倉数は、もちろん名前を陀いお同䞀です。 ある堎合は癜、別の堎合は黒。

WHITELISTING = 1およびBLACKLISTING = 1は、それぞれブラックリストずホワむトリストを含めるこずを意味したす。

AUTO_WHITELIST_NUMBER = 500およびAUTO_BLACKLIST_NUMBER = 500は、500個の成功した倱敗したトリプレットを蓄積した埌、ホストがホワむトブラックリストにリストされるこずを意味したす。

AUTO_WHITELIST_EXPIRE = 7dおよびAUTO_BLACKLIST_EXPIRE = 7dは、リスト内の情報の有効期限が7日間であるこずを瀺したす。 7日ごずに1回、ホストは䞡方のリストから削陀されたす。 この倉数は䞀郚の人にずっおは疑わしいものです。 送信システムが正垞になる可胜性があるず誰もが信じおいるわけではありたせん。 ただし、Policydを完党に自動化するには、これらの蚭定を有効のたたにしおおくこずをお勧めしたす。

BLACKLIST_REJECTIONオプションは、ブラックリストの説明セクションでのみ䜿甚でき、そこからメッセヌゞを配信しようずしたずきにリスト内のシステムに衚瀺されるメッセヌゞが含たれおいたす。

ここで、グレヌリストシステム自䜓の蚭定GREYLISTINGが含たれる最も重芁なセクションに泚目したしょう。

GREYLISTING = 1は、グレヌリストを䜿甚するこずを瀺したす。

BLEYLIST_REJECTIONず同様のGREYLIST_REJECTIONには、メッセヌゞが最初に送信されたずきに送信システムに送信される文字列が含たれおいたす。

GREYLIST_X_HEADER = 1は、グレヌリストを正垞に通過したすべおのメッセヌゞにx-headerを含めるかどうかを瀺したす。

テスト段階ではTRAINING_MODE = 0が必芁です。 このオプションはスキップし、䜿甚したせんでした。 倉数が1に蚭定されおいる぀たり有効になっおいる堎合、Policydは画面たたはログファむルに䜜業の結果を衚瀺するずきにテストモヌドで動䜜したすが、Postfixがメッセヌゞを受信するこずを防ぎたせん぀たり、実際にメヌルの䜜業に参加したせん 。

TRIPLET_TIMEは、メッセヌゞの2回目の配信詊行最初の詊行時から埌、メッセヌゞが受信および配信されるたでの時間を瀺したす。

TRIPLET_AUTH_TIMEOUT = 30dは、成功したトリプレット配信枈みに関する情報が30日間保存されるこずを意味したす。 このパラメヌタヌは、成功したすべおのトリプレットが氞久に保存されないようにするために必芁です。 たずえば、誰かからのメッセヌゞが2぀しか配信されず、この人ずの通信が終了した堎合。 したがっお、デヌタベヌス内の無駄なゎミを最小限に抑えるために、ささやかな貢献をしたす。

TRIPLET_UNAUTH_TIMEOUT = 2dのアナロゞヌは、倱敗したトリプレット配信されないに関する情報が2日間保存されるこずを意味したす。

これで、ここで終了するように泚意したいパラメヌタヌ。 これで、PolicydおよびPostfixを安党に実行し、システムにメッセヌゞを配信しようずするずどうなるかを確認できたす。

すべおが正垞に動䜜し、詳现なログを確認しおいるこずを確認した埌、DAEMONパラメヌタヌを1に蚭定し、ログレベルを詳现床の䜎い蚭定に蚭定するこずを忘れないでください。

おわりに
正盎なずころ、私はPolicydのむンストヌル時に発生する可胜性のある問題を認識しおいたせん。間違いを犯す堎所がないようです。 私からは、䌚瀟の䌁業サヌバヌにグレヌリストをむンストヌルした埌、負荷が数桁枛少したこずに泚意しおください。 spamassassinぞの呌び出しは倧幅に少なくこの゜フトりェアはperlを䜿甚するこずで達成される「速床」で知られおいたす、突然発生したサヌバヌアップグレヌドの緊急の問題がバックグラりンドに埌退したした。 さらに、りむルスはスパムず同じ方法で送信されるため、システムは膚倧な数のりむルスから保護されたす。倚くの堎合、りむルス察策はこれを認識する時間がありたせん。 特に、補品を所有しおいるKaspersky Anti-Virus Labの䜜業品質を考慮しおいたす。しかし、これはこの蚘事の別の話ではありたせん。

Policydの効果をより明確にするために、金曜日の倜から月曜日の朝たでの間に500〜600通を超えるスパムメヌルを受信した堎合、その数は15〜20にかなり枛少したず蚀えたす。

数日埌の私のシステムからのstatsコマンドの出力は次のずおりです。
グレヌリストトリプレット情報
->
トリプレット-> 42523
怜蚌枈み-> 1811
未怜蚌-> 40712

コメントは䞍芁だず思いたす。

ずころで、統蚈は次のように実行されたす
cd / usr / local / policyd
./stats –c policyd.conf


さらに、ポリシヌモヌドでデヌモンモヌドで動䜜し、syslogを介しおログを蚘録しおいる堎合、statsコマンドの出力がログファむルに衚瀺されるずいう事実に泚意する䟡倀がありたす。

スパムに盎面しお頑匵っおください。

[1] -policyd.sourceforge.net
[2] -bugs.gentoo.org/show_bug.cgi?id=112261

c キヌパヌのアレクセむ・コルシュノフ。
OSAずいう名前の雑誌「システム管理者」の電子サプリメントで初めお公開されたした。

Source: https://habr.com/ru/post/J5399/


All Articles