投稿者: manualmaton Page 1 of 284

ガイアと航法。(スマートフォン版『ガイアプロジェクト』イタル人チャレンジ。

パワートークンを燃やしてもガイアエリアに移動するだけであり、首府を解放済みの場合は、そのガイアエリアからのトークンを4つ排除することで任意の技術タイルを取得することができるイタル人。

その分、パワートークンの減りが早いため

  • パワーアクション:トークン×2
  • ラウンドブースター:トークン×2+鉱石1

の2つはコンスタントに取ることが必須。

今回のゲームは、それが両方ともできたため可能な盤面がありました。

初期配置

非常にありがたいことに、受動パワーがとても得やすい初期配置。これによって、失点を恐れずガンガンとパワーをもらって資源を獲得。

順当に首府を解放してガイア戦略。また、次元横断星が散らばっているため

  • 航法
  • ガイア計画

の2つに絞って研究を(タイルを消費して)あげていく戦略を取ります。

3R目

この段階で、施設数は黒のマッド・アンドロイドに水をあけられていますが

4R目

ここで2差。QICを消費して、より次元横断星が安いところへ進出できたのもありがたいです。

5R目

ラス前のラウンドで施設数を逆転。

6R開始

5Rに同盟を組んで、航法ゴール。暗黒惑星を右上に配置し、ゲーム終了目的でもある「衛星数」につないでいきます。

最終盤面

広範囲にまたがる形での同盟を2つ追加。

  • 施設数:17
  • 衛星数:12

と、全く文句ないものになりました。

施設数とタイル

個人ボードで開いていない施設が右学院と研究所のみと言う。(学院開放は最終ラウンドだったので右の学院を取るべきでした)

得点

得点は166点。上級タイルが「ガイア(鉱山)×2」だったらもっと取れていたでしょうが、

  • ガイア3点と7勝利点タイルで43点
  • ガイアゴールで16点

は誇れる数字でした。

発掘、電子ノート。

部屋の掃除をしている中で、思わぬものを見ました。

シャープの電子ノートです。ご丁寧にほぼ日のカバーに入れていたことからも保存状況は良好でした。

画像では見切れていますが、スタイラスもカスタマイズしていたので、買った当初はそれなりに気合いを入れていたことがうかがえます。

これを使ってこなかったのは

  • 万年筆を多用するようになった
  • それに合わせてあの書き味が違う

で使わなくなったことは予想されますが、新たな使い道が見つかりそうです。それは

「ボードゲームの記録」。

以前の大鎌戦役のように、計算式が複数あるゲームは多々あります。そんな中で

  • インク切れが起きず
  • インクがコンポーネントにつかず
  • 相手の服やカードにつかない

構造は非常に大事。これは少し使っていこうと思った次第です。

『ライザのアトリエ2DX』追加「素材エリア」のメモ。【ストーリーのネタバレなし)

『ライザのアトリエ2』、

  • 採取
  • 調合
  • 戦闘

のサイクルが本当に楽しくなってくるのはキャラクターが全員プレイアブルになる頃という体幹を大きく改善してくれました。

DX追加マップ『ゼレプスト洞穴』

アンペルとリラが仲間になるタイミング。『地下乙女の墓所』クリア後。

ここで採取できるアイテムは、「このタイミングにしては」良好。

特に役立つのは、水のカテゴリを持つアクア鉱です。

属性値「3」を持つ水はこの段階では貴重。

そのため、投入数に乏しく、属性値が低い素材しか手に入らない状態でも一発で中和剤の効果2を発現可能。

後は中和剤ループで属性を高め

中間素材を調合し

ステータスが跳ね上がる武器を作れるようになり、その後の探索と戦闘が楽になります。

試作版:ipsetによるufwブロックの効率化スクリプト。

攻撃者の種は尽きまじという形。

この、ufwの効率化を図るスクリプトを試作です。

前提条件

上記リンク先にあるとおり、ipsetをipset-persistant抜きで入れている場合。なので、相当、対象者は限られます。

スクリプト内容

#!/bin/bash

