第15回「WordPressとウェブアプリケーションファイヤーウォールの設定」

2015.02.01

より安全にWordPressを運用する為に、サーバーのWAFを有効化しましょう!

多くのレンタルサーバーで利用されているWAF(ウェブアプリケーションファイヤーウォール)
phpやcgiなどで不正なコマンドの実行を防ぐセキュリティのシステムです。

WordPressを運用する場合は是非有効化したい機能ですが、管理画面が上手く行かない場合もあるようです。

今回は共有SSL等を利用し、WAFとWordpressを共存させる為の方法をご説明します。

Craftbukkitの起動管理用スクリプトを修正してくれた「sara」さんのブログ
さらぽっぽ

 

記事の説明はこちらから

(さらに…)

2015年2月1日¦ カチEリEE?php the_category(' - '); ?> ¦ コメンチE?php comments_number(' (0) ',' (1) ',' (%) '); ?>

どうしても判定から漏れる語句がある

2014.05.09

mailfilerのチューニングが日課になってきたコヒ蔵です。

かなり検索精度が上がってきました。
誤判定を避けるために色々工夫しているけど、今のところ誤判定は無し。
判定から逃れるスパムがあるけどそこそこ良い感じになってきました。

しかし、どうしても判定から漏れる語句があります。
具体的には書けませんが

例えば「激安!電器屋Walker」という語句を含むメールが来るとして、
辞書ファイルに「電器屋Walker」と入れているのに判定から逃れる・・・

なんでだろう?
UTF8なので、心配ないはずですが、これまでの経験からダメ文字の可能性をチェックしてみましたが特にそういう雰囲気も無く。
改行コードが混ざっているのか?そもそも記号が含まれていないか?など、さまざま考えましたが全部関係なし。

むむむー、何故だろう。

「undisclosed-recipients」について
BCCしか含めずにメールを送ると、宛先が空欄になる現象をご存じですか?
アンディスクローズド-レシピエンツと表示されたりするのですが、要は宛先が内包されていませんと。
これまでは無条件で迷惑メールとして判定していましたが、とある企業が顧客宛にこの配信方法を採用していてビックリ!
そこで条件を、「undisclosed-recipientsでホワイトリストに登録のない場合」に変更しました。

どうでも良いけど、この配信方法はあまりおすすめ出来ないと思いますよ?(^^ゞ

しかし、どうやって調べたら良いですかねぇ、どなかたお知恵を貸して下さい(>_<)

2014年5月9日¦ カチEリEE?php the_category(' - '); ?> ¦ コメンチE?php comments_number(' (0) ',' (1) ',' (%) '); ?>

第12回「迷惑メール対策 後編」

2014.04.20

第16回「maildrop、mailfilterによるメール振り分け 完成版」で、もう一度詳しく説明しています。そちらもご覧下さい。

.mailfilter(maildrop)の日本語マッチング用辞書は「文字コード」に問題がありました。

研究内容:
マッチング用辞書ファイルに何かの文字列を入れると、エラーで受信が行われなくなりました。
削除すると元に戻りますが、対象となる文字が意外と多くて原因が特定出来ない状態に。
とにかく文字が何か悪さをしているのだと思い、文字を()で囲ってみたり、””で囲ってみたりするも効果無し。

「文字のエンコード」を原因の主なキーワードと仮定し、様々調べる・・・も有力な情報なし。

その中で偶然「ダメ文字」という言葉を発見しました。
これはShift-jis等の2バイト目の文字がプログラム上の特定の意味を持つ記号になっている場合に発生する問題だと分かりました。
例えば「ソフト」の「ソ」は2バイト目が「0x5c」となりこれは「\(実際には半角ですが)」となるんだそうです。

難しい事は置いといて、この様な問題から何気なく登録した日本語が多くのダメ文字を含んで居たためその都度問題を引き起こしていたという事になります。

解決するにはどうするの?:
どういう訳かは分かりませんが、私がmailfilterの研究をしようと様々な情報を見に行っても、殆どの場合「ファイルの文字エンコードをShift-JISにするべし!」と書かれていました。
ちなみにさくらインターネットのレンタルサーバーの場合、サーバーの文字コードはEUC-JPだそうです。メールは様々な形式で来るし、私はPHPやHTML等をUTF8で書いています。

じゃあ、なんでシフトJISの必要性があるんでしょうか?
むー、全く分かりません。
どの情報を見ても、こういう理由でシフトJISが推奨されますという記述はないのです。

ダメ文字の言葉を知ってから、ダメ文字について検索すると「UTF8ではこれらの問題はありません」というのをよく見掛けます。
HTMLでもUTF8だし・・・問題無いかな?と思い、辞書ファイルをUTF8に変更しました。

結果は   ダメ!w

焦らず騒がず.mailfilterファイルもUTF8に! これでばっちり動きました。

数多くあるmailfilter関連の記事の中で唯一utf8に関する紹介があった記事はこちら
スタジオ・ドリ様 「さくらインターネット「ライトコース」で、自動応答メール機能」

これまでの文字エンコード:shift-jis
新たに変更したエンコード:utf-8

.mailfilter 判定の命令文が書いてあるファイル utf8に変更
.bkword   英語の判定語を記載したファイル shift-jisのまま変更せず
.bkwordjp  日本語の判定語を記載したファイル utf8に変更
その他、ブロックリスト(メールアドレスブロック)なども変更の必要はありませんでした。

単語登録の度に動作不良に悩まされていたのがだいぶ軽減できました!
たまに、動作が上手く行かない場合があるので、まだ何か問題がありそうですが、十分実用レベルだと思います。

.mailfilterと.bkwordjpをutf8に変更する手順

手順1)WinSCPで2つのファイルをローカルにダウンロード
手順2)Terapad等のエディターで開き、「文字コードを指定して保存」でutf8(又はutf8n BOM無し、改行コードLFのみ)を指定して保存
terapad01
terapad02terapad03

