Hatena::ブログ(Diary)

fubabz記

2011-03-28 Romain Rolland「Credo Quia Verum」より

Romain Rolland「真であるがゆえに私は信じる」より

ロマン・ロラン22歳の頃、自身に課した規範

Credo Quia Verum 1888

  1. 生活に目的を定めること。一つの仕事を己に課すること。
  2. その目的に添うように自分の努力を方向づけ、意志を確定すること。
  3. 自分の行動の対象を自己自身の中に求めずに、外に求めること。
  4. 他に役立つものになること。積極的で具体的にそうなること。善を行なう一般的な機会を逃がすことなく、他人の誰かの幸福のために尽くすことに自分の生活を捧げること。自分の慈悲や愛をあいまいな感傷に終わらせないように特に心掛けること。
  5. 真実を求めることを決してやめないこと。もし真実が得られたらそれをできるだけ他人にも享受させること。ただしそれを他人に押しつけないこと。

2009-03-04

dzenを用いた,簡単なnotifier

dzenは,いかにもUnix思想を受け継いだような,シンプルな汎用のメッセージ表示/メニュツールです.

一日中PCに向っていると目によくないので,一時間ごとに眼球体操していますが,忘れないために書いてあったタイマスクリプト(同様なツールは既存にありますが)をdzenを用いたshスクリプトに書きかえてみました.

前のはまともなウィンドウを使っていたので,タイムアップ時がぎょうぎょうしかったが,おかげで精神衛生上も好ましくなりました.awesome環境で使っています.

使用例

メッセージのサイズ,位置,色などは環境依存,好みです.

#! /bin/sh

export self=${self:-$0}
export duration=${duration:-${1:-60}}

# font='-bitstream-bitstream vera sans mono-medium-r-normal-*-14-*-*-*-*-*-*-*,-sazanami-gothic-medium-r-normal-*-14-*-*-*-*-*-jisx0208.1983-*'
paramDzen=(
-p
-fg white
-bg red
-w 300
-tw 300
-x -310
-y -30
-l 3
-sa c
-e 'button1=exit:0;button3=exit:1;key_Return=exit:0;key_Escape=exit:1;leaveslave=collapse,ungrabkeys;entertitle=uncollapse,grabkeys'
)
# -fn "${font}"

mes="${duration}
左クリック, Return: 続行
右クリック, Escape: 終了"

if (date; echo "${mes}")|nkf -w|dzen2 "${paramDzen[@]}"; then
    (export; cat "${self}")|at now + ${duration}minutes >/dev/null 2>&1
fi &

2008-12-19

sshguardの導入(Debian sid編)

SSH向けブルートフォースアタックのログが目につくので導入.SSHDの設定のみでは対処できないようなので…

SSHデーモン自体は鍵認証のみ許可の設定になっているので侵入される心配はないと思うが,システムのリソースを喰われる.

具体的な導入方法については検索でヒットするので,そちらを参照してください.

サマリ
  • ブロッキングバックエンドはiptables
  • ロギングはsyslog-ng.もともとインストールされていた旧来syslogはログを直接プログラムに渡せない版のもの.FIFO(named Pipe)経由にすればよいのだが,設定が散逸(rc.localにも書く)になるので代替のロギングシステムのうちsyslog-ngに置き換えた.
  • Debianパッケージsshguardはバージョンが古く,途中で終了してしまうので,最新版を取得し,ソースからビルド
ビルド手順

ソースを解凍したディレクトリで以下を実行.

./configure --with-firewall=iptables
make
sudo make install
/etc/network/if-up.d/sshguard

以下の内容でファイルを作成し実行権をつける.eth0の部分は自分のシステムのものに修正してください.また,ネットワークインタフェースが落るとき,チェインsshguardを消すスクリプトも必要です(当面サボリ).

#!/bin/sh

[ "$IFACE" = eth0 ] || exit 0

iptables -N sshguard
iptables -A INPUT -p tcp --dport 22 -j sshguard

追加したらネットワークインタフェースをdown→upする.

/etc/syslog-ng/syslog-ng.conf

以下を最後に追加.

# pass only entries with auth+authpriv facilities that contain sshd
filter sshlogs { facility(auth, authpriv) and match("sshd"); };
# pass to this process with this template (avoids <ID> prefixes)
destination sshguardproc {
	program("/usr/local/sbin/sshguard"
	    template("$DATE $FULLHOST $MESSAGE\n"));
};
log { source(s_all); filter(sshlogs); destination(sshguardproc); };


修正後,syslog-ngに設定ファイルをreloadさせる.

killall -HUP syslog-ng

ログ例: アタックサイトからのパケットの拒否と,一定時間後の解除

