さくらのVPS ログレポート(logwatch)と不正アクセス拒否(denyhosts)のインストール

さくらのVPS ログレポート(logwatch)と不正アクセス拒否(denyhosts)のインストール

denyhosts

こちらの記事も参考に読まれると幸せになれるかも:)

さくらのVPSに(CentOSより良い)Scientific Linux6をインストール

ログレポート(logwatch)のインストールと設定

まずは、運用ログの監視です。
一日一回、各種ログを読みやすく整形してメールで送ってくれる
logwatch を利用してみましょう。

$ sudo yum install logwatch

インストールできたら、ちゃんと動くか確認してみましょう。
print オプションをつけると、メールが送られずにコンソールに結果が表示されます。

$ sudo /usr/sbin/logwatch --print

設定ファイルは /etc/logwatch/conf/logwatch.conf です。
中を見てみると

# Local configuration options go here (defaults are in /usr/share/logwatch/default.conf/logwatch.conf)

とだけ書かれてますね。
デフォルト設定と違う設定にしたい場合は、このファイルに書いていってください。
デフォルトだと root 宛てにメールを送る設定になってるので以下のような行を追加して、
メールのあて先を変更してください。

MailTo = hoge@example.com

※hoge@example.com は自分のメールアドレスに適宜変更して下さい

・cron の自動実行
logwatch をインストールすると、/etc/cron.daily/0logwatch
が自動で作られていて、1日一回レポートメールを送信するように
なっているので特に作業は必要無いです

より詳しくは以下、参照
@IT:アクセスログの改ざんと検出方法 – Page2
http://www.atmarkit.co.jp/fsecurity/rensai/iprotect06/iprotect02.html
@IT:サーバのログ監視ツールを使いこなそう(3/3)
http://www.atmarkit.co.jp/flinux/rensai/root04/root04c.html

不正アクセス拒否(denyhosts)のインストール

これは、定期的に log を監視して、SSHの総当り攻撃をしてくるIPアドレスを自動的に
/etc/hosts.deny に登録してくれるものです。

・インストール方法
yum リポジトリとして epel が登録されてない場合は、まず epel を登録。
※既にepel が登録されている場合は、作業の必要は無しです。次のyum install に進んでください

$ sudo rpm --import http://download.fedora.redhat.com/pub/epel/RPM-GPG-KEY-EPEL-6
$ sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm

yum で denyhosts をインストール

$ sudo yum install denyhosts

denyhosts を起動し、自動起動の設定を行う

$ sudo /etc/init.d/denyhosts start
$ sudo /sbin/chkconfig denyhosts on

例外的にアクセスを許可しておきたいIP アドレスが有る場合は
/var/lib/denyhosts/allowed-hosts に記述すればOKです。

不正アクセスを検知した場合 /etc/hosts.deny に追記されていくはずです。

参考サイト

VPS 借りたら、せめてこれくらいはやっとけというセキュリティ設定
http://dogmap.jp/2011/05/12/vps-security/

さくらのVPSに(CentOS6より良い)Scientific Linux6をインストール

Scientific Linux

▼参考サイト
Scientific Linux 6|カスタムOSインストールガイド
http://support.sakura.ad.jp/manual/vps/mainte/custom_scientificlinux.html

上記を参考にまずはインストールと起動まで進める。
その後の設定は以下。

更新可能なパッケージのアップデート

# yum update

※特に更新は無かった

言語設定

# vi /etc/sysconfig/i18n
LANG="C"
  ↓
LANG="ja_JP.UTF-8"

iptables の設定

# vi /etc/sysconfig/iptables

※以下の内容を書き込む

*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH, HTTP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

※SSH は後で説明しますが、セキュリティ的にデフォルトの22番ポート
ではなく、任意のポートに変更します
ここでは、10022番にしました

・iptables の再起動

# /etc/init.d/iptables restart

・設定確認

# /sbin/iptables -L

一般ユーザの作成

# useradd -m 任意のユーザ名
# passwd 任意のユーザ名

続いて、作成したユーザーがsudo コマンドでroot になれるように
wheel グループに追加

# usermod -G wheel 任意のユーザ名

パスワード無しでsudo が使えるように

# visudo

# %wheel        ALL=(ALL)       NOPASSWD: ALL

