SSHを使って自宅サーバからのPOPによるメール受信を安全に使う POP over SSHでセキュアにメール受信自宅サーバでメールサーバを立てたので,外からPOPでメール受信したい. しかしなにも考えずにPOPで接続すると,IDパスワード,メール内容が生でインターネット上を流れるので, よろしくない. SSHのポートフォワード機能を使うことで,暗号通信にしてしまおう.
セキュリティまわりの設定インターネットから直接POP3のポート(TCP110)に接続することは,禁止する.つまり,SSH経由でしかメールを受信できないようにします.
iptablesTCP110ポートは,インターネット(ppp0)に対して開けない. まぁ自分でサーバを公開しようという人なら,当然そういう設定にしているでしょう.これにより,iptablesが正しく動作している限り,ssh経由でしか接続されないことが保証されるはず...
xinetdしかし,脆弱性が毎日のように発見されるご時世.iptablesのトラブルに備えてさらなる防御を考える.今回使ったpop3のサーバー(imap-2001のipop3)は,普通にrpmからインストールするとxinetd経由で起動するようになっていました. xinetd経由の場合,xinetdの設定で結構細かく防御できるぞ. SSHポートフォワードを使う場合,ipop3へは必ずサーバ自身のglobalアドレスから接続されることになるので, それを利用して制限をかける. /etc/xinetd.d/ipop3 を編集 # bind = 192.168.0.254 # can not apply only_from = 192.168.0.0/24 # disable = true bindを設定したかったんでですが,それをやると残念ながら接続できなくなりました. そこでonly_fromを使って接続元を限定してやるんですが, サーバ自身のglobalアドレスは,固定IPアドレスでない限り,ADSLにつなぎにいくごとに変動します. そのため,ADSL接続時の実行スクリプトで,取得したglobalアドレスを反映したonly_from行の編集と, xinetdの再起動を行わせることにしました. /etc/ppp/ip-up.local に追加 cp /etc/xinetd.d/ipop3 /etc/xinetd.d/ipop3.bak sed -e "s/only_from.*$/only_from = 192.168.0.0\/24 $IPLOCAL/g" /etc/xinetd.d/ipop3.bak >/etc/xinetd.d/ipop3 /sbin/service xinetd restart sedを使って/etc/xinetd.d/ipop3の内容を更新し,xinetdをリスタートしています.何かややこしいわい. なお,192.168.0.0/24 というのは私の宅内LANのアドレスです.宅内LANからは直接POPでつなぎたいので, 特別扱いにしています. iptablesとxinetdの二段構え. これだけやっておけば,悪い奴にインターネットからPOP経由で変なことをやられるということは, まずないと思う.(断言はできませんが)
sshまわりの設定sshの話を書き出すと面倒だな.キー作成の部分だけにしときます. インストールは普通にやってください.
メールユーザ(ここでは,「admin」)に対して,sshで外から接続させるための設定を行う. # su admin $ cd $ . .bash_profile (adminでログインすれば,上3行は不要) $ ssh-keygen -t rsa1 〜パスフレーズ入力〜 $ cd .ssh/ $ mv identity.pub authorized_keys あと,セキュリティを考えてlibwrapの設定(/etc/hosts.allow,/etc/hosts.deny)は必須だし, (/etc/ssh/)sshd_configで, PasswordAuthentication no PermitRootLogin no
PortForwarderのインストール,設定メールの受信に使うクライアント機(WindowsXP)には,PortFowarderをインストールする.PortForwarder Homeからダウンロードしてくる.
configurationファイルkamolandの場合,こんな具合.pf.conf Host KamoLand HostName kamoland.com LocalForward 10110 kamoland.com:110 クライアント機自身(localhost)の10110ポートを,メールサーバのPOP3(110)ポートへ転送させます. 10110に深い意味はありません.
identityファイルsshのキー作成のところでできたidentityファイルを持ってきて,先ほど作ったpf.confと同じディレクトリに入れておく.それで起動すると,
![]() そして,ユーザ名(admin)とパスフレーズ(キー作成時に入力したもの)を入力すれば,接続できる.
メーラー設定要は,POP3サーバをlocalhostのポート10110に変更するだけなんですが.Becky!でいうと,こんな感じです.
![]()
![]() 以上,これで自宅サーバのメールをどこからでも取得できる.めでたし. ...しかしこれだけじゃ,受信はできても「送信」ができないんだな.さて,そのうちやらねば. → やりました.SMTP over SSHでセキュアにメール送信 |