当社はIT技術のオンライン教育を得意としたセミナー専門会社です。 | 一戸英男

ITエンジニアの技術力UPをお約束します。

postfix メール添付の拡張子から判断しREJECTする。

postfix メール添付の拡張子から判断しREJECTする。


メールの添付でもメールフィルタリングは行なえます。日本の企業もだいぶSNSを使用してファイルを送る習慣が普及し始めているので、メールに添付して送るのはレアケースになりつつある。そうは言ってもゼロではないのでpostfixにおいて拡張子でブロックする方法を案内する。普段から会社内でルールを決めると良いと思う。例えばメールに添付する場合は必ずzip圧縮してから送るとか、取引先にも添付データ形式をお願いする。そうすれば範囲が狭まりより安全にすることができる。

拡張子から判断する設定(Postfix)

以下を参考によく使っている拡張子で修正して設定を行ってください。

タグ: , , ,

postfixの送信メールにはデフォルトで送信パソコンのIPが掲載されるので外す。


postfixの送信メールにはデフォルトで送信パソコンのIPが載っている(メールヘッダ部)のはご存知だろうか?実はこれは攻撃者(クラッカー)にヒントを与えることになる。例えば、ウィルスメールや、感染プログラムのダウンロードでバックドアによりスパイウェアが起動されるようなことがあるのなら、IPがわかれば社内のネットワークを絞り込んでいけるからだ。これを外す方法だが次のようにする。

メールヘッダから送信者の端末IP情報を外す。

社内で使っているプライベートアドレスを送信時に無視(ヘッダ挿入処理をスルー)する。忘れずにmain.cfではヘッダチェック(header_checks = regexp:/etc/postfix/header_checks)を有効にしてください。下記は/etc/postfix/header_checksのファイル編集を行ってpostfixを再起動しています。

タグ: , , ,

実験:OpenSMTPDでメールサーバ構築(CentOS7,Ubuntu Server(20.04.1 LTS)で最新設定仕様のファイルもあります。)


ちょっとメールサーバ(MTA)としては、レアなサーバを使って見ました。OpenSMTPDというBSD系UNIXでは知られているSMTPサーバらしい。ネットで調べてみると日本では情報が極めて少ないどんなもんかなーと思い構築してみました。メールは普段IMAPしか使いませんがちょっとレトロなPOPサーバでも入れて見ようかと懐かしいQpopperと組み合わせて見ようと思います。脆弱性とか色々あるけれどセキュリティツールでいくらでも抑え込めるので気にしない。 使ってみた感触は悪くないですね。設計の思想がまた他のMTAと全く異なるのでそこは面白い。postfixには無いこともできそうに思います。このMTAは受信ネットワークインターフェイス単位で制御を細かくできる点が素晴らしいです。本当はfilter文が使えるなら色々試せたのですが必要最低限セキュリティを担保して作ってみました。細かいヘッダやボディチェックはprocmailに任せ、DNSBLとベイジアンフィルターでスパム撃退を行っています。実際の25,587のフロントはfuというDNSBL smtpプロキシーで受信チェックしてそれから後ろにあるopensmtpdへ渡しています。

インストール

ソースでコンパイルしてもよかったが、依存ライブラリーを入れるのが面倒くさいのでパッケージインストールをすることに。epelがインストール済みなら問題無し。 後で調査してみたがopensmtpd-extras*はどうもopensmtpd起動時にロードできないようだ。バグかな。debianの過去issueで同じようなロードできないバグが見つかったので同類の問題か。。。 OpenSMTPDはOS環境によって出来具合いが違うという記述を見たので移植仕切ってなかった可能性はある。ソースでコンパイルするといけるかもしれ無いけども、まあしょうがない。

CentOS7の場合

Ubuntu Server

設定ファイルの作成

細かい解説は省く。インストールすると/etc/opensmtpディレクトリが生成されその配下にopensmtpd.confが出来ているのでそのファイルを編集します。受信箱に入る前にベイジアンフィルターbsfilterを使用しているため内部的にprocmailを使っています。その箇所は割愛します。opensmtpdは前述の通りDNSBLプロキシーから受け取った受信を後ろで待ち受けるためListenはローカルアドレスで受け取るようにしています。ubuntu serverでは、/etcの直下にsmtpd.confが生成されます。

上記の設定はCentOS7のバージョンなので現状は古い設定となっています。下記はUbuntu Serverの最新版 20.04.1 LTSで検証したものです。ディレクティブが所々微妙に違いがあります。DKIMとリレーのあたりの記述は結構苦戦しました。ほとんど資料がなくて当てずっぽうで書いてみた実験の末、ようやく動きました。約5時間程試行錯誤したかもしれません。Ubuntu Serverではデフォルトの設定パスが/etcの直下になります。設定ファイルは/etc/smtpd.conf

ユーザ登録関連ファイルの作成

サポートドメイン毎のユーザ登録

パスワードの作成と格納

