Serverのハード変更

大停電でHDDがクラッシュしてからメインServerの調子が悪くなったので予備のServerをメインServerに変更。
現行のメインServerは『Dell Optiplex-745』で運用、予備Serverは『Dell Optiplex-755』を割り当てている。
予備系はしばらくメンテナンスしていなかったので、現行ServerのHDDをEasyCopyで丸ごと予備系のHDDへコピー。
1TBのHDDのコピーは14時間も要したが、無事にコピーできた。
NICが現行と予備で異なっていたため、コピー後にNICのシステム名称のみ、/etc/rc.confを修正して再起動し、無事に引っ越しを終えることができた。

現行(Dell Optiplex-745)

予備(Dell Optiplex-755)

 

 

大停電でServerトラブル

9月6日深夜の地震による大停電で、我が家のServerもトラブルに見舞われた。
仮想メールサーバーを割り付けていたHDDのパーテーションの8セクタがクラッシュし、カーネルメッセージが吐き出され、パフォーマンスが低下。
該当パーテーションをfsckしたが回復しないため、予備のHDDに「EasyCopy」で丸ごとコピーしてHDDを交換。
丸ごとコピーでもトラブルの8セクタ分はコピーエラーとなったため、交換したHDDで立ち上げた後にコピーできなかった8セクタを含むバーテーションのファイルをtarでバックアップ。
その後、該当のパーテーションをnewfsでフォーマット。
バックアップから該当パーテーションをリストア。
該当バーテーションの仮想サーバーを再構築。(メールデータやwebサーバーのコンテンツは残したままシステムを上書き)
サーバー再起動で全て復旧。

FreeBSDのjailによる仮想環境であったためできた復旧手順。

apache2.4でbasic認証

Apach2.4でBasic認証を試してみたメモ。

特定のディレクトリをプライベートのみでアクセスさせるためにBasic認証を試してみた。
必要なライブラリは有効にしてある前提で、.htaccessを利用せずに直接httpd.confに設定を記述してBasic認証を有効にする。

<Directory "/usr/local/www/apache24/data">
    Options +FollowSymLinks
    AllowOverride all
#    Require all granted
    AuthType Basic
    AuthName "Please Enter ID and pass"
    AuthUserFile /usr/local/www/apache24/.htpasswd
    Require valid-user
</Directory>

Auth認証するために、.htpasswdを作成する。
httpd.confに指定したディレクトリに.htpasswdを以下のように作成する。

htpasswd -c /usr/local/www/apache24/.htpasswd user-name
New password:
Re-type new password:
Adding password for user user-name

Apacheを再起動してBasic認証されたら成功。

jail仮想でデバイスフルにするために

FreeBSDのjail環境下でストリーミング配信を行う実験のため、jail仮想環境でデバイスをフルに利用するための設定を行ってみたメモ。

/etc/defaults/devfs.rulesを/etcにコピー

# cp /etc/defaults/devfs.rules /etc

jail仮想ホストのデバイスをフルにするためにコピーした/etc/devfs.rulesを編集

[devfsrules_hide_all=1]
add hide

# Basic devices typically necessary.
# Requires: devfsrules_hide_all
#
[devfsrules_unhide_basic=2]
add path log unhide
add path null unhide
add path zero unhide
add path crypto unhide
add path random unhide
add path urandom unhide

# Devices typically needed to support logged-in users.
# Requires: devfsrules_hide_all
#
[devfsrules_unhide_login=3]
add path 'ptyp*' unhide
add path 'ptyq*' unhide
add path 'ptyr*' unhide
add path 'ptys*' unhide
add path 'ptyP*' unhide
add path 'ptyQ*' unhide
add path 'ptyR*' unhide
add path 'ptyS*' unhide
add path 'ptyl*' unhide
add path 'ptym*' unhide
add path 'ptyn*' unhide
add path 'ptyo*' unhide
add path 'ptyL*' unhide
add path 'ptyM*' unhide
add path 'ptyN*' unhide
add path 'ptyO*' unhide
add path 'ttyp*' unhide
add path 'ttyq*' unhide
add path 'ttyr*' unhide
add path 'ttys*' unhide
add path 'ttyP*' unhide
add path 'ttyQ*' unhide
add path 'ttyR*' unhide
add path 'ttyS*' unhide
add path 'ttyl*' unhide
add path 'ttym*' unhide
add path 'ttyn*' unhide
add path 'ttyo*' unhide
add path 'ttyL*' unhide
add path 'ttyM*' unhide
add path 'ttyN*' unhide
add path 'ttyO*' unhide
add path ptmx unhide
add path pts unhide
add path 'pts/*' unhide
add path fd unhide
add path 'fd/*' unhide
add path stdin unhide
add path stdout unhide
add path stderr unhide

# Devices usually found in a jail.
#
[devfsrules_jail=4]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path zfs unhide
#
[devfsrules_jail=5]            ← 以下を追加
add path mem unhide
add path kmem unhide

/etc/jail.confを調整

#
##############
# 共通の設定 #
##############
allow.raw_sockets = 0;
allow.set_hostname = 0;
allow.sysvipc = 0;
mount.devfs;
mount += "procfs /jail/${name}/proc procfs rw 0 0";
exec.start += "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
##################
# jail個別の設定 #
##################
jail1 {      # デバイスを規制したjail
        host.hostname = "jail1.hoge.com";
        path = "/jail/jail1";
        ip4.addr += "xxx.xxx.xxx.xxx/32";
        allow.raw_sockets = 1;
        allow.sysvipc = 1;
        allow.mount.procfs;
        devfs_ruleset = "4"; ← 制限したルール適用
}
jail2 {   # デバイスフルのjail
        host.hostname = "jail2.hoge.com";
        path = "/jail/jail2";
        ip4.addr += "xxx.xxx.xxx.yyy/32";
        allow.raw_sockets = 1;
        allow.sysvipc = 1;
        allow.mount.procfs;
        devfs_ruleset = "5"; ← 制限無のルール適用
}

ipfw設定

我が家のサーバー、SMTPのPORTを外部に開けているのだが、ずっと不正なアクセスがあり困っていた。
一応、SMTPでリレーは規制かけているのだが、ログに不正アクセスが記録され、気持ちの良いものではない。
ずっと、仕事で疲れていたので、対策をしなければと思いながら手を抜いていた。

で、退職が近づき、時間に余裕が出てきたので、とりあえず、サーバにipfwを機能させることにした。
本来なら、ルータで出来れば良いのだが、安いルータで、その手の機能が充実していないので、サーバー側で行うことに・・・

今回実施したのは、まずはrc.confでipfwを有効に。

firewall_enable="YES"
firewall_type=open
firewall_type="/etc/ipfw.conf"

で、/etc/ipfw.confに以下の記述を

add 200         deny all        from any to 127.0.0.0/8
add 300         deny ip         from 127.0.0.0/8 to any
add 400         deny tcp        from any to any frag

add 500         deny ip         from 59.60.0.0/15 to any
add 500         deny ip         from 114.112.0.0/14 to any
add 500         deny ip         from 173.219.109.0/24 to any
add 500         deny ip         from 195.22.126.0/23 to any

で、以下のコマンドで有効化

# /etc/rc.conf/ipfw start

/var/log/maillogを監視していて、アクセスされていないようで、これでしばらく様子を見、別なIPアドレスからアクセスあれば/etc/ipfw.confに追加して行くことにします。