OpenBlocksはmakeが通らないことが良くあります。
そこで、コンパイル環境を強化してみます。
関連サイト:http://www.gnu.org/software/binutils/
###ソースをダウンロード###
wget http://ftp.gnu.org/gnu/binutils/binutils-2.16.tar.gz
###展開###
tar zxfv binutils-2.16.tar.gz
###移動###
cd binutils-2.16
###環境設定###
./configure
###コンパイル###
make
これもOpenBlocksSでは相当時間がかかりますZZZZZZzzzzzzzz.
###インストール###
make install
###旧バージョン/usr/bin/ldを見に行くので新バージョン/usr/local/bin/ldからシンボリックリンクを張る###
mv /usr/bin/ld /usr/bin/ld.org
ln -s /usr/local/bin/ld /usr/bin/ld
ld -v
GNU ld version 2.16
###旧バージョン/usr/bin/ldを見に行くので新バージョン/usr/local/bin/ldからシンボリックリンクを張る###
mv /usr/bin/as /usr/bin/as.org
ln -s /usr/local/bin/as /usr/bin/as
as -v
GNU assembler version 2.16 (powerpc-unknown-linux-gnu) using BFD version 2.16
###結局GCCのコンパイル時にうまくいかなかったので、/usr/powerpc-unknown-linux-gnu やら /usr/powerpc-obbs-linux-gnu
に
上と同じ様にシンボリックリンクをかけたwww;;###
上へ トップページへ
関連サイト:http://gcc.gnu.org/
:http://sources.redhat.com/newlib/
Openblocksのような組み込み系のマシンでコンパイルするためのCライブラリ「newlib」と
言うものが必要なようなので、ダウンロード
###ソースをダウンロード###
wget ftp://sources.redhat.com/pub/newlib/newlib-1.13.0.tar.gz
wget ftp://ftp.ring.gr.jp/pub/GNU/gcc/gcc-3.4.4/gcc-3.4.4.tar.bz2
###展開###
tar zxfv newlib-1.13.0.tar.gz
bzcat gcc-3.4.4.tar.bz2 | tar xfv -
###移動###
cd gcc-3.4.4
うわっ、README空けたらHTML読めって・・・。
lynxをインストール
###環境設定###
ln -s ../newlib-1.13.0/newlib
./configure --with-newlib
###コンパイル###
make
gccがgccをコンパイルするってどんな気持ちだろw
予想通り時間がかかる・・・・・・・ZZZZZZZZZzzzzzzzzzz.
あまりにも長いのでプロセスの状態でも見てみる。
topコマンドが使えないのでインストール。
別ターミナルでログインして
###インストール###
make install
こいつは、インストールにまで時間がかかる。
もし、これを見てやろうと思うなら、朝「make」->会社->晩「make install」にしたほうが良いね。
うぉぉぉぉぉぉーーーーーミスってるぅぅぅぅーーーーーーーー!!
make[1]: Leaving directory `/home/root/gcc-3.4.4/gcc'
make[1]: Entering directory `/home/root/gcc-3.4.4/fastjar'
make[1]: *** No rule to make target `install'. Stop.
make[1]: Leaving directory `/home/root/gcc-3.4.4/fastjar'
make: *** [install-fastjar] Error 2
fastjar とはjavaで使うアーカイブのあれですか・・・・・。
とくにいらねぇ;;
よく見るとgcc-3.4.4の中にfastjarがある。
単体でインストールしてみる
cd fastjar
./configure
make
make install
できた・・・・・、なんで失敗したん???
cd ..
make install
今度はこれ
/bin/sh: cd: powerpc-unknown-linux-gnu/libstdc++-v3:
No such file or directory
cd libstdc++-v3/
./configure
configure: error: cannot find install-sh or install.sh in ./../..
だめだ・・・。
coreだけにしよう。
###ソースをダウンロード###
wget ftp://ftp.ring.gr.jp/pub/GNU/gcc/gcc-3.4.4/gcc-core-3.4.4.tar.bz2
###展開###
bzcat gcc-core-3.4.4.tar.bz2 | tar xfv -
###移動###
cd gcc-3.4.4
###環境設定###
ln -s ../newlib-1.13.0/newlib ../newlib-1.13.0/libgloss ../newlib-1.13.0/COPYING.NEWLIB
./
./configure --with-newlib --with-gnu-as --with-gnu-ld
↑ココで悪戦苦闘、次回はスムーズに行いたいです。
「newlibできないよ。」 見たいな事を言われたので不安
###コンパイル###
make
・・・・・・・待つ・・・・・・出かける・・・・・。
###インストール###
make install
できたのかな??
gcc -v
gcc version 2.95.3 20010315 (release)
前のままか・・・。
whereis gcc
gcc: /usr/bin/gcc /usr/local/bin/gcc /usr/local/lib/gcc /usr/man/man1/gcc.1
/usr/local/bin/gcc -v
Reading specs from /usr/local/lib/gcc/powerpc-unknown-linux-gnu/3.4.4/specs
Configured with: ./configure : (reconfigured) : (reconfigured) ./configure
--prefix=/usr/powerpc-u
nknown-linux-gnu : (reconfigured) ./configure --prefix=/opt --target=powerpc-unknown-linux-gnu
--wit
h-newlib : (reconfigured) ./configure --with-newlib : (reconfigured) ./configure
--with-newlib --wit
h-gnu-as --with-gnu-ld
Thread model: posix
gcc version 3.4.4
おぉ、ここにあったか・・・。
mv /usr/bin/gcc /usr/bin/gcc.org
ln -s /usr/local/bin/gcc /usr/bin/gcc
gcc -v
Reading specs from /usr/local/lib/gcc/powerpc-unknown-linux-gnu/3.4.4/specs
Configured with: ./configure : (reconfigured) : (reconfigured) ./configure
--prefix=/usr/powerpc-u
nknown-linux-gnu : (reconfigured) ./configure --prefix=/opt --target=powerpc-unknown-linux-gnu
--wit
h-newlib : (reconfigured) ./configure --with-newlib : (reconfigured) ./configure
--with-newlib --wit
h-gnu-as --with-gnu-ld
Thread model: posix
gcc version 3.4.4
こんなやり方じゃ、うまく入ってないと思うので、まねしないでねw。
上へ トップページへ
関連サイト:http://www.gnu.org/software/libc/libc.html
:http://www.gnu.org/software/texinfo/
:http://www.gnu.org/software/autoconf/
:http://www.kernel.org/
これがないと、実際色々コンパイル出来るようにしたいと言う
当初の目的が果たせないので、入れてみる
linuxカーネルのヘッダが要るらしいので用意
###ソースをダウンロード###
wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.29.tar.gz
###展開###
tar zxfv linux-2.4.29.tar.gz
###移動###
cd linux-2.4.29
###Makefileを編集###
#ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/
-e s/sa110/arm/)
ARCH := ppc
CROSS_COMPILE = powerpc-unknown-linux-
###ヘッダを使えるように###
make config
make dep
###ソースをダウンロード###
wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.3.5.tar.gz
###展開###
tar zxfv glibc-2.3.5.tar.gz
###移動###
cd glibc-2.3.5
INSTALLを読んで見たらこんなことが書いてあった↓
GNU `make' 3.79 or newer
GCC 3.2 or newer
GNU `binutils' 2.13 or later
GNU `texinfo' 3.12f
GNU `awk' 3.0, or some other POSIX awk
Perl 5
GNU `sed' 3.02 or newer
GNU `autoconf' 2.53 or higher
GNU `gettext' 0.10.36 or later
ハードル高!!
###現在の環境###
make 3.79
gcc 3.4.4
binutils 2.16
texinfo なし
awk 3.0.4
Perl 5.9.2
sed 3.03
autoconf 2.13
gettext 0.10.38
###############
おっ、結構クリアしてる
簡略化させてもらいます。
wget http://ftp.gnu.org/gnu/texinfo/texinfo-4.8.tar.gz
tar zxfv texinfo-4.8.tar.gz
./configure
make
make install
mv /usr/bin/texi2dvi /usr/bin/texi2dvi.org
ln -s /usr/local/bin/texi2dvi /usr/bin
mv /usr/bin/texindex /usr/bin/texindex.org
ln -s /usr/local/bin/texindex /usr/bin
ln -s /usr/local/bin/texi2pdf /usr/bin
texi2dvi -v
texi2dvi (GNU Texinfo 4.8) 1.34
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.gz
tar zxfv autoconf-2.59.tar.gz
cd autoconf-2.59
make
make install
mv /usr/bin/autoconf /usr/bin/autoconf.org
ln -s /usr/local/autoconf-2.59/bin/autoconf /usr/bin/
mv /usr/bin/autoheader /usr/bin/autoheader.org
ln -s /usr/local/autoconf-2.59/bin/autoheader /usr/bin/
ln -s /usr/local/autoconf-2.59/bin/autom4te /usr/bin/
mv /usr/bin/autoreconf /usr/bin/autoreconf.org
ln -s /usr/local/autoconf-2.59/bin/autoreconf /usr/bin/
ln -s /usr/local/autoconf-2.59/bin/autoscan /usr/bin/
mv /usr/bin/autoupdate /usr/bin/autoupdate.org
ln -s /usr/local/autoconf-2.59/bin/autoupdate /usr/bin/
mv /usr/bin/ifnames /usr/bin/ifnames.org
ln -s /usr/local/autoconf-2.59/bin/ifnames /usr/bin/
autoconf -V
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.
さて構築の続きをはじめます。
###glibcに追加で以下もダウンロード###
wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.5.tar.gz
tar zxfv glibc-linuxthreads-2.3.5.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-crypt-2.1.tar.gz
tar zxfv glibc-crypt-2.1.tar.gz
###環境設定###
./configure
###コンパイル###
make
###インストール###
make install
上へ トップページへ
関連サイト:http://procps.sourceforge.net/
OpenBlocksSにはtopコマンドがなかったのでインストールしよう。
procps と言うプロジェクトで「ps,top,vmstat,sysctl,w,kill,skill,nice,snice,pgrep,free,tload,uptime,watch」コマンドが
まとめて入っているようだ。
###ソースをダウンロード###
wget http://procps.sf.net/procps-3.2.5.tar.gz
###展開###
tar zxfv procps-3.2.5.tar.gz
###移動###
cd procps-3.2.5
###環境設定###
./configure
###コンパイル###
make
###インストール###
make install
上へ トップページへ
関連サイト:http://www.vim.org/
僕はRedHat6ぐらいからLinuxを触り始めたんですが、OpenBlocksのviがなんか
使いにくい、INSERTモードでの移動が不便です。
これもアップグレードしちゃいましょう。
###ソースをダウンロード###
wget ftp://ftp.vim.org/pub/vim/unix/vim-6.3.tar.bz2
###展開###
bzcat vim-6.3.tar.bz2 | tar xfv -
###移動###
cd vim63
###環境設定###
気に入らないバージョンだったらやばいので、インストール先変更
./configure --prefix=/usr/local/vim63
###コンパイル###
make
###インストール###
make install
###旧バージョンをバックアップ###
mv /usr/bin/vi /usr/bin/vi.org
###新バージョンをシンボリックリンク###
ln -s /usr/local/vim63/bin/vim /usr/bin/vi
vi -v
VIM - Vi IMproved
version 6.3
by Bram Moolenaar et al.
Vim is open source and freely distributable
できた!!・・・・あれっ、使い勝手が変わってない。
###環境設定オプションを変更してみる
./configure --prefix=/usr/local/vim63-2 --with-features=big --enable-gui
make
make install
変わらず・・・。
なんと、viには各ユーザに設定ファイルが設置でき、viは起動時に設定ファイルを読み込み
色々カスタマイズできるようである。
まず行番号を表示してみます。
vi .vimrc
【.vimrc】の中身
set number
ZZで上書き終了
で、もっかい起動
vi .vimrc
【.vimrc】の中身
1 set number
出ましたw、色々設定して使いやすくしましょう。
1 set nocompatible <- vimをviと非互換にする
2 set number <- 行番号を表示する
3 syntax enable <- 構文に色やアンダーバーをつける
4 set encoding=japan <- 言語を日本語に設定
5 set fileencodings=iso-2002-jp,utf-8,euc-jp,cp932 <-左から順番に、エンコード文字を自動調査
6 set listchars=tab:>-,trail:- <- タブを「>----」で表示(しかし、表示されなかった;;)
7 set visualbell <- ビープ音を抑制
8 behave xterm <- なんかマウスが使えるようになるらしいがTera Term Proでは無理
上へ トップページへ
関連サイト:http://www.openssh.com/
実は、ずっと前にOpenSSHを導入しようと思ったんですが、どうもうまく
インストールできずに、2年間ぐらいただのTelnet接続を許可すると言う
暴挙に出ていたのですw
ちょっとは成長したのか試すために、再度試みてみます。
INSTALLをのぞいてみる
#########################################################################
You will need working installations of Zlib and OpenSSL.
Zlib 1.1.4 or 1.2.1.2 or greater (ealier 1.2.x versions have problems):
http://www.gzip.org/zlib/
OpenSSL 0.9.6 or greater:
http://www.openssl.org/
#########################################################################
と言うことで、まずZlibをインストールします。
なぜかミラーサイトに飛ばされました・・・http://www.gzip.org/zlib/ −>
http://www.zlib.net/
###ソースをダウンロード###
wget http://www.zlib.net/zlib-1.2.3.tar.gz
###展開###
tar zxfv zlib-1.2.3.tar.gz
###移動###
cd zlib-1.2.3.tar.gz
###コンパイル###
make
###インストール###
make install
スパッと終わりました!!
続いてOpenSSLをインストールします。
###ソースをダウンロード###
wget http://www.openssl.org/source/openssl-0.9.8.tar.gz
###展開###
tar zxfv openssl-0.9.8.tar.gz
###移動###
cd openssl-0.9.8
###コンパイル###
make
make test
###インストール###
make install
結構長かったなぁ・・・・。
さていよいよ、目的のOpenSSHです。
###ソースをダウンロード###
wget http://openssh.hostingzero.com/portable/openssh-4.2p1.tar.gz
###展開###
tar zxfv openssh-4.2p1.tar.gz
###移動###
cd openssh-4.2p1
###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/openssh-4.2p1
#########################################################################################
OpenSSH has been configured with the following options:
User binaries: /usr/local/openssh-4.2p1/bin
System binaries: /usr/local/openssh-4.2p1/sbin
Configuration files: /usr/local/openssh-4.2p1/etc
Askpass program: /usr/local/openssh-4.2p1/libexec/ssh-askpass
Manual pages: /usr/local/openssh-4.2p1/man/catX
PID file: /var/run
Privilege separation chroot path: /var/empty
sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/openssh-4.2p1/bin
Manpage format: cat
PAM support: no
KerberosV support: no
Smartcard support: no
S/KEY support: no
TCP Wrappers support: no
MD5 password support: no
libedit support: no
IP address in $DISPLAY hack: no
Translate v4 in v6 hack: yes
BSD Auth support: no
Random number source: OpenSSL internal ONLY
Host: powerpc-unknown-linux-gnu
Compiler: gcc
Compiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -std=gnu99
Preprocessor flags: -I/usr/local/ssl/include
Linker flags: -L/usr/local/ssl/lib
Libraries: -lresolv -lcrypto -lutil -lz -lnsl -lcrypt
#########################################################################################
なんかnoが多すぎて気にくなわないw
INSTALLに書いてあるものはインストールしておこう。
###戻って###
cd ..
###ソースをダウンロード###
wget http://www.kernel.org/pub/linux/libs/pam/pre/library/Linux-PAM-0.80.tar.gz
###展開###
tar zxfv Linux-PAM-0.80.tar.gz
###移動###
cd Linux-PAM-0.80
###環境設定###
./configure
###コンパイル###
make
support.c: In function `_unix_run_helper_binary':
support.c:573: error: storage size of 'rlim' isn't known
support.c:584: warning: implicit declaration of function `getrlimit'
support.c:584: warning: nested extern declaration of `getrlimit'
support.c:584: error: `RLIMIT_NOFILE' undeclared (first use in this function)
support.c:584: error: (Each undeclared identifier is reported only once
support.c:584: error: for each function it appears in.)
support.c:573: warning: unused variable `rlim'
make[2]: *** [dynamic/support.o] Error 1
make[2]: Leaving directory `/home/root/Linux-PAM-0.80/modules/pam_unix'
make[1]: *** [all] Error 1
make[1]: Leaving directory `/home/root/Linux-PAM-0.80/modules'
make: *** [modules] Error 2
無理みたいです。
###移動###
cd openssh-4.2p1
###コンパイル###
make
###インストール###
make install
Generating public/private rsa1 key pair.
Generating public/private dsa key pair.
Generating public/private rsa key pair.
ここで結構待ちます・・・・。
/usr/local/openssh-4.2p1/sbin/sshd -t -f /usr/local/openssh-4.2p1/etc/sshd_config
Privilege separation user sshd does not exist
make: [check-config] Error 255 (ignored)
エラー出てしまいました。
どうもデフォルトでsshdをrootから分離する設定になっており
それを実現するためには、インストール前にsshdユーザを作成しておく必要があるようです。
###ユーザ追加###
useradd sshd
###もう一回インストール###
make install
###既存ファイルをバックアップ###
mv /usr/sbin/sshd /usr/sbin/sshd.org
mv /usr/bin/scp /usr/bin/scp.org
mv /usr/bin/sftp /usr/bin/sftp.org
mv /usr/bin/slogin /usr/bin/slogin.org
mv /usr/bin/ssh /usr/bin/ssh.org
mv /usr/bin/ssh-add /usr/bin/ssh-add.org
mv /usr/bin/ssh-agent /usr/bin/ssh-agent.org
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.org
mv /usr/bin/ssh-keyscan /usr/bin/ssh-keyscan.org
mv /usr/local/bin/scp /usr/local/bin/scp.org
mv /usr/local/bin/sftp /usr/local/bin/sftp.org
mv /usr/local/bin/slogin /usr/local/bin/slogin.org
mv /usr/local/bin/ssh /usr/local/bin/ssh.org
mv /usr/local/bin/ssh-add /usr/local/bin/ssh-add.org
mv /usr/local/bin/ssh-agent /usr/local/bin/ssh-agent.org
mv /usr/local/bin/ssh-keygen /usr/local/bin/ssh-keygen.org
mv /usr/local/bin/ssh-keyscan /usr/local/bin/ssh-keyscan.org
###シンボリックリンクを張る###
ln -s /usr/local/openssh-4.2p1/sbin/sshd /usr/sbin/sshd
ln -s /usr/local/openssh-4.2p1/bin/scp /usr/bin/scp
ln -s /usr/local/openssh-4.2p1/bin/sftp /usr/bin/sftp
ln -s /usr/local/openssh-4.2p1/bin/slogin /usr/bin/slogin
ln -s /usr/local/openssh-4.2p1/bin/ssh /usr/bin/ssh
ln -s /usr/local/openssh-4.2p1/bin/ssh-add /usr/bin/ssh-add
ln -s /usr/local/openssh-4.2p1/bin/ssh-agent /usr/bin/ssh-agent
ln -s /usr/local/openssh-4.2p1/bin/ssh-keygen /usr/bin/ssh-keygen
ln -s /usr/local/openssh-4.2p1/bin/ssh-keyscan /usr/bin/ssh-keyscan
ln -s /usr/local/openssh-4.2p1/bin/scp /usr/local/bin/scp
ln -s /usr/local/openssh-4.2p1/bin/sftp /usr/local/bin/sftp
ln -s /usr/local/openssh-4.2p1/bin/slogin /usr/local/bin/slogin
ln -s /usr/local/openssh-4.2p1/bin/ssh /usr/local/bin/ssh
ln -s /usr/local/openssh-4.2p1/bin/ssh-add /usr/local/bin/ssh-add
ln -s /usr/local/openssh-4.2p1/bin/ssh-agent /usr/local/bin/ssh-agent
ln -s /usr/local/openssh-4.2p1/bin/ssh-keygen /usr/local/bin/ssh-keygen
ln -s /usr/local/openssh-4.2p1/bin/ssh-keyscan /usr/local/bin/ssh-keyscan
設定ファイルを変更
vi /usr/local/openssh-4.2p1/etc/sshd_config
デフォルトでは、公開鍵方式以外に通常のパスワード方式も有効になっていますので、無効に
#PasswordAuthentication yes
PasswordAuthentication no
ルートによるログインを禁止します、ルートの認証がネットワーク上に流れるのを防ぎます。
#PermitRootLogin yes
PermitRootLogin no
起動時に設定ファイルを読むように、変更します。
vi /etc/rc.d/rc.sysinit
if [ -f /usr/sbin/sshd ]; then
echo "starting sshd..."
#/usr/sbin/sshd
/usr/sbin/sshd -f /usr/local/openssh-4.2p1/etc/sshd_config
fi
さて使ってみましょう。
まず、キーを作成したいユーザにログインします。
su hoge
ホームディレクトリに移動
cd ~
キー作成
ssh-keygen -t rsa1
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/hoge/.ssh/identity):
どこに保存する?(/home/hoge/.ssh/identity←ここで良い?):
このままでいいので、Enter
Enter passphrase (empty for no passphrase):
パスフレーズを入力します。
Enter same passphrase again:
もう一度パスフレーズを入力します。
Your identification has been saved in /home/hoge/.ssh/identity.
Your public key has been saved in /home/hoge/.ssh/identity.pub.
できました。
サーバ側のキーを使えるように名前を変更します。
cp -p .ssh/identity.pub .ssh/authorized_keys
ユーザ側のキーidentityは持ち歩きます(なくさないでね^^;)。
これで、ようやくファイヤーウォールのTelnetポートを防ぐことが出来ます^^
運用開始数時間後・・・・・・・・もうアタック来てるorz.
sshd_attacked.txt <− アタックログ
これじゃぁ、CPU動作が極めて遅いOpenBlock200Sでは、DoSアタックではないものまで、DoSになってしまう。
と言うわけで、ポートを変更してポート22へのアタックはファイヤーウォールに処理してもらうことにする。
#Port 22
Port 29xxxx <−xは適当な数字に置き換えてください。
上へ トップページへ
関連サイト:http://www.analog.cx/
WWWサーバを構築したら、管理者はそのログを閲覧し、アクセス状況(負荷)や不都合が起こっていないか
監視しなければいけません。・・・・・と言うかどんなアクセス状況かみたいですね^^
そこで、Apacheログ解析ソフトanalogをインストールしてみます。
###ソースをダウンロード###
wget http://www.analog.cx/analog-6.0.tar.gz
###展開###
tar zxfv analog-6.0.tar.gz
###移動###
cd analog-6.0
###コンパイル###
あれっReadme.txtにdocs/indx.htmlを見ろって書いてあるから見たのに
インストール方法載ってない!?
う〜んMakefileはあるので、取り合えずmakeしてみるか・・・。
make
動いたみたい^^;
ls
Licence.txt README.txt analog-data.dtd analog.man anlgform.pl examples images logfile.log
Makefile analog analog.cfg anlgform.html docs how-to lang src
analogが出来ています。
###設定###
設定ファイルは「analog.cfg」これかな?
取り合えずバックアップ。
cp analog.cfg analog.org
ログファイルと出力レポートだけ設定して試してみます。
LOGFILE /home/root/analog-6.0/logfile.log
OUTFILE /home/httpd/html/Report.html
Apacheが使っているログを同時アクセスするのは怖いので、まずコピーしてきます。
cp /var/log/httpd/access_log ./logfile.log
###実行###
./analog
http://machtype.com/Report.html
あらまぁ、簡単に出来るのね^^
おっと、画像がでていない
cp -R images/ /home/httpd/html/
【analog.cfg】をちゃんと設定する
#サーバ名レポートのタイトルに使われる
HOSTNAME "[machtype.com]"
#拡張子を追加変更。圧縮ファイルを同じ出力でまとめ、大文字小文字も同じ出力でまとめます。
#ない拡張子があればそのつど追加
TYPEALIAS .gz "[Gzip compressed files]"
TYPEALIAS .tar.gz "[Compressed archives]"
TYPEALIAS .lzh "[Compressed archives]"
TYPEALIAS .JPG ".jpg [JPEG graphics]"
TYPEALIAS .MPG ".mpg [MPEG movie]"
TYPEALIAS .swf ".swf [Flash movie]"
#Webmailのログが大量に挙がって邪魔なので、除外
FILEEXCLUDE /cgi-bin/sqwebmail*
#出力言語を日本語のUTF8に
LANGUAGE JAPANESE-UTF
LANGFILE jpu.lng
#IPアドレスをドメインに変換
DNSFILE dnscache
DNSLOCKFILE dnscache.lock
DNS WRITE
#メモリ節約(obbs200なので^^;)
HOSTLOWMEM 2
再実行
./analog
まぁまぁいい感じになってきました。
しかしまだ警告が出ているので解決しましょう。
./analog: Warning R: Turning off empty Search Word Report
./analog: Warning R: Turning off empty Operating System Report
検索サイトの検索文字と、OSの種類がないよ!!と言われています。
apacheのログをデフォルト(標準)のままだと
218.222.142.238 - - [06/Sep/2004:20:04:44 +0900] "GET /~flesh_gogo/ HTTP/1.1" 200 1038
↑こういうログが出力されます。
OS名も、どこからリンクしてきたかもまったく分かりません。
【httpd.conf】の↓の部分の「common」を「combined」に変更しましょう。
CustomLog /var/log/httpd/access_log common env=!warmlog
旧ログと新ログが混ざっているとanalogは上のほうにある古いフォーマットを基準にするので
ログファイルを新しくしましょう。
mv /var/log/httpd/access_log /var/log/httpd/access_log.back
touch /var/log/httpd/access_log
apacheを再起動しないと、新しいログファイルに書き込まないので再起動してください。
準備は整いました。
Googleで検索してみましょう。
確認します。
vi /var/log/httpd/access_log
60.5.111.219.st.bbexcite.jp - - [25/Aug/2005:20:02:00 +0900] "GET /~flesh_gogo/ HTTP/1.1" 200 21415
"http://www.google.com/search?client=firefox-a&rls=org.mozilla%3Aja-JP%3Aofficial_s&hl=en&q=%E3%83%9
5%E3%83%AC%E3%83%83%E3%82%B7%E3%83%A5%E3%82%B4%E3%83%BC%E3%82%B4%E3%83%BC&btnG=Google+Search" "Mozil
la/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.10) Gecko/20050717 Firefox/1.0.6"
↑出てますね^^
cp /var/log/httpd/access_log ./logfile.log
./analog
で、レポートを見てみると「%E3%83%9
5%E3%83%AC%E3%83%83%E3%82%B7%E3%83%A5%E3%82%B4%E3%83%BC%E3%82%B4%E3%83%BC」
見事に文字化けします。
http://machtype.com/Report.html#searchw
なぜ化けてるかと言うと、URLは2バイト文字や記号に弱いので、16進数に変換して%をつけます。
これをURLエンコードと言うのですが、今回の場合それを戻す、URLデコードしなければなりません。
Perlが入っているのと、Perlしかしらないので、Perlで変換スクリプトを作りました。
【urldecode.cgi】
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
#!/usr/bin/perl
use Jcode;
$boolDecodeFlg = 0;
open INFILE, "/home/httpd/html/Report.html";
open OUTFILE, "> /home/httpd/html/ReportDeco.html";
while(<INFILE>)
{
#print jcode($_)->euc;
#print "デコードフラグ=" . $boolDecodeFlg;
if(index(jcode($_)->euc, "name=\"searchw\"") > 0)
{
$boolDecodeFlg = 1;
}
elsif(index(jcode($_)->euc, "name=\"os\"") > 0)
{
$boolDecodeFlg = 0;
}
if($boolDecodeFlg eq 1)
{
$strResult = $_;
$strResult =~ tr/+/ /;
$strResult =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
print OUTFILE $strResult;
}
else
{
print OUTFILE $_;
}
}
close(OUTFILE);
close(INFILE);
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
perl urldecode.cgi
http://machtype.com/ReportDeco.html#searchw
出来ました。
実行スクリプト
【analog.sh】
cp /var/log/httpd/access_log /home/root/analog-6.0/logfile.log
perl /home/root/analog-6.0/urldecode.cgi
実行権限与えて
chmod +x analog.sh
クローンにて1時間に1回実行(クーロンと呼ぶ人もいる「日本」)
crontab -e
0 * * * * /home/root/analog-6.0/analog.sh
上へ トップページへ
関連サイト:http://www.cpan.org/
信じられないことに、最後のほうでエディタが落ちたので、簡略化さしてもらいます。
###ソースをダウンロード###
wget http://search.cpan.org/CPAN/authors/id/R/RG/RGARCIA/perl-5.9.2.tar.gz
###展開###
tar zxfv perl-5.9.2.tar.gz
###
###移動###
cd perl-5.9.2
rm -f config.sh Policy.sh
mkdir /usr/local/perl-5.9.2
sh Configure -Dprefix=/usr/local/perl-5.9.2
質疑応答開始
最初「y」, そんなディレクトリけどいいの?の時「y」後はそのまま「Enter」キーです。
・
・
・
って簡略しすぎだろっ!!おいw
本当に疲れたんです、長々と書いていたんです、許してください。
make
質疑応答開始
そんなディレクトリけどいいの?の時「y」,gethostname()使う?の時「y」後はそのまま「Enter」キーです。
なんかmakeで./configureしてる気分になります(雑談)
すごい進んだ段階で[/usr/bin/less]ってなこと聞かれても分かりませんのでそのまま「Enter」
上で削除したconfig.sh Policy.shがここで作られ
Run make depend now? [y]
で、本当のmakeが始まるみたい?
何でこんなに複雑にしたんだろ??
make test
cflagsってもので、ちゃんとコンパイルできたかチェック(テスト)します。
OpenBlocksSでやるとこれが長い・・・・・ZZZZzzzzzz.
make install
これまた長い・・・・・ZZZZzzzzzz.
なんでこんなにマニュアルのインストールに時間がかかるんだろ??
HDDの回転が遅すぎるのかそれとも、マニュアルの展開配置の処理がややこしいのか・・・。
perl -v
This is perl, v5.9.1 built for ppc-linux
狙い通り旧バージョンのまま
名前を変更して旧バージョンをバックアップ
mv /usr/bin/perl /usr/bin/perl-5.9.1
シンボリックリンクをはる
ln -s /usr/local/perl-5.9.2/bin/perl5.9.2 /usr/bin/perl
確認
ls -la /usr/bin/perl
/usr/bin/perl -> /usr/local/perl-5.9.2/bin/perl
perl -v
This is perl, v5.9.2 built for ppc-linux
CGIも動かしてみる・・・・エラーorz
Can't locate Jcode.pm in @INC
どうやらモジュールが見えなくなった模様><
モジュールのパスを調べる
perl -le 'print for @INC'
/usr/local/perl-5.9.2/lib/5.9.2/ppc-linux
/usr/local/perl-5.9.2/lib/5.9.2
make/lib/site_perl/5.9.2/ppc-linux
make/lib/site_perl/5.9.2 make/lib/site_perl
Jcode.pm探してみる
find / | grep Jcode.pm
/usr/local/lib/perl5/site_perl/5.9.1/ppc-linux/Jcode.pm
安易にコピーする
cp /usr/local/lib/perl5/site_perl/5.9.1/ppc-linux/Jcode.pm /usr/local/perl-5.9.2/lib/5.9.2//ppc-linux/
しかし今度はJcode.pmが参照しているモジュールが見当たらない・・・@INCの参照先を追加したほうがよさそうだ
・
・
・
う〜ん、Perlスクリプト内での追加やPerlの構築しなおしで可能らしい、もうちょっと旧モジュールディレクトリを調べてみる・・・。
あった!!Jcodeフォルダ^^
これをコピーして
cp -Rf /usr/local/lib/perl5/site_perl/5.9.1/ppc-linux/Jcode /usr/local/perl-5.9.2/lib/5.9.2/
再びCGI実行・・・・OK!
結論
Perl・モジュールのインストール先は計画的に!!
ついでに、Encodeの説明もしておきます。
どうやら、Perl本体に文字コード変換モジュールが組み込まれたようです。
それがEncodeモジュールです。
Jcode.pm自体もperl-5.8.1からは、Encodeのインターフェースとして動作するようなので
今後Encode.pmを使おうと思います。
実は、これを使ってEUC-JPをUTF8に変換しようとしたときに壁にぶち当たったので、使い方の説明をのせます。
まず、CPANに書かれているとおりやったのですが、エラーが出てしまいました。
「Wide character in print at ...」
どうやら、UTF8にはUTF8フラグなるものがあるらしく、Encodeで変換するとそれが付く。
しかし、そのフラグをそぎ落とすこともできる。
use Encode qw/encode decode/;
$strData = "あああ";
print decode("euc-jp", $strData);
↓
Wide character in print at ...
euc-jpをutf8に変換した後、utf8をutf8にエンコードするとフラグが落ちるみたいです。
use Encode qw/encode decode/;
$strData = "あああ";
print encode("utf8", decode("euc-jp", $strData));
関数が二つ重なり、ややこしいので一つにまとめるのも手です。
use Encode qw/encode decode/;
$strData = "あああ";
print funcEUC2UTF8($strData);
sub funcEUC2UTF8
{##utf8フラグなるものを落とすために、変換が長くなるので、ここでまとめる
my $strMoji;
($strMoji) = @_;
return (encode("utf8", decode("euc-jp", $strMoji)));
}
make[1]: *** [install-recursive] Error 1
iptables -P INPUT ACCEPT iptables -F FORWARD DCHPでIPが割り振られると、ノートPCユーザやジャンクPCつくりまくりな人には とっても便利です。 #DDNSサーバに対してNSUPDATEを行う ネットサーフィンをしていて、重いサーバにあたったとき、戻るを押したときに Squid Cache (Version 2.5.STABLE7): Terminated abnormally.
失敗orz
僕は中途半端Linux野郎なので、バージョンダウンしてみる。
###ソースをダウンロード###
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.1/ntp-4.1.2.tar.gz
###展開###
tar zxfv ntp-4.1.2.tar.gz
###移動###
cd ntp-4.1.2
###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/ntp-4.1.2
###コンパイル###
make
###インストール###
make install
【/etc/ntp.conf】を作成
server ntp.jst.mfeed.ad.jp
server ntp1.wakwak.com
driftfile /var/log/ntp.drift
実行する。
/usr/local/ntp-4.1.2/bin/ntpd
確認する
ntpq -p
*ntp3.jst.mfeed. ote-ntp1.jpnap. 2 u 28 64 17
17.669 -3.389 1.435
+ntp1.wakwak.com ntp1.xephion.ne 3 u 25 64 17 17.159 -3.129 1.175
*は同期中 +はスタンバイ
*が無いときは少し待ってみる・・・・・・。
これで、できあがり。
上へ トップページへ
FTPサーバ編 -ProFTPD-
関連サイト:http://www.proftpd.org/
ずいぶん前「wu-ftpd」のセキュリティーアラートラッシュだった頃、ProFTPDが推奨されていたので
使っている。
2005年現在ProFTPDもセキュリティーアラートが上がりだしたようだが・・・。
しかし、新しいデーモン覚えるなら違う役割のデーモンを覚えたいのでこのままいく。
###ソースをダウンロード###
wget http://www.proftpd.de/files/proftpd-1.3.0rc1.tar.gz
###展開###
tar zxfv proftpd-1.3.0rc1.tar.gz
###移動###
cd proftpd-1.3.0rc1
###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/proftpd-1.3.0rc1
###コンパイル###
make
###インストール###
make install
###移動###
cd /usr/local/proftpd-1.3.0rc1/etc/
###初期設定ファイルバックアップ###
cp proftpd.conf proftpd.conf.org
【proftpd.conf 変更】
###ログイン時に表示する自サーバ名###
ServerName "ProFTPD HogeHoge Server"
###起動方法を単独常駐型に(メモリ節約の為inetdにしようとしたが、遅かったのでやめ)###
#ServerType inetd
ServerType standalone
###1.2の時にlsの付加オプションとしてaを追加していたが、このディレクティブが使えなくなったのでコメントアウト###
#LsDefaultOptions "-a"
TimesGMT off
###レジューム機能をオン###
AllowStoreRestart on
AllowRetrieveRestart on
###ログイン後のフォルダをUserDirに###
DefaultRoot ~/
###ホームページ公開専門にするときはこれ
#DefaultRoot ~/public_html
###Anonymous ユーザ拒否###
<Anonymous ~ftp>
<Limit LOGIN>
DenyAll
</Limit LOGIN>
rc.localに
/usr/local/proftpd-1.3.0rc1/sbin/proftpd
こんなものでしょうか?
ん? binフォルダに「ftpdctl」というものがある。
実行してみよっと
./ftpdctl start
ftpdctl:
Controls support disabled.
Please recompile proftpd using --enable-ctrls
ふ〜ん、今度暇なときやってみよっと。
上へ トップページへ
ルータ編 -iptables-
BBルータが壊れたので、OpenBlocksをルータにする。
Webからの管理画面のマスカレード設定をするがうまくいかないので
iptablesを使うことにした。
プロバイダからはDHCPで割り振られるので指定をインターフェース「eth1」にする。
このOpenBlocksはHDDを搭載していないので 【/etc/rc.d/rc.sysinit を編集】(rc.localを編集しても消える)
基本設定ポリシー
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
現在のフィルタをクリア
iptables -F INPUT
iptables -F OUTPUT
INPUTルール
iptables -A INPUT -i eth1 -d 0.0.0.0/0 -p udp --dport 0:1023 -j DROP
iptables -A INPUT -i eth1 -d 0.0.0.0/0 -p tcp --dport 0:1023 -j DROP
iptables -A INPUT -i eth1 -p tcp --syn -j DROP
iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p icmp --icmp-type echo-request -j
DROP
iptables -A INPUT -i eth1 -d 0.0.0.0/0 -p udp --dport 0:1023 -j DROP
iptables -A INPUT -i eth1 -d 0.0.0.0/0 -p tcp --dport 0:1023 -j DROP
iptables -A INPUT -i eth1 -p tcp --syn -j DROP
iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p icmp --icmp-type echo-request -j
DROP
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT
上へ トップページへ
DHCP編 -dhcp-
しかし、いまいち魅力を感じなかった・・・・・が仕事の面で大活躍 人が次々入れ替わる会社、
社の方針により部署解体・創設が激しい会社 IPの変更をシステム管理者のみしかできない場合などに重宝します。
関連サイト:http://www.isc.org/
###ソースをダウンロード###
wget ftp://ftp.isc.org/isc/dhcp/dhcp-3.0.2.tar.gz
###展開###
tar zxfv dhcp-3.0.2.tar.gz
###移動###
cd dhcp-3.0.2
###READMEをみてもprefixの記述がないのでそのまま###
./configure
###コンパイル###
make
###インストール###
make install
###【/etc/dhcp.conf】を作成###
#サーバ名
server-identifier hogehoge.machtype.com;
#認証しない
not authoritative;
#DDNSに割り振ったアドレスを登録(登録しないときadd-hoc)
ddns-update-style interim;
#リリースタイム(ネットワーク構成が安定するまでは5分に1回再割り当て)
default-lease-time 300; #5minute
max-lease-time 604800; #1week
#ログレベル
log-facility local7;
#自分のドメイン名
option domain-name "machtype.com";
#DNSサーバのプライマリとセカンダリをカンマ区切りで
option domain-name-servers hoge1.machtype.com, hoge2.machtype.com;
#NTPサーバ(対応しているPCは自動で時刻あわせなるのかな?
option ntp-servers ntp.machtype.com;
#時間を+9時間に
option time-offset 32400;
#DDNSサーバに対してNSUPDATEを行う
zone x.168.192.in-addr.arpa. {
primary 192.168.x.x;
}
zone machtype.com. {
primary 192.168.x.x;
}
#割り当てるネットワークを定義
subnet 192.168.x.0 netmask 255.255.255.0 {
#割り当てる範囲
range 192.168.x.240 192.168.x.250;
#デフォルトゲートウェイ
option routers 192.168.x.1;
# ブロードキャストアドレス
option broadcast-address 192.168.x.255;
#PC毎に設定
host hoge-pc1 {
#DNS登録ホスト名を設定
option host-name "hoge-pc1.machtype.com";
#任意MACアドレスには固定でIPを割り当て(FW超えの通信をするときIPが変わると困る時)
hardware ethernet 08:00:37:**:**:**;
fixed-address 192.168.x.15;
}
#ゲートウェイの切替や、切り分けをしたいときはこんなこともできる。
host hoge-pc2 {
option host-name "hoge-pc2.machtype.com";
hardware ethernet 00:E0:18:**:**:**;
fixed-address 192.168.x.66;
#option routers 192.168.x.1;
option routers 192.168.x.2;
}
}
上へ トップページへ
PROXY編 -squid-
また長々とファイルを読み込んでいる。
こんなときにイライラしませんが?
そんなときはプライベートプロキシを作りましょう。
関連サイト:http://www.squid-cache.org
###ソースをダウンロード###
wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE7.tar.gz
###展開###
tar zxfv squid-2.5.STABLE7.tar.gz
###移動###
cd squid-2.5.STABLE7
###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/squid-2.5
###コンパイル###
make
###インストール###
make install
###実行###
/usr/local/squid-2.5/sbin/squid
FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname'
CPU Usage: 0.060 seconds = 0.050 user + 0.010 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 260
Aborted
'visible_hostname'を設定しろって言われたので
【 /usr/local/squid-2.5/etc/squid.conf を編集】
visible_hostname proxy.machtype.com
↑DNSに登録されている自分のドメイン名を記述
デフォルトポートは3128ですが、3128と8080はよく使われていて、なんか嫌なので9981に変更
http_port 9981
###実行###
/usr/local/squid-2.5/sbin/squid
なんか突然終了している。
/var/log/message を見てみると
ディレクトリに権限与えろとか、「-z」オプションで、キャッシュディレクトリ構築しろとか言われているので
/usr/local/squid-2.5/sbin/squid -z
###実行###
/usr/local/squid-2.5/sbin/squid
よし、ブラウザのproxy設定をして、いざアクセス!!
あらっ「Access Denied」って、デフォルトセキュリティ高いのね^^;
【 /usr/local/squid-2.5/etc/squid.conf を編集】
http_access allow all
###実行###
/usr/local/squid-2.5/sbin/squid
やっといけたよ^^
上へ トップページへ