キャンペーン


2014年2月18日火曜日

【scponly 】 ユーザーホームディレクトリ以外への移動を禁止した sftp接続環境を作る方法

セキュアな FTP通信環境をつくる必要性があり纏めておく。

簡単に言うとインターネット上からクラウドへセキュアデータ連携する手法である。


通常WANからイントラネットへFTP接続する安全なプロトコルにsFTPがある。

クラウド時代には知っておいて損はないが仕組み自体は取り立てて新しいものでもない。

SSH(ポート22)が外部から接続できればsFTP接続は可能であるが、アクセスポリシーを見直す必要がある。

というのもユーザーにSSH接続を許してしまうとユーザディレクトリ以外にも移動できてしまいポリシー上あまりよろしくない。


opensshだけでもこの程度のセキュリティ抑制は可能であるが、openssh 4.3 が導入済みのredhat9ではopenssh 4.9程度以上へアップデートしないとならず、インストールの敷居も高い。

sshdだけでやるなら /etc/ssh/sshd_configを書き換えてsshdサービスを再起動で済むことながら、一旦設定を間違えるとSSHに繋がらなくなるなどかなり危険である。

自分も自宅のLinuxで実際これに遭遇し危険であることを身をもって感じた。

SSHにつながらなくても被害が及ばぬよう、事前にtelnetサーバーも敢えて動かしておき第2の入り口(teminal)を設けるべきである(セキュリティには注意)。もちろん手元にサーバーがある場合は考えるすべもないがクライドサーバーを借りている場合は何が起きるかわからない。設定を間違えるとサーバー制御不能になる恐れが有るのだ(再起動さえできなくなる)。

話は元に戻すがopensshが既に動いていればsFTPでの接続はデフォルトでできているはずである。問題は外部からつなげに来るユーザーへの権限設定である。opensshが4.3のような古いバージョンではこれは難しいので、この場合は「scponly」あたりを導入することになる。

scponlyは古い方法論であまり使わなくなってきているらしいがopensshを使わない方法として知っておく価値はある。その名の通りsFTPだけを特定のユーザーに提供しセキュア通信を提供する方法である。

scponlyをインストールして setup_chroot.sh を叩いて一度ユーザーを設定しておけばその後はコマンドは眠らせておけばよい。


【scponlyインストール】

現時点で最新は4.8でscponly-4.8.tgzを/tmpへダウンロードして解凍する。

wget http://sourceforge.net/projects/scponly/files/scponly/scponly-4.8/

tar xvzf scponly-4.8.tgz

cd scponly-4.8

./configure --enable-chrooted-binary

make

make install

必要な物は上記で揃ったがあと setup_chroot.shとconfig.hもコピーする必要がある。

自分は/usr/local/scpcpy/setup_chroot.sh にココを参考にコピーし、HOMEディレクトリにシンボリックリンクを張った(途中パーミッション等も変更)。

cd ~

ln -s /usr/local/scpcpy/setup_chroot.sh 

ln -s /usr/local/scpcpy/config.h 


【使い方】

あとはsetup_chroot.shを使ってユーザーを作ればよい。すでに居るuserに追加で権限追加はできないので一旦 userdel コマンド等でユーザーを削除する必要がある。

ユーザーが追加したら以下のテストを行う。

  • SSHで接続できないこと
  • sFTPで接続でき、HOME以外に移動できないこと
sFTPクライアントはFFFTPではダメなのでWinScpなどをDLして確認すべし。




【補足】

SSH+FTPという手法も古くからあるが、こちらはFFFTPでもセキュアFTPは可能である。teraterm+FFTPでも可能だし、PuTTY+FFFTPでも実現できるが管理が煩雑なので今はあまりメジャーではないが仕組みを勉強する意味では有用であろう。




0 件のコメント:

コメントを投稿