# セット名の定義
SET_NAME="ufw-blocklist"
SAVE_FILE="/etc/ufw/ipsets.save"

# 1. root権限チェック
if [[ $EUID -ne 0 ]]; then
   echo "エラー: このスクリプトは sudo または root 権限で実行してください。"
   exit 1
fi

# 保存用関数
save_ipset() {
    read -p "設定をファイルに保存しますか? (y/n): " confirm
    if [[ "$confirm" =~ ^[Yy]$ ]]; then
        ipset save "$SET_NAME" -f "$SAVE_FILE"
        echo "保存完了: $SAVE_FILE"
    else
        echo "保存をスキップしました(メモリ上の設定のみ更新)。"
    fi
}

# ipsetが存在しない場合に作成
if ! ipset list "$SET_NAME" > /dev/null 2>&1; then
    echo "情報: $SET_NAME が見つからないため新規作成します。"
    ipset create "$SET_NAME" hash:net
fi

while true; do
    echo "------------------------------------------"
    echo " ipset 管理メニュー ($SET_NAME)"
    echo "------------------------------------------"
    echo "1) IP/ネットワークを追加 (例: 198.51.100.42, 203.0.113.0/24)"
    echo "2) IP/ネットワークを削除"
    echo "3) ステータス表示 (list)"
    echo "q) 終了"
    echo "------------------------------------------"
    read -p "番号を選択してください: " choice

    case $choice in
        1)
            echo "--- 追加モード ---"
            read -p "追加する IP/NW: " target
            if [ -n "$target" ]; then
                if ipset add "$SET_NAME" "$target"; then
                    echo "追加成功: $target"
                    save_ipset
                fi
            fi
            ;;
        2)
            echo "--- 削除モード ---"
            read -p "削除する IP/NW: " target
            if [ -n "$target" ]; then
                if ipset del "$SET_NAME" "$target"; then
                    echo "削除成功: $target"
                    save_ipset
                fi
            fi
            ;;
        3)
            echo "--- 現在のリスト ---"
            ipset list "$SET_NAME"
            ;;
        q)
            echo "終了します。"
            exit 0
            ;;
        *)
            echo "無効な選択です。"
            ;;
    esac
    echo ""
done

後は

sudo chmod 755 ipset-block.sh

等として実行権限を付与。

sudo bash ipset-block.sh

等で実行することで

------------------------------------------
 ipset 管理メニュー (ufw-blocklist)
------------------------------------------
1) IP/ネットワークを追加 (例: 198.51.100.42, 203.0.113.0/24)
2) IP/ネットワークを削除
3) ステータス表示 (list)
q) 終了
------------------------------------------

番号表示。

--- 追加モード ---
追加する IP/NW: 

で、IP/NWを設定すれば、後はセーブまでしてくれます。

今後の展望

  • 引数
  • ファイルからの一括入力
  • 既にあるリストとの突き合わせ

など。興味は尽きません。

ルール、再確認。(ボードゲーム『大鎌戦役』ソロプレイ)

ボードゲーム『大鎌戦役』ソロプレイ時のルールを再確認しました。

勘違いしていたルール

セクション2に切り替わった瞬間、オートマは星章を得る。

オートマカードの『Ⅱ』の背後の斉唱を見落としていました。

オートマのワーカーの挙動。

基本的にオートマのワーカーは「近傍」を利用してワープしますが、そのワープ先は

  • 既にワーカーがいない
  • 周囲に敵(つまりプレイヤー)のユニットから離れたところに

「勢力拡大する」

形です。その結果、「あり得ない速度で勢力を拡大する」パターンが多いです。

オートマのやりにくさ

「意図が読めない」に尽きます。

渡河能力、移動力を無視して領土を拡大する上、次に何をするかが読みにくい。

そのため、敵を利用するとか、敵が攻めてこないところで内政を行うなどができません。

そんな中での勝敗結果

こちらはクリミアを使い、オートマはロスヴィエトを担当。

結果は64-55での勝利。

勝てた理由

「負けを覚悟した戦闘で全力を出したら勝った」

です。オートマの数値の下振れとこちらの戦闘カードの上振れが左右。