※上記のコメント(#)を外す

公開鍵を設定する

# cd /home/任意のユーザ名/
# mkdir .ssh
# chmod 700 .ssh
# vi .ssh/authorized_keys

※公開鍵の作成方法等、詳しくは以下を参照
・公開・秘密鍵ペアの作成
http://9jp.info/archives/11485

# chown -R 任意のユーザ名:任意のユーザ名 .ssh
# chmod 600 .ssh/authorized_keys

SSH設定の変更

# vi /etc/sysconfig/sshd

※ポート番号変更
※パスワード認証を拒否
※rootでのログインを拒否

OPTIONS="-p 10022 -o PermitRootLogin=no -o PasswordAuthentication=no"

=============
ほとんどのブログでは「/etc/ssh/sshd_config」を
書き換えているのが主流のようですが、

「/etc/sysconfig/sshd」の方を書き換えた方が
アップデートの時にrpmnewが出来て~、diffして~、書き換えて反映して~
って作業が無くなるので楽だと思います。
=============

SSHの再起動

# /etc/init.d/sshd restart

ここまでやったら、一旦ログアウトして
作成した一般ユーザーでログイン出来るか試す。

続きの記事は、
さくらのVPS ログレポート(logwatch)と不正アクセス拒否(denyhosts)のインストール」です

更に続きのLAMP環境構築の記事は、
さくらのVPS Apache+MySQL+PHPのインストール(LAMP環境構築)

以上です。

参考サイト

VPSの初期設定とLAMP環境を構築する方法。
http://9jp.info/archives/11485

VPS 借りたら、せめてこれくらいはやっとけというセキュリティ設定 : dogmap.jp
http://dogmap.jp/2011/05/12/vps-security/

CentOS5.5にPHP5.3 やMySQL5.1 などの最新版をyum でインストールする方法

2010/7/11 現在

CentOS 5系(RedHat Enterprise Linux 5系)で
PHPの最新版(5.3.x系)を使いたくなった為バージョンアップすることにした。

出来ることなら、yumでのパッケージ管理をしたいので、「Les RPM de Remi」で公開されているRPMリポジトリを活用し、PHP(やMySQL)の最新版を導入することにした。

現時点での環境

$ cat /etc/redhat-release
CentOS release 5.5 (Final)

$ php -v
PHP 5.1.6 (cli) (built: Mar 31 2010 02:44:37)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

$ mysql --version
mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (i686) using readline 5.1

Les RPM de Remiのリポジトリ登録

以下を実行します。

$ sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

そうすると、「/etc/yum.repos.d/」配下に以下の設定ファイルが出来上がります。

・/etc/yum.repos.d/epel.repo
・/etc/yum.repos.d/remi.repo

PHPのバージョンアップ(rpmで5.1=>5.3)

登録したリポジトリを有効にする感じでインストールする。

$ sudo yum --enablerepo=remi install php

ここで、mysql の競合エラーが出たので先に mysql をインストール(アップデート)しておく

$ sudo yum --enablerepo=remi install mysql

もう一度、PHPのインストール(アップデート)実行

$ sudo yum --enablerepo=remi install php

php.ini の変更をして完了

$ sudo mv /etc/php.ini /etc/php.ini.old
$ sudo cp /usr/share/doc/php-common-5.3.2/php.ini-production /etc/php.ini

バージョン確認

$ php -v
PHP 5.3.2 (cli) (built: Apr 27 2010 20:28:18)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

$ mysql --version
mysql  Ver 14.14 Distrib 5.1.48, for redhat-linux-gnu (i686) using readline 5.1

CentOS 5.4 に munin(サーバー監視ツール) をインストール MRTG/cacti

▼munin 本家サイト
http://munin-monitoring.org/

munin って何?

munin(ムーニン)は、オープンソースで公開されているサーバー監視、グラフ化ツールです。
MTRG/cacti などと同様のツールです。

主な特徴

  • 比較的導入が簡単
  • プラグインによる取得データの拡張が出来る
  • グラフ化部(マスター)とデータ取得部(ノード)が違うプログラムになっている

マスター(munin)とノード(munin-node)の役割

マスター: データ収集 + グラフ化
ノード: マスターへのデータ提供

▼munin のインストール
基本的に munin を yum でインストールします。
しかし、CentOS-Base.repo では munin のパッケージが見つからないので
dag.repo を使用して munin のインストールをします。

▼そこで、yum レポジトリの追加(dag.repo)
参考:http://mt.mizba.net/archives/001205.php

$ sudo vi /etc/yum.repos.d/dag.repo

[dag]
name=Dag RPM Repository for redhat
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
enabled=0   # enabled は0にして必要な時だけ有効にします
gpgcheck=1

続いて PGP key をインポートします。

$ sudo rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

これで dag.repo の設定は完了です。

▼次に munin を使用するに当たって必要になるアプリケーションのインストール
今回は「情報を集積するサーバ(マスター)」と「監視対象になるサーバ(ノード)」を
同一のサーバにするため munin と munin-node の両方をインストールします。

自分の場合は以下のようになりました。
※各自の環境によって違うと思います。

$ sudo yum --enablerepo=dag install munin munin-node

================================================================================
 Package                           Arch        Version              Repository
================================================================================
Installing:
 munin                             noarch      1.2.5-2.el5.rf       dag
 munin-node                        noarch      1.2.5-2.el5.rf       dag
Installing for dependencies:
 perl-Compress-Zlib                i386        1.42-1.fc6           base
 perl-Crypt-DES                    i386        2.05-3.2.el5.rf      rpmforge
 perl-DateManip                    noarch      5.44-1.2.1           base
 perl-Digest-HMAC                  noarch      1.01-15              base
 perl-HTML-Parser                  i386        3.64-1.el5.rf        rpmforge
 perl-HTML-Tagset                  noarch      3.20-1.el5.rf        rpmforge
 perl-HTML-Template                noarch      2.9-1.el5.rf         rpmforge
 perl-Net-SNMP                     noarch      5.2.0-1.2.el5.rf     rpmforge
 perl-Net-Server                   noarch      0.97-1.el5.rf        rpmforge
 perl-Socket6                      i386        0.23-1.el5.rf        rpmforge
 perl-URI                          noarch      1.35-3               base
 perl-libwww-perl                  noarch      5.805-1.1.1          base        

Transaction Summary
================================================================================
Install     14 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

▼続いて munin の設定です。
といっても特に必要ないと思います。

作られたファイルは以下の設定ファイルを見ると分かります。
※各自の環境によって違うと思いますが。
設定ファイルは /etc/munin/munin.conf です。

自分の環境では、以下のようになっていました。

  ・htmldir /var/www/munin

  ・/etc/httpd/conf.d/munin.conf
    ScriptAlias /munin/cgi/ /var/www/munin/cgi/
    Alias /munin/ /var/www/munin/

▼設定ファイルの確認が終わったら munin の起動と apache の再起動をします。
・munin の起動及び自動起動設定

    $ sudo /etc/init.d/munin-node start
    Starting Munin Node:       [  OK  ]

    $ sudo /sbin/chkconfig --list munin-node
    munin-node      0:off   1:off   2:off   3:off   4:off   5:off   6:off

    off になっていたら、以下コマンドを実行
    $ sudo /sbin/chkconfig munin-node on
    $ sudo /sbin/chkconfig --list munin-node
    munin-node      0:off   1:off   2:on    3:on    4:on    5:on    6:off

上記のようになったら自動起動 OK!

・apache を再起動します。
munin を起動してからは5分おきにグラフが更新されるようになります。

    $ sudo /etc/init.d/httpd restart

apache の再起動が完了したら http://localhost/munin/ にアクセスし
munin の状況を見てみましょう。

munin-graph

このように、MRTG/cacti とよく似た感じのグラフィカルなグラフで
負荷状況やサーバー状態などを確認出来ます。

MRTG/cacti よりもインストール設定などが簡単なので是非とも
導入してみては如何でしょうか。

2008年9月のアクセス数の多かった人気記事ベスト5

先月(2008年9月)のアクセス数が多く人気のあった記事のトップ5です。

  1. IE7でfavicon.ico(ファビコン)が表示されない時の解決方法
  2. 「Eee PC」に対抗!Dellのミニノート「Inspiron Mini 9」
  3. [Linux]ソフトウェアのインストール時にやってしまいがちな失敗10選
  4. Linuxの標準教科書が無料でダウンロード出来ます。
  5. [PHP]オープンソースのウェブメールまとめ

Linuxの標準教科書が無料でダウンロード出来たのには、とても感謝です!
こういった情報が無料で見れるのは、とても素晴らしい事ですよね^^