Mod_Securityが検知した「点火テスト」確認

Webサーバを運営していてよかったことの一つは、「悪意ある攻撃」をリアルタイムで見られること、に尽きます。

2026/02/17も、そのようなログを見かけました。どのような攻撃で、どんな悪意があったのかのメモです。

さっくりとした攻撃概要

  1. 攻撃者はNode.js系のサービスが生きているかを確認した。
  2. その上で、サーバ乗っ取りを画策した。

環境・備考

  • Apache 2.4
  • ModSecurity v2 / CRSを利用

以下、ご紹介するログは実際のログですが、

  • IPアドレス
  • どのサイトに来たか

は別のものに置き換えています。これはプライバシー配慮という点ではなく「攻撃者に名前を与えない」から来るものです。

攻撃ログ(抜粋)

攻撃者は、Unix系とWindows系の両方のサーバーを想定し、2回に分けて「点火テスト」を試みています。

A. Unix/Linuxターゲットのペイロード

[Tue Feb 17 03:16:50 2026] [security2:error] [client 192.0.2.55] 
ModSecurity: Access denied with code 403 (phase 2). 
[id "932130"] [msg "Remote Command Execution: Unix Shell Expression Found"]
[id "934100"] [msg "Node.js Injection Attack 1/2"]

[data "Matched Data: var res=process.mainModule.require('child_process').execSync('echo $((40261*44548))').toString().trim(); ..."]

[hostname "sub.example.jp"] [uri "/"]

B. Windowsターゲットのペイロード

[Tue Feb 17 03:16:51 2026] [security2:error] [client 192.0.2.55] 
ModSecurity: Warning. [id "932120"] [msg "Remote Command Execution: Windows PowerShell Command Found"]
[data "Matched Data: var res=process.mainModule.require('child_process').execSync('powershell -c 40261*44548').toString().trim(); ..."]

攻撃の構造解析:何が行われようとしたのか

この攻撃はサーバー乗っ取りを目的としたものです。

「点火テスト」による生存確認

攻撃コードの中にある 40261*44548 という計算式が肝です。

  • 手口:
    • サーバー上でこの計算を実行させ、その結果(1,793,526,428)をレスポンスとして返させようとしています。
  • 意図:
    • もし計算結果が返ってくれば、そのサーバーは「外部からの命令をそのまま実行する状態」にあることが証明され、攻撃者は本格的なマルウェアの設置へ移行します。

Node.jsの深部への侵入

  • 手口:
    • process.mainModule.require('child_process') という、Node.jsの最も強力な権限を持つ命令を呼び出そうとしています。
  • 意図:
    • これが成功すると、サーバー上で任意のOSコマンド(ファイルの削除、パスワードの窃取など)が実行可能になります。

プロトタイプ汚染 (Prototype Pollution)

  • 手口:
    • __proto__ という特殊なプロパティを操作しようとしています。
  • 意図:
    • アプリケーション全体の挙動を「根底から書き換える」手法です。Next.jsの内部ロジックを捻じ曲げ、セキュリティチェックをバイパスしようとしています。

特記事項

今回のログで最も注目すべきは、ModSecurityの異常スコア(Anomaly Score)が 45点〜50点というそこそこ高い数値を叩き出している点です。

  • Unixシェルの構文検知(RCE)
  • Node.jsの危険な関数検知(Injection)
  • プロトタイプ汚染の検知(JavaScript攻撃)
  • PowerShellの使用検知(Windows攻撃)

これら複数のフィルタが同時にに反応したため、ModSecurityはこれは間違いなく脅威であると断定し、即座に遮断しました。

まとめ

攻撃は「いきなり行う」というよりは「どの攻撃が効くか」を確認してからリソースを集中していきます。なので、実際のログを見て「これが攻撃の前段階である」をつかんでおくのは大事。(そのためのログ確認です)

『孫子 虚実篇 六』の

「攻めて必ず取る者は、其の守らざる所を攻むればなり。守って必ず固き者は、其の攻めざる所を守ればなり」