この、自分の宝、ペイントされたミニチュアを動かすというのはそれだけでテンションが上がります。

2026年のベースデッキ。(統率者メモ:2026/02/23)

到着したのでメモです。

『久遠の終端』、ジェスカイカラーの『カウンターインテリジェンス』。

再録カードが豪華だったために気づいたときには市場から消えていたものの、運良く手に入れることができました。

クリーチャー (25)

  • 1 《遠地点の頭脳、キロ/Kilo, Apogee Mind》 → 統率者
  • 1 《巡回する治安維持機/Patrolling Peacemaker》
  • 1 《深奥揺すりのタイタン/Depthshaker Titan》
  • 1 《うねりの指揮者/Surge Conductor》
  • 1 《遺跡の天使/Angel of the Ruins》
  • 1 《金属の徒党の種子鮫/Chrome Host Seedshark》
  • 1 《サイバードライブの起動者/Cyberdrive Awakener》
  • 1 《深輝エイ/Deepglow Skate》
  • 1 《湖に潜む者、エムリー/Emry, Lurker of the Loch》
  • 1 《河童の砲手/Kappa Cannoneer》
  • 1 《ファイレクシアの変形者/Phyrexian Metamorph》
  • 1 《尋問のドミヌス、テクータル/Tekuthal, Inquiry Dominus》
  • 1 《思考の監視者/Thought Monitor》
  • 1 《古代の証人、アリボー/Alibou, Ancient Witness》
  • 1 《ウェザーライトの艦長、ジョイラ/Jhoira, Weatherlight Captain》
  • 1 《水晶の這行器/Crystalline Crawler》
  • 1 《搭載歩行機械/Hangarback Walker》
  • 1 《鋼の監視者/Steel Overseer》
  • 1 《三重の稲妻巨人/Threefold Thunderhulk》
  • 1 《エーテリウムの彫刻家/Etherium Sculptor》
  • 1 《かき鳴らし鳥/Thrummingbird》
  • 1 《熱心なメカ乗り/Enthusiastic Mechanaut》
  • 1 《地核搾り/Coretapper》
  • 1 《刻まれた巫女/Etched Oracle》
  • 1 《愚鈍な自動人形/Mindless Automaton》

呪文 (35)

  • 1 《旗艦、インスピリット/Inspirit, Flagship Vessel》
  • 1 《ウスロスの調査船/Uthros Research Craft》
  • 1 《洞察エンジン/Insight Engine》
  • 1 《長距離センサー/Long-Range Sensor》
  • 1 《太陽電池アレイ/Solar Array》
  • 1 《モーキサイト精製所/Moxite Refinery》
  • 1 《白鳥の歌/Swan Song》
  • 1 《混沌のねじれ/Chaos Warp》
  • 1 《雲の鍵/Cloud Key》
  • 1 《裁きの木槌/Gavel of the Righteous》
  • 1 《燻蒸/Fumigate》
  • 1 《有機体の絶滅/Organic Extinction》
  • 1 《臨機応変な防御/Resourceful Defense》
  • 1 《明日からの引き寄せ/Pull from Tomorrow》
  • 1 《潜在能力の波動/Ripples of Potential》
  • 1 《万象監視/Universal Surveillance》
  • 1 《連鎖反応/Chain Reaction》
  • 1 《過去起こし/Wake the Past》
  • 1 《霊体のヤギ角/Astral Cornucopia》
  • 1 《ダークスティールの反応炉/Darksteel Reactor》
  • 1 《大出力自動生成器/Empowered Autogenerator》
  • 1 《光明の火砲/Lux Artillery》
  • 1 《光明の大砲/Lux Cannon》
  • 1 《タイタンの炉/Titan Forge》
  • 1 《剣を鍬に/Swords to Plowshares》
  • 1 《テゼレットの計略/Tezzeret's Gambit》
  • 1 《知識の渇望/Thirst for Knowledge》
  • 1 《秘儀の印鑑/Arcane Signet》
  • 1 《五元のプリズム/Pentad Prism》
  • 1 《太陽の指輪/Sol Ring》
  • 1 《急送/Dispatch》
  • 1 《実験的占い/Experimental Augury》
  • 1 《永遠溢れの杯/Everflowing Chalice》
  • 1 《ゴーレムの鋳造所/Golem Foundry》
  • 1 《魂標ランタン/Soul-Guide Lantern》

