痔になりやすい生活習慣とは?

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QFTPのログについて

こんにちわ。

FTPで「ファイルを送りつけられる」、「ファイルを取っていかれる」の場合の情報を保存しているログなどはあるのでしょうか。
(自サーバがFTPするのではなく、他サーバがFTPしてくる場合です。)

サーバ間のファイル連携調査を行っているのですが、Solarisに詳しい人物が身近におらず困っています。

取得したい情報詳細は以下です。
・ファイルの受信時間
・FTP元マシン名(IPやユーザ名でもOK)
・FTPされたファイル名

OSはSolaris8です。

どなたかご教示いただければ幸いです。

Aベストアンサー

Solaris8の上でといっても、純正のFTPなのかどこかかからとってきたパッケージなのか、あるいはオープンソースをコンパイルして入れたのかにもよりますし、ログの記録先は設定次第でいくらでも変更可能なので、「ここにあります」という回答は得られないでしょう。
構築した担当者に確認できればもっとも確実なのですが、もしかしたら、/var/log/の下とか /var/adm/messages などに記録されているかもしれません。(あるいはまったくログを取っていないかもしれません)

QLinuxのAccessログはどこにあるんでしょうか?

お世話になります。

現在、WindowsとLinuxをイントラネットでつないでて、Sambaを利用してWIndowsからLinuxにアクセスしようとしています。
Windowsからサーバの存在が確認できるところまではいくのですが、それをクリックしてみると、"\\<サーバ名>にアクセスできません。 ~"と表示されてしまいます。
このとき、Linuxのアクセスログを確認したいのですが、/var/logのどのファイルを見ても更新日付が古いので、別の場所にあるのでは?と
思っているのですが、ご存知のかたいないでしょうか?

Aベストアンサー

設定によるので間違ってるかもしれませんが、パッケージでインストールしたsambaなら /var/log/samba/ に入ってませんか?

QFTPのログを取得したい

外部からFTP接続してきたことと、ファイルに対するアクションの履歴を取りたいのですが、どなたか方法を教えていただけないでしょうか。

ちなみにsyslogdでは外部に対してFTPする情報しか出力されませんでした。

OSはAIX L5です。

よろしくお願いします。

Aベストアンサー

AIXに最初から含まれているftpということなら参考URLの内容でどうでしょう?
http://www-1.ibm.com/support/docview.wss?rs=608&q1=ftpd&uid=std3c63263bc4be12f5a4925719c002c3314&loc=ja_JP&cs=utf-8&cc=jp&lang=ja

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Q起動しているサービスを確認するコマンド

初歩的な質問で恐縮ですが、ご教示いただけますと幸いです。

起動しているサービスを確認するために以下の2つのコマンドを打ってみるのですが、結果(出て来るサービス名)が違います。
このコマンドの違いについてご教示いただけますでしょうか。

(1)service --status-all
(2)chkconfig --list

Aベストアンサー

(1)service --status-all

サービスの現在のステータスを調べるコマンド

(2)chkconfig --list

OSのブート時に自動起動するサービスを調べるコマンド

違いが出るのは、
・ブート後に手動あるいは他のコマンドから起動したサービス
・ブート後に手動あるいは他のコマンドから、あるいはエラーで停止したサービス
・ブート後に実行はされるがすぐに停止して常駐しないサービス (ntpdate とか)

あるいは、(1)ではサービス名が表示されない物もあるので、どのサービスがどんなステータス出力をするのか知っておく必要もありますね。(service network statusとか)

QFTP接続ログを見ることが可能なのでしょうか?

プロバイダやレンタルサーバに自分のホームページを作成する場合、FTPソフトを使ってファイル等のアップロード・ダウンロード作業をします。その接続ログというのは、残るものなのでしょうか?

簡単に言えば、仮にホームページを共同運営していて、共同運営している人が更新をした場合に、ホームページスペースを借りている側は、そのFTP接続ログを見ることが可能なのでしょうか?(プロバイダ・レンタル業者なら見ることはできると思うのですが)可能であれば、方法もお願いします。

Aベストアンサー

こんにちは。

>プロバイダ・レンタル業者なら見ることはできると思うのですが
という事ですので、自分で構築したサーバに残す方法がある事はご存知のようですね。基本的には、残しているはずです。
ただし、プロバイダ・レンタル業者 には、「個人情報の守秘義務」が発生します。ですので、個人レベルへの開示は、原則行わないと思われます。(例え、そこのページの管理者であっても)この辺は、サーバ管理者もしくは、プロバイダにお問合せください。