メーラ側ではSMTP認証のタイプはプレーン認証(暗号化なし)を選ぶことになるが上記の通り内部では暗号化しているのでサーバに侵入されて盗まれたところで実害は無いと思います。接続タイプがSTARTTLS/SSLならまあ概ね安全じゃないでしょうか。

filter機能が使えないので、fuを経由してDNSBLをする。

extraパッケージが機能しないのでfilter文が無視される。しょうがないのでDNSBLをproxy仕様で対応することにした。尚、Ubuntu serverではfilter文が動作するか試しておりません。しかしfu自体はUbuntu Serverでも同様に利用できました。

DNSBL proxy fuの起動

Python2.7とするかpythonとするかはセッティング次第なので環境に合わせてください。

DKIM Proxyの設定

postfixでおなじみのOpenDKIMは使えないという噂なので、 DKIM Proxyを使用します。dkimproxy用のユーザ作成は必要です。dkimユーザを予め作っておいてください。

DKIM Proxyのサービス登録

DKIM用のDNSレコード設定は他のSMTPサーバと同様なので割愛します。

DKIM proxy起動

qpopperのインストール

Qpopper設定ファイル

/etc/qpopper995.cfgファイルの編集

xinetdのインストール

ログローテーションの設定

APOPのユーザ登録

APOP仕様にするとメールソフトの設定でパスワードの暗号化(CRAM-MD5)が選択できます。

Firewalldで必要なポートをオープンします。

ポート番号、25,587,995をオープンします。

Ubuntu serverの場合ufwでFirewallオープンします。

Ubuntu serverではpopsにdovecotを使う

qpopperのコンパイルがgccのバージョン関連の仕様相違があり、コンパイルできませんでした。ソースコードを改変するのもかったるいのでdovecotでいきました。

pop認証の編集

メールボックスの形式設定

SSLの設定

ユーザ認証の認証タイプを設定

ユーザ認証形式とDBの所在を設定

ユーザパスワードの書式設定

ユーザのパスワードファイル設定

「doveadm pw」で実行した内容と/etc/passwdを合成して/etc/dovecot/passwdを生成してください。以下のような形式です。

dovecotの起動

タグ: , , , , , ,

よくある詐欺Spamメールの手口


最近メールの乗っ取りや大量スパム配信でメールサーバを窒息させ異常動作させる攻撃が巷にいつも以上に増えてきたように思います。その中で幾つか参考になるポイントをお話したいと思います。

「あなたのサイト乗っ取りました」のようなケース

このケースでは、ついついメールを読んでその中のエビデンス(ハックした証拠)のURLが埋め込まれています。実はリンクを踏ませるための嘘なんですがね。そのURLを訪れると何らかの情報が盗まれたり、埋め込まれると思ってください。あやしいメールはすぐゴミ箱か削除してください。下手にWEB開いてしまうと感染したりランサムウェアを仕込まれたりするかもしれません。またそっくりサイトを踏ませてログインを盗む可能性もあると思います。

第三者中継リレー対策してもDDoS攻撃の前では無力になる可能性も

今では、ほとんどのメールサーバが第三者中継リレー対策していて当たり前なんですが、その過信にご用心。メールのDDoS攻撃が行われると出来ないはずのことも出来てしまいます。メールのセキュリティ対策もWEB同様に総合的に考えて対策が必要です。

メールのDDoS攻撃の対策方法は?

ずばり、メールサーバの受け付けられる量の制限です。例えば同じIPからの単位時間あたりのセッション数や、1セッションあたり一度に送れるメールの通数等がそれに相当します。これらの制御をおこなってください。smtpサーバによってはこの設定がないケースもあるのでiptablesやfail2banを特にカウントを取ってBANする様にコントロールしてください。ちなみにpostfixにはこれらの制限するパラメータが存在します。postfixのmaster.cfに記述するパラメータで制御が行なえます。例えば/etc/postfix/tarnsportに制限対象のドメインを設定し、その内容を/etc/postfix/main.cfと/etc/postfix/master.cfで流用制限をかけると効果的です。

Postfixの場合の流入制限設定のサンプル

/etc/postfix/transportの例

/etc/postfix/master.cfの例

/etc/postfix/main.cfの例

タグ: , , , , , ,

bsfilterでSPAM学習アップデートしたらエラー。修正対応。


CentOS7の環境でbsfilterの学習をさせようとしたら下記のエラーが。

bsfilterも相当古いのでアップデートがもう無いのため、こんな事はよくあるのだろう。

既に、数年前に対応されていた方のブログを見ると、「Ruby2.1.0以降では、decode_character_refrence()関数を次のように書き換えるとある。」 でも、CentOS7のlatest(7.7)でもrubyのバージョンはruby 2.0.0p648 で古い。 とりあえず修正対応で指示された内容をbsfilterへ適用してみる。

bsfilter –add-spam ,–add-clean 実行するとやはり別のエラーが出る。でも異なるエラーでscrubがないとエラーが出てるのでライブラリーの問題かと思い探したらやはり現バージョンでは標準ではないが追加でscrubが使えることがわかった。

今度はbsfilter –add-spam ,–add-clean 実行成功しました。

タグ: , , ,

1 2