個人的備忘めも。

Last Update: 2006/1/4

このページ、見辛くてすごく好き。



項目カテゴリ登録日更新日
Windows2000 標準のパケットフィルタリングの制約。Windows2003/11/18
FreeBSD で ISO image (ほか) を mount する。( 5.0-RELEASE 以降? )FreeBSD2003/11/18
FreeBSD で稼働中に SCSI-HDD を抜き差しして認識させる。FreeBSD2003/11/18
FreeBSD を更新〜。FreeBSD2003/12/292004/3/4
FreeBSD jail 環境を更新〜。FreeBSD2003/12/32004/3/4
/bin/sh で [ の一行コマンド。Shell2003/12/6
/bin/sh でスクリプトで ftp えいやぁ。Shell2003/12/6
Perl で配列のクリア。Perl2003/12/6
Perl で今日から何日前〜とか何日後〜とか取得。Perl2003/12/6
cron で気をつけよう。UNIX2003/12/7
postgreSQL(Ver 7.4.1) でデータベース初期化。postgreSQL2003/12/29
Shift-JIS で展開してしまったファイルやディレクトリを削除。UNIX2004/9/20
ゾンビな Apache を自動で再起動。UNIX2004/11/19
Windows2000 以降の時刻同期について。Windows2005/2/5
Apache で不要なリクエストメソッドを無効化。UNIX2005/3/25
Solaris10 の smpatch で更新されない場合。Solaris2005/10/12
Solaris10 で GUI を起動させなくする。Solaris2006/1/4



・ Windows2000 標準のパケットフィルタリングの制約。Windows
inbound のみ。 outbound は全てスルー。
UDP プロトコルのフィルタリングは SPI 非対応のため、 DNS 応答も破棄してしまう。
ICMP はフィルタリング出来ない。



・ FreeBSD で ISO image (ほか) を mount する。( 5.0-RELEASE 以降? )FreeBSD
# mdconfig -a -t vnode -f <filename> -u 1
# mount -t <fstype> /dev/md1 /mnt
  ... よみよみ かきかき ...
# umount /mnt
# mdconfig -d -u 1



・ FreeBSD で稼働中に SCSI-HDD を抜き差しして認識させる。FreeBSD
# camcontrol rescan <bus:target:lun>



・ FreeBSD を更新〜。FreeBSD
source を最新に。
# cvsup -L 2 -g <supfile>
スクリプト流す。(うちだと mkbuild.sh )
#!/bin/sh
rm -rf /usr/obj/*
cd /usr/src
START_DATE=`date`

make -j 8 buildworld && make -j 8 buildkernel KERNCONF=<kernelconfig>
RES=$?
if [ $RES = 0 ] ; then
  rm -rf /usr/src/root
  mkdir -p /usr/src/root
  cd /usr/src/etc
  make DESTDIR=/usr/src/root distrib-dirs distribution
else
  echo "make build failed."
fi

END_DATE=`date`
echo "start     : $START_DATE"
echo "end       : $END_DATE"
kernel 上書きして reboot。
ちゃんとぶぅとするようにお祈りしましょう。
# cd /usr/src && make installkernel KERNCONF=<kernelconfig>
# sync; sync; sync;
# shutdown -r now
まぁぢますたぁしていんすとるわるどしてりぶと。
シングルユーザモードでぶぅと。
<Enter> を空打ち    ← /bin/sh でコンソールに。
# cd /usr/src
# make installworld
# rm -rf /etc.old && cp -Rp /etc /etc.old
# mergemaster
  → jail環境も更新するなら FreeBSD jail 環境を更新〜。
# sync; sync; sync;
# /sbin/fastboot
NVidia 系の VGA カード使ってて、 Ports の nvidia-driver 使ってる場合はモジュールの再投入をお忘れなく。
# portupgrade -f nvidia-driver



・ FreeBSD jail 環境を更新〜。FreeBSD
FreeBSD を更新〜。 を行っていることが前提。
ごさーーーっと Update する。
うちは自前スクリプトで mkjailupdate.sh <jailname> 。
# cd /usr/src
# make installworld DESTDIR=<jailroot>
jail 環境の /etc をまぁぢますたぁ。
ソースディレクトリは親環境のを使うので -m パラメータの指定なし。
こっちもうちは自前スクリプトで mergemasterjail.sh <jailname> 。パラメータなんて覚えられまへん。
# mergemaster -t <jailroot>/var/tmp/temproot -D <jailroot>
# sync; sync; sync;
# /sbin/fastboot
りぶとー。



・ /bin/sh で [ の一行コマンド。Shell
if [ <expr> ]; then <command>; fi



・ /bin/sh でスクリプトで ftp えいやぁ。Shell
ftp <servername> << EOF > /dev/null
  ... いろいろとほげほげ ...
bye
EOF



・ Perl で配列のクリア。Perl
@<arrayname> = ();



・ Perl で今日から何日前〜とか何日後〜とか取得。Perl
365日前。
( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst )
        = localtime(time - ( 60 * 60 * 24 * 365 ));
$date_strmon = sprintf("%04d%02d", $year + 1900, $mon + 1, $mday);
30日後。
( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst )
        = localtime(time + ( 60 * 60 * 24 * 30 ));
$date_strmon = sprintf("%04d%02d", $year + 1900, $mon + 1, $mday);



・ cron で気をつけよう。UNIX
Login 不許可なアカウント権限で cron 実行指示はできませぬ。
つまり、 /etc/passwd で Login Shell を /sbin/nologin とかで潰してるのに /etc/crontab にそのアカウントを指定して実行はできませんぃょぅ(・ω・)ノ



・ postgreSQL(Ver 7.4.1) でデータベース初期化。postgreSQL
initdb --encoding EUC_JP --no-locale
"--no-locale" を忘れると後でえらいことになります。(;_;



・ Shift-JIS で展開してしまったファイルやディレクトリを削除。UNIX
いつもはアーカイブ内容を確認してからディレクトリを掘って展開するのですが、アレゲな画像とかデモムービーの圧縮ファイルを「一刻も早く確認したいから」なにも考えずに展開すると、そういうときに限って Shift-JIS のファイル名で展開されます。
漢字コードがわかるのなら、さくっと以下のようにやっちゃいましょう。
> ls
??????  ←わからぬ。
> ls | nkf -e
アレゲな名前  ←わかった。
> echo アレゲな名前 | nkf -s | xargs rm



・ ゾンビな Apache を自動で再起動。UNIX
なんか突然 Apache さんがゾンビな方になってしまわれるので困るので生き返らせるスクリプト。
#!/bin/sh
JID=`jls | grep "www" | awk '{ print $1 }'`
COUNT_ZOM=`ps -ax | grep sbin/httpd | grep -v grep | awk '{ print $3 }' | grep Z | wc -l`
COUNT_PRC=`ps -ax | grep sbin/httpd | grep -v grep | awk '{ print $3 }' | grep -v Z | wc -l`
  ↑ゾンビな httpd とゾンビじゃない httpd をカウント。
THRESHOLD_ZOM=2
THRESHOLD_PRC=1

if [ $COUNT_ZOM -ge $THRESHOLD_ZOM -o $COUNT_PRC -le $THRESHOLD_PRC ]; then
        jexec $JID /usr/local/etc/rc.d/apache2.sh restart 2>&1 /dev/null
fi
  ↑閾値を超えたら強制 restart 。
cron に仕込んじゃいましょう。根本的な解決策じゃないところが素敵。



・ Windows2000 以降の時刻同期について。Windows
Windows XP の「コントロールパネル - 日付と時刻」のインターネット時刻タブで NTP サーバを指定して時刻同期が行えますが、 FreeBSD 標準実装の ntpd に対して時刻同期させるとなぜか失敗してしまいます。
なので以下のようにしましょう。

スタート - ファイル名を指定して実行
    gpedit.msc
コンピュータの構成
  - 管理用テンプレート
    - システム
      - Windows タイム サービス
        - タイム プロバイダ
Windows NTP クライアントを有効にする
  有効
Windows NTP クライアントを構成する
  有効
  NtpServer: [NTPサーバ名],0x1
  種類: NTP
  SpecialPollInterval: [お好みの参照間隔 秒単位]
  : 適当

設定したら「日付と時刻のプロパティ」できちんと時刻同期されていることを確認しましょう。



・ Apache で不要なリクエストメソッドを無効化。UNIX
Apache で使って欲しくないメソッドを使えないようにしてしまうのだ。 GET / HEAD / POST だけで十分。
ちなみにここでは Ports からインストールした www/apache2 を対象に。 www/apache13 でも大差はないかと。

・ /usr/local/etc/apache2/httpd.conf
mod_rewrite を使うので
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
は有効にしておくー。
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS)
RewriteRule .* - [F]
を末尾に追加。

・ /usr/local/etc/apache2/ssl.conf
SSL 経由でのメソッドを無効化する場合はこのファイルも編集する必要があるみたい。
httpd.conf に追加したのと同じものを VirtualHost セクションの中に適当に追加。
したら、 security/nessus とかでつついてみましょう。

参考: Apache URL Rewriting Guide



・ Solaris10 の smpatch で更新されない場合。Solaris
smpatch update をたたいてもまったく更新されない、そんな時!
  ※以前に smpatch update を ^C などで強制終了していた場合に起こるみたい。
# cd /var/sadm/spool/cache/
# rm https%3A%2F%2Fupdateserver.sun.com%2Fsolaris%2F%2Fdetectors.jar
# rm https%3A%2F%2Fupdateserver.sun.com%2Fsolaris%2F%2Fpatchdb.zip
本当にこんなんでいいのかは知らん。



・ Solaris10 で GUI を起動させなくする。Solaris
GUI うぜぇっ! ssh でしかログインしねぇんだよっ!
って時。
# /usr/dt/bin/dtconfig -d
# /usr/dt/bin/dtconfig -kill
詳細は dtloginを有効/無効にする方法 (Solaris User) を。


何かあったらやさしく突っ込んでください。痛くしないでね。

戻る。