の形で呼ぶ。
//
// anchor_idはフレームを使う場合最低限各フレームごとに設定。お互い他のフレームを書換えたときにへんな干渉をさけるため。
// その他ページの種別毎などで変えてもよいが、あまり小分けにするとcookieが増える。
// 同じanchor_idで保存されるcookieは1セットのみ。でも単独ページ表示のサイトなら概ねこれで充分。
anchor_id = "anc_main";
noanchor = false; // bodyにanchorをしかけたときなど場合によって一時無効にするためのフラグ。
// アンカーの記憶。
function anchor_save(object_id, page_id) {
if(noanchor) { anchor_erase(); return; }
get_scroll();
setcookie(anchor_id+"_pid", page_id, 0);
setcookie(anchor_id+"_st", scroll_top, 0);
setcookie(anchor_id+"_sl", scroll_left, 0);
if(object_id) {
object_top = scroll_top + get_object_top(object_id);
object_left = scroll_left + get_object_left(object_id);
setcookie(anchor_id+"_oid", object_id, 0);
setcookie(anchor_id+"_ot", object_top, 0);
setcookie(anchor_id+"_ol", object_left, 0);
} else {
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
}
// アンカーの適用。
function anchor_apply(page_id) {
if((saved_page_id = getcookie(anchor_id+"_pid")) && page_id != saved_page_id) { return; }
get_scroll();
if((anchor_st = getcookie(anchor_id+"_st")) != "" && (anchor_sl = getcookie(anchor_id+"_sl")) != "") {
anchor_st = parseInt(anchor_st);
anchor_sl = parseInt(anchor_sl);
} else {
anchor_st = scroll_top;
anchor_sl = scroll_left;
}
if((object_id = getcookie(anchor_id+"_oid"))
&& (anchor_ot = getcookie(anchor_id+"_ot")) != ""
&& (anchor_ol = getcookie(anchor_id+"_ol")) != "") {
offset_top = (scroll_top + get_object_top(object_id)) - parseInt(anchor_ot);
offset_left = (scroll_left + get_object_left(object_id)) - parseInt(anchor_ol);
} else {
offset_top = offset_left = 0;
}
window.scrollTo(anchor_sl + offset_left, anchor_st + offset_top);
}
// アンカー消去。あえてとっておく必要がなければanchor_apply()後すぐ消去が望ましい。
function anchor_erase() {
setcookie(anchor_id+"_pid", "", -1);
setcookie(anchor_id+"_st", "", -1);
setcookie(anchor_id+"_sl", "", -1);
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
//-->
倉金家ホームページ
趣味の部屋/サーバー構築メモ その3/仮想マシン
|
|
サーバーを運用してログを見ていますと毎日多くのアタックを受けています。ssh, http, メール関係, ftp などに特に多く、不正ログインしたりサーバーを乗っとろうという意図が見え見えです。 CentOSではfail2banでこれらのアタックを撃退していましたが、今回も導入しましょう。 とはいえ、Vinelinuxの標準レポにはfail2banはありません。同類のblockhostsやdenyhostsも見当たりません。 使いづらいSELinuxはともかく、セキュリティー上fail2banくらいはぜひともほしい、というより絶対必要と思うのですが...
|
仕方ないので本家から導入することにします。 http://www.fail2ban.org/ より最新版をダウンロード。rpmがあったのであとあと管理の楽なrpmで。 fail2ban-0.8.12-1.noarch.rpm インストール # rpm -ivh fail2ban-0.8.12-1.noarch.rpm
# man fail2ban でマニュアルを見てみます。細かいところはよくわかりませんが...。 ユーザインタフェースのfail2ban-clientから本体のfail2ban-serverを制御するようです。 とりあえず起動/停止は、 # fail2ban-client start/stop でいいみたい。で、やってみます。 # fail2ban-client start ERROR There is no directory /var/run/fail2ban to contain the socket file /var/run/fail2ban/fail2ban.sock.
1回目失敗 /var/run/fail2banディレクトリがないと。つくりました。 起動 # fail2ban-client start 2014-02-22 19:24:31,700 fail2ban.server [4916]: INFO Starting Fail2ban v0.8.12 2014-02-22 19:24:31,700 fail2ban.server [4916]: INFO Starting in daemon mode
起動OK 停止 # fail2ban-client stop Shutdown successful
停止OK 基本的なインストールはいいようです。
|
引き続き設定を行いますが、全く新規にやる気はありません。 /etc/fail2banの各設定ファイルをざっと眺めるとCentOSのがそのまま使えそうです。 CentOS6のサーバーから、 /etc/fail2ban/jail.conf /etc/fail2ban/filter.d/(変更したフィルター) をこちらへコピー。ただし公開は堪忍。もっとも攻撃者がこれを読んで攻撃の仕方を調整してくるとも思えないけど。
さらにログローテートスクリプトがないのでこれももってきます。
|
|
さらにいちいちサーバー起動停止のたびに手動でstart/stopも面倒なのでCentOS6の/etc/rc.d/init.d から起動停止スクリプト fail2ban をこちらの/etc/rc.d/init.d にコピーし、 # chkconfig --add fail2ban
これでcheckconfig fail2ban on/off と service fail2ban start/stop/reload が使えるようになります。 # chkconfig fail2ban on …すでにonになっていたけど動作確認。 # service fail2ban start
|
|
しばらくして見てみると一応ちゃんと動作はしています。あとはディストリビューションやバージョンの違いで監視対象のログが微妙に違うことがあるので実際に運用して調整することにします。
|
|
|