ブログ移転のお知らせ

独自ドメインのVPSにブログ移転中です、ここもデータの保証無しってことで置きっぱなしにしてもらえる事になってます。
 
i移転先予定のブログURLはこちら(作成中):http://www.sawanoboly.net/wp/
旧ブログはこちらでも保管しときます:http://www.sawanoboly.net/wp_old/
前の記事:«
次の記事: »

TCPでポートをリッスンしてるサーバプログラムは
  -例えばTCP/25でメール送信を受け付けている SMTP、TCP/110 のPOP3
stunnelを使って、クライアントからサーバまでの通信をSSLで暗号化、stunnel から ローカルのTCP/25やTCP/110 に通信を投げれば下記のように通信途中が暗号化される。
 
[PC] →→ SSMTP(SMTPS) →→【[Stunnel]→→SMTP(Sが取れる)→→[SMTPサーバ]】
【】がサーバ内部
 
 
Stunnel がTLS/SSLの暗号・複合のところをやって、あとはサーバ内でアプリケーションプロトコルを使った通信をする、また暗号化して戻してくれる。
 

今や大概サーバアプリ側でTLS/SSLを備えているけど、コンパイルしなおしとか面倒な作業が居る場合は Stunnel でやってしまう。

Stunnel配布サイト
http://www.stunnel.org

 
 

簡単に使い方のメモ
 

Stunnel用の証明書作成

まずはSSL通信に必要な 証明書セット→pemファイルが必要。
既存のものがあればそれを使うといいけど、証明書セットがない場合は自作する。
過去記事:OpenSSLでお手軽に自己証明書(1)_make一発で作ればいい。"/etc/stunnel/pem/stunnel.pem" とでもして保管する。
 

コマンドラインで実行

「pem」 「SSLで待ち受けたいポート」 「本来のポート」 がそろえばサーバのSSL化は完了する。
 

465番ポートで SMTP を受けたい

# stunnel -p /etc/stunnel/pem -d 465 -r 25 &

 

995番ポートで POP3 を受けたい

# stunnel -p /etc/stunnel/pem -d 995 -r 110 &

 

上記実行したら、メーラとかで SSMTP(SMTPS)、POP3S の設定を試してみる。証明書の文句があるかもしれないが証明書の有効性を無視するように設定すればメールの送受信が行える。SSL化・暗号化はこんなもんで実装可能。
 
しかしこの例だと&(アンパサンド)でバックグラウンド実行してるだけだから、制御端末落としたら(ログアウトとか)止まっちゃう。
メールサーバのログには 全部ローカルホストからの通信が記録されていて、何がなんだか見づらくて仕方ない。
stunnel のコンフィグを書いて、デーモン起動でもいいけど、xinetd を経由するのがいいかも。
 
 

xinetd 経由にする

Stunnel側の準備

xinetd用のコンフィグを用意する、"/etc/stunnel/" にでも。
あとこの例では "/var/log/stunnel/" を事前に作っておく必要がある。
 
pop3s.stunnel.conf
#pop3s to local 110
cert = /etc/stunnel/secure.stunnel.pem
# debug = 7
output = /var/log/stunnel/stunnel_pop3s.log
connect = 110

smtps.stunnel.conf
#smtps to local 25
cert = /etc/stunnel/secure.stunnel.pem
# debug = 7
output = /var/log/stunnel/stunnel_smtps.log
connect = 25

debug の項目は調査するときなどにコメントアウトをはずして様子を見るため。普段は普通のログでいい。
SMTP は 587 でやったりもする。
 

xinetdの設定

まず "/etc/service" にpop3s と smtps のポート割り当てが書いてなかったら追記しておく、最後尾でもどこでもOK。
 
で、 "/etc/xinetd.d/" 以下にファイル作成

pop3s
service pop3s
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/stunnel
server_args = /etc/stunnel/pop3s.stunnel.conf
log_on_success += USERID
log_on_failure += USERID
}

smtps
service smtps
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/stunnel
server_args = /etc/stunnel/smtps.stunnel.conf
log_on_success += USERID
log_on_failure += USERID
}

ファイル作成が終わったら xinetd をリロードする。
メーラなどで確認すればSSMTP(SMTPS)、POP3S で送受信できるのが分かり、出力を指定したログファイルにちゃんと外部との通信ログが記録されていることが確認できるはず。
通信できなかったら エラーログを確認したり、hosts.allow とかTCPラッパーの設定を疑う。
 

ついでに logrotate もしておく

"/etclogrotate.d/" 下の適当なファイルを stunnel の名前でコピー
ローテ対象ログ;"/var/log/stunnel/*log"
リロードプロセス:"xinetd"
 
compress や世代管理は好みで。

前の記事:«
次の記事: »

この投稿に関連した記事

.
add to hatena hatena.comment (3) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 3

使ってる所とか

※注意

I
KOBE×
BUSINESS.

これは個人ブログです、内容についてアイクラフト(株)は責任を負いません。
にほんブログ村 IT技術ブログへSawanoblogのフィード
人気ブログランキングへ
この日記のはてなブックマーク数
はてなRSSに追加
Googleに追加
My Yahoo!に追加
livedoor Readerに追加
goo RSSリーダーに追加
フィードメーター - SawanoBlog.
MCP
MCTS
CCNA

ミニブログとか

あわせて読みたいブログパーツ
  • 任意のフォルダでWindowsエクスプローラ(explorer.exe のオプションの話)
    画像:ツリーのルートを選択したエクスプローラ


    J1_23節、ヴィッセル神戸の試合を見に行った
    応援するアイクラフトの面々


    ヘッドホンのイヤーパッドを交換した
    写真:買ってきたイヤーパッド


    液晶モニタ壊れたので三菱のワイド買ってきた、初の「1680x1050」
    画像:1680x1050フルサイズ


    Hyper-VにOpenSolaris、ZFSのdeduplicationを試そう
    画像:Hyper-V上のOpenSolaris


    電脳会議 vol.132 届く
    写真:電脳会議 vol.132
  • Amazon用