My blog

Add intelligent tagline here

denyhostsの設定を見直した

生活のかなりの部分を依存しているサーバをさくらのVPSサーバに移行したんだけど、sshアタックがすごい。同じホストから1秒間に3回ぐらいくる。

もちろんdenyhostsを入れてるんだけど、それでもすごい数のアタックが来ていることがログから分かってて、なんでかな、と思って設定ファイルをみてたらその理由が分かりました。

# DAEMON_SLEEP: when DenyHosts is run in daemon mode (--daemon flag)
# this is the amount of time DenyHosts will sleep between polling
# the SECURE_LOG.  See the comments in the PURGE_DENY section (above)
# for details on specifying this value or for complete details
# refer to:    http://denyhosts.sourceforge.net/faq.html#timespec
#
DAEMON_SLEEP = 30s

という設定があり、初期設定は30秒になっている。これはなにかと言うと、daemonモードでチェックする間隔を設定するもの。つまり、daemonモードではこの間隔でしかチェックしないので、今のように1秒間に3回くらってもすぐには対応できない、というわけ。

もちろん、辞書攻撃じゃ30秒では破れないだろうからセキュリティ的には問題ない(と思う)だろうけど、ログがたくさんになるのはちょっとね。

というわけで、ちょっと間隔を狭めてみた。これでどうなるかな。

[Python]mercurialのファイルを(なぜか)タイムスタンプで履歴管理

履歴管理はファイル名に日付を付けるのが基本ですよね。

ということで、mercurialのチェンジセットに含まれているファイルを、日付を付けたファイル名で展開するスクリプトを作りました。レポジトリのディレクトリに移動し、このスクリプトを実行してください。

…ええ、ええ、言いたいことはよーく分かっています。でもですね、なにも言わないでください…

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# This script extracts changed files in changesets with timestamp suffix.
#
# Yes, I know timestamp based history management is not the mercurial way.
# but, but, sigh...
#
# license: new BSD
#

from mercurial import ui
from mercurial import hg

import datetime
import os

MAXAGE = 10  # 展開するチェンジセットの数
FORMAT = "%Y%m%d-%H%M%S"

u = ui.ui()
repo = hg.repository(u, '.')

tip = repo.changectx("tip")
tip_rev = tip.rev()

for i in range(tip_rev, tip_rev - MAXAGE, -1):
    ctx = repo.changectx(i)
    unix_timestamp = ctx.date()[0]
    tz = ctx.date()[1]  # currently not used
    d = datetime.datetime.fromtimestamp(unix_timestamp)

    for filename in ctx.files():
        fctx = ctx[filename]
        fname = os.path.join(repo.root,
                             "{0}-{1}".format(filename, d.strftime(FORMAT))
                             )
        try:
            f = open(fname, "w")
            f.write(fctx.data())
        finally:
            if f:
                f.close()