logrotateとlogwatch

ログは通常、ひとつのファイルに追加されていき(例:/var/log/access.logなど)、
長い期間サーバーを運用し続けているとログファイルの容量 がどんどん大きくなっていきます。
それを防ぐために、指定したファイル容量・期間が来ると自動でファイルを
access.log1、access.log2、access.log3・・・のように分割作成してくれる「logrotate」を使います。

設定ファイル
# vi /etc/logrotate.conf

# see “man logrotate” for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

設定値 説明
compress    ローテーションされたログをgzipで圧縮する。
create [パーミッション] [ユーザ名] [グループ名] ローテーション後に新たな空のログファイルを作成します。
ファイルのパーミッション、ユーザ名、グループ名を指定できます。
daily    毎日ログローテーションする。
ifempty    ログファイルが空でもローテーションする。
missingok    ログファイルが存在しなくてもエラーを出さない。
monthly    毎月ログローテーションする。
nocompress    ローテーションされたログを圧縮しない。
nocreate    新たな空のログファイルを作成しない。
nomissingok    ログファイルが存在しない場合エラーを出す。
noolddir    ローテーション対象のログと同じディレクトリにローテーションされたログを格納する。
notifempty    ログファイルが空ならローテーションしない。
olddir    ディレクトリ名 指定したディレクトリ内にローテーションされたログを格納する。
postrotate – endscript    postrotateとendscriptの間に記述されたコマンドをログローテーション後に実行する。
prerotate – endscript    postrotateとendscriptの間に記述されたコマンドをログローテーション前に実行する。
rotate    回数 指定した回数だけローテーションする。
size ファイルサイズ    ログファイルが指定したファイルサイズ以上であればローテーションする。
sharedscripts    複数指定したログファイルに対してpostrotateまたはprerotateで記述されたコマンドを実行する。
weekly    毎週ログローテーションする。

補足
/etc/logrotate.d/以下に、個々のプログラムに対する設定ファイルがあるので同様に設定しなおしてもよい。
ログ管理01

//////////////////////////////////////////////////////////////////////////////////////////////////
logwatch
サーバ管理の基本はログのチェックですが多くの機能を詰め込んだサーバだとログの数も大量になります。
それらを逐一チェックしているだけで時間と労力を使い果たしてしまうでしょう。
そこで各プログラムのログを見やすい書式に変換してメールで報告してくれる「logwatch」というプログラムを使用します。
「Logwatch」は(デフォルトでは)毎日夜間に実行され、
ログから特定のパターンを含む行を比較的見やすい状態に加工して表示させることが可能です。

インストール
# apt-get install logwatch

設定ファイル 確認
# cat /etc/logwatch/conf/logwatch.conf
 MailTo = メールを送るアドレスを記載またはrootで受信 
 Range = Yesterday で前日のログをメールで送信する
 Detail = Low でログの解析精度を中にします(Medなら中、Highなら高)

/etc/log.d/conf/logwatch.confのデフォルト設定は、以下のようになっています。
LogDir = /var/log   ←ログが保存されるディレクトリを「/var/log」に指定
MailtTo = root   ←メールの送信先をローカルのrootユーザーに指定
Print = No   ←コンソールに表示しない
Range = yesterday   ←昨日のログファイルをチェックする
UseMkTemp = Yes   ←mktempを使用して一時ファイルを作成
Detail = Low   ←レポートの詳細度をLowに指定
Service = All   ←「/etc/log.d/scripts/services/」ディレクトリにあるすべてのファイルの内容でフィルタをかけて情報を取得
Mailer = /bin/mail   ←メールコマンドを「/bin/mail」に指定
注:コメント行は省略していますが、logwatch.confは設定マニュアルも兼ねているので一度は目を通しましょう。
メール送信先のみの変更で問題なく使用可能です。
デフォルトでコメントアウトされている設定はチェックする項目に制限をかけるためのものなので、特に使用する必要はありません。

このプログラムはインストールすると自動的に「Cron」に登録される為、
毎日自動的に指定したメールアドレスに送信されます。
もしも解析情報が少ない場合は「Detail = High」にして情報量を増やしたりして見ましょう。

cronにより、毎日実行されます。
実行される時間は、/etc/crontabで確認できます。
crontabファイルには毎月、毎週、毎日、毎時に実行する時刻などが定義されています。

(省略)
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
上記より、「/etc/cron.daily」ディレクトリにあるスクリプトは4時2分に実行されることが確認できます。
曜日欄は、0と、7が、日曜を表すようです。
0は月曜日である。

テストしてみる
 # /usr/sbin/logwatch
 
 指定したアドレス宛に、レポート結果が届くはず・・・

 メールで送られて来た、レポート結果 ↓

実行が終了すると、例えばrootあてに以下のようなメールが届く。

################### LogWatch 5.2.2 (06/23/04) ####################
Processing Initiated: Sun Mar 18 06:25:13 2007
Date Range Processed: yesterday
Detail Level of Output: 5
Logfiles for Host: XXXXX
################################################################
——————— courier mail services Begin ————————

The authdaemon was restarted 2 Times

Connections: 14 Times
Protocol POP3 – 5 Times
Host 192.168.0.3 – 5 Times

Protocol IMAP – 9 Times
Host 192.168.0.3 – 9 Times
以下省略

viの使い方

viは「コマンドモード」と「テキスト入力モード」を切り替えて使います。
「コマンドモード」
↑「esc」ボタン  ↓「i」「a」「o」ボタンを押す。
「テキスト入力モード」

# vi ファイル名 「Enter」で起動する。
Fileの指定がなければ、新規作成される。

「コマンドモード」
←↓↑→ でカーソルを動かす。
h,j,k,l 左 下 上 右
H 画面上の最上位に移動  
L 画面上の最下位委に移動

「テキスト入力モード」
a,i,oを押すと文字入力モードになる。
(A,I,Oを押すとカーソル下に文字が挿入される。)
終了は 「ESC」でコマンドモードへ切り替える。

dd 現在位置の一行を削除
コピー コピーしたい行で 「ESC」でコマンドモードにして、「yy」でコピー
ペーストはpでカーソルの下にペーストされる。
ppはカーソルの上にペーストされる。

その他
u 最新コマンドの取り消し
U 現在行の変更の取り消し

終了
「:w」 書き込み
「:w file」 fileに書き込み
「:q」 viの終了
「:q!」 強制終了(編集結果を保存しない)
「:wq」 書き込み後終了
SHIFT + zz(ZZ)  保存終了

単語検索
ESC + / 「検索ワード」   

など

SMTPサーバ

現在、プロバイダはスパムメール対策のために自宅サーバにOP25Bを行っている。
(Outbound Port 25 Blocking>契約しているプロバイダ指定のメールサーバ以外からの送信を遮断)

Postfix 送信サーバーのインストール
# apt-get update
# apt-get install postfix

下記の質問をされますので答えていきます
Postfix Configuration
サーバーの形式 → internet site
[Where should mail for root go]
rootへのメールの場所 → NONE
メールネームの設定 → 収得したドメイン名
整形の設定(append domain to simple address) → No

[Other destinations to accept mail for? (blank for none)]
受信ドメイン名 → 収得したドメイン名 ドメイン名, localhost.localdomain, localhost

メールキューの同期更新を強制しますか? → いいえ

※後で設定の変更をやりなおす時は
# dpkg-reconfigure postfix

設定ファイル編集 
/etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP ←外部に余計な情報を出さないように設定
biff = no
append_dot_mydomain = no
myhostname = localhost
mydomain = ドメイン名
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname

mydestination =   ドメイン名, localhost.localdomain, localhos

relayhost =プロバイダの中継サーバ名 ロバイダの中継サーバを指定
※OP25B対策 relayhost = [プロバイダの中継サーバ名]:25 別な表記

mynetworks = 127.0.0.0/8 192.168.1.0/24
LAN内のパソコンからメールを送信できるように任意に設定。
デフォルトのままだと telnetやsshでサーバにログインしたユーザーしか使えません
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

# home_mailbox = Maildir/   popを使用 #コメントをつける

///////////////////////////////////////////////////////////

MailファイルをMbox形式ではなく、Maildir形式とするために以下を追加
home_mailbox = Maildir/
今回は受信サーバーにcourier-imapを使用します。
(ローカル配送をMaildir形式にします。
MuttやCourier-IMAPに対応するため。
POPのみで受信される場合は、設定しなくても大丈夫。
逆にPOPからはディレクトリ構造が違うので受信できなくなるみたい。 )

/////////////////////////////////////////////////////////

Postfix再起動
# /etc/init.d/postfix reload

簡単な動作確認
$ mail ○○○@○○○.com 送り先のメールアドレス
Subject: test
this is test mail
.
Cc:

