Archive for the 'linux' Category

linux:サーバのアーキテクチャを調べるには

パッケージをインストールするとき、どのアーキテクチャを選択すればよいかわからない時はuname -a

# uname -a
Linux localhost.localdomain 2.6.9-023stab046.2-smp #1 SMP Mon Dec 10 15:04:55 MSK 2007 x86_64 x86_64 x86_64 GNU/Linux

後ろのほうのx86_64がそのサーバのアーキテクチャ。
他にi386やi686などがある。
noarchは全アーキテクチャ共通のパッケージ

VirtualHost環境にMTOSをインストール

cgi-script のハンドラを有効にします。ついでに.plでもCGIが動くようにします。

/etc/httpd/conf/httpd.conf
#AddHandler cgi-script .cgi
AddHandler cgi-script .cgi .pl

VirtualHostを定義。
スクリプトは非公開領域で動くようにScriptAliasを設定する。

/etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80>>
    DocumentRoot "/path/to/public_html"
    ScriptAlias /cgi-bin/ "/path/to/cgi/"
    ServerName example.com
    ErrorLog "logs/example.com-access.log"
    CustomLog "logs/example.com-error.log" common
</VirtualHost>

“/path/to/cgi”にソースを解答し、/cgi-bin/mt-check.cgiにアクセスして必要なライブラリを確認する。
yumまたはcpanで必要なライブラリを入れる。

yum install perl-GD
cpan> install DBI
cpan> install DBD::mysql
#…以下必要なだけインストール

cgiファイルの権限を変更し実行可能にする。

chmod 755 *.cgi

/cgi-bin/mt.cgiにアクセス。あとはウィザードに従ってインストール。

CentOS:memcachedをインストール

CentOs5.2のリポジトリにmemcachedは無いのでリポジトリを追加する。

cd /usr/local/src
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm

mencachedを入れるのに必要なモジュールをインストールする。
たぶんこのあたりを入れておけばおっけーなはず。

yum install gcc
yum install memcached
yum install zlib-devel
yum install php-pecl-memcache

memcachedの設定は/etc/sysconfig/memcachedを編集する。
動かすだけならデフォルトのままでOK。
memcacheの起動

/etc/init.d/memcached start

サービスを自動起動にしておく。

chkconfig memcached on

テストスクリプト


<?php
    $cache = new Memcache;
    $key = 'cache_test';
    $cache->connect('localhost', 11211);
    if(!$cache->get($key)){
        // キャッシュの有効時間は15秒
        $cache->set($key, date('Y-m-d h:i:s'), MEMCACHE_COMPRESSED, 15);
    }
    echo $cache->get($key);
?>

php:PEAR phpunitのインストール

足りないPEARライブラリとphp-extensionを入れてから、phpunit/PHPUnitをインストール。

# pear install pear/Image_GraphViz
# pear install pear/Log
# yum install php-common
# yum install php-dom
# yum install php-pdo
# pear install phpunit/PHPUnit

linux:yumレポジトリを一時的に追加する

普段は公式のレポジトリだけチェックしたいけどphpだけは最新にアップグレードしたい。そんなときに。
目的のパッケージがあるレポジトリに対しての設定ファイルを追加する方法。
RPM-GPG-KEYをインストール。

# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

/etc/yum.repos.d/の下にrepoファイル追加

