サーバー専門のフリーランスエンジニアです。クラウドサービスを利用してWebサイト、ITシステムのサーバー構成設計とサーバー構築を行います。TechchrootユーザーのSFTP操作ログ取得設定0036はじめに「chrootユーザーのSFTP操作ログを取得する」設定が意外と難しかったので、ここにまとめておきます。6における設定についても書きます。各コマンドはrootユーザーで実行することを想定しています。要件ログ取得の要件は次のとおりとします。他のログファイルに記録しない。上記の要件を満たす設定手順としては、以下を参考にしました。Portalhttps://access.redhat.com/articles/1374633ログ書き出しには、rsyslogを使用します。出力させるのがポイントです。chrootユーザーの作成chrootユーザーについては、ここでは次のとおりとします。chrootユーザーはSFTPのみ可能とする。通常のSSH接続はできない。user2、グループはgroup1とする。chrootディレクトリを他のユーザーと共有する方法(シンボリックリンクとかbindマウントとか)については、ここでは記載しません。ユーザーとディレクトリを作成します。/home/user2ソケットファイル用ディレクトリを作成します。OpenSSHの設定sshd_configで、internal-sftpのログ出力とChrootの設定を行います。user2は、Chrootさせ、SFTPしか実行できないようにします。ログレベルはINFOを指定しています。group」のような指定でもよいでしょう。設定を反映させるため、sshdを再起動します。7は、標準ではrsyslogが無効となっているので、起動し、自動起動を有効とします。6と同じように)多くのログがjournaldとは別に記録されるようになります。rsyslogの設定で不要なログ書き出しを止めるなど、調整してください。パッケージをインストールします。rsyslog7rsyslog7を起動し、自動起動設定を行います。rsyslogの設定rsyslogでログ取得設定を行います。記録されるようになる、というイメージでしょうか。出力するようにします。imuxsock」行があるときは不要です。設定を反映させるため、rsyslogを再起動します。restartrsyslogを再起動すると、ソケットファイルが自動作成されます。圧縮、ローテート間隔、保存世代などは適宜変更します。endscript}--動作確認クライアントからSFTP接続、ファイルのアップロード、ダウンロード、削除を実施し、要件どおりログを取得できることを確認します。アップロード、ダウンロード、削除したときのログ出力例です。6のときは微妙に違いますが、要件は満たしているはずです。-R.:test./test:test1.htmlログ中のhostnameやアクセス元IPアドレスは伏せています。[]」で、ユーザー名やアクセス元IPアドレスも確認できます。ソケットファイル追加なし通常は上記の設定方法で「解決」だと思いますが、要件が次のようになったとします。他のログファイルに記録しない。SFTPユーザーを追加するときに、rsyslogやソケットファイル追加の設定は不要とする。4つ目の要件が追加されています。運用上、SFTPユーザ―の追加時に、rsyslogやソケットファイル追加の設定を忘れそう。SSFTPユーザーから、ソケットファイルが見えてしまう(所有者はrootユーザーなので、SFTPユーザーは削除できない。)などが考えられます。試行錯誤の末たどりついた設定方法を以下にまとめます。ソケットファイル追加なし設定手順は、以下を参考にしました。Qiitahttps://qiita.com/hurukichi/items/22aa0d024bbd25b3e797・【vsftpd】chrootされたSFTP専用ユーザのFTP転送logを/var/log/sftp.logへはきだす方法http://fanblogs.jp/kumon/archive/18/0先ほどと同様、ログ書き出しには、rsyslogを使用します。特定のファシリティのログを捕捉して、SFTP操作時の特定の文字列でフィルタリングすることで、SFTP操作ログの出力先を分離します。chrootユーザーの作成chrootユーザーは先ほどと同様とします。ユーザーとディレクトリを作成します。ソケットファイル用ディレクトリの作成は不要です。OpenSSHの設定sshd_configで、internal-sftpのログ出力とChrootの設定を行います。AUTH」でファシリティを指定している点が先ほどとの違いです。INFO...--設定を反映させるため、sshdを再起動します。7では、先ほどと同様にrsyslogを起動します。6の場合、今回はchroot用ソケットファイルは使用しないので、rsyslog7へのアップデートは不要です。rsyslogの設定rsyslogでログ取得設定を行います。$syslogfacility-text」でログファシリティを指定します。~」でSFTP操作のログを絞り込みます。‘internal-sftp’」の条件は使えません。出力されてしまいます。出力するためのフィルタ設定です。以下のような設定例を見かけますが、これだけですと、ファイルのアップロード時のみのログ出力となります。~アップロード操作のみの記録が欲しいのであればそれでよいのですが、せっかくなら、削除の記録も取ったほうがよいと思います。僕が試した限りでは、こんな感じでフィルタリングできそうでしたが、他にもSFTP操作特有の文字列を見つけたら、適宜フィルタルールを追加してください。設定を反映させるため、rsyslogを再起動します。ソケットファイル追加なし先ほどと同様に、クライアントからSFTP接続、ファイルのアップロード、ダウンロード、削除を実施し、要件どおりログを取得できることを確認します。アップロード、ダウンロード、削除したときのログ出力例です。-R.:test./test:test1.htmlログ中のhostnameやアクセス元IPアドレスは伏せています。[postauth]おわりに「chrootユーザーのSFTP操作ログを取得する」設定手順として、chroot用ソケットファイルを使用する/しないの2つの手順を記載しました。後半の「chroot用ソケットファイルを使用しない方法」については、若干バッドノウハウのような気もしますが、運用上の都合でやむを得ないケースもあるでしょう。labsサーバー部10Uに参加しました。Sapporoでお話しました。DesignInaba【お問い合わせ】お名前または法人名・団体名、メールアドレスと、簡潔な内容で構いませんので、お問い合わせ内容をご記入ください。折り返しご連絡いたします。※いただいた情報は他の目的には使用いたしません(個人情報の取り扱いについてはこちらのプライバシーポリシーをご参照ください)。(必須)↑お問い合わせ内容をご確認のうえ、チェックを入れてから「送信」してください。