土地 (40)

  • 3 《平地/Plains》
  • 3 《島/Island》
  • 3 《山/Mountain》
  • 1 《きらめく地溝/Glittering Massif》
  • 1 《光輝の山頂/Radiant Summit》
  • 1 《戦場の鍛冶場/Battlefield Forge》
  • 1 《アダーカー荒原/Adarkar Wastes》
  • 1 《滝の断崖/Cascade Bluffs》
  • 1 《断崖の避難所/Clifftop Retreat》
  • 1 《風変わりな果樹園/Exotic Orchard》
  • 1 《氷河の城砦/Glacial Fortress》
  • 1 《灌漑農地/Irrigated Farmland》
  • 1 《カーンの拠点/Karn's Bastion》
  • 1 《マイコシンスの庭/The Mycosynth Gardens》
  • 1 《岩だらけの大草原/Rugged Prairie》
  • 1 《シヴの浅瀬/Shivan Reef》
  • 1 《広漠なるスカイクラウド/Skycloud Expanse》
  • 1 《産業の塔/Spire of Industry》
  • 1 《硫黄の滝/Sulfur Falls》
  • 1 《啓蒙の神殿/Temple of Enlightenment》
  • 1 《天啓の神殿/Temple of Epiphany》
  • 1 《凱旋の神殿/Temple of Triumph》
  • 1 《統率の塔/Command Tower》
  • 1 《古えの居住地/Ancient Den》
  • 1 《埋没した廃墟/Buried Ruin》
  • 1 《進化する未開地/Evolving Wilds》
  • 1 《大焼炉/Great Furnace》
  • 1 《孤立した砂州/Lonely Sandbar》
  • 1 《神秘の僧院/Mystic Monastery》
  • 1 《剃刀潮の橋/Razortide Bridge》
  • 1 《錆付谷の橋/Rustvale Bridge》
  • 1 《教議会の座席/Seat of the Synod》
  • 1 《隔離されたステップ/Secluded Steppe》
  • 1 《銀色険の橋/Silverbluff Bridge》

まずは、このマナ調整やトークン生成を軸にしつつ、いじっていこうと思います。

発掘・単焦点。

2010年に買っていたレンズ。17mm(実質34mm)の単焦点。

折角だから試してみました。

「普段の行動範囲で、普段目にする印象と同じ写真ができあがる」

という印章です。

特に、強い光に関しても克明に撮ってくれますし

広めの画角にも対応。

物撮りにも対応しているので、新しいのを買うよりは、当時の投資を信じて使っていくのも悪くありません。

NW設定変更時、ASUSTOR NASの再セットアップ。

自宅に置いてあったルータが入れ替え完了。その際、NASが固定設定だったため、接続できなかったというありがちなことをしでかしたので、そのメモです。

大前提

10年以上も前のNAS、AS-202Tでの手順です。

これは個人運用だったから助かった手。企業でこれをやるのは様々な意味でおすすめしません。

手順メモ

深夜作業だったため、写真などは残していません。ご了承ください。

あらかじめACC(ASUSTOR Control Centrer)をセットアップしておきます。

ダウンロードサイトはこちら。

この段階で実行してもおそらくNWはスキャンされないでしょう。

設定の全リセットを行います。

ASUSTOR NASの筐体は、背面にリセットスイッチがあります。クリップの先や画鋲でないと届かない場所にあります。それを1秒ほど押し続け、ビープがなったら話します。

※設定データが消えるだけで、実データはそのままであることは安心ください。※

NASとPCをLANケーブルで直結します。

ここがポイントです。設定リセットを行うと、169.254.1.2などのIPに変わっています。

必要に応じてPCのIPアドレスを一時的に変えておくとよいでしょう。

NASの管理画面を開きます。