これは、守備側に立たされるサーバ管理者も持っておきたい心構えだと思いました。

2026年2月のボドゲソロプレイ

部屋が格段にきれいになったので、ボドゲを自室で回せるだけの機会が発生です。

カスカディア・ソロプレイ

相当久しぶりだったのでプレイ感覚を忘れるというていたらく。

  • 動物の得点
  • エリアマジョリティ

全てで失敗し、最終結果は59点。クリアの足きりならず。

この手のゲームは継続的なプレイが重要だなと改めて思いました。

しっかりとオーガナイザーで整理されている訳なので。

デッキ調整、トークン一新。(統率者メモ:2026/02/16)

使い始めが2024年という、そこそこ息が長いデッキのマナカーブやシナジーを元に調整を重ねています。

統率者

《リスの将軍、サワギバ/Chatterfang, Squirrel General(MH2)》

デッキ

クリーチャー

  • 《大釜の使い魔/Cauldron Familiar(ELD)》
  • 《骨術師の達人/Osteomancer Adept(BLB)》
  • 《ズーラポートの殺し屋/Zulaport Cutthroat(BLC)》
  • 《ネイディアの夜刃/Nadier's Nightblade(BLC)》
  • 《無情な無頼漢/Ruthless Knave(XLN)》
  • 《実験的な菓子職人/Experimental Confectioner(WOE)》
  • 《悲哀の徘徊者/Woe Strider(BLC)》
  • 《巣穴の魂商人/Warren Soultrader(MH3)》
  • 《無慈悲な略奪者/Pitiless Plunderer(RIX)》
  • 《無情な屍技術師/Ruthless Technomancer(NEC)》
  • 《ヘイゼルの醸造主/Hazel's Brewmaster(BLC)》
  • 《溜め込む親玉/Hoarding Broodlord(MOM)》
  • 《エルフの神秘家/Elvish Mystic(TSR)》
  • 《金のガチョウ/Gilded Goose(MOC)》
  • 《ラノワールのエルフ/Llanowar Elves(_BR)》
  • 《極楽鳥/Birds of Paradise(RVR)》
  • 《森を護る者/Sylvan Safekeeper(MH3)》
  • 《茨越えの餌あさり/Thornvault Forager(BLB)》
  • 《献身のドルイド/Devoted Druid(UMA)》
  • 《裕福な亭主/Prosperous Innkeeper(BLC)》
  • 《小走り樫/Scurry Oak(MH2)》
  • 《不屈の補給兵/Tireless Provisioner(BLC)》
  • 《リスの小走り/Scurry of Squirrels(BLC)》
  • 《ペレグリン・トゥック/Peregrin Took(LTR)》
  • 《秘密を知るもの、トスキ/Toski, Bearer of Secrets(MKC)》
  • 《終わりなき巣網のアラスタ/Arasta of the Endless Web(BLC)》
  • 《永久の証人/Timeless Witness(MH2)》
  • 《深き森の隠遁者/Deep Forest Hermit(BLC)》
  • 《悪魔の職工/Fiend Artisan(IKO)》
  • 《根花のヘイゼル/Hazel of the Rootbloom(BLC)》
  • 《歩行バリスタ/Walking Ballista(AER)》
  • 《アカデミーの整備士/Academy Manufactor(BLC)》
  • 《カルドーサの鍛冶場主/Kuldotha Forgemaster(SOM)》
  • 《マイアの戦闘球/Myr Battlesphere(TDC)》

インスタント

  • 《命取りの論争/Deadly Dispute(BLC)》
  • 《切断マジック/Saw in Half(BLC)》
  • 《新緑の命令/Verdant Command(MH2)》
  • 《蓄え放題/Cache Grab(BLB)》
  • 《召喚の調べ/Chord of Calling(M15)》
  • 《暗殺者の戦利品/Assassin's Trophy(ACR)》
  • 《ウィンドグレイスの裁き/Windgrace's Judgment(BLC)》

