• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FTPのログイン履歴を取得するには?)

FTPログイン履歴の取得方法とは?

このQ&Aのポイント
  • CentOS 5.4の環境でvsftpdを使用してFTPログイン履歴を取得する方法には、いくつかの選択肢があります。
  • 方法1としては、/var/log/vsftpd.logを監視してログデータをデータベースに格納する方法が考えられますが、リアルタイム性やログの量などの課題があります。
  • 方法2では、FTPログイン時にシェルスクリプトを実行してデータベースにログを格納することも考えられますが、実装上の障壁も存在します。

質問者が選んだベストアンサー

  • ベストアンサー
  • t-okura
  • ベストアンサー率75% (253/335)
回答No.1

ログのリアルタイム監視は swatch が定番です。 参考 URL に解説があるので試してみてはいかがでしょうか。

参考URL:
http://www.atmarkit.co.jp/flinux/rensai/root04/root04b.html
gottyato
質問者

お礼

ありがとうございました. swatchとシェススクリプトを組み合わせ,FTPの認証履歴の取得のデータベース化に成功しました. 以下,私が行った手順です. もしこのあと同じ事をやりたいと思っている方の参考になれば幸いです. (ソースコードはとても汚いし,もっと効率の良い書き方ができると思いますが,そこはご容赦ください) ディストリビューションはCentOS5.4です. 作業前にrootになってください. DAGリポジトリをインストール rpm -Uvh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm Swatchをインストール yum -y install swatch .swatchrcを作成 vi ~/.swatchrc watchfor /LOGIN/ exec ./ftplog.sh $_ throttle 00:00:05 ftplog.shを作成 #!/bin/sh # 変数の設定 LOGALL=$* LOG=($LOGALL) # $LOGの分解 userid=${LOG[7]} result=${LOG[8]} ip=${LOG[11]} # ユーザIDの整形 userid=`echo $userid | sed -e 's/\[//g'` userid=`echo $userid | sed -e 's/\]//g'` # データベースへ格納 mysql --user=root --password=********<<eof use system; INSERT INTO ftplog SET userid='$userid',ip='$ip',result='$result'; eof データベース設計 CREATE TABLE IF NOT EXISTS `ftplog` ( `userid` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `result` varchar(255) NOT NULL, `ip` varchar(255) NOT NULL, KEY `userid` (`userid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Swatchを起動します. swatch --tail-file=/var/log/vsftpd.log & サーバのリブート時,自動的に起動させます. echo "swatch -c /root/.swatchrc -t /var/log/vsftpd.log &" >> /etc/rc.local これで,FTPサーバにアクセスがあると,認証履歴がデータベースに記録されます.

関連するQ&A