表示されたIPアドレス:8000をブラウザで打ち込み、ログインします。パスワードも初期パスワードに戻っています。

ネットワークの再設定を行います。

  1. [設定] を開く
    • デスクトップにある「設定(歯車アイコン)」をクリックします。
  2. [ネットワーク] 画面へ移動
    • 左メニューから [ネットワーク] を選び、上のタブから [ネットワークインターフェース] をクリックします。
  3. インターフェースの編集
    • 「LAN 1」を選択した状態で、[編集] ボタンをクリックします。
  4. 固定IP(静的IP)の設定
    • 「IPv4設定」タブで [IPアドレスを手動で設定する] にチェックを入れます。
    • 以下の値を入力してください:
      • IPアドレス: 192.168.xx.x (現在繋がっているアドレス)
      • サブネットマスク: 255.255.255.0
      • デフォルトゲートウェイ: 192.168.x.1 (※一般的なルーターの住所です)
  5. DNSサーバーの設定
    • [DNSサーバーを手動で設定する] にチェックを入れます。
    • 優先DNSサーバー: 192.168.x.1(または Googleの 8.8.8.8)を入力します。
    • これを設定しないと「DNSサービスが動作していません」という警告が出続けます。
  6. 適用
    • [OK] を押すと設定が保存されます。

適用後、NW配線を元に戻します。

ルータのNW配下に戻します。

復旧を確認します。

  1. 新しいIPアドレスでルータのNWクライアントからNASにログインできるか
  2. 元のファイルにアクセスできるか

の2点を確認し、パスワードの変更やアクセスポートの変更などを実施します。

Ubuntu 24.04にapache mod_securityを導入。

ApacheのWAFモジュールであるmod_securityを導入します。

  • AWS 時代から早々とインストールしていた
  • 各種不審なIPアドレスを弾くための盾

として機能している、筆者のVPS運用の核となる技術。その2026年版です。

そもそもWAFとは?

WAFとはWeb Application Firewallの略で、Webアプリケーション層の脆弱性を狙った攻撃を防ぐためのセキュリティシステムです。

  • UFWやFail2banがIPアドレスやポート番号といった家の玄関を監視するのに対し、WAFは、Webサーバーへ届く手紙(HTTPリクエスト)の中身を解析し、悪意あるスクリプトやコマンドの有無をチェックします。
  • UFWでは、通常のポート(80番や443番)を通る攻撃は防げませんが、WAFは攻撃の内容を解析し、独自のルールセットに基づき「このアクセスは許可するが、このコードがアクセスすることは許可しない」という、より柔軟で厳しいセキュリティチェックを施します。

この機能により、Webサーバーやアプリケーション本体に脆弱性が見つかったとしても、WAFが前段の盾としてこれをカバーできます。

ModSecurityとは?

ModSecurityは、IIS/Apache/Nginxといった主要なWebサーバープログラムにモジュールとして組み込みが可能なオープンソースのWAFです。

  • 導入コスト: ライセンス費用が不要であり、既存のWebサーバーと連携する形で容易に組み込めます。
  • 柔軟性: OSSであるため、高い柔軟性を持ち、設定(チューニング)次第でピンポイントの防御や包括的な防御を併せ持つことができます。

備考(バージョンの選択):

本稿で導入するModSecurityは、Ubuntu 24.04系のパッケージ管理で提供されるEOL (End-of-Life) となっているv2ですが、機能性は単一VPSの防御としては十分です。

v3への移行は、セキュリティ強度とメンテナンス性を考慮し、パッケージ化ないしはOSアップデートなどのタイミングでまた後日検討していきます。

環境

  • Ubuntu 24.04 (22.04でも動作確認)
  • Apache 2.4

※ パッケージ管理にaptitudeを用いています。必要に応じてaptに読み替えてください。

さっくりとした手順

  1. mod_securityのインストールを行います。
  2. mod_securityの設定を行います。
  3. Apacheのバーチャルサイトにmod_securityを組み込みます。
  4. 設定を反映して動作を確認します。

mod_securityのインストールを行います。

  • パッケージ全体のアップデート