手順3)nkfのエンコード出力形式をutf8に変更


if ( /^From:\s*(.*)/ && lookup( $MATCH1, ".blockaddr" ) )
{
to "maildir/.Trash/"
}
if ( ! ( /^From:\s*(.*)/ && lookup( $MATCH1, ".whitelist" ) ) )
{
xfilter "/usr/local/bin/spamc"
}
if ( /^To:\s*(.*)undisclosed-recipients(.*)/ )
{
to "maildir/.Trash/"
}
if ( /^Subject:\s*(.*)/ && lookup( $MATCH1, ".bkword" ) )
{
to "maildir/.Trash/"
}
SUBJECT=`cat | grep Subject | nkf -w`
if ( lookup( $SUBJECT, ".bkwordjp" ) )
{
to "maildir/.Trash/"
}

「nkf -w」の所です。

手順4)WinSCPで2つのファイルをアップロード
    作業の都合上拡張しやファイル名を変更した場合は元に戻して下さい。
手順5)WinSCPのエディタでファイルを開き、正しくアップロードされているか確認する。
該当のファイルをWinSCP上でダブルクリックするとエディタが開きます。
最初はこんな感じで文字化けの状態です。
Editer02
「Encoring」のメニューからUTF8を選択すると・・・
Editer03
じゃじゃーん♪
表示されれば作業はOKです。
手順6)送受信チェック
    自分のアドレスから自分のアドレスに宛ててメールを送信し、送受信に問題がないかチェックして下さい。

判定語ファイル内で利用出来る「正規表現」について
判定語には正規表現の一部が使用できます。

全てを確認している訳ではありませんが、私が確認した範囲内でご説明します。

abc.efg
「.」は何かの1文字という指定です。空白を含む何か1文字があると判断されます。
abcdefg 該当
abc efg 該当
abc1efg 該当
abc22efg 該当せず
abcefg  該当せず

abc.*efg
「*」は直前の文字の「0回以上の」繰り返しという指定です。私の場合「.*」の様に使用する事が多いです。
-2014/05/02:訂正しました。
abcdefg 該当
abcdddefg 該当
abcefg  該当(任意の一時「.」の0回以上の繰り返し「*」なので、該当)
ab00fg  該当せず

(abc|123)-podcast
「|」は「~か~か」という条件を複数設定する機能です。似たような文章でキーワードを複数持たせたい場合に便利です。
abc-podcast 該当
123-podcast 該当
aoi-podcast 該当せず

#競馬当選関係迷惑メールキーワード
「#」はコメントアウトに使用します。検索語として機能しないメモ表記や一時的に特定のワードを解除したい場合に使います。
abc-pod 該当
123-pod 該当
#aoi-pod 該当せず

注意点1)エスケープ文字を検索語に登録する場合
だ.い|し.ゅ|う.ご|う!
この様にエスケープ文字をキーワードに含めたい場合は「¥」を文字の前に付記する事でエスケープ(単純にして文字として取り扱う)事が可能です。検索辞書内で忘れずにエスケープして下さい。
だ\.い\|し\.ゅ\|う\.ご\|う!

注意点2)パイプ「|」の重ね設定について
検索語辞書ファイル内ではこれ位の正規表現で十分だと思います。
「何となくのクセ」という曖昧な情報共有になりますが、以下の様に「|」での条件をいっぱい重ねるのは苦手な感じがします。

(abc|123|aoi).*(def|456).*(8888|9999|0000).*無料

最初は単独でキーワードを設定して、その後「|」を使ってまとめる時にはエラーが出ないかチェックしながら行う、というのが良さそうです。

