sftp接続のカスタマイズ

以前構築した、OpenSSHを使って、chroot環境下でSFTPを動かす方法のカスタマイズを行った。

今回設定したのは、ログ出力と、bash権限を持つアカウントだけ鍵認証を行う設定。

理想の状態はこんな感じ。

  1. chroot後の環境で、データのやりとりをsyslogで管理したい
  2. sftpのログ専用のファシリティを設ける
  3. rsshユーザーはパスワード認証、bashユーザーは鍵認証をさせる

【 chroot環境下のログの採取方法 & sftpファシリティの追加】
通常、chroot環境では、/dev/logを参照することが出来ないので、ログ出力は行えない。
そこで、syslogのオプションに、chroot後のディレクトリのdev/に、ソケットを作成する記述を行う。

[/etc/sysconfig/syslog]
 変更前:SYSLOGD_OPTIONS=”-m 0″
 変更後:SYSLOGD_OPTIONS=”-m 0 -a chrootディレクトリ/dev/log”

通常では-aオプションは19個までしか設定出来ないっぽい。

オプションの変更後、syslogを再起動すると、設定したchrootディレクトリ/varにlogファイルが作成されている。

次に、sshd_configのSubSystemの箇所に、internal-sftpにログを出力するように編集し、編集後sshdの再起動を行う。

[/etc/ssh/sshd_config]
 変更前:Subsystem       sftp    internal-sftp
 変更後:Subsystem       sftp    internal-sftp -f local1 -l info

※-fはsyslogのファシリティ、-lでログレベルを指定する。

参考にしたサイトとかだと、ファシリティをauthprivに設定しているとこが多かったけど、/var/log/secureにsftpのログを追記したくなかったので変更する。
新規にlocal1というファシリティを作成して、そのログを/var/log/sftp.logに出力するように設定。
作成後、syslogの再起動が必要。

 echo “local1.* /var/log/sftp.log” >> /etc/syslog.conf

【 SSHの認証方法の変更 】
最後にbashも持つアカウントは鍵認証をさせて、sftp専用のユーザーはパスワード認証をさせる。

[/etc/ssh/sshd_config]
全ユーザー共通の設定(鍵認証させる)
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no

sftpユーザーはMatchのこんな感じになる。
 
Match Group chrootgroup
PasswordAuthentication yes
AllowAgentForwarding no
AllowTcpForwarding no
ChrootDirectory /usr/local/chroot/
PubkeyAuthentication no

ここまで設定したら、sshdを再起動。

試しに、teratermからsftpユーザーで接続してみると、ユーザー名とパスワードの入力プロンプトは表示されるが、正常なパスワードであっても、一瞬rsshのエラーが出てきて接続が終了する。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です