SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|07|08|09|10|11|12|

2004-11-25(Thu) グランツーリスモ、グラントゥリズモ

  今日は軽いネタ。例のお客様をお待たせしまくってやがるPS2の「グランツーリスモ4(以下GT4)」だが、公式サイトもまたナメた作りである。サイトのガワはできているクセして、中身はまったくのカラッポーン。登場車種にSVXが含まれるかどうかヤキモキしているオイラとしては、かなりいや〜んな感じである。これもどれもGT4がケタ外れのビッグタイトルであるからこそ、まぁ許されるコトである。通り一遍のゲームならそう何度もカラッポーンなサイトを訪れてくれたりはしないだろう。

  というわけでブツブツいいつつ、何度も訪れていたら本日変化を発見。登場車種のページに車が現れるようになったのだ。これまたウットオしいフラッシュなのだが、ゾロゾロと車が出てくるわ出てくるわ。右の矢印を連打すると、次から次へと車が出てくる。なんだ!? 軽のワゴンみたいなのまで出てくるぞ。おぃおぃ、ミゼットIIまで入ってるのかよ。それって絶対グランツーリスモじゃねぇだろ。念のため言っとくが「グランツーリスモ」の定義は「長距離・高速走行用の高性能車」だぞ。最近、新しいスポーツカーがあんまり発表されず、実用本位のワゴンが大流行だからってそんなもんまで入れるなよ。誰がゲームの中でまでそんなもん乗りたいかよ。

  次々を車を眺めていたらガツーンと懐かしい車が出てきた。日産エクサだ。しかもキャノピーバージョン。オイラの初めての車が赤いエクサのクーペバージョンだったんだよね。重ッもい車の割に非力だったけど、Tバールーフで天井が開くし、DOHCのNAエンジンはナチュラルによく回るし、ハンドルも割とクイックだったし、楽しい車だったよなぁ。マニュアルシフトだったから、しまいにはヒールアンドトゥのマネ事しながらエンジンぶん回しながら走ってたっけぇ。でも、収録されていてうれしい反面、あれがGTカーかといわれるとチョット微妙な気もするけど。

  画像の説明

  で、肝心のSVXはというと、スバルコーナー探しても置いてない……おいッ!! SVXは間違いなく完全なGTカーだぞッ!! 入っていないなら買わんからな。まぁ、スバルコーナーに限らず、車と車の間がイカにもな歯抜け箇所があるので、そこが順に埋まってくれば当然出てくると思うんだが。

  画像の説明

  エクサとSVXの登場が確定したところで(いーのッ!! SVXは確定したのッ!!)気になるのは、その他にオイラの乗り継いだ車たちの登場だ。具体的に言うと三菱のジープとトヨタのソアラ。三菱のジープは絶対にグランツーリスモではないからアキらめるとして、ソアラがグランツーリスモであることに疑いはない。しかし……トヨタコーナーには歯抜けしている場所が少ない……少なすぎる。そこに二代前のソアラ、しかもエアロキャビンが入るわけないよね……でも、同世代のスープラ(姉妹車)は入ってるのにな……しゅぅーん。

  ま、それはそうと非常に期待のタイトルである。なんでもいいからハヨ出せゴラ。


2013-11-25(Mon) 物件保守祭り!

  いろいろ作りためた物件のアップデート版を置いておく。

  主な環境をMint15に変更したので、Ubuntuでも動くようにする微修正が入っている。

  まずは、Linux用の秋月PICライタ「rakipic」。sdccの環境を整えるinc2h.plと各libを作るUbuntu向けのスクリプトを同梱。

  つぎに、回路図エディタ「Qt-BSch3V」(私家版)。qtの開発環境さえ入れば、Ubuntuでもコンパイル一発だった。

  最後に、8bit的グラフィックスライブラリ「LegacyGraphics」。先の「艦娘うぉー」のレンダラを含む一式。読むライブラリを切り替えるだけで、curses, tk, gtk2, cairoのいずれでも似たような出力を得られるようになっている。line文でpdfやPostScript形式のファイルを生成できたことには、我ながら感動した。

  特に「pdfやPostScript形式のファイルを生成できる」という事は「印刷できる」という事につながる。さて、年賀状ソフトでも作ってみようかしらん。


2025-11-25(Tue) 叩けよhttpさらばssh開かれん

  ssh接続に使うポート番号は22が標準であるが「ブルートフォース攻撃の対象になりやすいため、この番号を変更することが効果的だ」とする記述をあちこちで見かける。

  しかし、そんなことをしなくても、公開鍵認証のみ許可としておけば、それを突破することは不可能だ。数学的に不可能と言える。なお、攻撃者は一般ユーザアカウント名を推測することすら難しいので、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

  穴が開くのは3分間だけだが、その間に接続に成功すれば、その接続は3分経過後も維持される。なんだか二段階認証っぽいな。

  問題は実装。そのためだけに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/, $\))

  呼び出されるCGIの中身は上記。そのまんまだ。

[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

  サービス化のためのsystemdスクリプトが上記。こっちもそのまんまやね。

  使うのは年に1回あるかないかだろうが、スマホに上記のURIをブックマークしておけば、ssh接続の直前にそれを開くだけで、以降はフツーにsshサービスが利用できる。なかなかいいアイデアだと思うが、どんなもんかね?

  関連ファイル一式をhttp://itline.jp/git/sshopenに置いておく。