コメントアウトも出来るし、カテゴリ毎にキーワードをまとめて行くとだいぶ修正しやすいものになります。
スパムメール対策だけではなく、「利用明細はこのフォルダ」とか利用価値は様々あると思いますので、活用してみて下さい。

使用する場合には自己責任でお願いします。
くれぐれも、受信メールがスタックした状態で放置しないようにして下さいね(^^ゞ

みなさんのテクニックなど有れば是非教えて下さい。

-------------------------------------
迷惑メール対策、ゾーン編集(SPFレコード、TXTレコード)についての追加情報
Gmail等で迷惑メールとして判定される不具合からSPFレコードについて調べ、自分のサーバーでも設定しました。
この情報をレンタルサーバーforビギナーズで公開してから、以外と反響が大きくてビックリしました。
皆さんも同じ悩みをお持ちだったんですね(^^ゞ

業務でしようしているサーバーでもSPFレコード、IPv6への対応になり、早速SPFレコードを編集しようとしたましたが問題がありましたのでご報告します。

.co.jp等の地域型、属性型ドメインではゾーン編集(TXTレコード等の編集の事)が出来ない場合があります。
サーバー運営会社等によるのかも知れませんが、少なくてもさくらインターネットではさくらインターネットで取得したか、他社で取得し管理をさくらインターネットに移管したかに依らず、co.jpドメインのゾーン編集は出来ないそうです。
サポートにメールを送ったり、マニュアルを確認したりしていましたが、きちんと回答がありました。
出来ません(>_< ) ドメインの管理画面にco.jpは表示すらされません。 domain01
それでも、コントロールメニュー内のドメイン設定にはco.jpも表示されます。
domain02
そもそも個人利用でco.jpはあり得ないので、この問題に直面している方は企業でサーバー管理などをされている方だと思いますが、
co.jpドメインではコントロールメニューから選べる「SPFレコードを使用する、IPv6を利用する」のチェックボックスだけが操作可能です。

co.jpドメインの場合それでも問題なさそうですが、どうしても問題なら.jpや.com等の別ドメインを検討するしかなさそうです、今のところ。

じゃあ、さくらインターネット以外ではどうか?と思って調べてみましたが、表面上の情報ではなかなかヒットせず、今ひとつ分かりませんでした。
情報お持ちの方いらっしゃいましたら教えて頂けると幸いです。

センダーベース.org (IPのスパマー評価をするシスコシステム運営のウェブサイト
senderbase.org

2014年4月20日¦ カチEリEE?php the_category(' - '); ?> ¦ コメンチE?php comments_number(' (0) ',' (1) ',' (%) '); ?>

なるほどね、co.jpドメイン

2014.04.12

業務で使用しているサーバーでもIPv6に対応したので
すわ、SPFレコードを編集しようと思ったら。

さくらインターネットでは.co.jpドメインのゾーン編集には対応していないらしい。
およよ(´・ω・`)

2014年4月12日¦ カチEリEE?php the_category(' - '); ?> ¦ コメンチE?php comments_number(' (0) ',' (1) ',' (%) '); ?>

第10回「レンサバ、迷惑メール対策」

2014.03.01

第16回「maildrop、mailfilterによるメール振り分け 完成版」で、もう一度詳しく説明しています。そちらもご覧下さい。

レンタルサーバーforビギナーズ 第10回「レンサバ、迷惑メール対策」

MailDropを利用した迷惑メール対策について

さくらのレンタルサーバーやVPSサービスで迷惑メール対策を。

MailDrop(mailfilter)を利用したキーワードマッチング式の
迷惑メール対策についてご説明します。

突如判定が厳しくなったGmailに対する送信についてもご説明しています。

SPFレコードの設定方法についてはさくらのレンタルサーバー IP6利用&SPFレコードについて(Gmail対策)をご参照下さい。

私が調整中のmailfilter関係の設定内容(参考)
※ご利用は自己責任でお願いします。

ステップ1 作業前に必ずバックアップを取って下さい。
文法や設定ファイルの内容に問題があると、該当するアカウントでのメール受信が停止します。
その際、正常に動いていたファイルに戻すと、受信が復活します。
(スタックしてしまったメールは10分後ぐらいに受信されます。)
必ずバックアップをして置いて下さい。
 バックアップするファイルは「.mailfilter」
 作成済みであれば以下も「.bkword」「.bkwordjp」

ステップ2 mailfilter設定の調整


if ( /^From:\s*(.*)/ && lookup( $MATCH1, ".blockaddr" ) )
{
to "maildir/.Trash/"
}
if ( ! ( /^From:\s*(.*)/ && lookup( $MATCH1, ".whitelist" ) ) )
{
xfilter "/usr/local/bin/spamc"
}
if ( /^To:\s*(.*)undisclosed-recipients(.*)/ )
{
to "maildir/.Trash/"
}
if ( /^Subject:\s*(.*)/ && lookup( $MATCH1, ".bkword" ) )
{
to "maildir/.Trash/"
}
if ( /^Subject:\s*(.*)/ && lookup( $MATCH1, ".bkwordjp" ) )
{
to "maildir/.Trash/"
}
SUBJECT=`cat | grep Subject | nkf -ms`
if ( lookup( $SUBJECT, ".bkwordjp" ) )
{
to "maildir/.Trash/"
}

さくらのレンタルサーバーのコントロールパネルやウェブメールの設定変更の影響を受けます。
特に、ブロックリスト、ホワイトリストへのアドレスの追加などを行うと、このファイルは自動的に変更される場合がありますので注意しましょう。

(1)TOが空欄の場合ゴミ箱へ(CC、BCCのみでの送信のメールを捨てる。)

if ( /^To:\s*(.*)undisclosed-recipients(.*)/ )
{
to "maildir/.Trash/"
}

(2)件名がbkwordファイル内のキーワードとマッチすれば捨てる。

if ( /^Subject:\s*(.*)/ && lookup( $MATCH1, ".bkword" ) )
{
to "maildir/.Trash/"
}

(3)件名がbkwordjpファイル内のキーワードとマッチすれば捨てる。
   さらに件名をjis変換して再度マッチング

if ( /^Subject:\s*(.*)/ && lookup( $MATCH1, ".bkwordjp" ) )
{
to "maildir/.Trash/"
}
SUBJECT=`cat | grep Subject | nkf -ms`
if ( lookup( $SUBJECT, ".bkwordjp" ) )
{
to "maildir/.Trash/"
}

この3つの処理でbkwordとbkwordjp内にあるキーワードと件名のマッチングを行って迷惑メールを処理しています。
ムダや不備があると思うのでアドバイスが頂けると嬉しいです。

ステップ3「.bkword」と「.bkwordjp」を作成する。
面倒なので「.blockaddr」をコピーして下さい。
このファイルはブロックリストです。コピーして名前を変更したら中身は削除して置いて下さい。
ちなみに「.bkword」は英語とのマッチング用のキーワードファイル
「.bkwordjp」は日本語のマッチング用キーワードファイルとしています。

ステップ4キーワードファイルを育てる
.bkwordファイルの中身(抜粋)

VIAG(L|l|R|r)A
R(0|O|o)LEX
(B|b)-(cas|CAS)
data.entry.job
website.traffic.generator
Dofollow.Backlinks





・1行1マッチングパターンです。
・限定的ですが正規表現が使えます。

.bkwordjpファイルの中身(抜粋)

([]頭)
([]ニス)
([]んこ)
([][]アグラ)
(バキ).*(フェラ)
(禁断).*(限定)
(あまり).*(気持).*(快感)
(業界).*(人級).*(サイズ)

[]は伏せ字です。実際はそのままの言葉が入っています。
・1行1マッチングパターン
・極めて変則的ですが、正規表現が使えます。
・()内のキーワードは全角で最大5文字まで(それ以上はエラーになる可能性があります。)
・1行の文字数は全角半角記号全て合せて19文字まで(それ以上はエラーになる可能性があります。)
・一部、何でも無い単語がエラーの元になったりする時があります。
 私の場合([]ナニー)が単体でエラーとなりMaildropの動作を止めてしまいます。

日本語キーワードファイルはまだまだ謎が多く、動作不良を引きをおこす原因を多くはらんでいます。
なので、作業前には必ずバックアップをとり、キーワードを増やした後は必ず自分宛にメールを送って受信可能か確認して下さい(問題がでたら、追加した単語を1個ずつ削って確認しましょう)

注意点
構文やキーワードファイルにエラーが出ると、メールの受信が出来なくなり、その間に受信したメールが途中で引っかかります。ただ、変更点を戻す(バックアップファイルから戻す)とすぐに正常に動作し始めます。
ただ、一度引っかかったメールは10分後ぐらいになってようやく受信されますので、ご注意を。

私もまだ色々トライしながら調整しているので良いアドバイスや成功事例があれば教えて下さい。
さくらのレンタルサーバー以外でもMaildropを使用しているサーバーでSSHでアクセス出来るようであれば同じ事に挑戦が出来ると思います。

重ねて、くれぐれも自己責任でお願いします。

2014年3月1日¦ カチEリEE?php the_category(' - '); ?> ¦ コメンチE?php comments_number(' (0) ',' (1) ',' (%) '); ?>

INST-web、E器屋Walkerは「さくらのレンタルサーバE」を借りて運用してぁEす、E/p>

2017年4月
« 8月    
 12
3456789
10111213141516
17181920212223
24252627282930

Photo Hito

PHOTOHITOブログパーツ

音楽素材Musmus

電器屋WalkerのBGMはこちらを利用させて頂いております。

RSS FEED

INST-web [ ストブロ ]のRSSフィード