私のメモです。参考になればいいですが、間違っていたらごめんなさい。
戯れ言 国産ディストリビューションの雄Linuxのディストリビューションは、
ここ
を見ると分かるように山ほどあるが、大きな流れはRedhat、Debian、Slackwareの
どれをベースにしているかである。その中で、
Vine Linuxは、現在
主流になっているRedhatをベースにした国産ディストリビューションである。「そこまで
するか?!」というほどほぼ全てを日本語化/対応していて、その安定性にも定評がある。
ただし、新機能を取り入れるのは遅いため、遊びに使うには面白みがない。そんなわけで、
緊急用としてセカンドPCにインストールしている
セカンドPCのハードウェアは今となってはずいぶん古くなった。ビデオカードは
MatroxのG200、サウンドカードはSoundBlaster16 AWE32である。Vine Linuxでももちろんサポート
されている。問題はネットワークカードであるが、メインPCと同じPlanexのFNW-9802-Tなので、
製品のドライバディスクにカーネル2.2系用のドライバが添付されているため、これも問題ない。
そのため、2.1や2.1.5のインストールは楽勝であった。
Xの設定はインストーラが自動でやってくれたが、サウンドはさすがにやって くれない。しかし、さすが多機能なRedhatをベースにしているだけあって、rootでsetupコマンド を実行して設定できる。Setupで行う場合、SoundBlaster16はISAバスのデバイスなので、 デバイスを自動認識してくれても、DMAやI/Oなどを手入力する。しかし、kudzuという起動時に 実行されるデーモンでは、インストーラが認識しないデバイスもある程度自動で設定してくれる。 SoundBlaster16もkudzuによって自動設定されたので楽チンであった。
上で書いた方法で認識できるのは、カーネルで設定するSound(OSS)である。 alsaを使う場合は、alsaconfでDMAなど手入力する必要がある。
ネットワークの設定は、インストール時に行える。
ホストネーム、ネットワークカードのIPアドレス、デフォルトゲートウェイ、などなど。。。
また、インストールが終了した後は、rootになってnetcfgコマンドで変更可能である。
せっかくLANを組んでいるのだから、sambaでのファイル共有とダイアルアップ ルーターの構築をしてみることにした。
今回は、LAN特集が組まれたACSII Linux Magaxine (2001.04号) があるし、
sambaは前回使っているので楽勝と思いきや、、、これがうまく行かない。そう、パスワードファイルが無いのである。
早速、雑誌に従って
# cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd
# chmod 660 /etc/smbpasswd
[global]
coding system = euc
client code page = 932
workgroup = mygroupe
server string = samba
security = SHARE
encrypt passwords = Yes
os level = 2
dns proxy = No
oplock break wait time = 1
printing = lprng
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No
[dl]
comment = data folder
path = /mnt/c/dl
writeable = Yes
root preexec = /bin/mount /mnt/c
root postexec = /bin/umount /mnt/c
セカンドPCのVine Linuxは緊急用なのであまりいじることはなく、 ときどきapt-getでセキュリティアップデートをしていたくらいである。だが、Vine Linux のウェブページに2.5βがあがったようなので、早速アップデートしてみた。
ISOイメージを焼いたCDからブートして、アップグレードインストールを
行ったのだが、起動ディスク(インストーラの起動ではなく緊急用の起動)の作成に失敗、
さらにアップデートしたVine Linuxでliloのインストールがめちゃくちゃで、起動しなく
なってしまった。(lilo.confを見ると、元の2.2.19カーネルのままインストールしていた。
さらに、元のカーネル2.2.19を削除している!!)
最近作成したRamFloppyを使ってlilo.confを修正し、
lilo -vでインストールしようとしたが、RamFloppyにはliloがないようでcommand not found
になってしまった。
Vine Linuxには取り立ててアプリケーションを入れているわけでもなく、 設定もネットワーク以外はほとんどいじっていなかったので、別パーティションにしている /homeを残して他を再インストールすることにした。しかし、Vine25-beta2-20020326.isoでの 再インストールは上記と同じエラーで起動すらしなかった。そこでVine25-beta1-20020314.iso をダウンロードしたCDでインストールしたところ、起動ディスクの作成に失敗はしたが起動できた。
ようやく2.5βが起動したが、今後のアップグレードなどで起動ディスクが必要に
なりそうな気がする。ウェブで調べてみると、
HOLON LinuxのFAQで
起動ディスクの作成方法を見つけた。それによると、
# fdformat /dev/fd0H1440
# mkbootdisk {kernel-version}
で起動ディスクを作れるようだ。しかし、実際にやってみると、mkbootdisk実行時にfloppyに
bad i-nodeがあるとかで止まってしまう。
そこで、フォーマット方法を下のように変えると同じ
メッセージが出るが無事に作成できた。
# mk2ext /dev/fd0
# mkbootdisk -v {kernel-version}
とある理由から、WWWサーバを立ててみることにした。 WWWサーバといえば、apacheである。 インターネット上に文書も豊富であり、設定に困ることも少ないだろう。 そんなわけで、下の通りインストール と設定を行った。
言うまでもなく、下のコマンド一発でインストールできた。
# apt-get install apache
VineLinuxはDebian同様にapt-getが使えるので、インストールはこれで終わり
である(楽チン!)。
apacheがちゃんと起動しているかどうかは、webブラウザを起動して、
URLに「http://localhost/」と入れてみると
わかる。こんなページが見えるはずで
ある。
apacheが無事起動したら、次はapacheとブロードバンドルータの設定である。
VineLinuxの場合、apacheの設定ファイルhttpd.confは
/etc/httpd/conf/以下に置かれる。初期状態でほとんど設定が済んでいるため、
編集するところといえばアクセス制限を加えるところくらいである。
.htaccessを使って認証を行うつもりなので、httpd.confを次のように
編集※した。
(アクセス制限を加えるには、access.confやsrm.confを使う
方法もあるが、これらはhttpd.confでも設定可能なのでVineLinuxでは編集するな
と書いてある。)
<Directory /home/httpd/html>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride All (default: None)
Order allow,deny
Allow from all
</Directory>
上の記述は、/home/httpd/html以下のディレクトリに対し、 .htaccessなどのファイルで設定を上書きすることを許可するように変更ている。 後は、/home/httpd/html以下で認証を行いたいディレクトリに.htaccessファイル を置けば、認証を要求するようになる。
まず、.htaccessで使用するパスワードファイルを作成する。
# htpasswd -c {パスワードファイル} {ユーザー名}
-cは新しくファイルを作成する場合のオプションである。 例えば、パスワードファイルを/etc/httpd/conf/.passwd.fishers、ユーザーをfishersなら 下のようになる。
# htpasswd -c /etc/httpd/conf/.passwd.fishers fishers
パスワードファイルは、誰でも読めるディレクトリ(drwxr-xr-x)以下に置かないといけない。 VineLinuxでは、/rootはroot以外は閲覧できない(drwxr-x---)ため、/root以下にパスワードファイル を置くと認証できないので注意(認証のプロンプトさえでない。)。
次に.htaccessを記述し、認証をしたいディレクトリ以下に置く。 .htaccessの書式は、次のようになるようだ。
AuthUserFile /etc/httpd/conf/.passwd.fishers
AuthName "Fishers 'Private Area "
AuthType Basic
require valid-user
パスワードファイルのある場所を示す。相対ディレクトリでもいいが、 その際の基準ディレクトリは/etc/httpd/confになる。
認証を要するディレクトリの名称のようだ。適当に付けておけばOKだろう。
認証のタイプの指定である。DigestとBasicがあるらしいが、 Digestに対応しているブラウザは少ないらしい。 そのため、基本的にはBasicを選択することになる。
認証を要求するユーザー名を記述する。 そのディレクトリ以下をWWWで閲覧する人すべてを 示すのが上述である。パスワードファイルに記述したユーザーだけに したければ、そのユーザー名を記述すれば良い。
ネットを調べると、.htaccessなどのファイルを読まれないように、 次の設定を.htaccessに記述しておくといいと書いてある。 VineLinuxのhttpd.confでは、この記述がhttpd.confにあり、 全ディレクトリに適応されているため、.htaccessに記述する必要は無い。
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
ここまで来れば、設定を有効にするためにapacheを再起動させる。
# /etc/init.d/httpd restart
次のようにして、動しているサービスを確認できる
# su -
(rootのパスワード入力)
# setup
これで出てくるメニューから「システムサービス設定」を選べばよい。 あるいは、VineLinuxのページの通り、 chkconfigコマンドを用いてもいい。 それが僕は面倒なので、これらの実体がある/etc/rcN.d/(Nはランレベルに当たる数字) で、SXXサービス名をKXXサービス名にmvしている。 apacheを起動する予定のランレベル3では、次のサービス以外は止めてしまった。
S01murasaki
S05kudzu
S10network
S12syslog
S20random
S45usbmgr
S56rawdevices
S75keytable
S85gpm
S85httpd
S95atd
S99local
apacheの設定が終わったので、いざ、公開である。 しかし、僕の家のPC環境はこんな風なので、 ブロードバンドルータに穴を空けないと外部から閲覧できない。 BRL-04Fでは、ローカルサーバで設定できる。WebブラウザでBRLー04Fの IPアドレスを入力→パスワード入力→「アドバンスド設定」→「バーチャル コンピュータ/ローカルサーバ」でローカルサーバの設定ができる。 そのウィンドウで、
本当に設定が完了しているかを確認するために、 56kモデムで接続してブロードバンドルータのWAN側ポートのIPアドレスを Webブラウザに入れてみたところ、ちゃんと/home/httpd/html/index.htmlが見れた。 (DNSサービスに登録してないので、IP直打ちしないと見れない)
WWWサーバを立ち上げ、しばらくしてログを見てみると、 1時間置きくらいにcmd.exe?〜とか、root.exe?〜というアクセスがある。 調べて見ると、どうやらNimdaワーム のようである。apacheが感染の恐れはないが、アクセスログが膨大になり解析が面倒 である。そのため、/etc/httpd/conf/httpd.confに以下の太字を追加すると 良いらしい(参考:FreeBSD でインターネットサーバ構築)。
SetEnvIf Request_URI default\.ida virus
SetEnvIf Request_URI root\.exe virus
SetEnvIf Request_URI cmd\.exe virus
CustomLog /var/log/httpd-access.log combined env=!virus
CustomLog /var/log/virus.log combined env=virus
上のようにすると、CodeRedやNimdaからのアクセスは/var/log/httpd/virus.log に記録されるようになり、それ以外のアクセスは通常のログファイル(/var/log/httpd/access_log) に記録されるようになる。
apacheのログをカスタマイズして、 うっとうしいNimdaを無視しているが、よくよく考えればiptablesでDROPして 応答しない方がいいと思われる。そこで、iptablesを設定することにした。
その方法の概要は、iptablesをapt-getでインストールし、
chainルールとtableを作成し、iptablesを起動時に有効にすればOKである。
詳細には次のように行った。
# apt-get install iptables
chainルールを決める前に、ポリシーを決定する
必要がある。僕の場合は、ブロードバンドルータがポート80番しか
通さないので比較的安全※であること、及びNimdaワーム
の攻撃があるIPアドレスが知人のIPアドレスではないことから、Nimda
ワームの攻撃を掛けてくるIPアドレスのみをDROPすることとした。
※Vinelinuxが外部へあけているポートは80番だけというのも
安心材料だと思う。
コマンドラインからchainを設定してもいいが、いちいち 打つのが面倒なので、次のシェルスクリプトを書いた。また、こうすることに よって、/etc/sysconfig/iptablesを直接編集しなくても良くなる。
iptables -F (chainルールの初期化)
iptables -P INPUT ACCEPT (INPUTポリシーの設定)
iptables -P FORWARD ACCEPT (FORWARDポリシーの設定)
iptables -P OUTPUT ACCEPT (OUTPUTポリシーの設定)
iptables -A INPUT -i eth0 -s 217.xxx.0.0/16 -d 0/0 -j DROP (NimdaのIPアドレスをDROPに設定)
シェルスクリプトが完成したらそれを実行し、 エラーが出なかったこと、及びiptables -Lで自分の予定通りに設定されている ことを確認する。
上記のシェルスクリプトを起動時に走らせれば良いのだが、 Redhat系Linuxではiptablesのchainが設定できた状態で次のコマンドを実行 する必要がある。
# iptables-save > /etc/sysconfig/iptables
これによって、/etc/init.d/iptablesスクリプトが読み込む ファイルが作成され、「システムサービス設定」でiptablesをOS起動時に有効に した際に、上記で作成したchainを実行してくれるようになる。
後はOS起動時にiptablesを起動するようにすればOKである。 コンソール上で「setup」とタイプして起動するメニューから、「システムサービス 設定」を選択し、iptablesにチェックを入れれば良い。或いは、次のように 実体(/etc/init.d/iptables)にシンボリックリンクを貼れば良い。
# ln -s /etc/init.d/iptables /etc/rc3.d/S08iptables
上述のネットワークの設定では、Linux上のファイルを Windowsから見るための設定であった。今度は逆に、Windowsの共有フォルダをLinuxでマウント できるようにした。これは、ウェブのコンテンツが別のPCの共有フォルダにある時に便利である。
samba-client、samba-common。
# apt-get install samba-client
でsamba-commonもインストールされる。
smbfsをサポート(CONFIG_SMB_FS=m)
さらにdefaultの言語をcp932に設定しておくと便利である。
(CONFIG_SMB_NLS_DEFAULT=y、CONFIG_SMB_NLS_REMOTE="cp932")
smbfsがサポートされていない場合は、カーネルの再構築をする必要がある。
(VineLinux2.6のGENERICカーネルではsmbfsをサポートしてます)
上記の準備が出来たら、次のコマンドでマウント出来る。
# mount -t smbfs -o username=ユーザー名,password=左記ユーザーのパスワード //マシン名/共有フォルダ名 /マウントポイント
オプション-oでは、workgroup=ワークグループ名も指定可能であるが、特に無くても mountはできる。また、オプションにcodepage=cp932,iocharset=euc-jpで日本語の NLSや文字セットを指定できるようだが、 Vinelinuxのsamba-client-2.0.10_ja_1.2-0vl1では出来なかった(2.2では無いため?)。
上記のmountコマンドだと、パスワードがディスプレイに丸見えになる。それが 嫌な場合は、passwordを書かなければよい。コマンド実行後にパスワード入力を 求められるが、その際はディスプレイに表示されないからである。
smbfsではなぜかmount時に/etc/smb.confを読みに行くようだ。
mount自体には支障は無いようだが、globalセクションを設定しておくと
codepage等の入力の必要が無くなるかも知れない。。。。
(VinelinuxではデフォルトNLSがcp932に指定されているため、
この確認は出来なかった。)
またまた、とある事情でFTPサーバを立ち上げることになった。 どのftpサーバがいいかいろいろ調べた結果、 ProFTP で立ち上げることにした。選定理由は、
# apt-get install proftpd
でインストール終了。
設定をする前に、どのようにポリシーで運用するのかを決める必要ある。 僕のftpサーバは、メンバーが端末からログインはしないことを考えて 次のように決めた。
上のポリシーを実現するため、次のようなディレクトリ構成にすることにした。
| ftpのホームディレクトリ | : /home/ftp | |
| メンバー個人専用のディレクトリ | : /home/ftp/メンバー名 | |
| メンバー全員が読み書き可能なディレクトリ | : /home/ftp/pub |
そこで、次のようにメンバーとグループを作成した。
# groupadd mymembers
# useradd -g mymembers -d /home/ftp/各メンバー名 各メンバー名
さらに、pubディレクトリをメンバー以外見れないようにする。
# chmod 770 /home/ftp/pub
余計なユーザ、グループ、ディレクトリを作成しないように上記の通りにしたが、 果たしてこれがベストなのかは全く自信なし(^^;;
このファイルは、ftpログインを拒否するアカウントが書かれたファイルである。
VineLinuxでは、あらかじめrootなどは記述されている。後は抜けているのを記述
するだけである。
また、端末にログインするユーザはftpを許可しないのでそれも加えた。
※このファイルにgroupを加えると、加えたグループに属する
アカウントがログインできなくなった。/etc/ftpgroupが無いのはその理由だろうか?
ProFTPの設定は、/etc/proftpd.confである。proftpd.confの記述は apacheに似ている。どのようなディレクティブが使えるかは、 infosienceさんの ページを参考にした。また、設定例は Michizaneさんのページを参考にした。
VineLinuxの/etc/proftpd.confでほとんど事足りるのだが、次の箇所を修正/追記した。
LogFormat auth "%t : %u@%a" # 認証用にカスタムログを作成。書式は”時間:ユーザ名@IPアドレス” ExtendedLog /var/log/proftpd/auth.log AUTH auth # 認証に関するログを上で定義した形(auth)で/var/log/proftpd/auth.logとして保存。もちろん/var/log/proftpdディレクトリを作成しておく必要がある。 TransferLog /var/log/proftpd/trans.log # ファイル転送のログを/var/log/xferlog から変更
ProFTPの設定が終わったので、ブロードバンドルータに穴を空ける。 apacheの時同様、ローカルサーバで設定できる。 WebブラウザでBRLー04FのIPアドレスを入力→パスワード入力→「アドバンスド設定」 →「バーチャルコンピュータ/ローカルサーバ」でローカルサーバの設定ができる。 そのウィンドウで、