11月
8
2013

SFTP専用アカウントを作成(ログインシェル無効化、鍵認証、chroot対応)

SFTP専用アカウント作成の要件

WEB担当者がサーバにHTMLファイルをアップロードする場合など、
サーバ管理者以外の人が利用するSFTP専用アカウントを作成する方法を紹介します。

セキュリティ対策のため、以下の点に注意します。

・FTPではなく、鍵認証のSFTP、SCPを利用
・シェルによるログインを禁止
・特定のディレクトリ以下のみ参照可能(chroot)

ユーザ作成

まず、ユーザを作成します。
ここでは、staffグループに所属するUID=1983のwebユーザを作成します。

useradd -g staff -u 1983 web

SSHの設定

セキュリティ対策のため、パスワード認証を禁止し、鍵認証を利用します。
※鍵認証の仕組みや、鍵の作成方法は省略します。

認証用の鍵を作成

まず、PuTTY付属のputtygenなどを利用して、秘密鍵、公開鍵を作成してください。
作成した秘密鍵をローカルPCに厳重に保管します。
そして、作成した公開鍵はサーバへ登録します。

su - web
mkdir .ssh
vi .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

authorized_keysの中身は、以下の形となります。

ssh-rsa AAAAB3NzaC1yc2・・・(略)

鍵の登録が終わったら、PuTTYやWinSCPなどで、鍵認証の接続を確認してください。

ログインシェルを無効化

ログインシェルを/sbin/nologinへ変更し、シェルを利用できなくします。

usermod -s /sbin/nologin web

指定ディレクトリのみ参照可能にする(chroot)

以前は、追加パッケージが必要でしたが、
OpenSSH4.9以降はchrootに対応しているため、
他のパッケージをインストールすることなく設定できます。

SSHDの設定を変更します。

vi /etc/ssh/sshd_config

変更内容は下記の通り。

#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

Match User web
    ChrootDirectory /var/www
    ForceCommand internal-sftp

SFTPの接続を処理するサブシステムを、標準のsftp-serverからsshd内部のinternal-sftpに変更。
webユーザが/var/wwwにchrootされるよう設定しました。

SSHDをリロードして、設定を反映します。

/etc/init.d/sshd reload

以下を確認できれば成功です。

・SSH接続はできないこと
・SFTP接続でき、指定ディレクトリ以下にchrootされること

SFTP専用アカウントを利用するWeb担当者には、
以下を教えてあげましょう。

・WinSCPのダウンロードURL
  http://www.forest.impress.co.jp/library/software/winscp/
・プロトコル:SFTP
・ホスト名
・ユーザ名:web
・秘密鍵
・秘密鍵のパスワード
・ディレクトリ構造

1 Comment + Add Comment

  • [...] る場合など、 サーバ管理者以外の人が利用するSFTP専用アカウントを作成する場合は、以下の記事参照。 ・SFTP専用アカウントを作成(ログインシェル無効化、鍵認証、chroot対応) [...]

コメントする

メールアドレスは公開されません。

このエントリーをはてなブックマークに追加