2015年5月4日月曜日

ServersMan@VPS(Ubuntu14.04-64)でVPN経由のtelnetとftp

インターネット上に設置されたLinuxサーバへは安全性を考えて、
認証鍵ファイル付きを強制したver2のssh(sftp)でログインするのが望ましいでしょう。
私は借りてるServersMan@VPS(Ubuntu14.04-64)でも同様に設定しています。
しかしsshデーモンに何かのトラブルや設定ミスがあって
ログインできないような状況に陥る可能性は否定できません。
ServersMan@VPSではAirDisplay@VPSという
ウェブブラウザからコンソールにログインできる機能もありますが、
これにしたってvpsのウェブサーバが落ちてしまえば利用できません。
これらが両方共同時に落ちてしまう確率は、
きちんと設定していればそう高くはないでしょうが、
天文学的なありえなさに比べれば恐ろしくありえるレベルです。
というわけで第3の道を作っておくことにします。

その第3の道はtelnetとftpなのですが、
パスワードが平文で流れるなど今時のインターネット環境で使うにはセキュリティがヤバすぎです。
ということで、vpnからのログインのみを許す形にします。

まずはtelnetのために以下を実行します。
# apt-get install telnetd
そして設定ファイル"/etc/xinetd.d/telnet"を以下の内容で新規作成します。
service telnet
{
        disable         = no
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = telnetd
        server          = /usr/sbin/in.telnetd
}
VPNのローカルからしかログインできないように"/etc/hosts.deny"に
in.telnetd: ALL
の行を加え、"/etc/hosts.allow"には
in.telnetd: <vpnでクライアントに割り当てるIPアドレス(*によるワイルドカード使用可能)>
の行を加えます。最後に
# /etc/init.d/xinetd restart
を実行すれば完了です。
vpn内からのみtelnetのログインが可能になっているはずです。
それ以外からのログインができないことは必ず確認してください。

telnetではファイルのやりとりはできないので補完すべくftpサーバも立ち上げます。
すでに他用途でproftpdを設定済みで、
単純にインターネットからの接続をはじくと現運用に支障が出ます。
proftpdではifsessionモジュールを使うと、
ユーザ毎にどこからならアクセス許可するかを細かく設定できるのですが、
# proftpd -l
の結果をみると"mod_ifsession.c"は入ってません。
ということでソースからビルドします。以下を実行します。が、実はこれは無駄に終わります。
# /etc/init.d/proftpd stop
# apt-get install memcached
# apt-get install libmemcache-dev
# apt-get install libpam0g-dev
# cd /usr/local/src/
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5.tar.gz
# tar zxf proftpd-1.3.5.tar.gz
# cd proftpd-1.3.5
# ./configure --with-modules=mod_ifsession:mod_auth_pam:mod_readme --enable-dso --enable-memcache --enable-ctrls --enable-nls 
# make
# make install
この後、起動スクリプト"/etc/init.d/proftpd"を編集して
“/usr/local/sbin/proftpd”を使用するように変更しようと思ったのですが、
その前に"/etc/proftpd/proftpd.conf"でユーザ制限を設定したところ、
なんとバイナリパッケージでインストールした"/usr/sbin/proftpd"でも
期待通り制限がかかっています。
で、よくよく調べてみると、
モジュールファイル"/usr/lib/proftpd/mod_ifsession.so"は既に存在していて、
設定ファイル"/etc/proftpd/modules.conf"内でロードされているではありませんか。
ということで自力でビルドしたproftpdはお蔵入です。
ただ単に"proftpd"を実行するとパスの順番の関係で、
作成した"/usr/local/sbin/proftpd"の方が実行されてしまうので、
混乱しないようにするため、これは消しておいた方がいいでしょう。

最後にftpでのユーザー制限の設定についてです。
設定ファイル"/etc/proftpd/proftpd.conf"に以下を追加します。
<IfUser <ユーザアカウント>>
 <Limit LOGIN>
  Order allow,deny
  Allow from <ネットワークアドレス>/<サブネットビット長>
  DenyAll
 </Limit>
</IfUser>
これで<ユーザアカウント>でのログインは指定したIPアドレスからのみ許可されます。
ちなみに"/etc/ftpusers"にユーザアカウントを書いておくと問答無用ではじかれてしまうので
きちんと削除しておきましょう。

0 件のコメント:

コメントを投稿