Dec 20 14:02:48 hikari sshd[24504]: Did not receive identification string from 218.6.128.2
Dec 20 14:02:48 hikari sshguard[2166]: Matched IP address 218.6.128.2
Dec 20 14:13:19 hikari sshd[2473]: Invalid user staff from 218.6.128.2
Dec 20 14:13:19 hikari sshguard[2166]: Matched IP address 218.6.128.2
Dec 20 14:13:27 hikari sshd[2612]: Invalid user sales from 218.6.128.2
Dec 20 14:13:27 hikari sshguard[2166]: Matched IP address 218.6.128.2
Dec 20 14:13:35 hikari sshd[2764]: Invalid user recruit from 218.6.128.2
Dec 20 14:13:35 hikari sshguard[2166]: Matched IP address 218.6.128.2
Dec 20 14:13:35 hikari sshguard[2166]: Blocking 218.6.128.2: 4 failures over 647 seconds.
Dec 20 14:13:35 hikari sshguard[2166]: Setting environment: SSHG_ADDR=218.6.128.2;SSHG_ADDRKIND=4;SSHG_SERVICE=100.
Dec 20 14:13:35 hikari sshguard[2166]: Run command "case $SSHG_ADDRKIND in 4) exec /sbin/iptables -A sshguard -s $SSHG_ADDR -j DROP ;; 6) exec /sbin/ip6tables -A sshguard -s $SSHG_ADDR -j DROP ;; *) exit -2 ;; esac": exited 0.
Dec 20 14:23:01 hikari sshguard[2166]: Releasing 218.6.128.2 after 566 seconds.
Dec 20 14:23:01 hikari sshguard[2166]: Setting environment: SSHG_ADDR=218.6.128.2;SSHG_ADDRKIND=4;SSHG_SERVICE=100.
Dec 20 14:23:01 hikari sshguard[2166]: Run command "case $SSHG_ADDRKIND in 4) exec /sbin/iptables -D sshguard -s $SSHG_ADDR -j DROP ;; 6) exec /sbin/ip6tables -D sshguard -s $SSHG_ADDR -j DROP ;; *) exit -2 ;; esac": exited 0.

参考にさせてもらったリンク

2008-12-13

XMMS2でlast.fmからScrobbleしながら曲を聴く

last.fmを試してみたらとても気に入ってしまったが,ブラウザで聴くのはデバイスが衝突するなど,ちょっとまずいのでxmms2で聴けないかといろいろ調べた.

以下Debian環境での話.last.fmへはあらかじめユーザ登録しておく.

apt-getするxmms2プラグインパッケージ

(デコード関連は繁雑になるので省略)

  • xmms2-plugin-curl
  • xmms2-plugin-icymetaint
  • xmms2-plugin-lastfm
  • xmms2-scrobbler

ディレクトリの作成,シンボリックリンク

ln -s ~/.config/xmms2 ~/.xmms2
mkdir -p ~/.config/xmms2/clients/xmms2-scrobbler
ln -s /usr/bin/xmms2-scrobbler ~/.config/xmms2/startup.d/

Scrobbleするための設定

~/.config/xmms2/xmms2.conf
…
<section name="lastfm">
    <property name="password">パスワード</property>
    <section name="priority">
        <property name="application/x-url:lastfm://*">50</property>
    </section>
    <property name="username">ユーザ名</property>
</section>
…
~/.config/xmms2/clients/xmms2-scrobbler/config
user: ユーザ名
password: パスワード

サーバデバッグモードで再起動

killall xmms2d
xmms2d -d

聴きたいチャンネルの設定

(以下,コマンドラインクライアントでの話.他のクライアントの場合は読み替える事)

xmms2 add lastfm://globaltags/タグ
xmms2 add lastfm://user/ユーザ名/personal
xmms2 add lastfm://user/ユーザ名/recommended
xmms2 add lastfm://user/ユーザ名/neighbours
xmms2 add lastfm://artist/アーティスト名

…など

聴く

xmms2 play

ひとつのチャンネルを流しっぱなしにする設定

このへんはまだ挙動がよくわかってない.うまくゆかない場合は以下を試すこと.

xmms2 config playlist.repeat_all 1

または

xmms2 config playlist.repeat_one 1

参考リンク

2008-12-12

Total Commander用新SFTPプラグイン

Linux上ではMCを愛用している関係上,Windows環境でのファイル作業はTotal Commander(TC)を使っている.

SFTPによるファイル転送は,ずっとTC用プラグインを使っていたが,昨日サーバになぜか継がらなくなってしまった.しかたないのでWindowsFTPクライアントをいくつか試したけど,自分に合ったものがみつからない.

困っていたところ,上記のプラグインのページに新しいSFTPプラグインがあるとの記述を見つけたので,インストールしてみたところ小さくシンプルなところが気に入ってしまった.まだβのようだけど,しばらく使ってみることにする.

プラグインの認証用の鍵はputtyベースのものだったが,このプラグインはそれに加えOpenSSHベースのものを使えるようだ.以前CygwinのOpenSSHで生成した鍵がすでにあったのでそれをそのまま使用した.なお,秘密鍵の登録の際,ファイル名拡張子が.pemでないとはねられてしまう.リネームすること.

インストール手順メモ

  1. 上記プラグインと,cURLからWindows用のlibcurlをダウンロードする
  2. libcurlにあるlibssh2.dllとlibeay32.dllプラグインを展開したフォルダへコピーする
  3. TCのメニュからコンフィギュレーション→オプション→プラグインファイルシステムプラグインを選んで,プラグイン展開フォルダにあるsftplug.wfx を追加する