2007年01月10日
$ df -i
みなさんiノード数見てますか?(長島風に)
私ここしばらく見てませんでした。
ログは毎日監視してるんだけど、iノード数MAXを越えてもログって吐かないのな。
新規ファイルが作られないだけで、システムも半端に動くもんだから、お客さんに指摘されるまで気付かなかったよ。。。orz
ここで一句
あぶないよ こまめにみよう df -i
2006年09月20日
qmail + vpopmailな環境でサブミッションポートからの送信を行う
OP25B(Outbound Port 25 Blocking)を行うプロバイダが増えてきた。
ぷららに加えてJCOMなんかも導入してきたようなので、無視できなくなってきた。
qmail + vpopmailな環境でサブミッションポート(Port 587)からの送信を行えるように設定をしてみた。
とりあえず構築する環境を次のような条件に決めた。
(1). Submissionポートからのローカルへの配送は許可しない(スパム防止)
(2). 送信認証はpop before smtpもしくはsmtp-authで行う
(3). smtp-authはvpopmailアカウントで認証
やり方はいろいろあるのだろうが、せっかく動いている現行qmailには触らない方向で行くことにした。
submisson専用のqmail-smtpdを作り、587でそれを動かすことにする。
まずはqmailを展開。そしてリネームしsubmisson専用のソースディレクトリとする。
$ tar xvfz qmail-1.03.tar.gz
$ mv -i qmail-1.03 qmail-1.03-submission ← リネームして専用のソースディレクトリを作る
smtp-authにはqmailのsmtpd-authパッチを使った。
http://members.elysium.pl/brush/qmail-smtpd-auth/
その他この辺を参考に必要そうなパッチも適当に当てる。
http://www.qmail.org/top.html#patches
展開しパッチを当てる。
$ tar xvfz qmail-smtpd-auth-0.31.tar.gz
$ cd qmail-1.03-submission
$ cp -i ../qmail-smtpd-auth-0.31/*.* ./
$ patch < auth.patch
$ patch -p1 < ../qmail-date-localtime.patch ← 関係ないだろうけどおまけ
$ patch -p1 < ../qmail-smtpd-relay-reject
$ patch -p1 < ../qmail-1.03.errno.patch
条件(1)を満たすため、rcphostsを無視する仕組みが必要だ。
丁度そのようなパッチがあったので使うことにする。
(パッチの中身を見るとわかるが、専用smtpdを使うのであれば環境変数SUBMISSIONなど見なくてよい。自分でソースを書き換えた方がキレイかも。)
http://www.aripollak.com/wiki/Main/QmailMSP
$ patch -p1 < ../qmail-netqmail-1.05-09-msp.patch
$ make
で、コンパイル完了。専用のqmail-smtpdができる。
# vi /etc/inid.d/qmail
下記を従来のtcpserver起動の後に追記する(1行で記述)
------------------------------
SUBMISSION="" exec tcpserver -H -R -l example.com -v -x /var/vpopmail/etc/tcp.smtp.cdb -u "qmaildのUID" -g "nofilesのグループID" 0 587 /var/qmail/bin/qmail-smtpd-submission example.com /var/vpopmail/bin/vchkpw /bin/true 2>&1 | /var/qmail/bin/splogger smtpd-sub 3 &
------------------------------
smtp-authのためにvchkpwのパーミッションを変更。
これをやらないと認証に失敗する。
# chown root:root /var/vpopmail/bin/vchkpw
# chmod 4755 /var/vpopmail/bin/vchkpw
# /etc/init.d/qmail stop
# cp -i /usr/local/src/qmail-1.03-submission/qmail-smtpd /var/qmail/bin/qmail-smtpd-submission
# chown root:qmail /var/qmail/bin/qmail-smtpd-submission
# /etc/init.d/qmail start
------------------------------------------------------------------------------------
これで、587ポートに専用のqmail-smtpd-submissionが立ち上がったはず。
psやnetstatで確認しよう。
smtp-authを使って認証するとログにpassword faildと記録されるが、これはまず先にcram-md5で認証を行おうするかららしい。無視してOKっぽい。
以上で完成。
smtp-authを使わなかったり、587からのスパムを気にしない(どうせ25から来るしね)のであれば、普段使ってるtcpserver起動のコマンドのsmtp(25ポート)を587にしたり、iptablesで587を25にforwardするだけでよいかも。
いずれにしてもパッチの数が多かったり、専用のソースディレクトリを作ったりで、qmailだと標準的な運用はもう難しいなあ。
シンプルさが売りだったのにすでに全然シンプルじゃないし。
そろそろほかのMTAに乗り換えかな。
2006年01月17日
PHP4.4.2リリース
チェンジログはこちら
http://eth.jp/hiki.cgi?PHP-Changes-4.4.2
ようやくmb_string_mailが直ったようです。
あとは、
「・ヘッダのインジェクションを、複数行出力されたヘッダを一行とすることで防ぐ様に. (Ilia)」
が大きいかも。
これでヘッダ汚染を考慮せずにlocationヘッダでページ移動できるようになったということかな?
2005年09月18日
PostgreSQLでvacuumしてもDB領域が開放されない
PostgreSQL7.2.xで
$ vacuumdb --full --all
を実行してもディスク使用量が開放されないという問題が起きた。
dumpallしてテスト環境にrestoreすると1/5程度しかディスクは使用されない。
REINDEXをかけてもダメで悩んでいたが、postgresql.confのmax_fsm_pagesを大きく変更することで解決した。
参考:
http://ml.postgresql.jp/pipermail/pgsql-jp/2002-May/009633.html
max_fsm_pagesはデフォルトの100倍程度を設定していたので安心していたのだが、年次処理で過去のログを削除する際の容量が設定値を超えていたらしい。
過去ログなどをまとめてDELETEする際は注意が必要なようだ。
2005年09月01日
Courier-IMAP 4.0.4 をインストールする
Courier-IMAPのバージョンを3系から4系に上げてみた。
このソフトの設定には泣かされた経験があるのでイヤだなぁと思っていたが、案の上かなり苦戦した。
4系からは認証部分が分かれたため、courier-authlibを先にインストールする必要がある。
$ ./configure --without-authuserdb --without-authpam --without-authldap --without-authpwd --without-authshadow --without-authpgsql --without-authmysql --without-authcustom --without-authpipe --with-redhat
$ make
# make install
# make install-migrate
# make install-configure
でインストールした。
続いて /usr/local/etc/authlib/authdaemonrc を編集
vpopmailの認証を使うので、authmodulelist="authvchkpw" としてやる必要がある。
distのファイルがその設定だったのでそのまま使う。
続いてCourier-IMAPのインストール
展開して
$ ./configure --without-authmysql --without-authldap --without-authpgsql --with-redhat
$ make
$ make check (こけても気にしない)
# make install
# make install-configure
でOK
起動スクリプトは展開したソースの直下にimapd.rcがあるのでコピーして使う。
chkconfigの記述がないので追加してやる。
4系からauthdaemondというデーモンが先に起動していないと認証できないので
起動スクリプト内に
authdaemond=/usr/local/sbin/authdaemond
start)
${authdaemond} start
・
・
・
stop)
・
・
・
${authdaemond} stop
のように書いてやった。
この辺はかなり適当。
stopすると止まり、startすると動いているのでまあいいんじゃないだろうか。
起動してないとmaillogに
imapd: authdaemon: s_connect() failed: No such file or directory
というエラーが出る。
これに気づくのに1時間以上かかった。
さて起動して動作確認
今度はmaillogに
imapd: Failed to create cache file: maildirwatch (user_name)
imapd: Error: Input/output error
imapd: Check for proper operation and configuration
imapd: of the File Access Monitor daemon (famd).
というfam関係のエラーが出る。
http://bonsara.seesaa.net/article/4873040.html によると
/usr/lib/courier-imap/etc/imapd ファイルの
IMAP_USELOCKS と IMAP_ENHANCEDIDLE を0にしてやると解決するようだ。
しかし
# Setting IMAP_USELOCKS to 1 will use dot-locking to support concurrent
# multiple access to the same folder. This incurs slight additional
# overhead. Concurrent multiple access will still work without this setting,
# however occasionally a minor race condition may result in an IMAP client
# downloading the same message twice, or a keyword update will fail.
#
# IMAP_USELOCKS=1 is strongly recommended when shared folders are used.
とあるので、多重アクセス時のロックが弱くなるようだ。
まあとりあえず気にしないことにする。
これで一応作業終了。
やっぱり3時間以上かかったよ。
はー、実はCourier-IMAPって使わない方がいいんじゃないだろうか。
そろそろ他のIMAPサーバも開拓してみようか。
2005年03月15日
S.M.A.R.T.でHDの状態をチェックする
サーバ機のHDDが飛ぶと困るので、SMART機能を使ってHDDの状態を毎日チェックすることにした。
インストールはこちらからお好みの方法で。
http://smartmontools.sourceforge.net/
余計なデーモンを動かしたくないので、smartdは使わないことにした。
smartdを使うと異常を監視しメールが飛んでくるらしい。
# 温度チェック
smartctl -a /dev/hda | grep Temp
# エラーチェック
smartctl -l error /dev/hda;
現在サーバにはRAID-0で2台のHDDが入っているのだが、36℃・38℃と、やはり上のHDDの方が2℃程温度が高い。
今のところ問題はないだろうけど夏場はどうなるかチェックだね。
参考:
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/521smartinfo.html
※追記※
MRTGでグラフ化するようにしてみた。
MRTG設定ファイル
### Disk Temperature ###
#
Target[disktemp]: `/etc/mrtg/scripts/disktemp.sh`
MaxBytes1[disktemp]: 70
MaxBytes2[disktemp]: 70
#Unscaled[disktemp]: dwmy
Options[disktemp]: gauge, absolute, growright, nopercent, noinfo
YLegend[disktemp]: Disk Temp(C)
ShortLegend[disktemp]: (C)
LegendI[disktemp]: / Disk1 Temp
LegendO[disktemp]: / Disk2 Temp
Legend1[disktemp]: / Disk1 温度
Legend2[disktemp]: / Disk2 温度
Title[disktemp]: Disk Temperature
PageTop[disktemp]: Disk Temperature
グラフ用のシェルスクリプト
#!/bin/bash
DISK_TEMP_HBA=`/usr/sbin/smartctl -a /dev/hda | grep Temp |awk '{print$10}'`
DISK_TEMP_HBC=`/usr/sbin/smartctl -a /dev/hdc | grep Temp |awk '{print$10}'`
UPTIME=`uptime | awk '{print $3$4}' | sed -e "s/,//g"`
echo "$DISK_TEMP_HBA"
echo "$DISK_TEMP_HBC"
echo "$UPTIME"
echo "Disk Temperature"
生成されたグラフはこんな感じ。緑がディスク1、青がディスク2。

室温に影響されるので、行動パターンが見て取れる。
ちなみにこの日の行動はこんな感じ。
20時過ぎに食事のため外出 → 戻って1時まで仕事 → 就寝
→ 起床 → 9時から仕事スタート
結構面白い。
2005年02月26日
RedHat9に最新のSATA(aacraid)ドライバを入れる
DELLのPowerEdge750などを買うと、CERC SATA 1.5Gb(adaptecの2410SAのOEM?)などの
シリアルATAのRAIDカードが付いてきますが、今となっては古くなってしまったRedHat9では認識できません。
インストールは
http://www.adaptec.com/worldwide/support/driverdetail.jsp?sess=no&language=English+US&cat=/Product/AAR-21610SA&filekey=aacraid-drv-1.1.5-2371-i686-rh9.img
から起動ディスクを作り(WinImageなどのディスクイメージ復元ソフトを使うと便利)、問題なくインストールができるのですが、
問題はセキュリティ対策などのためにkernelをアップデートする場合です。
当然のことながらkernelをアップすると、新カーネルにはdriverが入っておらず、起動→kernel panicとなってしまいます。
そこで、ソースからドライバをmakeし、kernelをupdateしてやる必要が出てきます。
【手順】
1. 最新のkernelとkernel-sourceをrpmからインストールします。
2. aacraidの最新ドライバソースをダウンロードしてきます。
http://www.adaptec.com/worldwide/support/driverdetail.jsp?sess=no&language=English+US&filekey=aacraid-src_1.1.5.tgz
3. Makefileに対応させるため、リンクを貼る必要があります
# cd /usr/src/
# ln -s linux-2.4 linux
(/usr/src/linuxへ新カーネルからリンクされるようにシンボリックリンクを貼る)
4. /usr/src/linux/drivers/scsi/aacraid内のファイルを最新に更新します。
# cd /usr/src/linux/drivers/scsi/aacraid
# tar xvfz [落としてきた最新ドライバソース].tgz
# chown root:root *
5. カーネルのMakefileを書き換えます。
できあがったaacraid.oが起動カーネルと違うバージョン表記の場合、エラーとなり起動できないからです。
# cd /usr/src/linux
# vi Makefile
EXTRAVERSION = [kernel.var.custom] の行をrpmのkernelと同じ名称にします。
(例:EXTRAVERSION = -42.9.legacy.smpとか)
6. カーネルをmakeします。
# make mrproper
# cp -i config/[自分の環境にあったconfigファイル] ./.config
(例:cp -i configs/kernel-2.4.20-i686-smp.config ./.config)
# make oldconfig (設定を変えるならmake menuconfig)
# make dep clean modules
[コンパイルが終わるまで数時間待つ]
7. モジュールのインストール
# make modules_install
# cp -i /usr/src/linux/drivers/scsi/aacraid/aacraid.o /lib/modules/[new.kernel.ver]/kernel/drivers/scsi/
8. 起動イメージを作成
もしすでにイメージがあるなら(rpmで入れた場合、自動で作成されている)
/boot/initrd-[kernel.ver].img をリネームして待避して、
# /sbin/mkinitrd initrd-[kernel.ver].img [kernel.ver]
で最新イメージを作成
9. 再起動
/boot/grub/grub.confを確認し、起動ファイルに間違いが無いことを確認し再起動
以上で問題なく起動するはずです。
RedHatでは無い場合も、aacraidでは無い場合も基本は一緒だと思います。
aacraidドライバのread.meには、有用な情報が全く何も書いていなかったため苦労しました。
みなさんもがんばってください。
参考にしたサイト:
http://solaris.bluecoara.net/linux/fasttrak.phtml
http://www.devdrv.co.jp/linux/initrd-modules.htm
2005年02月17日
i855GMEm-LFSの内蔵NICをLinux上で認識させる
PentiumMマザーi855GMEm-LFSにRedHat9をインストールした。
RedHat9とはいささか古いんじゃないの?とお思いだろうけど、有料RPMサービスで延命中なのでご安心を。
わずかなお金を払っても使い慣れたものが一番。手間を考えれば安い。2008年までのサポートも保証されてるしね。
http://aopen.jp/products/mb/i855gmemlfs.html#spec
によるとNICはMarvell Gigabit PCI LANチップとのこと。当然自動認識はしない。
まずはgoogleでありかを探し、ドライバをダウンロード
http://www.syskonnect.com/syskonnect/support/driver/zip/linux/
install-x_xx.tar.bz2 (xはバージョン番号、最新版を落とそう)
$ bzcat install-x_xx.tar.bz2 | tar xvf -
で解凍し、中に入っているREADMEファイルを読む。
手順的にはシェルを実行し、modprobeするだけ。
$cd Driverinstall
suして
# ./install.sh
メニューが出てくるので「1」を押して、
# modprobe sk98lin
で終わり。簡単。
念のため確認してみよう。
$ dmesg
(略)
divert: allocating divert_blk for eth0
sk98lin: Network Device Driver v8.13.1.3
(C)Copyright 1999-2005 Marvell(R).
eth0: Yukon Gigabit Ethernet 10/100/1000Base-T Adapter
PrefPort:A RlmtMode:Check Link State
divert: allocating divert_blk for eth1
eth1: Yukon Gigabit Ethernet 10/100/1000Base-T Adapter
PrefPort:A RlmtMode:Check Link State
ip_tables: (C) 2000-2002 Netfilter core team
eth0: network connection up using port A
speed: 100
autonegotiation: yes
duplex mode: full
flowctrl: symmetric
irq moderation: disabled
scatter-gather: enabled
tx-checksum: enabled
rx-checksum: enabled
ちなみにデュアルNICだけど片方は殺してある。そろそろギガビットハブでも買おうかなぁ。
kernel-sourceが入っていないと怒られるので事前にインストールしておこう。
kernelを入れ替えるとドライバも再インストールになるので注意が必要。
2005年02月16日
LinuxでソフトウェアRAID
新サーバはソフトウェアRAIDで行くことにした。
ハードウェアRAIDは次のような理由で却下。
1.Linuxで動くまともなものを買うと結構高い。
2.OSからはscsiに見えるが、CPUを喰いパフォーマンスは良くないらしい。
3.S.M.A.R.T.情報が見れない。
(2や3は私が前に触ったものがダメなだけかもしれんけど)
最近はCPUの進化によりソフトウェアRAIDのパフォーマンスはなかなかのもので、
下手なRAIDカードを上回るパフォーマンスを出せる場合もあるとのこと。
楽しみ楽しみ。
本当はZerkDiskのような、OS側からは1つにしか見えないという、
ドライバレスなミラーリングカードが一番なんだけど、これこそ高いので断念。
(先日数千円でヤフオクに出ていたが落札しそこねた)
○ソフトウェアRAIDの構築方法
メジャーなディストリビューションであれば、インストーラーでパーティーションを設定するときにRAID設定ができる。
ディスクを2つとも同じ容量のパーティションで切って設定するだけ。簡単。
○動作確認
# cat /proc/mdstat
で設定状況が確認できる。
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hda3[0] hdc3[1]
1052160 blocks [2/2] [UU]
md1 : active raid1 hda2[0] hdc2[1]
73400896 blocks [2/2] [UU]
md2 : active raid1 hda1[0] hdc1[1]
2096384 blocks [2/2] [UU]
unused devices:
2/2 や UU となっていればOK。
○復旧方法の確認
万が一のために復旧方法を予習しておく。
サーバの電源を落とし、HDD1の電源ケーブルを抜き起動する。
状態を確認すると
Personalities : [raid1]
read_ahead 1024 sectors
md0 : active raid1 hda3[0]
1052160 blocks [2/1] [U_]
md1 : active raid1 hda2[0]
73400896 blocks [2/1] [U_]
md2 : active raid1 hda1[0]
2096384 blocks [2/1] [U_]
なるほど、2/1になってる。Uも一つ足りない。
復旧方法は
# /sbin/raidhotadd /dev/md0 /dev/hdc3
等でOK。(デバイス名のところは適当に読み替えること)
ちなみに大容量ディスクだとかなり時間がかかる。
ところで、24時間稼働のこのサーバ、当然HDDが死ぬのは稼働中。
てなわけで、稼働中に線を引き抜いてみることにした。
意を決して電源ケーブルをブチッ!
・・・おお、なんともない! 成功だ。
これで安心して本番稼働できる。
問題は、、、専用ハードと違いピーピー音がしないから、ディスクが逝ったことに気づけるかどうかだなぁ。
ログをちゃんと見ておけばいいんだけどさ。
2004年06月29日
TripwireでIDS
最近雑誌などに良く出てくるIDSを導入してみた。
今回はホスト型IDSの代表Tripwireを使った。
まずはrpmでインストール
# rpm -ivh tripwire-2.3.1-17.i386.rpm
設定ファイル群をいれるディレクトリ/etc/tripwireができる。
1.パスフレーズを決定
# /etc/tripwire/twinstall.sh
tripwire用のパスフレーズを決定する。
【サイトキー】
設定・ポリシーファイルの暗号化用
【 ローカルキー】
DBの更新、レポートファイルの保護用
今後tripwireを使用する度に使用するので忘れないようにすること。
2.設定ファイルを編集する
設定に使うファイルは2つある。
・twcfg.txt - tripwire自体の設定
・twpol.txt - 監視のポリシー
今回は次のところだけを変更した。
----- twcfg.txt -----
MAILNOVIOLATIONS =true # エラーの無いときは通知メールを出さない
----- twpol.txt -----
rulename = "hogehoge"の後ろにカンマを打って、続けて
emailto = [レポートメールの宛先メールアドレス]
を追記(各セクション毎に宛先を変えられるため追記場所は一杯ある)
3.設定ファイルを暗号化
# /usr/sbin/twadmin -m F -c tw.cfg -S site.key /etc/tripwire/twcfg.txt
# /usr/sbin/twadmin -m P -c tw.cfg -p tw.pol -S site.key twpol.txt
4.比較元DBの作成
# /usr/sbin/tripwire -m i
(ファイルが見つからないエラーが出た場合はポリシーファイルをコメントアウト)
5.比較処理のジョブをcronに登録
# crontab -e
0 1 * * * /usr/sbin/tripwire -m c -M
以上。
使った感想としては「設定めんどすぎ!」である。
ポリシーを自動で設定ツールとか作れそうだけどね。
あと動作重すぎ!
設定とかを変えた後にどうしてもDBの再作成が必要になるんだけど、Celeron400じゃきっついなぁ。
参考:
http://www.atmarkit.co.jp/flinux/rensai/security07/security07.html
http://www.jp.redhat.com/manual/Doc9/rhl-rg-ja-9/s1-tripwire-update-policy.html
2004年06月27日
Apacheログでワームの隔離
現代のような物騒な世の中ではApacheのログにはワーム関連のログで埋め尽くされる。
おかげでごくわずかなアクセスしかないサイトでもログを漁るのが大変でしょうがない。
ログを見やすくするためワームからのアクセスは隔離する。
ワームはIPアドレスでアクセスしてくるという特性を利用する。
VirtualHostの指定で先頭にダミーの設定を置く。
httpd.conf を修正
---------------
NameVirtualHost *
# ワーム隔離のためのダミー
<VirtualHost *>
DocumentRoot /usr/local/apache/htdocs
ServerName dummy.host
CustomLog logs/dummy-access_log combined
ErrorLog logs/dummy-error_log
</VirtualHost>
# 通常アクセス用
<VirtualHost *>
DocumentRoot /home/example
ServerName www.example.jp
CustomLog logs/example.jp-access_log combined
</VirtualHost>
・
・
・
・
---------------
なお、ワームだけではなくBB等の監視をIPアドレスベースにしておけば、これらのログも隔離され非常に便利だ。
2004年06月18日
LinuxへのHDDの増設
LinuxへのHDDの増設
ディスクを取り付け再起動。
# demsg | grep hd
とかでディスク情報が見つかる。無い場合は
# demsg | less
とかでゆっくりと探す。SCSIの場合は名前が違うので注意。
ここでは「hdd」という名前で認識されているとする。
なおパーティーションを切りたいときはfdisk等を使ってパーティーションを設定する。
今回はsmbの共有ディスクとして使うためパーティションは切らなかった。
# mkfs -t ext3 /dev/hdd
でファイルシステムを作る。数分でファイルシステムの作成が終わる。
うまくマウントできるか試す。
# mount -t ext3 /dev/hdd /mnt
# df -h
で確認。
OKなようなら起動時に自動でマウントするように設定。
# vi /etc/fstab
で追加を行う。
/dev/hdd /mnt-point ext3 defaults,noatime 1 1
/mnt-pointはマウントする場所、存在するディレクトリじゃなきゃダメ。
defaultsのあとのnoatimeは、読み込みを速くするための設定。
通常atimeという読み込み時刻の記録が行われるが、
smbの共有ディスクの場合だといらないのでこのオプションを設定する。
これで読み込みが2倍くらい速くなる。
ただatimeを使うtmpwatch等が使えなくなるので、atimeを使わないパーティーションに使用すること。
2004年05月28日
vim6で日本語編集
RedHat標準インストールのvimでは、EUC-JPのファイルは編集できるが、SJISは文字化けする。
これではHTMLやPHPファイルが直接編集できず不便である。
次の設定を行えば編集できるようになる。
1.ホームディレクトリに「.vimrc」を作成。
2.次のように記述
set encoding=utf-8
set termencoding=euc-jp
set fileencodings=euc-jp,cp932,utf-8
でOK。
cp932がSJISを意味してるらしい。試してないけどUTF-8も開けるのかも。
設定の意味をまるで理解しておらず、なぜset encoding=utf-8?とか思うけど、
無事編集できてファイルも文字化けとかしていないので良しとした。
ただし半角カナは文字化けして表示される。
しかし半角カナが交ざったファイルを編集しても他が文字化けしたりはしないようだ。
nkfだと半角カナが勝手に全角カナになってしまったりするが、そのような問題も起こらないようだ。
2004年05月25日
vsftpdを使ってみた
今までwu-ftpdやproftpdしか使っていなかったが、
仕事で新サーバを立てることになったのでvsftpdに手を出してみることにした。
vsftpdのvsはVerySecureの略だそうで、openbsdも採用しているくらいだからさぞかしセキュアなんだろう。
RedHat9にも標準搭載だったが、ftpはほとんど使わないのでつかったことがなかった。
本家はここ http://vsftpd.beasts.org/
下記のサイトを参考にさせてもらった
http://www.aritia.org/hizumi/dsl/page_23.htm
従来のftpとちがってxinetd経由で起動させないらしい。
設定ファイルは/etc/vsftpd/vsftpd.confとなる。
初期値から変更した箇所は次の通り。
#Anonymousログイン却下
anonymous_enable=NO
# バナー非表示
ftpd_banner=ftpd
# 悪さするやつをBAN(/etc/vsftpd.banned_emailsを作成)
deny_email_enable=YES
banned_email_file=/etc/vsftpd.banned_emails
# ローカルユーザは全員チェンジルート
chroot_local_user=YES
設定もシンプルで簡単。結構良いかも。
なにせwu-ftpdもpro-ftpdもセキュリティホールが結構良く出るからね。
何より安全なソフトが一番。
2004年05月24日
セキュリティホール情報
NetSecurity
https://www.netsecurity.ne.jp/article/6/13082.html
より抜粋。
▽ Apache mod_ssl----------------------------------------------------
Apache mod_sslは、ssl_util_uuencode_binary機能が原因で
スタックベースのバッファオーバーフローを引き起こされるセキュリティホールが存在する。
この問題が悪用されると、リモートの攻撃者にDoS攻撃を実行されたり
システム上で任意のコードを実行される可能性がある。
2004/05/24 登録
▽ Perl / ActivePerl-------------------------------------------------
PerlおよびActivePerlは、複製オペレータがユーザ入力を適切にチェックしていないことが原因で
整数オーバーフローを引き起こされるセキュリティホールが存在する。
この問題が悪用されると、リモートの攻撃者にDoS攻撃を受けたりシステム上で任意のコードを実行される可能性がある。
2004/05/24 登録
perlの影響がどこまでなのか知りたいなぁ。
あとmod_sslはコンパイル手順が面倒なため勘弁して欲しい。
2004年05月19日
LinuxへのTomcat5のインストール
J2SEのlinuxバイナリをhttp://java.sun.com/j2se/からダウンしてくる。
インストールは実行権を与えてrootで実行すれば展開されるので、好きな場所に設置する。
今回は、/usr/local/j2sdk/として設置した。
一応動作を確認する。
$ /usr/local/j2sdk/bin/java -version
でバージョンが表示されればOK。
続いてtomcatをダウンしてくる。
http://jakarta.apache.org/に置いてある、jakarta-tomcat-5.0.24のlinuxバイナリを使用した。
tar.gzを展開して、好きな場所にコピーすれば良い。
/usr/local/tomcatとして設置した。
.bash_profileを変更し、環境変数を設定。
export JAVA_HOME=/usr/local/j2sdk
export TOMCAT_HOME=/usr/local/jakarta-tomcat
export CLASSPATH==.:$TOMCAT_HOME/common/lib/servlet.jar:
tomcatの起動は
# /usr/local/tomcat/bin/startup.sh
正常に動作しているなら
http://(IP_ADDRESS):8080/でtomcatの画面が表示される。
続いてapache経由でtomcatを使用するように設定。
同じくhttp://jakarta.apache.org/から
Tomcat Web Server Connectors (JK2 2.0.4 Source Release tar.gz)をダウンしてくる。
インストール手順は、jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/INSTALLに書いてある。
どうやらjakarta-tomcat-connectors-jk2をコンパイルするには、aprとapr-utilというのが必要らしい。
wgetで取ってくる。
$ wget http://www.apache.de/dist/apr/apr-0.9.4.tar.gz
$ wget http://www.apache.de/dist/apr/apr-util-0.9.4.tar.gz
ダウン後/usr/local/srcに展開する。
$ cd /usr/local/src/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2
$ ./configure --with-apxs=/usr/local/apache/bin/apxs \
--with apr=/usr/local/src/apr-0.9.4 \
--with-apr-util=/usr/local/src/apr-util-0.9.4
$ make
$ cd ../build/jk2/apache13
# /usr/local/apache/bin/apxs -n jk2 -i mod_jk2.so
でインストールはOK。
/usr/local/apache/conf/workers2.propertiesを作成。内容は次の通り。
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
[uri:/examples/*]
worker=ajp13:localhost:8009
その後httpd.confを書き換えてapacheを再起動。
[追加]
LoadModule jk2_module libexec/mod_jk2.so
http://(IP_ADDRESS)/examples/
が見られればOK。
2004年04月26日
tcpserverのログ出力先を変更する
Linux覚え書き
tcpserverのログ出力先を変更する。
tcpserverのログが/var/log/messageに出力されうざい場合はここを変更。
起動スクリプト
/etc/init.d/qmailのsploggerの引数を変更する。
/var/qmail/bin/splogger smtpd 3 &
↓
/var/qmail/bin/splogger smtpd 2 &
ファシリティ:
0:user
1:kern
2:mail
3:daemon
4:auth
参考:
http://ucchi.avis.ad.jp/install/qmail.html
のおまけ(2)
2004年04月07日
IntelのGigabitNICがRedHat9で認識しない
DELLのPowerEdge750というマシンにIntelのGigabitNICが付いている。
これはRedHat9では自動認識はしないので、手動でドライバをインストールしなくてはならないのだが、
これに何故か苦戦した。
IntelのNICドライバのインストールは、i810やi815の出始めの頃に苦労した経験があるので、
鼻歌を歌いながらインテルのHPからドライバをダウンロード
tar.gzを展開して
# make install
# insmod e1000
と打って、後は/etc/modules.confを・・・
ってエラーが出るよ。
Using /lib/modules/[kernel-version]/kernel/drivers/net/e1000.o
/lib/modules/[kernel-version]/kernel/drivers/net/e1000.o: init_module: No such device
Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters.
You may find more information in syslog or the output from dmesg
悩んだ悩んだ。
海外のMLとかも数時間あさったし。珍しく本気で英語も読んだ。
んで、結局どうなったかというと。。。しばらくたってあっさり解決した。
落としたドライバのバージョンが古かった。
インテルのダウンロードページをちょっと下にスクロールすると最新のバージョンが置いてあった。
それを使ったら3秒でインストールできた。
あああああああああ。。。時間返せ。
2004年01月04日
Linuxのバックアップ - Partition Imageを使って
月曜日から仕事初めなので、リハビリのため自宅サーバをいじることにした。
近々サーバを大幅変更する予定だし、年が変わって区切りが良いのでバックアップを取ることにした。
Linuxでは普通シングルユーザモードに落として、テープなどの媒体にバックアップを行う。
しかしテープドライブはSCSI用がほとんどである。
近年では業務用サーバでさえIDEなのに、自宅サーバがSCSI仕様であることはほとんど無いだろう。
なので私はネットワーク越しで他マシン上にrdumpコマンドでバックアップを取っていたのだが、
これが結構手間がかかる。
まずシングルユーザモードだとネットワークが通じないので、ランレベルを調整し、
パーティーションをパージ、その後リードオンリーでマウント。
inetd経由でrshを許可し、.rhostsファイルを置く、/etc/securityの設定や、
場合によってはpam.dに再設定も必要だ。
かなり面倒である。できることならやりたくない。
そこで今回はPartition Image(http://www.partimage.org/)を使うことにした。
この方法の何が良いかというと、このソフトはKnoppixに含まれていることである。
※つまるところKnoppix上で動けばバックアップソフトは何でも良い。
私が行った手順としては、
1.KnoppixのCDを入れサーバを起動(NICや周辺機器も一発認識!すばらしい!)
2.smbmount //[コンピュータ名]/[共有名] /mnt -o username=hoge で、ダンプ先となるWindowsマシンをマウント。
(NFSやもう一つ別ディスクを付けても良い)
3.# partimage でPartition Imageを起動し、バックアップ開始。
である。
テープなどを使うより、大幅に楽ができる。
ちなみにリストアもほぼ同じ手順で行うことができ、こちらも簡単である。
画面もわかりやすく逆ダンプなどの心配もない(w
またFATはもちろん今後のバージョンではNTFSにも対応するらしい。
唯一気になったのは、例えば10GBのHD(使用領域2GB)をダンプした場合、
10GBに満たないHDにはリストアできないことである。
当たり前といえば当たり前なのだが、使用領域分のディスク容量があればリストアできる仕掛けなら、
さらに便利なのにな、と思う。
Windows用の市販バックアップソフトであれば、この手のことには融通が利くのだが。。。
容量的にも速度的にも規格的にも、テープドライブは時代遅れのものになりつつある。
今後は仕事のサーバをいじる時でも、このKnoppixを使った方法にバックアップに切り替えていこうと思う。
参考:
@IT > Linux Square > Linux Tips Index > パーティションを丸ごとバックアップするには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/506partitionbackup.html
@IT > Linux Square > Linux Tips Index > Partition Imageのバックアップファイルをリストアするには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/507partitionrestore.html
2003年12月19日
Ctrl-Alt-Del
やってしまいました。
1Uのラックサーバ3台に、3つのキーボードを付けて作業してたんですよ。
1台はアイドル中、1台はDBの処理中、1台はBIOS設定中だったんですが、
BIOS設定のマシンだと思って、えーいと「Ctrl-Alt-Del」を押したら、、、、
ええ、見事にDBの処理中で、HDがガリガリいってるマシンが再起動しました。
慌ててチェックをしたところ、今回はなんとか事なきを得たようです。危ない危ない。。。
とりあえず同じ過ちを起こさないため、次のような設定を行いました。
「/etc/inittab」の「ca::ctrlaltdel:/sbin/shutdown -t3 -r now」の行をコメントアウト。
詳細:
http://www.jp.redhat.com/manual/Doc72/RH-DOCS/rhl-cg-ja-7.2/console-access.html
なお、マザーによってはCtrl-Alt-Delを無効にできるものもあるようです。
Ctrl-Alt-Delで再起動ってのは便利ですが、両刃の剣ですよね。
特にWindowsNT4.0とLinuxが同じ場所に設置してある場合なんて、もう大変。
(NT4.0はログインするためにCtrl-Alt-Delを押す必要があります)
PCエンジンのリセット機能(RUN&SELECTボタン)に勝るとも劣らない危険度です。
今回のこの事件で私は誓います。ヴードゥーの神様に誓います。
金輪際、Ctrl-Alt-Delのリセットは使わないと。
キーボードからマシンまで、どんなに離れていようとも、走ってリセットボタンを押しに行きます。
もしも私がCtrl-Alt-Delでリセットしているところを見かけたら、全力で往復ビンタしてください。
2003年12月04日
2003年11月05日
Redhat難民
2003/12/31でRedhat7.x, 8のErrataが終了となる。
参考:
http://slashdot.jp/article.pl?sid=03/11/04/084208&topic=61&mode=nested
多くのRedhat難民の発生が予想されるが、私もその一人だ。
サーバ保守に関わる手間を少しでも少なくするというのが、私のサーバ構築時のポリシーであった。
RPMで入れれるものは入れ、RHNで自動更新をかける。
ソースものでポートをListenするものを入れるときはDJBで製品で。
これらのおかげで半年間ホントに楽をさせていただいた。
ほぼノーメンテのため、サーバを動かしながら長期の旅にも出ることができた。
技術資料も豊富だし、コンパイル時や運用時のトラブルの解決も早い。
エンタープライズエディションには絶対手が出ないので、移行を考えねばならない。
現在考えている選択肢は次の通り。
1. えぃやぁとFedraに乗り換え。
2. 現行の構成をそのまま使い、有志の方々が作ってくれる(であろう)rpmで保守を続ける。
3. rpmで動いている物をソースに置き換えて、そのまま使用。
4. とりあえずRH9にアップグレード、春までぬくぬくと暮らす。
5. RHのパッケージ版(14800円)を買って、1年ぬくぬくと暮らす。
6. Gentooあたりに乗り換えて、殺伐と暮らす。
さてどうしよう。。。
気になるテクニカルニュース
LindowsがFrontpageライクなHTMLオーサリングツールを開発
- すげー楽しみ。脱Windowsの要素がまた一つ。
FreeBSD Update が 4.9-RELEASE の自動更新サポートを開始
- うまい具合に機能してくれれば、選択肢の一つになりえるかも。
PuTTY で ISO 2022 による日本語入力・表示を可能にするパッチ
ja_jp.UTF8を視界の端にいれつつ、ぼちぼち Teraterm -> PuTTyなのでしょうか。
2003年11月02日
screenあれこれ
私は海外のレンタルサーバを借りている。
SSHとかで接続中にちょっと席を外すと、すぐ回線が切れてしまう。
(おそらく我が家のルータが悪い)
topコマンドとかを走らせておくと大丈夫なのだが、つい忘れてしまう。
そこで落ちてもそこから作業が続けられるようscreenを使うことにした。
実は以前も少しだけなら使ったことがある。
screenは多機能で使い方を覚えるのが面倒なので、最低限の使用法だけを学んで使っていた。
$ screen でscreen起動
$ screen -d でデタッチ(screenを抜ける)
$ screen -r でアタッチ(screenを復元)
なおこれらはショートカットでも操作可能。
設定は「~/.screenrc」ファイルで行う
これも面倒なので最低限の設定のみ
escape ^z^z (私はC-aは行頭に戻るで多様する人なのでzをショートカットキーとして使用)
vbell off (Wuff! Wuff! とうるさいので黙らせる)
hardstatus alwayslastline "%w %c" (ウィンドウNoと時刻を表示)
3番目の設定により時刻は分単位で画面が更新されるため、これでSSH接続が切れることもない。
これは思わぬ効用だ。
画面下の黒い帯が気になる場合は、
「sorendition 5 90」や「sorendition u m」
などと.screenrcに追記すると良いだろう。
screen起動時には.bash_profileではなく.bashrcを読むため、そこに必要な設定を書く。
忘れっぽい私は、これだとscreen起動を忘れてしまうため、
.bash_profileに「screen -r」を追加。これでログイン時に自動起動される。
快適快適。
参考:
http://www.ayu.ics.keio.ac.jp/members/mukai/tips/screen.html
Webalizerでエラー
私はanalogも好きだが、どちらかというとWebalizer派である。(グラフと統計が見やすいから)
毎朝cron君からシステム管理のメールが来るのだが、今日は一通メールが多い。
中を見てみると次のように書いてある。
Error: Skipping oversized log record
ログがオーバーサイズ??
理由がわからないので検索すると同じことで悩んでいる人を発見した。
http://tarragon.jp/blogs/archives/000120.html
とりあえずはWebalizerがエラーを吐かないように設定すると良いらしい。
(webalizer.confのReallyQuietをyesに設定)
原因は80番ポートに来るワームの攻撃らしい。迷惑な話だわ。
根本対策はこの辺りを参考に。
http://tibbar.dip.jp/~rabbit/server/howto/right/apatch-log.html
2003年10月27日
Blogを作ってみた
MovableTypeというソフトを使ってblogページを作ってみた。
もう一度インストールする時のため、覚え書きを書いておくことにする。
○必要なソフトの用意
MT-2.64-full
apache
Jcode-0.82
mt-ja.2.64.tgz(MovableType日本語パッチ)
mysql
php
DB_File
DBD-mysql
楽なので全てrpmでインストールした。
Jcode.pmがありませんと出てきたので、これもインストールした。(これはソースから)
詳しくはこのへんを参考に
http://www.hideshi.jp/mt/
MT本体のダウンロードと日本語化パッチ当ては
http://rebecca.ac/milano/mt/readme/を参考に
実際のインストールここらあたりを参考に
http://tomo.no-ip.com/goodstream/movabletype/install.html
http://cheebow.sub.jp/docmt/archives/lolipop.htm(レンタルサーバへのインストール)
http://bloggers.ja.bz/sunouchi/archives/000042.php
初期設定までは上記の3つサイトにやり方が載ってる
エントリーは次のサイトを参考に
http://cheebow.sub.jp/docmt/archives/000008.html
日本語マニュアルはここ
http://www.cyberoz.net/city/as/translation/MT/mtmanual.html