sudo aptitude update
  • mod_securityインストール
sudo aptitude install libapache2-mod-security2
  • インストール確認
sudo apache2ctl -M |grep security
security2_module (shared)

と表示されていることを確認します。

ModSecurityの設定

  • 設定ファイル書き換え
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

推奨ファイルをそのまま設定ファイルとして書き換えます。

OWASP Core Rule Set (CRS)のインストールと設定

  • ディレクトリ移動
cd /usr/share/modsecurity-crs && pwd
  • ルールセットのダウンロード
sudo git clone https://github.com/coreruleset/coreruleset.git
  • ルールセットの設定書き換え
sudo mv /usr/share/modsecurity-crs/coreruleset/crs-setup.conf.example /usr/share/modsecurity-crs/coreruleset/crs-setup.conf

mod_securityモジュールにCRSを読み込む設定を追記

  • ディレクトリ移動
cd /etc/apache2/mods-available/ && pwd
  • ファイルのバックアップ
sudo cp -pi security2.conf /path/to/backup/directory/security2.conf.$(date +%Y%m%d)

任意のバックアップディレクトリを指定します。

  • バックアップ確認
diff -u /path/to/backup/directory/security2.conf.$(date +%Y%m%d) security2.conf

エラーがなければバックアップは成功です。

  • ファイル追記

/etc/apache2/mods-available/security2.confを、以下の差分になるように教義・信仰に沿ったエディタで編集します。(要root権限)

 <IfModule security2_module>
-       # Default Debian dir for modsecurity's persistent data
-       SecDataDir /var/cache/modsecurity
+    # Default Debian dir for modsecurity's persistent data
+    SecDataDir /var/cache/modsecurity