ソーサリー

  • 《発掘/Unearth(A25)》
  • 《群がり庭の虐殺/Swarmyard Massacre(BLC)》
  • 《根鋳造の弟子入り/Rootcast Apprenticeship(BLC)》
  • 《大渦の脈動/Maelstrom Pulse(BLC)》

エンチャント

  • 《清掃人の才能/Scavenger's Talent(BLB)》
  • 《アクロゾズの約定/Promise of Aclazotz(LCC)》
  • 《想起の拠点/Bastion of Remembrance(BLC)》
  • 《美食家の才能/Gourmand's Talent(BLC)》
  • 《パンくずの道標/Trail of Crumbs(ELD)》
  • 《殺しのサービス/Killer Service(NCC)》
  • 《イトリモクの成長儀式/Growing Rites of Itlimoc(XLN)》
  • 《似通った生命/Parallel Lives(WOT)》
  • 《陰湿な根/Insidious Roots(MKM)》

アーティファクト

  • 《太陽の指輪/Sol Ring(BLC)》
  • 《恐竜の遺伝子/Dino DNA(REX)》
  • 《魔女のかまど/Witch's Oven(ELD)》
  • 《頭蓋骨絞め/Skullclamp(BLC)》
  • 《アシュノッドの供犠台/Ashnod's Altar(4ED)》
  • 《ヌカコーラ自動販売機/Nuka-Cola Vending Machine(PIP)》
  • 《前兆の時計/Clock of Omens(5DN)》
  • 《旗印/Coat of Arms(EXO)》
  • 《囀り吐き/Chitterspitter(BLC)》

プレインズウォーカー

  • 《飢餓の潮流、グリスト/Grist, the Hunger Tide(MH2)》

バトル

  • 《イコリアへの侵攻/Invasion of Ikoria(MOM)》

土地

  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《沼/Swamp》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《森/Forest》
  • 《見捨てられたぬかるみ、竹沼/Takenuma, Abandoned Mire(NEO)》
  • 《ゴルガリの腐敗農場/Golgari Rot Farm(RAV)》
  • 《疾病の神殿/Temple of Malady(BLC)》
  • 《森林の墓地/Woodland Cemetery(TDC)》
  • 《黄昏のぬかるみ/Twilight Mire(TDC)》
  • 《ラノワールの荒原/Llanowar Wastes(TDC)》
  • 《緑ばんだ沼/Viridescent Bog(BLC)》
  • 《汚れた森/Tainted Wood(BLC)》
  • 《草むした墓/Overgrown Tomb(RAV)》
  • 《屍花の交錯/Necroblossom Snarl(BLC)》
  • 《風切る泥沼/Hissing Quagmire(OGW)》
  • 《眠らずの小屋/Restless Cottage(WOE)》
  • 《不気味な辺境林/Grim Backwoods(BLC)》
  • 《群がりの庭/Swarmyard(TSR)》
  • 《風変わりな果樹園/Exotic Orchard(BLC)》
  • 《祖先の道/Path of Ancestry(BLC)》
  • 《統率の塔/Command Tower(BLC)》
  • 《新緑の地下墓地/Verdant Catacombs(ZEN)》
  • 《成長の揺り篭、ヤヴィマヤ/Yavimaya, Cradle of Growth(MH2)》

お気に入りのデッキですが、ここ半年回していなかったのは明確な理由がありました。

「Geminiの画像生成により、全てのトークンを一新する必要があったため」

上記リストの太字はトークン生成/トークン生成を強化するもの。

それだけに、この一仕事を終えてホッとしています。

Nextcloud、ドメイン変更時のメモ。

正直、かなり甘く見ていました。

やろうとしたこと

a.hoge.comというサブドメインでNextcloudを立ち上げて運用していたのですが、唐突にexample.comというネイキッドドメインで運用しようとしたのがきっかけ。

