SVX日記
2004-11-25(Thu) グランツーリスモ、グラントゥリズモ
今日は軽いネタ。例のお客様をお待たせしまくってやがるPS2の「グランツーリスモ4(以下GT4)」だが、公式サイトもまたナメた作りである。サイトのガワはできているクセして、中身はまったくのカラッポーン。登場車種にSVXが含まれるかどうかヤキモキしているオイラとしては、かなりいや〜んな感じである。これもどれもGT4がケタ外れのビッグタイトルであるからこそ、まぁ許されるコトである。通り一遍のゲームならそう何度もカラッポーンなサイトを訪れてくれたりはしないだろう。
というわけでブツブツいいつつ、何度も訪れていたら本日変化を発見。登場車種のページに車が現れるようになったのだ。これまたウットオしいフラッシュなのだが、ゾロゾロと車が出てくるわ出てくるわ。右の矢印を連打すると、次から次へと車が出てくる。なんだ!? 軽のワゴンみたいなのまで出てくるぞ。おぃおぃ、ミゼットIIまで入ってるのかよ。それって絶対グランツーリスモじゃねぇだろ。念のため言っとくが「グランツーリスモ」の定義は「長距離・高速走行用の高性能車」だぞ。最近、新しいスポーツカーがあんまり発表されず、実用本位のワゴンが大流行だからってそんなもんまで入れるなよ。誰がゲームの中でまでそんなもん乗りたいかよ。
次々を車を眺めていたらガツーンと懐かしい車が出てきた。日産エクサだ。しかもキャノピーバージョン。オイラの初めての車が赤いエクサのクーペバージョンだったんだよね。重ッもい車の割に非力だったけど、Tバールーフで天井が開くし、DOHCのNAエンジンはナチュラルによく回るし、ハンドルも割とクイックだったし、楽しい車だったよなぁ。マニュアルシフトだったから、しまいにはヒールアンドトゥのマネ事しながらエンジンぶん回しながら走ってたっけぇ。でも、収録されていてうれしい反面、あれがGTカーかといわれるとチョット微妙な気もするけど。
で、肝心のSVXはというと、スバルコーナー探しても置いてない……おいッ!! SVXは間違いなく完全なGTカーだぞッ!! 入っていないなら買わんからな。まぁ、スバルコーナーに限らず、車と車の間がイカにもな歯抜け箇所があるので、そこが順に埋まってくれば当然出てくると思うんだが。
2013-11-25(Mon) 物件保守祭り!
まずは、Linux用の秋月PICライタ「rakipic」。sdccの環境を整えるinc2h.plと各libを作るUbuntu向けのスクリプトを同梱。
つぎに、回路図エディタ「Qt-BSch3V」(私家版)。qtの開発環境さえ入れば、Ubuntuでもコンパイル一発だった。
最後に、8bit的グラフィックスライブラリ「LegacyGraphics」。先の「艦娘うぉー」のレンダラを含む一式。読むライブラリを切り替えるだけで、curses, tk, gtk2, cairoのいずれでも似たような出力を得られるようになっている。line文でpdfやPostScript形式のファイルを生成できたことには、我ながら感動した。
2025-11-25(Tue) 叩けよhttpさらばssh開かれん
しかし、そんなことをしなくても、公開鍵認証のみ許可としておけば、それを突破することは不可能だ。数学的に不可能と言える。なお、攻撃者は一般ユーザアカウント名を推測することすら難しいので、rootのみパスワード認証を禁止(公開鍵認証のみ許可)としておけば十分。以前はwithout-passwordという設定だったが、最近は「PermitRootLogin prohibit-password」と書いておけばいい。そもそも、大概はデフォルトでそうなっていることだろう。root作業をしたければ、一般ユーザアカウントでパスワードログインしてからsuしてもいい。そうしておけば、1日に数千、数万のアタックがあろうが対策としては鉄壁なのである。
むしろ、ポート番号の変更には意味がない、と断言しよう。というのも、実際に一度、変更してみたのだが、あっという間に悟られて数日後にはアタックの数は22の時と変わらなくなってしまったからである。rootでのパスワードログインを許容している限り、十分すぎるほど長く複雑なパスワードは必須だ。
と、それだけならば、それで話は終わりなのだが、突破することが不可能だとしても、ログがウルサくなるという問題は残るのであった。一応、管理者の務めとして、毎日Logwatchからのメールに目を通しているのだが、非常にウルサい。見たくない。そこで思いついた。必要な時だけ、ポートが開けばよいのではないか?
問題は手段だ。22番ポートが閉じているのだから、ssh経由でポートを開くことはできない。そこでhttpを使う。認証付きのページへのアクセスに成功したら、一定時間だけsshポートが開くようにするのである。実際には、sshポートが開くのではなく、firewallに穴が開く。こんなコマンドで3分間のみ穴を開けることができるのだ。
firewall-cmd --add-service=ssh --timeout=3m
問題は実装。そのためだけにapacheを立ち上げるのはバカらしい。仕掛けたいサーバは、実質コンテナ母艦になっているので、80番と443番ではhaproxyが待っていて、表にはapacheが立ち上がっていないのだ。そのためだけにコンテナを立ち上げるのもバカらしいが、そうしたところでコンテナ内から母艦を操作することは困難だ。と、そこで先日MAGIシステムっぽいものを作った時に使ったWEBrickを思い出した。それで組めないものか。
require 'webrick'
server = WEBrick::HTTPServer.new({
:DocumentRoot => './',
:BindAddress => '0.0.0.0',
:Port => 8080,
:DocumentRootOptions => { :FancyIndexing => false },
})
class CGIHandlerWithAuth < WEBrick::HTTPServlet::CGIHandler
def initialize(server, script, auth)
@auth = auth
super(server, script)
end
def service(req, res)
@auth.authenticate(req, res)
super
end
end
# htpasswd -d -c .htpasswd username
#htpasswd = WEBrick::HTTPAuth::Htpasswd.new('.htpasswd')
#basic_auth = WEBrick::HTTPAuth::BasicAuth.new(Realm: 'SSH Open', UserDB: htpasswd)
#server.mount('/open12345.cgi', CGIHandlerWithAuth, 'open.rb', basic_auth)
# htdigest -c .htdigest 'SSH Open' username
htdigest = WEBrick::HTTPAuth::Htdigest.new('.htdigest')
digest_auth = WEBrick::HTTPAuth::DigestAuth.new(Realm: 'SSH Open', UserDB: htdigest)
server.mount('/open12345.cgi', CGIHandlerWithAuth, 'open.rb', digest_auth)
trap('INT') { server.shutdown }
server.start
できた。んが、WEBrickでCGIに認証を付けるためには一筋縄では済まず、ついAIの助けを借りてしまった。一応、味見のためのBASIC認証も書いたが、SSLを使わない場合はDIGEST認証を使わないと危険だろう。また、ポート番号やCGIのURIも変更しておくとよい。
result = `firewall-cmd --add-service=ssh --timeout=3m`
$\ = "\r\n"
print('Content-Type: text/plain')
print()
print(("--\n%s--" % result).gsub(/\r?\n/, $\))
[Unit]
Description=SSH Port Opener
[Service]
Type=simple
WorkingDirectory=/usr/local/bin/sshopen
ExecStart=/usr/local/bin/sshopen/sshopen
User=root
Group=root
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target