-       # Include all the *.conf files in /etc/modsecurity.
-       # Keeping your local configuration in that directory
-       # will allow for an easy upgrade of THIS file and
-       # make your life easier
-        IncludeOptional /etc/modsecurity/*.conf
+    # Include all the *.conf files in /etc/modsecurity.
+    # Keeping your local configuration in that directory
+    # will allow for an easy upgrade of THIS file and
+    # make your life easier
+    IncludeOptional /etc/modsecurity/*.conf

-       # Include OWASP ModSecurity CRS rules if installed
-       IncludeOptional /usr/share/modsecurity-crs/*.load
+    # --- OWASP Core Rule Set (CRS) の読み込み ---
+
+    # 1. CRSのセットアップファイルを読み込む(必須)
+    IncludeOptional /usr/share/modsecurity-crs/coreruleset/crs-setup.conf
+    
+    # 2. CRSのルールファイルを読み込む
+    #    パフォーマンス問題を起こすSQLデータ漏洩検知ルールを除外
+    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/REQUEST-*.conf
+    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-950-DATA-LEAKAGES.conf
+    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-952-DATA-LEAKAGES-JAVA.conf
+    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-953-DATA-LEAKAGES-PHP.conf
+    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-954-DATA-LEAKAGES-IIS.conf
+    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-959-BLOCKING-EVALUATION.conf
+    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-980-CORRELATION.conf
+    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf

→ 修正後のsecurity2.conf全文

<IfModule security2_module>
    # Default Debian dir for modsecurity's persistent data
    SecDataDir /var/cache/modsecurity

    # Include all the *.conf files in /etc/modsecurity.
    # Keeping your local configuration in that directory
    # will allow for an easy upgrade of THIS file and
    # make your life easier
    IncludeOptional /etc/modsecurity/*.conf

    # --- OWASP Core Rule Set (CRS) の読み込み ---

    # 1. CRSのセットアップファイルを読み込む(必須)
    IncludeOptional /usr/share/modsecurity-crs/coreruleset/crs-setup.conf

    # 2. CRSのルールファイルを読み込む
    #    パフォーマンス問題を起こすSQLデータ漏洩検知ルールを除外
    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/REQUEST-*.conf
    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-950-DATA-LEAKAGES.conf
    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-952-DATA-LEAKAGES-JAVA.conf
    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-953-DATA-LEAKAGES-PHP.conf
    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-954-DATA-LEAKAGES-IIS.conf
    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-959-BLOCKING-EVALUATION.conf
    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-980-CORRELATION.conf
    IncludeOptional /usr/share/modsecurity-crs/coreruleset/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
</IfModule>

※ なぜここまで除外するか?

この、RESPONSE-9x系のルールは、ページの内容に機密情報(クレジットカードのデータなど)が入っていないかを精査します。

これは重要なものですが、昨今のAIボットによる過剰なクロールが挟むと、サーバそのものへの負荷を強め、更にログの圧迫(実際にサーバ容量120GB全てを食い尽くしました)とサーバダウンにつながります。

こちらは個人サイト、単一VPSの運用を旨としているため、ここに関するデータはオミットです。 その分、他の設定の補強でセキュリティ強度を担保します。

例外ルールを追記

/usr/share/modsecurity-crs/coreruleset/rules && pwd

配下に

REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.confファイルを作成します。

#
# === CRS Exclusions - Before Rules Execution (Organized) ===
#

# ===================================================================
# 1. 共通ルール・汎用ルール (General/Common Rules)
# ===================================================================

# 1-1. 遅い通信(Slowloris)対策
# 矛盾するConnectionヘッダーを持つリクエストを遮断
SecRule REQUEST_HEADERS:Connection "@rx (?i)(?:keep-alive(?:,\sclose|,\skeep-alive)|close(?:,\skeep-alive|,\sclose))" \
    "id:10001,phase:1,t:none,block,msg:'[CUSTOM RULE] Contradictory Connection header, possible Slowloris probe.',tag:'application-attack',tag:'PROTOCOL_VIOLATION/INVALID_HREQ',setvar:'tx.inbound_anomaly_score_pl1=+%{tx.critical_anomaly_score}'"

# 1-2. IPアドレス直打ちアクセス対策
SecRule REQUEST_HEADERS:Host "@rx ^[\d.]+(:\d+)?$" \
    "id:10002,\
    phase:1,\
    deny,\
    status:404,\
    log,\
    msg:'[CUSTOM RULE] Host header is a numeric IP address (incl port). Blocked immediately.',\
    tag:'application-attack',\
    tag:'PROTOCOL_VIOLATION/INVALID_HREQ'"

# 1-3. Hostヘッダーが存在しない場合は即ブロック
SecRule &REQUEST_HEADERS:Host "@eq 0" \
    "id:10003,\
    phase:1,\
    deny,\
    status:404,\
    log,\
    msg:'[CUSTOM RULE] Missing Host Header. Blocked immediately.'"

なぜこの設定が必要なのか?

「雑なスキャナー/クローラーをまとめてブロックする」にあります。

  • 攻撃者は、 Connection: keep-alive, close という通常ではありえないヘッダーでサーバを枯渇させることが非常に多いです。(Slowloris などのDoS攻撃ツール)
  • 攻撃者のほぼ大半は、ドメイン名ではなくIPアドレスを指定。そして、Hostヘッダーを指定せずに無差別にスキャンを行います。

「ブラウザを用いて実際にアクセスする」方が

  • 矛盾したヘッダー
  • IPアドレス直打ち
  • Hostヘッダー抜きのアクセス

はあり得ません。これら雑なスキャナー/クローラーにWAFの計算力を与える必要はありません。

  • 設定追記の整合性を確認
sudo apache2ctl configtest

Syntax OKを確認します。

  • Apache再起動
sudo systemctl restart apache2.service
  • Apache再起動確認
systemctl status apache2.service

active (running) を確認します。

Apacheのバーチャルサイト編集

稼働済みのApacheバーチャルサイトの設定ファイルをいじります。バックアップ確認は入念に行ってください。

  • ディレクトリ移動
cd /etc/apache2/sites-available && pwd
  • バーチャルサイトの設定ファイルバックアップ
sudo cp -pi your_site.conf /path/to/backup/directory/your_site.conf.$(date +%Y%m%d)

.confファイルやバックアップディレクトリは自分の環境を指定します。

  • バックアップ確認
diff -u /path/to/backup/directory/your_site.conf.$(date +%Y%m%d) your_site.conf

エラーがなければバックアップは成功です。

  • ファイル追記

/etc/apache2/sites-available/your_site.confを、以下の差分になるように教義・信仰に沿ったエディタで編集します。(要root権限)

# Mod Security

## ModSecurity有効化
SecRuleEngine On
## ModSecurity検知モード
### 検知モードで動かす場合はSecRuleEngine Onをコメントアウトしてこちらを有効化します
#SecRuleEngine DetectionOnly

## ファイルのアップロードをできるようにします。
SecRequestBodyInMemoryLimit 524288000
SecRequestBodyLimit 524288000

## テスト用の検知パラメータを付け加えます。
    SecRule ARGS:modsecparam "@contains test" "id:4321,deny,status:403,msg:'ModSecurity test rule has triggered'"
  • ファイル差分
diff -u /path/to/backup/directory/your_site.conf.$(date +%Y%m%d) your_site.conf
+# Mod Security
+
+## ModSecurity有効化
+SecRuleEngine On
+## ModSecurity検知モード
+### 検知モードで動かす場合はSecRuleEngine Onをコメントアウトしてこちらを有効化します
+#SecRuleEngine DetectionOnly
+ 
+## ファイルのアップロードをできるようにします。
+SecRequestBodyInMemoryLimit 524288000
+SecRequestBodyLimit 524288000
+
+## テスト用の検知パラメータを付け加えます。
+    SecRule ARGS:modsecparam "@contains test" "id:4321,deny,status:403,msg:'ModSecurity test rule has triggered'"
+
  • 設定追記の整合性を確認
sudo apache2ctl configtest

Syntax OKを確認します。

  • Apache再起動
sudo systemctl restart apache2.service
  • Apache再起動確認
systemctl status apache2.service

active (running) を確認します。

mod_security動作確認

  1. ブラウザで、上記の設定を行ったWebサイトにアクセスし、閲覧できることを確認します。
  2. アドレスバーの末尾に?modsecparam=testを追加してアクセスします。

403 Forbidden

のように、アクセスできないことを確認します。

また、サーバでも

sudo cat /path/to/sites_log/directory/sites_error.log

※ログの格納場所やログの名前は自分の環境に合わせます。

を開き、

ModSecurity: Access denied with code 403 (phase 2). String match "test" at ARGS:modsecparam. [file "/etc/apache2/sites-enabled/your_site.conf"] [line "53"] [id "4321"] [msg "ModSecurity test rule has triggered"] [hostname "host_address"] [uri "/"] [unique_id "xxxxxxx"]

のように、エラーが発生していることを確認します。

備考

WordPress、Redmine等のWebアプリは自身の操作によって「不審なアクセス」として遮断することが極めてよくあります。(偽陽性)

そのため、テストを行った後は

## ModSecurity有効化
#SecRuleEngine On
## ModSecurity検知モード
### 検知モードで動かす場合はSecRuleEngine Onをコメントアウトしてこちらを有効化します
SecRuleEngine DetectionOnly

として検知モードとして動かした方が良いでしょう。

無駄なき同盟。(アプリ版『ガイアプロジェクト』アンバス人チャレンジ)

ゲームの目的が

  • 同盟数
  • 同盟に用いた衛星数(パワートークン)

だったので、アンバス人でセレクトです。

初期位置から受動パワーをガンガンもらえる位置にいたので

  • 鉱石2
  • 2段階改造
  • 知識2

をコンスタントにセレクトできました。

最終的な盤面。全ての施設が何らかの同盟の一部という、一切の無駄がない構成。もちろん、ゲーム目的の「同盟に所属する施設数」「衛星トークン数」は1位。

特筆すべきは、初の同盟タイルが初めて6枚手に入れられたこと。上級タイルも

  • 鉱山×2
  • パスごとに惑星改造をした種類ごとに×1

を取れました。

最終的な得点は182点。研究も盤面もしっかり取れた満足いくゲームでした。

Page 1 of 284

Powered by WordPress & Theme by Anders Norén