当初の手順

  1. DBバックアップ
  2. 設定ファイルバックアップ(apacheバーチャルサイトとNextcloudのconfファイル)
  3. 新DNSレコード変更
  4. apacheバーチャルサイトのURL変更およびSSL証明書の差し替え
  5. NextcloudのconfファイルのURL変更
  6. Apache / PHP-FPM再起動

まではすんなりいきました。

URL変更後の苦行

Nextcloudは単なるファイルストレージではなく、統合コラボスイート。非常に多岐にわたって運用していたんだと改めて痛感。

  • デスクトップクライアント
  • スマートフォンアプリ
  • ブックマークの変更

がそれなりにヘビー。それ以上にヘビーだったのが

  • 高性能バックエンド
  • AppAPI

の設定変更を忘れていたことでした。

DBと参照ディレクトリ変更の更なる苦行

また、動作確認後、「DBの向き先とNextcloud格納ディレクトリが新ドメインに即していない」ことがわかり、

  1. apacheのconfファイルをいったん無効化
  2. 再度DBバックアップ(サイト名などを変えていたため)
  3. DB及びユーザー新規作成作成
  4. 再バックアップしていたDBから新DBにデータ流し込み
  5. Nextcloud格納ディレクトリを-pirオプションをつけてコピー&リネーム
  6. Nextcloudのconfigを修正。DBのユーザ名とDB名を新しく作成したDBに変更
  7. ログ格納ディレクトリを新規作成、www-dataに所有者変更
  8. apacheのconfファイルの格納ディレクトリとログ格納ディレクトリの向き先変更
  9. /etc/logrotate.d配下のローテーションを新しいログ格納ディレクトリに変更
  10. apacheのconfファイル有効化
  11. apache再起動
  12. Nextcloudのcronを新ディレクトリに合わせる

までやって、完全移行が完成しました。

「サーバリプレースとどう違うのか」レベルではありましたが、うまくいって良かったです。

詳細な手順は相当なボリュームになりそうなので、様子を見て描いていきます。

ネイキッドドメインでSSL証明書を取得したかどうかを確認するための手順

概要

筆者はletsencryptでワイルドカード証明書を取得していますが、

*.example.com

の証明書を取得して、

example.com

の、「サブドメインが付かないドメインそのもの」 (hoge.example.com / foo.example.com / supercalifragilisticexpialidocious.example.com等を 含まない ドメイン)、いわゆるネイキッドドメインでの証明書を取っていないかどうかの確認手順です。

重要な仕様

割と躓きやすい仕様ですが、

*.example.comは、example.comを含みません。

ワイルドカード証明書は「何か」.example.comにマッチする証明書。つまり、この「何か」が空文字にならないルールです。

筆者が過去の記事でletsencryptで証明書を作成する際

certbot certonly --manual \
    --preferred-challenges dns \
    --server https://acme-v02.api.letsencrypt.org/directory \
    -m あなたの有効なメールアドレス@example.com \
    -d "*.example.com" \
    -d "example.com"

と、

  • -d "*.example.com"
  • -d "example.com"

のように、ワイルドカードとネイキッドドメインの両方を含めているのはまさにその理由です。

これを忘れたことによるありがちなエラー

*.example.com だけ取得

https://example.com にアクセス

証明書エラー

「え、ワイルドカードなのに!?」

という事態が多く発生します。

ネイキッドドメインの証明書を取得したか

以下の2つのコマンドを用います。

Let's encryptを利用している場合

非常に簡単です。

sudo certbot certificates

と実行するだけ。

 Certificate Name: example.com
    Serial Number: UID]
    Key Type: ECDSA
    Identifiers: *.example.com example.com

のように、Identifiersの欄に.*がついているとついていないドメインがついていればOKです。

Let's encryptを利用していない場合

openssl x509 -in /path/to/certs/directory/cert.pem -noout -text | grep -A1 "Subject Alternative Name"

と実行。(証明書の場所は合わせます)