/etc/yum.repos.d/utterramblings.repo
[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

目的のパッケージをアップデートしたらenabledを0に設定し、普段は参照しないようにしておく。

Apache:エラーと対応方法

とりあえず、エラーログを確認すること。全てはそれから。

ドキュメントルートへのアクセスがforbiddenになるとき

こんなエラーのとき
Directory index forbidden by Options directive: /var/www/html/
→Option Indexesが設定されていないため、/でindex.html等にアクセスできていない。

Permission deniedのエラーが出るとき

こんなエラーのとき
(13)Permission denied: access to / denied
ディレクトリのパーミッションを確認する
ユーザディレクトリにドキュメントルートを置いたときはユーザディレクトリも実行可能でないといけない。

 chmod +x /home/ユーザ

seLinuxの設定が怪しいとき

seLinuxが原因かどうかは一時的にseLinuxを切ってみれば解る。
/etc/selinux/configを変更する。

/etc/selinux/config
 SELINUX=disabled

設定後はサーバ再起動が必要

 # reboot

linux:proxy接続環境で設定すること

よく設定方法を忘れるので、とりあえずこれだけは最初にセットするようにしよう。

環境変数の設定

$HOME/.bashrcに記述

export http_proxy=http://プロクシーサーバ名:ポート番号/
export https_proxy=http://プロクシーサーバ名:ポート番号/
export ftp_proxy=http://プロクシーサーバ名:ポート番号/

記述したら反映する。

source .bashrc

yumのproxy設定

/etc/yum.confの[main]セクションにに下記の1行を追加。

[main]
 ・・・いろいろ省略・・・
proxy=http://プロクシーサーバ名:ポート番号/

wgetのproxy設定

$HOME/.wgetrcに記述する。

export http_proxy=http://プロクシーサーバ名:ポート番号/

pearのproxy設定

pearコマンドでproxyサーバ&ポートを指定する。

pear config-set http_proxy プロクシーサーバ名:ポート番号

うまく行かないときにチェックすること

環境変数がセットされているか…setコマンド
ネットワーク設定は正しいか。
DHCPならこんな感じ。

/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
DEVICE=eth0
ONBOOT=yes
#NETMASK=255.255.255.0
#IPADDR=192.168.1.8
BOOTPROTO='dhcp'

coLinux:Windowsのファイルシステムをマウント

coLinuxの中にsambaを立ててもいいけど、ディスクサイズ小さめでイメージを作っているのでWindows側に共有スペースを作って、それをcoLinuxでマウントするほうが良さそう。

私の場合はこんな感じで起動引数にtxtファイルを指定しているのでcent5.colinux.txtに設定を追記します。

起動コマンド
“C:\Program Files\coLinux\colinux-daemon.exe” -t nt @”C:\coLinux-installer-20080221\cent5.colinux.txt”

cent5.colinux.txt
cobd0="C:\coLinux\centos5\root.ext3"
cobd7="C:\coLinux\centos5\swap_device"
cofs0="C:\coLinux\centos5\share"  #共有するフォルダ
root=/dev/cobd0 fastboot
initrd=initrd.gz
kernel=vmlinux
mem=128
eth0=tuntap

この引数でcoLinuxを起動したらrootで好きなところにマウントする

mkdir /share
mount -t cofs cofs0 /share

次回の起動から自動でマウントするように/etc/fstabを編集する。
最後にこの1行を追加。

/etc/fstab
cofs    /share  cofs    defaults        0       0

linux:chkrootkitのインストール

インストール

# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
# tar zxfv chkrootkit.tar.gz
# cd chkrootkit-0.48/
# make sense

実行可能なテストの一覧を表示する

# ./chkrootkit -l

実行するときは下記のように。[テストする内容]を省くと全て実行される。結構時間はかかる。

# ./chkrootkit [テストする内容]

全体的にエコー多めで問題のあるところを探しにくい。-qをつけると疑わしい部分だけ表示される。INFECTEDだけを見る場合はこう。

# ./chkrootkit -q | grep INFECTED

決まった時間にchkrootkitを実行するシェル


#!/bin/sh
CHKROOTKIT="/usr/local/src/chkrootkit-0.48/chkrootkit -q"
TMPFILE="result.txt"
SUMFILE="result.sum"
LASTFILE="last.txt"
LASTSUMFILE="last.sum"
NOWTIME=`date +"%Y/%m/%d %T"`
MAILTO=""

`$CHKROOTKIT` > $TMPFILE

if [ -f "$LASTSUMFILE" ]; then

    md5sum $TMPFILE > $SUMFILE
    TMPSUM=`cat $SUMFILE`
    LOGSUM=`cat $LASTSUMFILE`
    if [ $TMPSUM != $LOGSUM ]; then
        #ファイルが変わっている。メール送信
        #echo "chkrootkit result is changed." | mail -s "[ALERT] chkrootkit " "$MAILTO"
        echo "chkrootkit result is changed."

    fi
    #次回のチェックのため退避
    cat $SUMFILE > $LASTSUMFILE
    cat #TMPFILE > $LASTFILE
else
    # chkrootkitの結果ファイルがない。メール送信
    echo "chkrootkit result is not exsist." | mail -s "[ALERT] chkrootkit " "$MAILTO"
fi

ratproxy:インストールからレポート表示まで

1.ダウンロード

# cd /usr/local/src
# wget http://ratproxy.googlecode.com/files/ratproxy-1.51.tar.gz

2.解答してmake

# tar zxfv ratproxy-1.51.tar.gz
# cd ratproxy
# make

※makeするにはopenssl-develが必要

3.実行(出力フォルダ、出力ログ、ドメイン、ポートを指定する場合)

./ratproxy -v . -w out.log -d www.hoge.com -p 8000 -rlfscm &

4.ブラウザでプロクシー(ポート8000)を解して適当にサイトにアクセス

5.ログをレポートに出力
見栄えもあるのでタイトル画像を見えるところに移動

# cp ratproxy-back.png  /var/www/html/ratproxy

cronに設定する

crontab -e
*/5 * * * * /usr/local/src/ratproxy/ratproxy-report.sh /usr/local/src/ratproxy/out.log > /var/www/html/ratproxy/report.html
*/5 * * * * mv /usr/local/src/ratproxy/*.trace /var/www/html/ratproxy/

次ページへ »