参考になれば。
でわ

Qファイル操作(削除など…)の履歴を取得したいです。

■環境
---------------------------------
CentOS 5.6
vsftpd-2.0.5-16.el5_6.1
httpd-2.2.3-45.el5.centos
---------------------------------

■経緯
某業者の専用サーバを借り、WEB公開の本番運用しています。
時々必要なファイルが1枚消える現象が発生しております。

この場合以下のような可能性を考えておりますが、ファイル操作のログが取得できていないため特定できておりません。
(1)ユーザ操作ミス。
(2)WEBアプリケーションのバグにより、ファイル削除が発生している。
(3)ウイルスまたは、不正アクセスによりファイルが削除されている。
(4)ファイルアップロードは、FTPソフト(windows)からおこなっているため、FTPクライアントなどにバグが発生している。

上記の内容が考えられるとは考えています。

■質問事項
ファイル操作(主に削除)をロギングする方法をご教示願います。

Aベストアンサー

psacctを使うのはどうでしょうか。
http://www.usupi.org/sysad/139.html

或いはlastcommコマンドを使ってのスクリプトを
定期的に走らせるなど。。

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

ftpでファイルを転送したいのですが、現在出来ておりません。
因みにその端末(サーバ)は外部からのftpのやり取りも必要な為、vsftpdをインストールしています。
試しに、コマンドでftpと入力した時に題目のようなエラーが表示されます。

Linuxはまだ経験が殆ど無く、シェルに関してもまだ分かりません。

ftpクライアントのインストールとか必要でしょうか?
それとも何か追加設定が必要でしょうか?

途中のファイアーウォール機器では通過の設定ができております。

教えていただけますでしょうか。
宜しくお願い致します。

Aベストアンサー

echo ${PATH}

として、パス(コマンドサーチパス)を確認してみてください。

その上で、

find / -name ftp -print > /tmp/find.log

として、「ftp」コマンドがどこのディレクトリにあるかを確認してください。
※ エラーメッセージ(~:許可がありません)が出力されますが、無視してください。

cat /tmp/find.log

/usr/kerberos/bin/ftp
/usr/bin/ftp


そのあとで、「/etc/profile」に、「ftp」コマンドが存在するディレクトリを追記してください。

最終行に追加
PATH=/usr/kerberos/bin:/usr/bin:$PATH

いったん、ログアウトしてログインして、パスが追加できてるかを確認してください。
echo ${PATH}

追加できてれば、「ftp」コマンドが使えるようになっているはずです。

Qftpコマンド出力結果の取得

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の中身はカラっぽでした。

ところが、リダイレクションを外し、コマンドファイルのみを実行すると、結果が画面に表示されます。

何故、画面には表示されるのに、リダイレクションやパイプでは結果が渡されないのかが分かりません。

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:実際のパス

これを以...続きを読む

Aベストアンサー

以前の質問に答えてから、手動でやってもできるなと気付きました。creさんの環境でできるか分かりませんが、試してみてください。
コマンドラインから、
ftp SERVER | tee ftp.log
としてください。あとは普通に手動でftp操作をします。ただし私の環境では、ログイン時のユーザ名入力のプロンプトが表示されませんでしたが、表示されているものとしてユーザ名を入力したら、パスワードを聞いてきました。あとは普通にftp操作をして終了すれば、全ての操作履歴がftp.logに記録されます。

結果報告お待ちしてます。

QDirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)

いろいろ調べましたが不明な点があり、質問します。

WindowsのDOSプロンプトでdirコマンドを打つとフォルダ・ファイルの一覧が表示されますが、その中にファイルサイズが表示されています。
このサイズを合計できるコマンドはありませんか?
DIRコマンドのオプションを調べましたがそれらしいものが見当たりません。
具体的には
C:\xxx\配下に50個程度のファイルがあります。
その50個の合計サイズを知りたいです。
xxxフォルダの親フォルダにはアクセス不可です。

ずーっと悩んでいます。よろしくお願いします。

なお、OSはWindowsNTか2000で使用予定です。

Aベストアンサー

カレントドライブ、カレントフォルダを
C:\xxx\
にした状態で、

dir /s /a-d

/sパラメータででサブディレクトリすべてを検索
/a-dパラメータでディレクトリ以外のファイル(つまり属性に関係なくすべてのファイル

これを実行すると最後にファイルの個数とファイルサイズの合計を表示します。

もし、隠し属性のファイルは合計しないのであれば、

dir /s

だけで良いと思われます。


人気Q&Aランキング