X509v3 Subject Alternative Name: 
DNS:*.example.com, DNS:example.com

のように、DNSの欄に.*がついているとついていないドメインがついていればOKです。

以上、実務で予め両方の証明書を取得していれば「なんてことない」仕様ですが、これを取得していない場合のSSL再取得の手間はかなり手間です。

『アルルの丘』ソロプレイ記録(2026/02/11)

降って湧いた週の中日の祝日。

ボードゲーム『アルルの丘』ソロプレイを行いました。

棚卸し前に作業台を1つ上げ、小麦も手配してくれる「工房」で少しブースト。

小屋ごとに水路3つを供給してくれる建物も相まって、総得点133点でした。

気軽にプレイできる環境が整ったため、もう少し回す機会を増やしたいです。

mermaid.jsによる調理の方法。(ポークソテー)

このやり方かなり気に入っています。

これをポークソテーでもやってみました。

sequenceDiagram participant Cook as 料理人 participant Table as 調理台 (まな板) participant Stove as コンロ (フライパン) Note over Cook, Table: 準備フェーズ Cook->>Table: 豚肉の酒粕を拭き取る Cook->>Table: 常温に戻す(放置) Cook->>Table: 豚肉の筋切りを行う Note over Cook, Stove: 加熱フェーズ Cook->>Stove: フライパンに油を引き、肉を並べる Cook->>Stove: 弱火で点火し、蓋をする par 並行作業 Cook->>Table: まな板をよく洗う and 加熱継続 Stove->>Stove: 約4分焼く end Cook->>Stove: 肉を裏返す Cook->>Table: アルミホイルを敷いて準備 Stove->>Stove: 約3分焼く(火を通す) Note over Cook, Table: 仕上げフェーズ Cook->>Stove: 肉を取り出す Cook->>Table: 肉をアルミホイルで包んで休ませる Cook->>Stove: 肉汁に日本酒・醤油・刻みネギを投入 Stove->>Stove: ソースを煮詰める Cook->>Table: 肉を皿に盛り付ける Cook->>Stove: ソースを肉にかけて完成

小麦粉で均して焼き始め。

ひっくり返してもう片面。

焼き終えてアルミホイルで包んでいるところ。

ご飯の上に載せてソースをかけた状態。

  • 柔らかく焼けた
  • 肉汁が流出しにくい
  • パラレルで作っているので焼き上がりと同時に食べられる

等は気に入っています。

『ライザのアトリエ3DX』追加されたキャラクタークエスト(内容そのもののネタバレ無し)

新規プレイアブルキャラクター、キロのキャラクタークエスト。

  • フルボイス
  • 既存キャラクターの新モーションあり
  • ストーリーを更に補完する内容

と盛りだくさん。それらの発生タイミングについて紹介です。

備考

  • いずれも異界ウィンドルで発生します。
  • 実績には関係ありません。
  • ※タイトルそのものがネタバレとなっているものに関しては、○○とします

発生タイミングと場所

メインクエスト『○○』発生後

  • たった4年
    • 異界ウィンドルのアトリエ近くで発生。
  • あの日のお礼
    • 異界ウィンドルのアトリエで発生。
    • キロがパーティーメンバーになります
  • 彼を待つ
    • 宥めの精の庭で発生。
  • 決闘!
    • 異界ウィンドルのアトリエ近くで発生。

メインクエスト『何度目かの里帰り』発生後

  • ○○の不思議な力
    • 異界ウィンドルのアトリエ近くで発生。
  • レントのお節介
    • 異界ウィンドルのアトリエの北で発生。

メインクエスト『酔い覚まし』発生後

  • 2人のアドバイス
    • 異界ウィンドルのアトリエの北で発生。
  • 響き合う○○
    • 異界ウィンドル、木の上の集会場で発生。

メインクエスト『何度目かの異界』発生後

  • いつか、その先へ
    • 宥めの精の庭で発生。
  • 巡りゆく輝き
    • 異界ウィンドルの入り口(竜の風跡)で発生。