mailコマンドを使って、自分が受信できるアドレス宛にテストメールを送ってみる。
本文入力後は、”.”(ドット)だけを入力して改行。
Cc:に対しても改行のみ。
ちゃんとテストメールが届けばほぼ大丈夫>しかし、OP25Bでブロックされて届かない

メールテスト
ローカルから直接telnetでテストしてみました。
$ telnet localhost 25

mail from: test@localhost
rcpt to: hogeuser@.hoge 送り先のメールアドレス
data 本文
This is Test mail
.

quit
これでテストメールが届きます。
quitmailxやsendmailコマンドで実行してもいいです。
(しかし、OP25Bでブロックされて届かない)

///////////////////////////////////////////////////////////////

587番
メール送信時の安全性を高めるためにユーザ認証システムを加えたものを「587番ポート」といいます。
2006年12月14日
OP25B
主なインターネットプロバイダの対応状況について
・BIGLOBE
・InfoSphere
・J:COM NET
・@nifty
・So-net
・WAKWAK
・ぷらら

postfix ポート587開けるか?
/etc/postfix/master.cf
submission inet n – n – – smtpd
この1行のコメントアウトをはずすしてpostfix reloadするだけ。
(-o smtpd_etrn_restrictions=reject も#をはずす)

それでポート25番だけでなく587番でもPostfixがSMTPサーバとして待ち受けをはじめてくれるはず。

$ grep 587 /etc/services
submission 587/tcp msa # mail message submission
submission 587/udp msa # mail message submission

/////////////////////////////////////////////////////////////////

OP25B続き
回避策はいくつかあるが、ひとつはBIGLOBEのメールサーバを経由する方法。
BIGLOBEでは中継サーバを用意していて、事前登録すれば利用できる。

以前、ISPのBIGLOBEの「25番ポートブロック(Outband Port 25 Blocking)」対策で、
BIGLOBEからの正式な通知に従い、postfixの設定ファイルで中継サーバを変更したが
、実はそれだけではメール送信ができなかったのだ。
注意事項に「ご利用のメールソフトがSMTP認証に対応している必要があります。」とあり、
PostfixをSMTPクライアントとしてSASL認証させる必要があるのだ。

設定変更の手順としては、
(1)/etc/postfix/main.cf の設定を変更
(2)/etc/postfix/sasl_passwd を作成し、認証情報を記述
(3)sasl_passwdをdb化し、postfixをreload
となる。

/etc/postfix/main.cfは、次のように設定した。

#中継サーバを指定
relayhost = [XXXXX.biglobe.ne.jp]:25

#下記を追加
smtp_sasl_type = cyrus
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

次に、/etc/postfix/sasl_passwd を作成し、次のように記述する。saslpasswdの所有者はrootで、パーミッションは600に設定する。

#YYY.biglobe.ne.jpは従来のSMTPサーバ
[XXXXX.biglobe.ne.jp]:25 アカウント名@YYY.biglobe.ne.jp:メールパスワード

/etc/postfix/sasl_passwd を作成したら、db化する。その後、postfixの設定を再読み込みすれば完了。

# postmap /etc/postfix/sasl_passwd
# /etc/init.d/postfix reload

///////////////////////////////////////////////////////////////////////

TCPポート587番に変更+SMTP認証
メール送信サーバ587番ポート対応設定方法

説明
インターネット接続に一部の他社プロバイダをご利用の方において、
迷惑メール対策などで25番ポートが閉ざされている場合(※)でも、
BIGLOBEメールサーバを利用したメール送信をできるようにするための説明です。
なお、「BIGLOBE光 with ひかりone」関連コースをご利用の方も、これに該当します。
こちらの設定がご利用いただけるのは、SMTP認証に対応したメールソフトに限ります。
ここではOutlook Express 6.0を例にあげています。

(※) 迷惑メール業者による大量迷惑メール送信を制限するために、
25番ポートを閉じて、直接メールを送信できないようにすることを25番ポートブロックといいます。

手順
「ツール」→「アカウント」で、変更したいアカウントを選択し、[プロパティ]ボタンをクリックする。
「サーバー」タブを選択し、以下の項目を設定する。

① 「サーバー情報」の欄の「受信メール(POP3)」と「送信メール(SMTP)」に”mail.biglobe.ne.jp”を入力する。
※ “m**.biglobe.ne.jp”と入力している方は、“mail.biglobe.ne.jp”へ変更してください。
詳しくは「サブドメイン「m**」の方のメール設定方法の変更について」のページをご覧ください。

② 「受信メール サーバー」の欄の「アカウント名」に、メールアドレスを入力する。
※ @マークの右側を含めたメールアドレスを入力してください。
例:sample@***.biglobe.ne.jp

③ 「送信メール サーバー」の欄の「このサーバーは認証が必要」にチェックを入れる。

不正中継テスト
“不正中継テストを下記のサイトで実施する。
SMTPサーバはスパムメールやメールボムの送信元として不正使用される
可能性がありますので気をつけましょう。”
長崎ネットワークサービス
Abuse.net http://www.abuse.net/relay.html
RBL.jp http://www.rbl.jp/

自分ですることは限界があるので、第三者サービスを紹介します。
無料ですので、このあたりで自分のサーバをテストしてみてもいいですね。
第三者中継チェック
RBL.JPとかABUSE.NETを使ってチェックします。
引っかかる場合は、設定がまずいって事かな・・・

/////////////////////////////////////////////////////////////////

受信リスト追加(マルチドメイン対応)
受信ドメイン等をキッチリ設定できたのであれば、次は受信ユーザの設定です。
ここではhogeuserがすでにuseraddされているとします。
さて、仮想的に複数ユーザ(@マークの前)をhogeuserで受信できるようにしましょう。

# vi /etc/aliases
[追加]
mail01: hogeuser
mail02: hogeuser
mail03: hogeuser設定反映

# newaliases確認

# less /var/log/mail.log
受信ドメインがhoge1.hoge、hoge2.hogeであったとしますと、
上記の設定を行うことで、下記のメールアドレスがhogeuserで受信できます。

mail01@hoge1.hoge
mail02@hoge1.hoge
mail03@hoge1.hoge
mail01@hoge2.hoge
mail02@hoge2.hoge
mail03@hoge2.hoge

Procmailで振り分けたり、Muttを使ってターミナル上で見れます。
もちろん、Courier-IMAPやCourier-POPで別マシンから受信できます。

////////////////////////////////////////////////////////////

Postfixのローカルメール配信形式の設定
 Postfixではローカルホストへのメール配信として以下の3つの形式を使用することができ、
/etc/postfix/main.cf で簡単に切替可能です。

 ・sendmail 形式のメールボックス
 ・ホームディレクトリ内のメールボックス
 ・qmail で採用されているMaildir形式

sendmail形式のメールボックス
 これがデフォルトのPostfixの振る舞いです。
/etc/postfix/main.cf 内の関連するキーワードはmail_spool_directory ですが、
特に指定しない場合はSendmailで標準的に利用される /var/spool/mail 以下に各ユーザのメールボックスファイルを作成します。
mail_spool_directory = /var/spool/mail      POPはこれ
/var/spool/mail/user1ファイル

ホームディレクトリ内のメールボックス
 同じディレクトリに多くのファイルが含まれている場合、ファイルへのアクセスに時間画かかるようになります。
また、管理の上で全ユーザのファイルが一つのディレクトリに入っているのを好まない方もいるのではないでしょうか?
 そのような場合、全てのユーザのメールボックスファイルを一つのディレクトリ内に配置するのではなく、
各ユーザのホームディレクトリに配置することも可能です。
設定は/etc/postfix/main.cf 内で以下のような指定をするだけです。
home_mailbox = Mailbox
/home/user1/Mailboxファイル

qmailで採用されているMaildir形式
 qmailでも採用されている、より信頼性の高いMaildir形式を利用するには/etc/postfix/main.cf 内で以下のような指定をします。

home_mailbox = Maildir/ IMAPはこれ

 Maildir/ ディレクトリの設定変更後、初めてユーザがメールを受信したときに
そのユーザのホームディレクトリに以下のようなMaildirの構造が作成されます。
/home/user1/Maildir/cur  既読のメール
/home/user1/Maildir/new  新規のメール
/home/user1/Maildir/tmp  新規メールの前処理

//////////////////////////////////////////////////////////

postfix で Maildir 形式にして、かつ /var/spool/mail/usr/ 以下にスプールする
ホームディレクトリに配送する訳では無いので home_mailbox をコメントアウトして、
スプールディレクトリに Maildir 形式で配送する設定にします。
指定するディレクトリは /var/spool/mail で無くても良いです。

#home_mailbox = …
mail_spool_directory = /var/spool/mail/

あとは各ユーザの Maildir を作成。

mkdir -p /var/spool/mail/user1
chown user1:user1 /var/spool/mail/user1

chmod 700 /var/spool/mail/user1

これで user1 宛のメールが /var/spool/mail/user1/new/ に作成されます。
スラッシュ足すだけでよかったのね

サーバーの初期設定と運用

IPアドレスを任意のIPアドレスに変更
自己IPの設定
変更例
/etc/hosts 192.168.1.86 → 192.168.0.85
LAN内で使用するIPアドレス

接続許可の範囲
/etc/hosts.allow ALL:192.168.0.0/255.255.255.0  
    192.168.0.0~255までからの接続を許可する。
接続を許可するPCを規定する。

インターフェースの設定
/etc/network/interfaces
address 192.168.1.86 → 192.168.0.85
※間違えると接続できなくなるので注意が必要です。

サーバーの再起動後設定が反映される。

rootのパスワード変更
# passwd root
rootの新パスワードを入力して変更する

サーバのホスト名を変更します。
/etc/hostname
abcdefg
設定でホスト名を

/etc/hosts にホスト名を追加します。
127.0.0.1 localhost
192.168.1.18  ドメイン名  abcdefg
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
ログインユーザーの追加
# useradd  ユーザー名
パスワード変更
# passwd  ユーザー名

ディレクトリ作成
# mkdir /home/ユーザ名
# groupadd グループ名

所有者変更
# chown  ユーザ名   ディレクトリ名
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
ログインユーザーの削除
# userdel  ユーザ名
/home/ユーザ名  のフォルダも削除
# cd /home
# rm -rf  ユーザ名

すでに作成されているユーザーをログイン出来なくする方法
コマンド Login権限変更コマンド
# usermod -s /bin/false ユーザー名

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
サーバを最新の状態に保つ為に、こまめに下記のコマンドを実行してアップデートしましょう
「update」でパッケージの更新情報をダウンロードし、「upgrade」で更新されているパッケージのアップグレードを行います。

# apt-get update
# apt-get upgrade
システム全体をアップグレード

インストール済のものを削除する
# apt-get remove xxxx (xxxx削除します)
# aptitude purge xxxx (xxxx削除します)

サービスの起動
# update-rc.d サービス名 defaults
サービスを無効にする
# update-rc.d サービス名 remove
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
ログイン履歴をチェック
不正にログインされていないか履歴をチェックします
コマンド ログイン履歴チェック
# lastlog
一度もログインしていないユーザーは「Never logged in」と表示される。

インストールされているプログラムの一覧を表示
# dpkg -l
インストールされている任意のプログラムを表示
# dpkg -l |grep プログラム名

Movable Type 5.1beta

自分のウェブサイトやブログをカテゴリに分けタグをつけて人生や研究に役立てましょう。
フィールドのカスタマイズも容易にでき、運用も簡単でページを更新する感覚ですね
慣れるのにコツがいりますが、、、

必要インストール環境と、ブラウザ動作環境
http://www.movabletype.jp/documentation/system_requirements.html

UbuntuサーバのSynaptic パッケージ・マネージャで確認してみた。
Perl 5.8.1 以上 5.10.1 OK
apache2       2.2.14
php5        5.3.2  (現在は5.3の問題も解消されましたね)
mysql-sever-5.1  5.1.41 OK

Six Apart, LtdよりMovable Type 5をダウロードする。
http://www.sixapart.jp/

今回は性能アップしたMovable Type 5.1Beta版をダウンロードしました。
「MT-5.1rc2-ja.tar.gz」日本語版をダウンロードしました。
安定板を使用したい方はMovable Type 5.04をダウンロードします。

【準備】
サーバ側
CGI用のディレクトリを作成(/var/www/cgi-bin)
# mkdir /var/www/cgi-bin

所有者をApacheの実行ユーザーに変更
/var/www# chown USER:gruopA cgi-bin
(/var/www/cgi-binの権限をUSERユーザ gruopAグループに変更します。)

端末より管理者になり
#gedit
/etc/apache2/sites-available/default2を編集する。
【CGI部の設定】
CGIディレクトリを /usr/lib/cgi-bin/を /var/www/cgi-bin/に変更します。

ScriptAlias /cgi-bin/ /var/www/cgi-bin/       【変 更】 
<Directory "/var/www/cgi-bin">            【変 更】 
AllowOverride None       
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch       
Order allow,deny       
Allow from all       
</Directory>       

# /etc/init.d/apache2 restart Apache2を再起動させる。

【CGIの動作確認】
geditで/var/www/cgi-bin/に以下の内容(3行)をファイル名 hello.cgi で作成します。 
cgiの一行目にPerlへのパスを指定をしていする。

#!/usr/bin/perl 【パス指定の最後に / はつけない】
print “Content-Type :text/html\n\n”;
print “Hello!”;

/var/www/cgi-bin# chmod 755 hello.cgi

Ubuntuサーバで
http://localhost/cgi-bin/hello.cgi へアクセスして
「Hello!」と表示されればOK

Movable Type の設置
アプリケーションディレクトリ     /var/www/cgi-bin/mt
スタティックディレクトリ        /var/www/mt-static
ウェブサイト(ブログ用)ディレクトリ /var/www/mt

mt用のディレクトリを作成する。
# mkdir /var/www/mt
所有者をApacheの実行ユーザーに変更
# chown USER:gruopA /var/www/mt

サーバーのシステム情報の確認
「mt-check.cgi」を動作させるために「MT-5.1rc2-ja.tar.gz」のファイルを
FFFTPでサーバの/var/www/cgi-bin/へ
↑「アップロード」ボタンを押してアップロードする。
ファイル数が多く、クライアントPCでの解凍の失敗やFTPのアップロード中のトラブルを
避けるためにできるだけサーバ内で解凍します。

端末より「MT-5.1rc2-ja.tar.gz」を解凍する。
 # cd /var/www/cgi-bin/
 # tar xvzf MT-5.1rc2-ja.tar.gz

ディレクトリ名の変更
 # mv MT-5.1rc2-ja mt  (ディレクトリ名をmtに変更します。)

所有者をApacheの実行ユーザーに変更
 # chown -R USER:gruopA mt

クライアントPCより FTPで「mt-check.cgi」の属性変更で755へ変更する。
アドレスhttp://ドメイン名/cgi-bin/mt/mt-check.cgi へアクセスする。

最下部に「システムのチェックを完了しました。」
「Movable Typeを利用できます。」と表示されます。

このままでもMovable Typeをインストールして利用できますが、
いくつかモジュールがインストールされていませんので適宜必要なモジュールをインストールする。

【参考サイト】
Perl モジュールのインストール方法
http://www.movabletype.jp/documentation/mt5/reference/install-perl-modules.html より抜粋
「SC440でUbuntu」   http://www.ubunchu.com/wordpress/?p=175

インストールの例
端末より管理者になり
# perl -MCPAN -e shell
Terminal does not support AddHistory.

cpan shell — CPAN exploration and modules installation (v1.7601)
ReadLine support available (try ‘install Bundle::CPAN’)

cpan> install DBI
cpan> install DBD::MySQL
cpan> quit      終了

GDのモジュールが入らない場合
synapticパッケージマネージャで「GD-」で検索して
libgd-graph-perl
libgd-graph3d-perl
libgd-graph3d-perl インストールする。

Image::Magickのモジュールが入らない場合
synapticパッケージマネージャまたは端末よりコマンドでインストールする。
# apt-get install imagemagick
# apt-get install perlmagick

DBD::SQLite2のモジュールが入らない場合
synapticパッケージマネージャで「DBD-SQLite」で検索して
libbd-sqlite2-perl
libbd-sqlite3-perl などをインストールする。

MySQLの設定
端末より管理者になる。
# mysql -u root -p
Enter password:******** 【MySQL管理者(root)パスワードを入力】

キャラクタセットを指定してデータベースを作成する。
mysql> create database mt character set utf8;
    (データベース名:mt)
    データベースを削除するにはDROP DATABASE データベース名;

mysql> show databases;     確認
+——————–+
| Database |
+——————–+
| information_schema |
| mt |
| mysql |
+——————–+

MySQLから接続を切断するには exit, quit を入力します。

ユーザーの作成
mysql> grant all on mt.* to mtuser@localhost identified by ‘mtpasswd’;

all            (GRANT OPTION以外のすべての権限)
mt.*           (データベース名.テーブル名)
mtuser@localhost     (ユーザ名@localhost)
‘mtpasswd’          (’パスワード’)

      ユーザーの削除
      データベースを削除する前にユーザを削除する。
      mysql> revoke all on mt.* from mtuser@localhost; all権限を無効にする。
      mysql> drop user mtuser@localhost;    ユーザを削除する。

新規インストールの準備
パーミッション (権限) の設定
クライアントPCよりFTPでファイルやディレクトリの権限を変更します。

アプリケーションディレクトリ(/var/www/cgi-bin/mt)内のスクリプト (拡張子が cgi のファイル) の権限を、
755 に設定します。

mt-staticのスタティックディレクトリを /var/www/へ移動します。
 端末より管理者になり
 /var/www/cgi-bin/mt# mv mt-static /var/www/
mt-static ディレクトリ内の support ディレクトリの権限を、777 に設定します。

ウェブサイト(ブログ用)ディレクトリ(/var/www/mt)の権限を、777 に設定します。

MTのインストール
ブラウザより「http://ドメイン名/cgi-bin/mt/mt.cgi」へアクセスする。
MovableType01
スタティックウェブパス
http://ドメイン名/mt-static

スタティックファイルパス
/var/www/mt-static

「開始」ボタンを押します。
「次へ」ボタンを押します。
データベースをMySQLで選択します。
MovableType02
MySQLの設定 で決めたデータベース名、ユーザ名、パスワードを入力します。
「接続テスト」ボタンを押します。
「次へ」ボタンを押します。
今回、送信メールは使用しないので
「次へ」ボタンを押します。
「次へ」ボタンを押します。
MTの管理者のアカウントを作成します。
ユーザー名とパスワードなどを入力して
「次へ」ボタンを押します。
MovableType03
ウェブサイトURL
http://ドメイン名/mt

ウェブサイトパス
/var/www/mt
※ここのウェブサイトURLとウェブサイトパスを間違えないように注意してください。
間違うとブログページやアイテムのパスがわからなくなり表示されません。

「インストール」ボタンを押します。
サインインします。
MovableType04
「新しいブログ」をクリックする。
ブログ名を入力すると自動的にURLとブログパスに文字がはいります。
「ブログの作成」ボタンを押します。
「再構築」ボタンを押して、ブログを再構築します。
サイトのURL「http://ドメイン名/mt/diary/」 へアクセスする。
詳しいブログやウェブサイトの作り方は他のサイトや書籍を見て下さいね。
インストール後、/var/www/cgi-binにある「MT-5.1rc2-ja.tar.gz」ファイルは削除しておきます。

10.04 LTS アップグレード

Ubuntu 9.10を10.04 LTSへアップグレードを行いました。
各サービスの設定ファイルは新しいものに置き換えないでそのままにしました。
(再度、設定しなおすのはとても大変そうなので、、、)
サポートが切れているパッケージを削除するかは
セキュリティ上、問題があるかもしれませんが
サポート切れのパッケージがどれなのか確認できなかったのですべて残しました。
最後にシステム管理 – パッケージの整理より
不要なパッケージを削除してアップグレードは終了しました。
10.04 LTSのアップグレード版はまだ不具合がありそうですね。
(本当はクリーンインストールしたいが、しょうがないですね。)

Ubuntu 10.04 LTSになるとPHP5.3になります。
CMS(XOOPSやMagic3など)でエラーが発生しています。
対応するまで待つか、5.3より小さいバージョンでインストールしましょう。
(サーバ機能はまだ9.10で運用した方がよさそうでね。

現在、12.04 LTSではPHP5.3の問題は解消されている。

ストリーミングiPhone(SharePlayer)+VPN(PPTP)

すでにOpenVPNをインストール済みですがiPhoneで外から安全に
自宅のコンテンツ(映像・音楽・写真など)をストリーミングしたいので
PPTPのVPNを設定します。
PPTP(Point to Point Tunneling Protocol)は、Microsoft社の暗号通信プロトコル
PPTPはPPPプロトコル?インターフェイスを使用する。
外でノートPCを使用できない時はVPN(PPTP)を使用して
iPhoneでUbuntuサーバやmotionカメラの自宅映像を監視をしています。
試してはいませんが、Ubuntuサーバのリモートデスクトップ(遠隔操作)もできそうですね。

iPhoneで使用するプレイヤー
【SharePlayer】 有料   http://occlusion.freehostia.com/shareplayer.html
              http://itunes.apple.com/jp/app/shareplayer/id349107084?mt=8
 プレイヤー型のアプリでLan内からSambaやFTP接続が可能で
  コンテンツ(映像・音楽・写真など)がリスト形式で表示できるので、
 そこから選択して再生できるのでとても便利です。
  (※動画再生時にはハードの制限があるので注意が必要です。)

【BUZZ Player】有料
SharePlayerより後発ということてなんでもあり?みたいなプレイヤーです。
詳しい紹介サイト
iPhoneアプリとiPadアプリをおすすめするAppBank
http://www.appbank.net/2010/11/26/iphone-application/192346.php

【関連項目】
Samba(ファイル共有)
FTP(ファイル転送)
motion(Web監視・録画カメラ)

【オンラインストレージ】
コンテンツ(映像・音楽・写真など)の置き場所がなく
サーバの設定が面倒な方は無料オンラインストレージが利用できます。

窓の杜 – 【杜のAndroid研究室】
  第5回:オンラインストレージ「Dropbox」「ZumoDrive」「SugarSync」
  http://www.forest.impress.co.jp/docs/serial/androidlab/20100602_371460.html

Dropbox    http://itunes.apple.com/jp/app/dropbox/id327630330?mt=8
         https://www.dropbox.com/

ZumoDrive   http://itunes.apple.com/jp/app/zumodrive/id292504894?mt=8
          http://www.zumodrive.com/?locale=ja

SugarSync   http://itunes.apple.com/jp/app/sugarsync/id288491637?mt=8
          https://www.sugarsync.com/locale/jp/

【参考サイト】
Kung Noi PPTPでVPN
   http://nai.homelinux.net/pptp.html

PPTP によるリモートアクセス VPN(Poptop)
インストール
Synapticパッケージマネージャからpptpdをインストールする。
  バージョン1.3.4-2.1

   Poptop – The PPTP Server for Linux 文書
    http://poptop.sourceforge.net/dox/
PPPのパッケージはすでにインストール済みでした。【確認】 ppp 2.4.5

Ubuntuサーバの設定
【/etc/pptpd.conf】の編集
【18行目】 option /etc/ppp/pptpd-options をoption /etc/ppp/options.pptp へ変更
      pppのバージョンが2.4.5なのでオプションファイルはoptions.pptp を使用するとありました。
      (※pptpd-optionsを使用してもpptpの接続はできましたが、、、)

【76行目】 Localip 192.168.0.133      #コメントを外して有効にしてUbuntuサーバのIPアドレスを記述します。
【77行目】Remoteip 192.168.0.100     #コメントを外して有効にしてリモート端末へ割り当てるIPを記述します。 
 範囲指定の場合は例 192.168.0.100-110,192.168.0.237 もしくはカンマ「,」で区切る
 今回はiPhone1台だけなので 192.168.0.100のみにしました。
 他のVPNクライアントやLAN内の機器とIPアドレスが重複しないように注意します。

【/etc/ppp/options.pptp】の編集
name pptp  任意の名前

【20行目】auth   noauth を auth へ【変更】
            サーバへ認証を行う。   
認証と暗号化の設定
refuse-pap      使用しない
refuse-eap      使用しない
refuse-chap     使用しない 
refuse-mschap   使用しない
require-mschap-v2  使用する 【追加】
require-mppe-128   使用する 【47行目】コメント外す

nodefaultroute   【追加】VPN接続先にパケットを中継させない。

接続ユーザの設定
【/etc/ppp/chap-secrets】の編集

# Secrets for authentication using CHAP
# client server secret IP addresses
pptpuser pptp xxxxxx *
[ユーザ名] [ホスト名] [パスワード] [クライアントIPアドレス]

  pptpuser : pptpで接続するuser-id
  pptp : options.pptpのnameで設定している内容
  xxxxxx : pptpで接続するパスワード
  * : クライアントに割り当てるIPアドレス。ワイルドカード「*」を指定した場合は
          (/etc/pptpd.conf)のremoteipで設定した範囲のIPがクライアントに割り当てられる。
 2人名目以降のユーザは次の行に追記していきます。

pptpの再起動
 # /etc/init.d/pptpd restart
     コマンド
     start 起動   stop 停止  restart 再起動

IPフォワーディングを有効にする。
(OpenVPNですでに設定済みの場合はスキップ)
UbuntuサーバのIPアドレスとVPN上のアドレスが異なる間の通信ができるように設定する。
Ubuntuサーバ起動時に自動設定が必要です。
【/etc/sysctl.conf】を編集する。

【28行目】net.ipv4.ip_forward=1       【変更】 値を0から1に変更して有効にする。

Ubuntuサーバを再起動する。

ファイアウォールの設定
とりあえずファイアウォールgufwでAllow TCP 1723 のポートを開放します。
今回はTCP 1723ポートの開放で問題なく接続できましたが
どうしてもGREプロトコルの受信の許可が必要な場合は
ファイアウォールgufwでGREプロトコルを通す設定ができなさそう?なのでiptablesコマンドを使用します。
(※iptablesのフロントエンドはufwで、GUIインターフェースはGufwの関係になります。)

# iptables -A INPUT -p gre -j ACCEPT  または # iptables -A INPUT -p 47 -j ACCEPT

しかし、 iptablesコマンドの設定はUbuntuサーバを再起動すると消えてしますので
保存する必要がでてきますが今回は省略します。

ポートフォワーディング
外からVPN(PPTP)を利用しますのでルータのポートフォワーディングの設定を行う。
ルータの管理画面へアクセスして
ポートマッピング画面へ移動する。
【LAN側のホスト】:ubuntuサーバのアドレス
【プロトコル】:TCP
【ポート番号】:1723

今回はTCP 1723ポートの開放で問題なく接続できましたが
どうしてもGREプロトコルを通したい場合は 以下の設定をします。
GREプロトコル IPプロトコル47番
(※47はポート番号ではありません。)
【LAN側のホスト】:ubuntuサーバのアドレス
【プロトコル】:その他 プロトコル番号47
【ポート番号】:なし

これらの設定をルータに追加して保存(反映)します。
これでクライアント(iPhoneやWindowsPC)からの接続待ち状態になります。

WindowsXPで外からの接続
コントロールパネル – ネットワーク接続をクリックします。
新しい接続を作成する – 新しい接続ウィザードを起動して次へボタンを押す。
ネットワーク接続の種類 – 職場のネットワークへ接続するを選択して次へボタンを押す。
ネットワーク接続 – 仮想プライベートネットワーク接続を選択して次へボタンを押す。
接続名 – サーバ名など任意の名前を入力して次へボタンを押す。
パブリックネットワーク – 最初の接続にダイアルしないを選択して次へボタンを押す。
VPNサーバーの選択 – Ubuntuサーバのドメイン名を入力して次へボタンを押す。
新しい接続ウィザードの完了ボタンを押す。
ストリーミング+vpn01
接続画面表示されたら、ユーザ名とパスワードを入力して接続ボタンを押す。

最初は接続エラーが発生するので、ネットワーク接続 – 仮想プライベートネットワーク 
接続するPPTPサーバのアイコンを選択してマウスの右ボタン – プロパティを選択する。
ネットワークタブを選択する。
インターネットプロトコル(TCP/IP)を選択してプロパティボタンを押す。
  (※この時インターネットプロトコル(TCP/IP)の項目以外のチェックを外せるものは外します。
   Nwlink IPX/SPX/NetBIOS 互換トランスポート プロトコルなど)

全般 – 詳細設定ボタンを押す。
全般 – リモートネットワークでデフォルトゲートウェイを使うのチェックを外してOKボタンを押す。
Okボタンを押してプロパティ画面を終了します。

再度、接続するPPTPサーバのアイコン押してユーザ名とパスワードを入力して接続ボタンを押す。

トレイの接続アイコンをクリックして詳細タグを押します。
ストリーミング+vpn02
接続の詳細画面が表示されます。
認証 MS CHAP V2
暗号化 MPPE 128 などの詳細項目が確認できます。

【Ubuntuサーバ側のログの確認】
# cat /var/log/messages
……
pppd[31967]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded.
pppd[31967]: pppd 2.4.5 started by root, uid 0
pppd[31967]: Using interface ppp0
pppd[31967]: Connect: ppp0 /dev/pts/1
kernel: [58733.794410] padlock: VIA PadLock Hash Engine not detected.
kernel: [58733.805239] PPP MPPE Compression module registered
pppd[31967]: MPPE 128-bit stateless compression enabled
pppd[31967]: found interface eth0 for proxy arp
pppd[31967]: local IP address 192.168.0.133
pppd[31967]: remote IP address 192.168.0.100

【Ubuntuサーバ側のインターフェースの確認】
# ifconfig ppp0

ppp0 Link encap:Point-to-Pointプロトコル
inetアドレス:192.168.0.133 P-t-P:192.168.0.100 マスク:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1396 メトリック:1
RXパケット:2868 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:2465 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:3
RXバイト:188600 (188.6 KB) TXバイト:1730352 (1.7 MB)

これで自宅のUbuntuサーバのSambaやFTP、VNC、motionカメラなどへ接続できます。
切断する場合は接続アイコンを右クリックして切断を選択します。

iPhone(SharePlayer)で外からの接続
【VPN(PPTP)接続】
設定 – 一般 – ネットワーク – 下の方にあるVPN – VPN構成を追加を押します。

VPNの設定画面が表示される。
PPTPを選択する。
説明に接続先名などを入力する。
サーバに自宅のUbuntuサーバのドメイン名
アカウント /etc/ppp/chap-secretsで設定したユーザ名を入力する。
RSA SecurID オフ
パスワード /etc/ppp/chap-secretsで設定したパスワードを入力する。
暗号レベル とりあえず最大に設定しました。
すべての信号を送信 をオン
プロキシ オフ
保存ボタンを押して設定を終了する。
設定画面またはVPN画面からVPN接続をオンにして接続します。

【SharePlayerの起動と設定】
iPhoneからSharePlayerを起動します。
共有アクセス画面で+プラスボタンを押します。
ストリーミング+vpn04
SMB(Samba)またはFTPボタンを押して入力を選択します。
UbuntuサーバのIPアドレスを入力する。
ユーザ名とパスワードがある場合は項目に入力します。
Nicknameは接続先名を入力する。
最後にAdd Serverを押して設定を終了します。
ストリーミング+vpn05
共有アクセス画面で登録済みのサーバが表示されるので
サーバ名を押します。
(設定内容を確認したい場合は>ボタンを押します。)
ストリーミング+vpn06
目的のフォルダまで移動します。
コンテンツ(映像・音楽・写真など)がリストで表示されるので再生・表示したいコンテンツを押します。
(iPhone、I-Pod用の動画コンテンツの作り方や変換方法は他のサイトを見て下さいね。)

SharePlayerの再生
停止は×マークを押して終了します。

これでiPhoneの限られたストレージの中によけいなコンテンツ(映像・音楽・写真)を置かなくてもよくなりますね。
(パケットの使い過ぎでパケ死しないように注意して下さい。w)

ブラウザSafariからUbuntuサーバの hotsanic へアクセスします。
ストリーミング+vpn07
サーバのシステム情報が表示されます。
ノートPCは必要なくなりますかね?

なおVPNのPPTPがセキュリティが低いのでパスワードは定期的に変更します。
暗号深度は128bitより小さくしないようにして下さい。
安全のためにノートPCでVPNを使用する場合は証明書を使用した相互認証を行うVPN(OpenVPNなど)を推奨します。

Webフォトアルバム

今回は設定が簡単な IMAGIN を選択しました。
写真やアルバムをWeb上に公開してデジタルフォトフレームのように再生できます。
他人に写真を見られたくない場合はSSLを使用します。
SSL(証明書・秘密鍵の作成)までをやっておきます。

IMAGINサイト http://imagin.ro/

Webアルバムを使いたいがサーバの設置や設定が面倒な方は
Picasa Webアルバムと同期機能がある。
http://picasa.google.co.jp/intl/ja/#utm_source=ja-all-more&utm_campaign=ja-pic&utm_medium=et
Flickr フリッカー オンライン写真アルバムサービス
http://www.flickr.com/

【参考サイト】
KUMA TYPE
Flashフォトギャラリー『IMAGIN』がかなりおすすめな件
http://blog.kumacchi.com/2010/02/flashimagin.html

IMAGINのダウロード
WindowsのクライアントPCよりIMAGINサイト(http://imagin.ro/)の「Download V3beta」を
クリックしてimagin_v3_beta5.zipファイルをダウンロードします。
解凍するとimagin_v3_beta5フォルダに__MACOSX と imagin_v3_beta5のフォルダがあります。
__MACOSXはMac Os用なんでしょうね
imagin_v3_beta5のフォルダを使用します。
imagin_v3_beta5のフォルダ名を imaginに任意に変更します。

IMAGINのアップロード
WindowsのクライアントPCよりFFFTPを使用してimaginのフォルダをHTTPS用ディレクトリ(/var/ssl)へアップロードします。
アルバムのアップロード
アルバムはフォルダ単位で/var/ssl/imagin/photos のディレクトリへアップロードします。
(フォルダ名がアルバム名になります。)
アルバムのサムネイル画像名は_thumb.jpg(大きさ128×128)でアルバムのフォルダ内に入れておきます。
アップロードする写真のサイズはだいたい500KB以下がよいかも、、、大きすぎると動作が重くなります。

【注意】
FFFTPでアップロード時、一つ上のフォルダへボタンを押して上のディレクトリへ遷移できない場合
UbuntuサーバのFTP(vsftpd)サーバ /etc/vsftpd.chroot_listにApache2の実行ユーザ名(USER)を
登録して上のディレクトリ(/var)へ移動してアップロードする。
ようが済んだら最後にユーザ名を削除しておきます。

SSLを使用しない場合は通常どおりにHTTP用ディレクトリ(/var/www)へアップロードします。

ダイジェスト認証ユーザーを追加
ユーザ名:userE このユーザでWebアルバムにログインします。
領域名:album-ssl は任意に決めます。
【2人目以降】
# htdigest /etc/apache2/.htdigest “album-ssl” userE
New password:(パスワード入力)
Re-type new password:(パスワード入力)

   [オプション]機能
   -c ユーザー定義ファイルを新規作成する。
   【削除】ユーザーを削除するオプションがないみたいなので
   geditで直接、.htdigestファイルを編集します。
   削除したいユーザーの一行を削除して保存します。

サイトの設定
端末より管理者になり
#gedit
【/etc/apache2/sites-available/default-ssl2】を編集する。

       
<VirtualHost _default_:443>   【確 認】443    
DocumentRoot /var/ssl     【確 認】  
       
<Directory /var/ssl>      【確 認】  
    Options FollowSymLinks MultiViews       
          (※OptionsのIndexesを削除する。    
          Indexesを外すとファイルの一覧は表示されない。)    
        AllowOverride None       
        Order allow,deny       
        allow from all       
</Directory>       
    
【/var/ssl/imagin】部追加        
<Directory /var/ssl/imagin>        
    AuthType Digest        【Digest 認証】    
    AuthName "album-ssl"    【AuthNameに領域名"album-ssl"を指定するとパスワードはハッシュ値が使用される。】    
    AuthUserFile /etc/apache2/.htdigest        
    Require user userE     今回ユーザ名を指定します。Require user ユーザ名    
                       このユーザuserEでWebアルバムにアクセスします。    
                     複数名の場合はスペースを入れる。userB userC userD    
    Options FollowSymLinks MultiViews      
          (※OptionsのIndexesを削除する。)      
    AllowOverride None        
    Order allow,deny        
    allow from all        
</Directory>        
        
  #   SSL Engine Switch:         
 " #   Enable/Disable SSL for this virtual host."         
 SSLEngine on        【確 認】SSLを有効      
          
【変更前】 SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem         
【変更後】 SSLCertificateFile  /etc/apache2/ssl/apache.pem        サーバ証明書    
          
【変更前】 SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key         
【変更後】 SSLCertificateKeyFile  /etc/apache2/ssl/apache.pem      サーバの秘密鍵    

Apache2を再起動させる。
# /etc/init.d/apache2 restart

ファイアウォールの設定
すでに Allow TCP 443ポート開放のルールを追加されていると思いますが、、、

動作確認
ブラウザからURL(https://ドメイン名/imagin)へアクセスする。
初回はブラウザーで認証エラーが発生しますので 【SSL証明書のインストール】を行います。
(すでにSSL証明書はインストール済みだとは思いますが、、、)

ダイジェスト認証のユーザーとパスワードを入力してエンターキーを押します。
トップ画面にアルバムのサムネイルが表示されるので見たいアルバムをクリックします。
サンプル動画はスライドショウの再生からノーマルビューに切り替えて最後に×マークをクリックしてアルバムのサムネイルに戻ります。
初回接続時には写真を変換するのに時間がかかるみたいなのでしばらく待ちます。
これで安全にもんたの間抜けな写真も友達に公開できます。(苦笑)
設定なしでかっこよく表示できるのはとてもいいですね~♪

ポートフォワーディング
外から接続したいのでルータのポートフォワーディングの設定を行う。
(すでに開放していると思いますが、、、)
以下のポートマッピング設定を自宅のルータに追加します。
【LAN側のホスト】:ubuntuサーバのアドレス
【プロトコル】:TCP
【ポート番号】:443

トラブルシュート
DNSサーバがないのでURLの名前解決ができないとブラウザでアクセスできない場合があるので
LAN内から接続する場合はクライアントPC(Windowsなど)のhostsファイルにドメイン名を記述する。
【C:\WINDOWS\system32\drivers\etc¥hosts】
127.0.0.1 localhost localhost
例192.168.0.133 ○○○.ath.cx ubun-pc
(UbuntuのIPアドレス 【登録したドメイン名】 【ホスト名】になります。)
hostsファイルにドメインを記述しておけば何かと問題が発生しなくなりますので、、、
192.168.0.133 はubntuサーバアドレスです。
ホスト名はインストール時のコンピュータ名です。

※VistaやWindows7のhostsファイルを書き換える場合は最初にメモ帳を管理者として実行します。

Snort(不正アクセス検知)

日頃からのサーバへのアクセス内容を確認したいのでIDS(Intrusion Detection System)侵入検知システムを導入します。
ネットワーク上のパケットを監視して検知できるネットワーク型IDSの Snort を使用します。
本来は最新のSnortと最新のルールファイルを適応したいのですがリスクがともないますので選択しませんでした。
Ubuntuサーバへのアクセスの状況と通常のサーバサービス利用状況を把握するのに留めたいと思います。
snortサイト http://www.snort.org/

【参考サイト】
Fedoraで自宅サーバー構築
   不正アクセス検知システム導入(Snort+BASE+Oinkmaster)
   http://fedorasrv.com/snort-base.shtml

Snort + BASE インストールメモ
http://n.pentest.jp/?p=66

【環境条件】
UbuntuOSバージョン9.10(karmic)
Snort-mysql
SynapticパッケージマネージャからSnort-mysqlを検索してインストールします。
(Snort-mysql 2.8.4.1)

BASE
Snortが検知したアクセスログをWebブラウザ上で表示するためのフロントエンド
Synapticパッケージマネージにないのでサイトからダウンロードしてきます。
http://sourceforge.net/projects/secureideas/files/BASE/

ADOdb http://sourceforge.net/projects/adodb/files/adodb-php5-only/
ADOdbはより高速なDBアクセスモジュール

php5-adodb とりあえず入れておきました。
(インストール中に「php.ini ファイルを更新してください。」といわれたが無視して進むボタンを押しました。)

pearサイト グラフ作成ライブラリ
http://pear.php.net/packages.php?catpid=12&catname=Images
Image_Canvas と Image_Graphをダウンロードしてインストールします。
・Image_Canvas  0.3.2   Image_Canvas-0.3.2.gz
・Image_Graph   0.7.2   Image_Graph-0.7.2.gz

Oinkmaster ルールファイルの自動更新
Synapticパッケージマネージャからインストールします。
Snort-mysqlをインストールすると同時にOinkmasterもインストールされました。
最新のルールファイルを使用するとエラーが発生しますので今回はOinkmasterは使用しません。
snort本体を最新にしたいのですが、、、それもまた問題がありそうなもので、、、

Snort-mysqlのインストール
Synapticパッケージマネージャからインストールする。
ローカルネットワークのアドレス範囲を質問されたので内部ネットワークアドレスを指定(適宜自分の環境に合わせます。)
 192.168.0.0/24 を入力して進むボタンを押します。  
「Snort-mysql を設定しています」画面が表示され
Snort-mysql を利用してログに記録するため、データベースを設定しますか?にチェックを入れて 進むボタンを押します。
「Snort 用にデータベースを強制的に設定」の内容が表示されます。
【内容】
Snort が正しく動作する前にはデータベースの設定が必要です。
データベースを作成するには、パッケージインストール「後」に以下のコマンドを入力する必要があります:
# cd /usr/share/doc/snort-mysql/
# zcat create_mysql.gz | mysql -u -h -p

ユーザ名、ホスト名、データベース名にはそれぞれ正しい値を入れてください。
MySQL がパスワードを要求します。
データベースの作成後、手動で Snort を起動する必要があります。

確認して進むボタンを押します。

インストール完了
端末よりヴァージョンの確認
# snort -V
         Version 2.8.4.1

データベースの作成
MySQLでデータベースの作成
# mysql -u root -p
Enter password:******** 【MySQLのrootパスワードを入力】

mysql> create database snort_db;
Snortのデータベース名をsnort_dbで作成(任意に作成します。)

データベースを削除するにはDROP DATABASE データベース名;

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| magic3 |
| mysql |
| snort_db    |
+——————–+

MySQLから接続を切断するには exit, quit を入力します。

データベースのテーブル作成
# cd /usr/share/doc/snort-mysql/
# zcat create_mysql.gz | mysql -u root -h localhost -p snort_db

mysql -u -h -p
ユーザ名:root、ホスト名:localhost、データベース名:snort_dbを設定します。
Mysqlのrootパスワードを入力してエンターキーを押します。
エラーがでないことを確認します。

Snortの設定
【/etc/snort/snort.conf】を編集
【46行目】 var HOME_NET 192.168.0.133    
   anyをサーバのアドレス(192.168.0.133)またはローカルネットワークのアドレス(192.168.0.0/24)に変更します。
  今回はUbuntuサーバのみ監視します。

【49行目】 # var EXTERNAL_NET any       コメント#をつけて無効にする。
【50行目】 var EXTERNAL_NET !$HOME_NET      コメント#を外す 内部からのアクセスを不正アクセスとして扱わない
                               (HOME_NETで設定したネットワーク以外を外部とみなす)

【111行目】 var RULE_PATH /etc/snort/rules 【確 認】

【689行目あたり】MySQLへのログ出力
【追  加】 output database: log, mysql, user=root password=パスワード dbname=snort_db host=localhost 
password=Mysqlのrootパスワード

Snort動作確認
snort実行開始
#snort -c /etc/snort/snort.conf
~途中省略~

–== Initialization Complete ==–

,,_ -*> Snort! <*-
o" )~ Version 2.8.4.1 (Build 38)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/team.html
Copyright (C) 1998-2009 Sourcefire, Inc., et al.
Using PCRE version: 7.8 2008-09-05

~途中省略~

Preprocessor Object: SF_DNS Version 1.1
Not Using PCAP_FRAMES

エラーが発生しないことを確認する。

snort終了
端末より Ctrl + C

BASEインストール
BASE http://sourceforge.net/projects/secureideas/files/BASE/
base-1.4.5.tar.gzはphpエラーが発生したため今回はサイトからbase-1.3.9.tar.gz をダウンロードしました。
base-1.3.9.tar.gzを/var/wwwへ移動します。

/var/www# tar zxvf base-1.3.9.tar.gz BASEを展開する。
/var/www# mv base-1.3.9 base ディレクトリ名を適当な名前(base)に変更します。
/var/www# rm -f base-1.3.9.tar.gz

ADOdb http://sourceforge.net/projects/adodb/files/adodb-php5-only/
サイトからadodb510.gzをダウンロードする。

adodb510.gzを/var/www/baseへ移動します。

/var/www/base# tar zxvf adodb510.gz adodbを展開する。 Adodb5のディレクトリが作成される。
/var/www/base# rm -f adodb510.gz 

所有者をApacheの実行ユーザーに変更
# chown -R USER:gruopA /var/www/base
   (/var/www/baseの権限を例:USERユーザ 例:gruopAグループに変更します。)

Pear-Imageインストール
http://pear.php.net/packages.php?catpid=12&catname=Images
Image_Canvas と Image_Graphをダウンロードしてインストールします。
・Image_Canvas  0.3.2   Image_Canvas-0.3.2.gz
・Image_Graph   0.7.2   Image_Graph-0.7.2.gz

インストールファイルのあるディレクトリへ移動します。
# pear install Image_Canvas-0.3.2.gz
# pear install Image_Graph-0.7.2.gz

# pear list インストール内容表示

Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.3 stable
Console_Getopt 1.2.3 stable
Image_Canvas 0.3.2 alpha
Image_Color 1.0.3 stable
Image_Graph 0.7.2 alpha
PEAR 1.9.0 stable
Structures_Graph 1.0.2 stable
XML_Util 1.2.1 stable

Image_Color も入っていない場合はインストールします。

アクセス制限
アクセス解析結果を外部に公開するといけませんのでLAN内のみアクセスできるようにアクセス制限を設定します。
サイトが有効の場合はの無効にする。(無効の場合はスキップ)
# a2dissite default2

サイトの設定
【/etc/apache2/sites-available/default】
(すでにdefaultファイルをコピーしてある場合はスキップします。)
/etc/apache2/sites-available/# cp default default2

【/etc/apache2/sites-available/default2】を編集する。

     
<VirtualHost *:80>        ポートはこのまま     
     
DocumentRoot /var/www/   ディレクトリこのまま     
     
<Directory /var/www>      ディレクトリこのまま     
    Options FollowSymLinks MultiViews     
         (※OptionsのIndexesを削除する。     
          Indexesを外すとファイルの一覧は表示されない)     
        AllowOverride None     
        Order allow,deny     
        allow from all     
</Directory>     
     
【追加】以下の5行を追加する。     
<Directory /var/www/base/>     
     Order deny,allow     
     deny from all     
     allow from 192.168.0.0/24  ←LAN内からのみアクセス許可(※Ipアドレスは自分の環境に変更すます。)     
</Directory>     

/etc/apache2/sites-available# a2ensite default2
  default2 のサイトを有効にします。

設定が完了したらApache2を再起動します。
# /etc/init.d/apache2 restart
 エラーが出たら各設定を再度確認する。

Snortの起動
# snort -c /etc/snort/snort.conf -i eth0 -D

-c snort.confのパスを指定
-i キャプチャするインターフェースを指定
-D Daemonモードで起動する。

停止 # /etc/init.d/snort stop

BASEの設定
ブラウザからhttp://IPアドレスまたはドメイン名/base/へアクセスする。
※BASEの設定をやり直す場合は/var/www/baseの base_conf.phpファイルを削除する。
Continueボタンを押す。
Japanese
/var/www/base/adodb5
言語とADODBのパスを設定してクエリ送信ボタンを押す。
Snort01
Pick a Database type::MySQL
Database Name:snort_db
tabase Host:localhost

Database User Name: root
Database Password: Mysqlのrootパスワード
各項目を入力してクエリ送信ボタンを押す。
認証は使用しないので何も入力せずクエリ送信ボタンを押す。
Create BASE Agボタンを押します。
下にあるstep 5…をクリックする。
BASEのトップ画面が日本語で表示されます。
次にアラーと総数の数値をクリックします。
Snort02
アクセスリストが表示されます。
Ubuntuサーバへの不正アクセスの状況(いつ何の攻撃をどこから受けたか)と
通常のサーバサービス利用状況(いつ何のサービスを利用したか)がわかります。
いったんホームボタンを押してトップ画面へもどり グラフ作成をクリックします。
Snort03
グラフ作成項目に有効な値を設定して Graph Alertsボタンを押します。
棒・折れ線・円グラフが表示できます。

外から接続
外から【http://ドメイン名/base】へ接続できないことを確認する。
画面以下の紋々が表示されBASE情報がみられません。
Forbidden
You don’t have permission to access /webdruid on this server.
または403が表示される。

ログローテーション(/var/log/snort)
なぜか1日経つとsnortが停止してしまいます。
ログローテーションでsnortがDaemonモードの再起動で失敗しているみたいなので再起動のあとに
snortの実行コマンドを追加しておきました。>一応、停止しないでローテートしているみたいです。

【/etc/logrotate.d/snort】編集
/var/log/snort/portscan.log /var/log/snort/alert /var/log/snort/portscan2.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 root adm 今回は所有者を snort から root へ変更
sharedscripts                       
postrotate                         
if [ -x /usr/sbin/invoke-rc.d ]; then \     
invoke-rc.d snort restart > /dev/null; \
snort -c /etc/snort/snort.conf -i eth0 -D   【追 加】
else \                          
/etc/init.d/snort restart > /dev/null; \
snort -c /etc/snort/snort.conf -i eth0 -D  【追 加】 
fi;                            
endscript                          
}

Snort自動起動
Ubuntuサーバ再起動後、snortを自動起動させるためにシェルスクリプトファイルを作成する 。
端末より
# cd /etc/init.d
# gedit

以下の3行をsnort.shの名前で保存する。
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
snort -c /etc/snort/snort.conf -i eth0 -D

# chmod a+x /etc/init.d/snort.sh すべてのユーザに実行権限を与えます。
# update-rc.d snort.sh defaults
 (missing LSB informationと出た、、、)

 自動起動を解除する場合は # update-rc.d snort.sh remove になります。

Ubuntuサーバ再起動後もsnortは起動しているみたいです。

///////////////////////////////////////////////////////////////////////////////////////
snort-mysqlをインストール時に# id snortで調べると snortユーザが作成されている。
Mysqlとログローテーとはsnortのユーザを使うべきかも
現在はrootを使用している 次のUbuntu10.04のアップグレードでsnortのバージョンも新しくなっているはず
はじめにsnortのユーザとパスワードを使用してみる。

HotSaNIC(サーバ監視)

サーバのシステム情報をグラフ化して表示します。

【参考サイト】
HotSaNICでCPUの温度等をグラフ化 http://k64.mydns.to/debian/hotsanic.html

【環境条件】
RRDTool    グラフを作成するプログラム  Synapticパッケージマネージャからインストールします。
         (とりあえずUbuntuマークの付いた librrds-perl も入れておきました。)
ImageMagick  以前XOOPS Cube Legacy + YYBBS でインストール済みです。
          リンク ない場合はインストールします。
HotSaNIC   これはSynapticパッケージマネージにないのでサイトからダウンロードしてきます。

HotSaNICのインストール
HotSaNICのサイト http://hotsanic.sourceforge.net/
downloadより hotsanic-0.5.0-pre5.tgz をダウンロードする。
任意のディレクトリ(/usr/local)へhotsanic-0.5.0-pre5.tgzを移動またはコピーして解凍します。

/usr/local/# tar -zxvf hotsanic-0.5.0-pre5.tgz    【解凍】

測定項目の設定
システムの測定する項目を指定する。

# cd /usr/local/HotSaNIC
# ./setup.pl  
質問に答えます。
traffic、system、part(ディスクパーティション情報)、sensors(ハードウェア情報)、netstat(ネットワークソケット情報)で y を選択しました。
インターフェイスは eth0 と lo をyで選択しました。
再度設定をする場合は setup.pl コマンドを実行する。

個別の測定項目の追加と削除をする場合
   【/usr/local/HotSaNIC/settings】を編集する。
   【127行目あたり】 RUN=”netstat part sensors system traffic” 【項目の追加・削除】
   【156行目あたり】 SHOW=”netstat part sensors system traffic” 【項目の追加・削除】

グラフを配置するディレクトリの作成
システム監視グラフを出力して表示するディレクトリを作成します。
端末より管理者になり
# mkdir /var/www/hotsanic

所有者をApacheの実行ユーザーに変更
# chown -R USER:gruopA /var/www/hotsanic
   (/var/www/hotsanicの権限を例:USERユーザ 例:gruopAグループに変更します。)

HotSaNICの設定
【/usr/local/HotSaNIC/settings】を編集

【72行目】 BINPATH=”/usr/bin”    【変更】実行モジュールrrdtoolのパスの設定

【141行目】 WEBDIR=”/var/www/hotsanic”    【変更】表示するディレクトリ

【150行目】 IMAGEFORMAT=”png”    【変更】グラフの出力形式.Pngで出します.

【169行目】 DTIME=”15″          【確認】15分間隔でシステムチェックの更新を行う
                      (グラフ表示の確認のためはじめは5分でもよいと思います。)

【190行目】 CONVERTMETHOD=”ImgMgck”     【確認】サムネイルの出力エンジン 

【197行目】 CONVERTPATH=”/usr/bin/convert”   【確認】convertのパス

※サーバの負荷を減らす場合は測定する項目を減らしたり、データー収集間隔をあける。
データ収集間隔を広げる。
(HDDの書き込み音(カリカリ)が気になる場合など60秒ぐらいにします。
その代わりに出力されるグラフが荒くなります。)
【/usr/local/HotSaNI/rrdtimer.pl】を編集する。

      while () {
     $now=time;
【138行目】 # if ($last+60 3) { print “\n”; }
         }
        }
        $last=$now;
【138行目】 # } 【変 更】コメント#を外して有効にする。

アクセス制限
サーバのシステム情報を外部に公開するといけませんのでLAN内のみアクセスできるようにアクセス制限を設定します。
サイトが有効の場合はの無効にする。(無効の場合はスキップ)
# a2dissite default2

サイトの設定
【/etc/apache2/sites-available/default】
(すでにdefaultファイルをコピーしてある場合はスキップします。)
/etc/apache2/sites-available/# cp default default2

【/etc/apache2/sites-available/default2】を編集する。

    
<VirtualHost *:80>        ポートはこのまま    
    
DocumentRoot /var/www/   ディレクトリこのまま    
    
<Directory /var/www>      ディレクトリこのまま    
    Options FollowSymLinks MultiViews    
         (※OptionsのIndexesを削除する。    
          Indexesを外すとファイルの一覧は表示されない)    
        AllowOverride None    
        Order allow,deny    
        allow from all    
</Directory>    
    
    
【追加】以下の5行を追加する。    
<Directory /var/www/hotsanic/>    
     Order deny,allow    
     deny from all    
     allow from 192.168.0.0/24  ←LAN内からのみアクセス許可(※IPアドレスは自分の環境に変更すます。)    
</Directory>    

/etc/apache2/sites-available# a2ensite default2
  default2 のサイトを有効にします。

設定が完了したらApache2を再起動します。
# /etc/init.d/apache2 restart
 エラーが出たら各設定を再度確認する。

CPUとHDDの温度測定
lm-sensors   CPUやマザーボードの温度や電圧などの情報を取得します。
hddtemp     HDDの温度を取得します。

以前、「CPUとHDDの温度、電気料金」でsensors-appletをインストールしている場合は
Lm-sensorsとhddtempは自動的にインストールされているみたいです。
リンク
入っていない場合はSynapticパッケージマネージャから検索してインストールします。

lm-sensorsの動作確認
端末より管理者になり
# sensors
acpitz-virtual-0
Adapter: Virtual device
temp1: +40.0°C (crit = +60.0°C)

結果はCPUの温度は表示されるのですがAdapterが Virtual device と表示されてしまい
正しくデバイスが認識されていないみたいです。
調べてみるとlm-sensorsやUbuntuのカーネールのバージョン問題があるみたいです。
もしくはマザーボードが対応していない原因があります。

CPUの温度情報がlm-sensorsから取れなかったのでsensors-appletから取得することにしました。
Sensors-appletでマウスを右クリックしてPreferencesを選択します。
Sensors Applet Preferences画面が表示されSensorsタグを選択します。

acpi – THRM にcpuの温度が記載されていそうです。
次に 場所 – コンピュータのファイル・ブラウザを開きファイルシステムを選択します。
検索ボタンを押して検索:の欄にTHRMを入力してエンタキーを押して検索します。

THRMフォルダが見つかりそれをクリックします。
/proc/acpi/thermal_zone/THRMのパスが表示されその中にtemperatureファイルがありました。
Temperatureファイルを開いて見てみます。

「temperature: 40 C」となっていました。
パラーメータの項目順は第2項目の40が使用できそうです。
とりあえず今回はCPUの温度だけ取得できればいいのでこれで対応します。

hddtempの動作確認
Sensors Applet Preferences画面 – Sensorsタグ – hddtemp下にデバイス名(/dev/sg0 /dev/sda)がわかります。

# hddtemp /dev/sda
/dev/sda: WDC WD10EADS-00L5B1: 37°C

# hddtemp /dev/sda -n    で実行します。

37
パラーメータの項目順は第1項目の37を使用します。

次にCPUとHDDの温度設定をします。
【/usr/local/HotSaNIC/modules/sensors/settings】を編集する。
以下の内容を追加します。

SENSOR=”/proc/acpi/thermal_zone/THRM/temperature,temp1,CPU1,2,1,0,ーC,0,60″
SENSOR=”/usr/sbin/hddtemp -n /dev/sda |”,sda,HDD1,1,1,0,ーC,0,60

   
【書式】SENSOR=<device-file>,<dbname>,<description>,<entry>,<scale-factor>,<add>,<unit>   
<entry>では温度や電圧などの数値の位置をしめします。   

HotSaNICの動作確認
# cd /usr/local/HotSaNIC HotSaNICをインストールした位置へ移動
# ./makeindex.pl   htmlファイルの作成
# ./rrdgraph start   システム監視プログラムを起動する。(停止:stop  再起動:restart)
(15分後にグラフが出力される。)

# ./convert.pl グラフのサムネイル(縮小)画面の作成

/var/www/hotsanicのフォルダにhtmlのグラフが作成されます。

LAN内から接続
Webブラウザで【http://IPアドレスまたはドメイン名/hotsanic】 にアクセスすると
サムネイルのグラフが表示される。
HotSaNIC01
CPU、HDDの温度もグラフ化できました。
traffic – eth0 のサムネイルをマウスでクリックしてみます。
外から接続
外から【http://ドメイン名/hotsanic】へ接続できないことを確認する。
画面以下の紋々が表示されシステム情報がみられません。
Forbidden
You don’t have permission to access /webdruid on this server.
または403が表示される。

自動起動の設定
Ubuntuの再起動時に自動的にプログラムを起動させるように設定する。
/usr/local/HotSaNIC# cp ./rrdgraph /etc/init.d/

# update-rc.d rrdgraph defaults

Ubuntuでは本来、update-rc.d を使用します。
自動起動を解除する場合は # update-rc.d rrdgraph remove になります。

これでサーバの状態が把握でき、不具発生時に役に立つと思います。
サーバのシステム監視には他に

Cacti(カクタイ)サボテン http://cacti.loaded.jp/
         Webブラウザ上で設定・管理ができます。
Ganglia     ネットワーク上の複数の監視ができます。
Nagios などがあります。
http://www.ibm.com/developerworks/jp/linux/library/l-ganglia-nagios-1/index.html
 
設定が大変そうですが、興味がありましたらのぞいて見てください。
【補 足】
※CPUの表示温度が変化しない場合はUbuntuサーバのBIOS設定で温度の設定項目を変更すると動き出す場合があります。