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

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

FTPのログイン履歴を取得するには?

FTPのログイン履歴を取得するには? 環境 CentOS 5.4 vsftpd サーバ管理の勉強で,空き資源の一部をユーザに貸し出しているのですが,各ユーザのFTPログイン履歴を管理したいと思っています. 考えている方法はいくつかあるのですが,どれも一長一短あるので,こうすれば短所は解決するとか,他に良い方法などがありましたらご教授いただけると幸いです. 方法1 /var/log/vsftpd.logを監視し,認証ログを抽出してデータベースへ格納 短所 cronで定期的に回しても,リアルタイム性が確保されない ログの量が多く,cronで毎回ログファイル全体を読み込み・抽出するのはムダすぎる. 方法2 FTPログイン時にシェルスクリプトを自動実行し,データベースへ格納する. 短所 そもそもFTPログイン時にシェルスクリプトを自動実行できるのか不明. (できなくはないけど,vsftpdのサービスを変更する必要があるらしい…?<http://webcache.googleusercontent.com/search?q=cache:5hVVfbGjizsJ:www.ginnokagi.com/2010/02/vsftpd_1.html+vsftpd+%E6%8E%A5%E7%B6%9A%E6%99%82+%E3%83%A1%E3%83%BC%E3%83%AB&cd=1&hl=ja&ct=clnk&lr=lang_ja>) 方法3 lastやlastlogコマンドで,ftpのログイン履歴も記録対象とする. 記録対象とする設定方法が不明. 短所 lastコマンドはftpにも対応しているはずではあるが,実際にコマンドを発行してみると,ftpのログイン情報が記録されていない. vsftpdのログは,認証ログと,ファイル転送などの動作ログが分かれていないので,ログイン履歴を取得しにくいのです. 何か良い方法がありましたら,アドバイスいただけると幸いです. よろしくお願い致します.

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

  • ベストアンサー
  • 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

  • FTPログインの日時取得

    FTPでログインした日時をスクリプトから参照し 各アカウントの管理に利用したいのですが、 利用できるコマンドやログファイル、FTPコマンドや サーバのオプションなど、また方法があれば、 教えてください。 シリアル値で取れると一番うれしいです。 サーバはProftpdを使っています。 よろしくお願いいたします。

  • cronでftp自動転送を行いたい

    ftpで自動ログイン+ファイル転送するシェルを作成して、これをcronで 実行したのですが、ftpが実行されません。()シェル単体で実行すると、転送されます) 何が原因でしょうか?宜しくお願いいたします。 【環境】 FedoraCore5 【シェル(ftp.csh)の内容】 ftp -n xxx.xxx.xxx.xxx << _EOD user xxx xxx ascii put xxxxxxxx quit _EOD 【cron設定】 05 6 * * * root /share/ftp.csh

  • 新規ユーザーだとvsftpdにログインできない

    vsftpdをインストール時に既に登録されていた ユーザーはftpに接続できるのですが useradd hogehoge passwd hogehoge のように後からコマンドで登録したユーザーでftpに接続できません。 hosts.allowやdenyの設定はしていません。 ログインしようとすると # ftp 192.168.1.1 # hogehoge # password 331 Please specify the password. 530 Login incorrect. のようでてログインできません。 パスワード要求まできているのでpasswdで設定した パスワードが有効になっていないのかと思って su - hogehoge でログインを試みましたが問題なく入れました。 初歩的な事かもしれませんが宜しくお願いします。 userlist_deny=NOにしてvsftpd.ftpusers に登録しましたがやはり駄目でした。 vsftpd.confの設定は anonymous_enable=NO userlist_deny=NO と変更した以外はデフォルトです。 rpm -e vsftpd rpm -ihv vsftpd・・・で再インストールしましたがそれでも同じでした。

  • ftpについて

    UNIXのKシェルまたはBシェルプログラミングで ftp転送を行う方法を教えてください。 今現在、ftpログインからつまづいてしまっています。 具体的にコードを記述して下さるとありがたいです。

  • ftpコマンドの戻り値をチェックしたい

    現在業務でftpコマンドを用いたバックアップシェルを作成しております。(RHEL4) クーロンでシェルAを呼び、シェルA内でftpコマンド発行→ファイルB内のftpコマンドを実行→シェルAに戻る、という仕様ですが、このftpコマンドが成功したのか失敗したのかをプログラム上で判断する方法はありますでしょうか?

  • ftpコマンド出力結果の取得

    ftpコマンドのバッチ処理によってファイルの一覧の結果を取得したいのですが、 リダイレクション等を用いても取得できません。 どのようにすればいいか教えてください。 **************状況************* OSおよびOSレベル:AIX5.2 シェル:Kシェル コマンドファイルの中身(ftp.txt) cat << EOF | ftp -n open SERVER user USER PW cd PATH ls -l bye EOF SERVER:実際のサーバー名 USER:実際のユーザー名 PW:実際のパスワード PATH:実際のパス これを以下のように実行し、結果を取得しようとしました。 # ./cmd.ftp > log しかし、出力ファイルlogの中身はカラっぽでした。 ところが、リダイレクションを外し、コマンドファイルのみを実行すると、結果が画面に表示されます。 何故、画面には表示されるのに、リダイレクションやパイプでは結果が渡されないのかが分かりません。

  • -bash: ftp: コマンドが見つかりません

    ftpでファイルを転送したいのですが、現在出来ておりません。 因みにその端末(サーバ)は外部からのftpのやり取りも必要な為、vsftpdをインストールしています。 試しに、コマンドでftpと入力した時に題目のようなエラーが表示されます。 Linuxはまだ経験が殆ど無く、シェルに関してもまだ分かりません。 ftpクライアントのインストールとか必要でしょうか? それとも何か追加設定が必要でしょうか? 途中のファイアーウォール機器では通過の設定ができております。 教えていただけますでしょうか。 宜しくお願い致します。

  • Cygwin で Ftpを実行するTOOLを cronで実行したい。

    よろしくお願いします。 Cygwinで FTPを使ってUnixのFileを取得するシェルスクリプトを作成しました。 シェルの種類はkshです。 このTOOLをCygwinのcronに仕掛けて自動的にFileを取得するようにしたいのですが、 どうもFTPのところで止まってしまうようです。 Cron設置時にLogを取得したところ 下記のメッセージが出力されていました。   User (10.200.xx.xx(none)) 自分のhomeに.netrc ファイルを作成して、FTP時にはUserID/Passwordを入力しなくて済むようにしているので スクリプトを自分で実行する分には何も入力しなくて言いのですが cron実行時にはなぜかUserIDの入力を促すところでストップし、プロセスも残ってしまっています。 自動的にUserID/Pawwwordを読み込ませるにはどうしたらよろしいでしょうか?

  • proftpdでftpログインが出来ません

    vine linuxにproftpdをセットアップしたいのですがユーザーを新たに作ってもログインできません。ログもどこをみたらよいのか分からないのですが/var/log/messagesには Sep 29 19:25:31 localhost proftpd[2450]: localhost.localdomain (192.168.0.3[192.168.0.3]) - FTP session opened. Sep 29 19:25:34 localhost proftpd[2450]: localhost.localdomain (192.168.0.3[192.168.0.3]) - FTP session closed. と残るだけです。なのでproftpdをスタンドアローンで-nをオプションに起動しログをコンソールに出力させてみると /usr/local/sbin/proftpd -n localhost.localdomain (192.168.0.3[192.168.0.3]) - FTP session opened. localhost.localdomain (192.168.0.3[192.168.0.3]) - USER myo (Login failed): Incorrect password. localhost.localdomain (192.168.0.3[192.168.0.3]) - FTP session closed. と出て一見するとパスワードが拒否されているように見えます。ただ現象としては一番最初に作ったアカウントではログイン出来て、その後、新たに作ってみたアカウントではログイン出来ない状況です。ちなみにsshでは新しく作ったアカウントもログインできるようです。shellsあたりにシェルが記述されていないと駄目との事ですが、どうも登録されているようなのです。/etc/shellsの中身 /bin/sh /bin/bash /sbin/nologin /bin/tcsh /bin/csh /bin/dash /bin/ash /bin/bsh /etc/passwdの中身 アカウント名は変えてあります。その他そのままです。 (~略) ac1:x:500:500:my name:/usr/local/apache2/htdocs:/bin/bash (FTPログイン出来るアカウント) apache:x:450:450::/home/apache:/sbin/nologin ac2:x:501:501::/home/myo:/bin/bash (fTPログインできないアカウント) どうかお知恵をお貸し下さい。確認したほうがいいファイルなどあればご指摘いただけると幸いです。足りない情報などあればご指摘いただければその都度追加いたします。以上よろしくお願いいたします。

  • vsftpd+swatchでphp起動

    お疲れ様です。 サーバー周りはほとんど触ったことがなく、シェルも初めてなので、ググりながら書いているものです。 よろしくお願いします。 ftpでpng画像がアップされたらphpにpngのファイル名を渡して加工。 という流れを想定しています。 サーバーはCentOSです。 間にSwatchを入れて、VSFTPD.logを監視させているのですが、 (1)まずVSFTPDがわからない これも触るのは初めてです。現在windowsにFTPを設定して、サーバーにアクセスしています。 VSFTPDのログは最後が3/31で、自分がwindowsからFTPで出し入れしてもログは残りません。 ためしにサーバーのコマンドラインからftp localhostで入ってみました。(ただ使い方がわからずそのままログアウト) そもそもVSFTPDのログは何をすれば残るのでしょうか・・・ (2)Swatchで引数つきでPHPに投げられるのか watchfor でログをパターン検索します。 一致したらPHPにパイプしようと思っているのですが、 パターンに一致したファイル名を抜き出してPHPに渡すことはできるのでしょうか。 何分どうすればいいかわかっていないので質問もまとまっていませんが、 お力添え願います。 必要な情報があれば捕捉しますのでご教授願います。