と、数も多め。本作のファンには刺さる内容でした。

『ライザのアトリエ3DX』トロコン完了とオリジナルとの差分メモ(ストーリーのネタバレなし)

2025/11/15にプレイを着手して諸々放置していた『ライザのアトリエ3DX』一念発起して片付けました。

プレイ時間は57時間程度。オリジナルのトロコンが70数時間だったことを考えると

  • 元々攻略情報をメモ書きしていた
  • スタートダッシュキャンペーンでSP17000から始まった

の2つが極めて大きいです。

そんな中、オリジナルとの差分をいくつかメモしておきます。

システム上の大きな改善点

インベントリ(素材)が増えた

オリジナルの9,999→20,000ぐらいと倍加。

一番つらかった「素材の一括処分」の手間がなくなりました。(高難易度でさっくり倒すほどコンテナは膨れ上がるので)

DLCが最初から使える。

これもプレイ時間の短縮に一役買いました。

  • ラブリーブロッサムによるハメ
  • 竜の涙を用いた効率的な調合

が終盤になるほど効きます。

シナリオの落差

プレイアブルと明言されていた

  • クリフォード
  • セリ
  • キロ

の3人のうち、ストーリーにがっつり絡むのは一人だけ。残り2人はいるだけ参戦状態だったがやや残念。

とはいえ、戦闘中の掛け合いはしっかり新録は高ポイント。それ以上に、一人はキャラクタークエストが完全新録で、オリジナルで消化不良だった部分が保管されています。

攻略の上で気づいたこと

クレリアでアトリエを構える前に賢者の石が調合可能

これが維持されていたので、バグではなかった仕様だったと判明。

低品質の「隠者の軟膏」の条件緩和

クラウディアのキャラクタークエストで必要になっていた隠者の軟膏作りの品質縛り。

  • 50未満
  • 51~100
  • 101以上

という条件が、プレイ改善パッチ適用後の

  • 200未満
  • 201~400
  • 401以上

になったので、終盤で慌てることはなかったです。

他、気づいたことは逐一報告します。

『ライザのアトリエ3(DX含む)』超特性「英雄の心得」の入手確率増強。

こちらのクルーガークローク、その他ハイエンド装備品を作る上で欠かせない(というよりもすごく苦労する)「英雄の心得」(アタッカーレベルを上昇させる超特性)

これの入手確率を上げる方法をクリア3年目にして確立できました。

そもそも:なぜこの超特性を手に入れるのが骨なのか

「採取レベルが上がってしまっているから」に尽きます。

この超特性、採取レベルが低いゲーム序盤ほど手に入れやすく、(スキルツリーで上がった採取レベルが高い)ゲーム終盤はファストトラベルを繰り返してもなかなか出ないものになっています。

この、「超特性の採取レベルに応じて手に入りやすい/手に入りにくい」というシステム上の仕様を今までは「回数で突破する」力技で行っていたのですが……

もっと効率的な手法を見つけました。

採取ランクを落とした捕獲網

これが必要でした。

「生き物が採れる・優」で発現を止めた捕獲網。こちらを調合して

ランドマーク:「[参道の小洞穴](https://atelier.reisalin.com/issues/233)」へとファストトラベル。

採取結果

ここでは、素材「エリキシル」を持つ黒泥が、「採取ランク2」で採ることが可能です。(ついでに、『神秘の力』を持つスピリット・モルグも採取可能

ここで採取道具を捕獲網に切り替えて採取。

今まで数十回のファストトラベルでも得られなかった「英雄の心得」が十数回で達成と大きく改善しました。

おかげでハーナルリングなどもアタッカーレベルを上昇させた上で「アルケミスト」のレベルを統一。

おかげで、ライザ3DXでも無事に1000万ダメージを再現できました。

「最上の道具が最良の道具とは限らない」というある種の鉄則を理解した形です。

Page 1 of 283

Powered by WordPress & Theme by Anders Norén