アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

環境
CentOS 5.4
vsftpd

サーバ管理の勉強で,空き資源の一部をユーザに貸し出しているのですが,各ユーザのFTPログイン履歴を管理したいと思っています.
考えている方法はいくつかあるのですが,どれも一長一短あるので,こうすれば短所は解決するとか,他に良い方法などがありましたらご教授いただけると幸いです.

方法1
/var/log/vsftpd.logを監視し,認証ログを抽出してデータベースへ格納
短所
cronで定期的に回しても,リアルタイム性が確保されない
ログの量が多く,cronで毎回ログファイル全体を読み込み・抽出するのはムダすぎる.

方法2
FTPログイン時にシェルスクリプトを自動実行し,データベースへ格納する.
短所
そもそもFTPログイン時にシェルスクリプトを自動実行できるのか不明.
(できなくはないけど,vsftpdのサービスを変更する必要があるらしい…?<http://webcache.googleusercontent.com/search?q=c …

方法3
lastやlastlogコマンドで,ftpのログイン履歴も記録対象とする.
記録対象とする設定方法が不明.
短所
lastコマンドはftpにも対応しているはずではあるが,実際にコマンドを発行してみると,ftpのログイン情報が記録されていない.

vsftpdのログは,認証ログと,ファイル転送などの動作ログが分かれていないので,ログイン履歴を取得しにくいのです.
何か良い方法がありましたら,アドバイスいただけると幸いです.
よろしくお願い致します.

A 回答 (1件)

ログのリアルタイム監視は swatch が定番です。



参考 URL に解説があるので試してみてはいかがでしょうか。

参考URL:http://www.atmarkit.co.jp/flinux/rensai/root04/r …
    • good
    • 0
この回答へのお礼

ありがとうございました.
swatchとシェススクリプトを組み合わせ,FTPの認証履歴の取得のデータベース化に成功しました.
以下,私が行った手順です.
もしこのあと同じ事をやりたいと思っている方の参考になれば幸いです.
(ソースコードはとても汚いし,もっと効率の良い書き方ができると思いますが,そこはご容赦ください)

ディストリビューションはCentOS5.4です.
作業前にrootになってください.

DAGリポジトリをインストール
rpm -Uvh http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/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サーバにアクセスがあると,認証履歴がデータベースに記録されます.

お礼日時:2010/05/04 17:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A