安定した強さを誇り、カットされなければ覇道を進むことができるダー・シュワーム。

しかも、マジョリティが
- 施設数
- 同盟の施設数
と、ダー・シュワームのためにあるようなものだったので、むしろ三番手でなぜ誰も取らなかったのかと思いながらスタート。


研究も3ゴールと上位タイル1つ(鉱山×2点)

得点は188点と、相当の点数をたたき出せました。
- Pros
- 受動パワーがとにかく強かった
- 研究のタイミングがよかった
- Cons
- 特になし
と、ミスった部分がほぼない珍しい状況でした。
安定した強さを誇り、カットされなければ覇道を進むことができるダー・シュワーム。

しかも、マジョリティが
と、ダー・シュワームのためにあるようなものだったので、むしろ三番手でなぜ誰も取らなかったのかと思いながらスタート。


研究も3ゴールと上位タイル1つ(鉱山×2点)

得点は188点と、相当の点数をたたき出せました。
と、ミスった部分がほぼない珍しい状況でした。
今月届いたノートパソコン、ThinkPad。

こちらのサプライを少し揃えました。

ダイソーで
イヤホンは元々持っていますけど、別に分けておけばペアリングの手間を省けます。

存外小さめのケースも好感触。

これに加えて
一式をお気に入りのポーチにまとめることができました。
クリスマスに喰らった広域IPからのDDoSを排除した話。そこでの「友軍相撃(Friendly Fire)」をやらかしたという失敗談です。
このときのメモはこちらにまとめています。
df -h コマンドが数分間フリーズ(Dステート一歩手前の待機状態)。調査の結果、ネットワーク層およびカーネル層での遮断を確認しました。
curl -v を実行した際、特定のIP帯域(103.151.x.x 等)へのTCPハンドシェイクが Trying... のまま進まず、タイムアウトすることを確認。
この時点で、「ああ、超・広範囲のブロックが徒になったか」と実感です。
ipset list コマンドにより、自作の防御システム『ONE OUTS』で使用している ufw-blocklist に、以下の広域ブロックが登録されていることを突き止めました。
103.0.0.0/8 (Wasabi東京リージョンを含むアジア圏の広大な帯域)85.0.0.0/8 (Nextcloud公式サーバーを含む欧州圏の広大な帯域)結論: 昨年末のDDoS攻撃を鎮圧するために設定した「第1オクテット(/8)単位のブロック」が、正常な業務通信を巻き添えにする(Friendly Fire)結果を引きおこしたのです。
干渉していた巨大なブロックエントリを ipset から削除し、通信路を復旧させました。
sudo ipset del ufw-blocklist 103.0.0.0/8
sudo ipset del ufw-blocklist 85.0.0.0/8
sudo ipset save ufw-blocklist -f /etc/ufw/ipsets.save
この状態では、まだs3fsプロセスが固まっていますので、これも対処。
sudo killall -9 s3fs
sudo fusermount -u -z /mnt/wasabi2
sudo mount -a
各サービスが正常なステータスに戻ったことを確認しました。
curl -I https://s3.ap-northeast-1.wasabisys.com で 303 See Other が即座に返ることを確認。
df -h が遅延なく応答し、Wasabiバケットの容量が表示されることを確認。
管理画面の「インターネット接続なし」の警告が消え、外部連携機能が復旧したことを確認。
「このマウントはバックアップのため、普段めったに触れなかった」に尽きます。
今回、バックアップをいじるようになってからようやく気づいた次第です。これに関しては反省。
「使ってなければそれは見えていないのと同じ」というバイアスでした。
これは、対象のIPアドレスをシャットアウトする「慈悲なき王」です。
を身を以て体感しました。なので、これを振るう時は更に注意する必要がありました。
それにしても、「自分だけが使うサーバのため、被害が自分だけで済んで良かった」と改めて思った次第です。こちらの記事にて
「『いい鉄砲は打ち手を選ぶ』ってことわざ知ってるか?
威力のある鉄砲は その分扱いも難しく危険
だから未熟者が使うと打ち手の方がケガをするってことさ」が自分へ向かうことのないよう、日々、管理/監視を怠らないようにする必要があると知った出来事でした。
が、まさに自分に向かっていったというお話しで、本件を締めます。
OSSでのWAFとして非常にメジャーなModSecurityとCRS(Core Rule Set)。
デフォルトでは非常に強力な保護が得られます。しかし、そのままではRedmineやNextcloudといった「複雑なリクエストを投げるアプリ」はまともに動きません。
今回は、筆者の例を元に、偽陽性(誤検知)を回避しつつ、偽陰性(すり抜け)を最小限に抑える設定術を解説します。
と、WAFが偽陽性を誘発するようなWebアプリ群です。
WAFを運用する上で避けて通れない2つの概念です。
| 用語 | 状態 | 影響 | 対策 |
|---|---|---|---|
| 偽陽性 (False Positive) | 正常な通信を攻撃と判定 | ユーザーがログインできない、投稿が消える | ルールの除外設定(Exclusion)を行う |
| 偽陰性 (False Negative) | 攻撃的な通信を正常と判定 | 脆弱性を突かれ、被害が出る | シグネチャの更新、独自ルールの追加 |
「守りを固めれば不便になり、利便性を取れば危うくなる」。このジレンマを解決するのが、筆者が設定している個別除外ルールの設計です。
これは筆者が2025年9月まで実施していた例です。
たとえば、自分がRedmineで投稿した記事がエラーとなってしまった。そのエラーを
awk '
/ModSecurity/ {
if (match($0, /\[client ([0-9\.]+):/, ip_arr) && match($0, /\[id "([0-9]+)"\]/, id_arr)) {
print id_arr[1], ip_arr[1];
}
}' /var/log/nextcloud_error.log | sort | uniq -c
等として調査。以下の結果が出てきたとします。
36 911100 127.0.0.1
267 911100 aaa.bbb.ccc.ddd
65 920420 aaa.bbb.ccc.ddd
36 949110 127.0.0.1
267 949110 aaa.bbb.ccc.ddd
36 980130 127.0.0.1
267 980130 aaa.bbb.ccc.ddd
| ID | ルール名(概要) | 挙動の説明 |
|---|---|---|
| 911100 | Method is not allowed by policy | 許可されていないHTTPメソッド(GET/POST以外など)を検知します。 |
| 920420 | Request content type is not allowed by policy | Content-Typeヘッダーが許可リストにない場合に反応します。 |
| 949110 | Inbound Anomaly Score Exceeded | 重要: これは特定の攻撃を指すものではなく、他のルールの合計スコアが閾値を超えたため「ブロックした」という最終結果を示すIDです。 |
| 980130 | Inbound Anomaly Score Exceeded (Reporting) | 949110と同様に、リクエスト全体の異常スコアが高かったことを報告するログ用のIDです。 |
これらの偽陽性に引っかかったIDを割り出し、/etc/apache2/sites-available/example.confなどで
## 最初は検知モード
SecRuleEngine DetectionOnly
+
+## 偽陽性と判断したID
+SecRuleRemoveById 911100
+SecRuleRemoveById 920420
+SecRuleRemoveById 949110
+SecRuleRemoveById 980130
+
</VirtualHost>
を追加するのは確実に偽陽性“は”防ぐことができます。しかし、これでは「本当に上記の脆弱性を突いた攻撃」は素通しとなってしまいます。
特に、攻撃者は、クローリングスクリプトなどで内容を確認し、「この記事があればこのルールは無効化されているはず」と当たりをつけます。定番の防御ツール、ましてやOSSともなると、
は極めて多いのです。
特に、技術ブログのように
などは、投稿した瞬間にエラーとなったため、渋々SecRuleRemoveIdで検知しないようにした方は極めて多いのではないでしょうか。
また、CRSは「このラインまでだったら大丈夫だ」という「甘い判断基準」が悲しいことに存在します。
以下は、ある日のModSecurityエラーログの一部です(情報は無害化済み)。
# 1. Slowloris攻撃を疑わせる矛盾したConnectionヘッダーの検知
[Wed Jan 14 12:00:00 2026] [security2:error] [client 192.0.2.100] ModSecurity: Warning. Pattern match "(?i)(?:keep-alive(?:,\\\\s*close|...)" at REQUEST_HEADERS:Connection. [id "10001"] [msg "[CUSTOM RULE] Contradictory Connection header, possible Slowloris probe."]
# 2. IPアドレスでの直接アクセスを検知
[Wed Jan 14 12:00:00 2026] [security2:error] [client 192.0.2.100] ModSecurity: Warning. Pattern match "(?:^([\\\\d.]+|...)" at REQUEST_HEADERS:Host. [id "920350"] [msg "Host header is a numeric IP address"]
# 3. アノマリスコアが閾値を超えたため遮断
[Wed Jan 14 12:00:00 2026] [security2:error] [client 192.0.2.100] ModSecurity: Access denied with code 403 (phase 2). Operator GE matched 5 at TX:blocking_inbound_anomaly_score. [id "949110"] [msg "Inbound Anomaly Score Exceeded (Total Score: 6)"]
Connection: keep-alive, close という通常ではありえないヘッダーが含まれていました。これは Slowloris などのDoS攻撃ツールに見られる特徴です。203.0.113.1)を指定してアクセスしています。これはボットによる無差別なスキャンの典型的な挙動です。この、Mod_Securityのルールの外を狙った「じわじわとリソースを削っていく」攻撃こそ遮断する必要があります。
この「偽陽性は防ぎつつ本来の防御を確立する」ために筆者が行っている手段は「例外ルールによるチューニング」です。
こちらのリンク先のような形でCRSを設置。筆者記事:ModSecurityインストール
cd /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. WordPress スキャン対策
# 存在しないWPパスへのアクセスは、問答無用でスコアを加算して404へ飛ばす
# wordpressを設置している方は、このセクションを無効化してください
SecRule REQUEST_URI "@rx /(?:wordpress|wp-admin|wp-content|wp-includes|xmlrpc\\.php)" \
"id:10002,phase:2,pass,nolog,capture,msg:'[CUSTOM] WordPress Probe Detected. Scored +5.',tag:'ATTACK_WP_PROBE',setvar:'tx.anomaly_score_pl1=+5',setvar:'tx.lfi_score=+5',setvar:'tx.wp_probe_detected=1'"
SecRule TX:wp_probe_detected "@eq 1" \
"id:10003,phase:2,deny,nolog,msg:'[CUSTOM] Final action: Deny with 404 status.',status:404"
# 1-3. IPアドレス直打ちアクセス対策
# ホスト名ではなくIPで直接アクセスしてくる怪しい挙動を即座にマーク
SecRule REQUEST_HEADERS:Host "@rx ^[\d.]+$" \
"id:10004,\
phase:1,\
deny,\
status:403,\
log,\
msg:'[CUSTOM RULE] Host header is a numeric IP address. Blocked immediately.',\
tag:'application-attack',\
tag:'PROTOCOL_VIOLATION/INVALID_HREQ'"
# ===================================================================
# 2. アプリ別除外: BookStack (Knowledge Base)
# ===================================================================
SecRule SERVER_NAME "@streq bookstack.example.com" \
"id:1001,phase:1,nolog,pass,skipAfter:END_BOOKSTACK_RULES_PRE"
# PUTメソッドの許可(下書き保存用)
SecRule REQUEST_URI "@rx ^/(ajax/page|books|pages)/" \
"id:1003,phase:1,nolog,pass,setvar:'tx.allowed_methods=%{tx.allowed_methods} PUT',ctl:ruleRemoveById=911100"
# 記事投稿時のSQLi/XSS誤検知を除外
SecRule REQUEST_URI "@rx ^/(books|ajax/page|pages)/" \
"id:1005,phase:2,nolog,pass, \
ctl:ruleRemoveByTag=OWASP_CRS/ATTACK-RCE, \
ctl:ruleRemoveByTag=OWASP_CRS/ATTACK-LFI, \
ctl:ruleRemoveByTag=OWASP_CRS/ATTACK-XSS, \
ctl:ruleRemoveByTag=OWASP_CRS/ATTACK-SQLI, \
ctl:ruleRemoveById=921130, \
ctl:ruleRemoveById=934130"
SecMarker END_BOOKSTACK_RULES_PRE
# ===================================================================
# 3. アプリ別除外: Nextcloud (Cloud Storage)
# ===================================================================
SecRule SERVER_NAME "@streq nextcloud.example.com" \
"id:3001,phase:1,nolog,pass,skipAfter:END_NEXTCLOUD_RULES_PRE"
# WebDAV関連メソッド(PROPFIND等)を許可しないと同期が壊れるため除外
SecRule REQUEST_URI "@rx ^/remote\.php/" \
"id:3002,phase:1,nolog,pass, \
setvar:'tx.allowed_methods=%{tx.allowed_methods} PROPFIND OPTIONS REPORT PUT DELETE MKCOL', \
ctl:ruleRemoveById=911100,ctl:ruleRemoveById=920420"
SecMarker END_NEXTCLOUD_RULES_PRE
# ===================================================================
# 4. アプリ別除外: Redmine (Project Management)
# ===================================================================
SecRule SERVER_NAME "@rx ^(redmine|projects)\.example\.com$" \
"id:4001,phase:1,nolog,pass,skipAfter:END_REDMINE_RULES_PRE"
# PATCHメソッド(チケット更新)の許可
SecRule REQUEST_URI "@rx ^/(issues|projects)/" \
"id:4002,phase:1,nolog,pass,setvar:'tx.allowed_methods=%{tx.allowed_methods} PATCH',ctl:ruleRemoveById=911100"
# チケット内容(コードブロック等)がSQLiやRCEと誤認されるのを防ぐ
SecRule REQUEST_URI "@rx ^/projects/[^/]+/(issues|knowledgebase/articles|news|issue_templates)|/issues|/journals|/questions|/issue_templates" \
"id:4003,phase:2,nolog,pass, \
ctl:ruleRemoveByTag=OWASP_CRS/ATTACK-RCE, \
ctl:ruleRemoveByTag=OWASP_CRS/ATTACK-SQLI, \
ctl:ruleRemoveByTag=OWASP_CRS/ATTACK-LFI, \
ctl:ruleRemoveByTag=OWASP_CRS/ATTACK-XSS, \
ctl:ruleRemoveByTag=OWASP_CRS/PROTOCOL-ATTACK"
# View CustomizeプラグインでJS/CSSを編集する際の広範な除外
SecRule REQUEST_URI "@rx ^/view_customizes(?:/\d+)?$" "id:4006,phase:2,nolog,pass,t:none,chain"
SecRule REQUEST_METHOD "@rx ^(POST|PUT|PATCH)$" \
"ctl:ruleRemoveTargetByTag=OWASP_CRS/ATTACK-RCE;ARGS:view_customize[code],\
ctl:ruleRemoveTargetByTag=OWASP_CRS/ATTACK-XSS;ARGS:view_customize[code]"
SecMarker END_REDMINE_RULES_PRE
上記、設定を行ったら
sudo apache2ctl configtest
apache 再起動
sudo systemctl restart apache2.service
apache 再起動確認
systemctl status apache2.service
active(running)を確認します。
実際にRedmine / Nextcloud等にアクセスして、投稿をしても偽陽性にならない(エラーにならない)を確認できれば成功です。
WAFは一度設定して終わりではありません。
/var/log/apache2/error.log や ModSecurityのアAuditログを監視し、id:xxxxx が出たら「それは本当に攻撃か?」を疑い、必要なら今回のコンフィグに除外ルールを追記します。
特定のソースIPや、自社ドメイン宛の正常な操作(Redmineの更新など)は、今回のようにパスやメソッドで丁寧に除外を作るのが、運用を長続きさせる秘訣です。
この、例外ルールを正しく使うことで、スクリプトキディやクローラーに対して、このような大見得を切ってやりましょう。
『任務は遂行する』
…………
部下も守る
おまえごときに両方やるというのは
そうムズかしい事じゃあないな
がいる中、「高名な者、ミシュラ」デッキにて対戦。
デッキリストはこちら。
身代わり合成機がある中で
金属製の巨像→無情な屍術師で巨像をサクって宝物11個、墓地に落としたミシュラを釣り上げ、残りのトークン使ってゴンティの無限心臓を発明品の唸り。後は無限ターン成立(『ミシュラの戦機』という名前のゴンティの無限心臓が出る→合成機が誘発してアーティファクトが出る→追加ターンの要件をミシュラの戦機を追放。オリジナルは残るので、後はターンを一切返さず同じ手順の繰り返し)
ライブラリーの中にシンクロ解除があるので相手のトークンもケアするまでもなく勝利。
過酷な消耗戦。全除去やピン除去でミシュラの統率者税は6マナ。眼前にはゼンディカーの報復者によるトークン軍団やハーシュハルの猛攻、装備品を山ほど積んだクラウドがいる中での逆転は『グラップラー刃牙 特別編』
プロレスは甘くない!!!
敗北ギリギリまで相手の攻撃を受けきり
紙一重で逆転!!!
を体感です。

昨今のPCの価格急騰に伴い、PC購入を一念発起。

| 項目 | 詳細スペック | 備考 |
| プロセッサー | AMD Ryzen™ AI 5 PRO 340 (2.00 GHz / 最大 4.80 GHz) | 最新のZen 5世代・AIエンジン(NPU)搭載 |
| グラフィックス | AMD Radeon™ 840M (内蔵) | 軽めの3Dゲームも動作する強力な内蔵GPU |
| メモリー | 16 GB DDR5-5600MT/s (SODIMM) | 空きスロット×1あり(最大96GBまで拡張可) |
| ストレージ | 512 GB SSD M.2 2280 PCIe-NVMe Gen4 | 高速NVMe規格 |
| ディスプレイ | 14.0" WUXGA (1920x1200) IPS液晶 | 400 nit、16:10の縦広画面 |
| 本体重量 | 約 1.39 kg 〜 | 14型ワークステーションとして最軽量クラス |
| キーボード | 日本語配列、バックライト付 | 独立クリックボタン+トラックポイント搭載 |
| 生体認証 | 指紋センサーあり | 電源ボタン一体型 |
| カメラ | 500万画素(プライバシーシャッター付) | 高精細なWeb会議対応 |
| 無線LAN | Wi-Fi 7対応 (IEEE 802.11be) | Bluetooth v5.4対応 |
| インターフェース | USB4 (Thunderbolt互換)×2、USB-A×2、HDMI 2.1、RJ-45 | 有線LAN(RJ-45)を標準搭載 |
| バッテリー | 4セル リチウムイオン 52.5 Wh | 急速充電対応 |
| OS | Windows 11 Home 64bit |
これにつきます。ホームポジションから手を離すことなくストレートに操作できる「手の拡張機能」は特権です。

こちらを見てお分かりのように『ライザのアトリエ3』DXが動きました。これは最高のキラーコンテンツです。
その他、使用感は改めてレビューします。
今年始まって早々の豪華料理はお節だけに留まらず、でした。
その日訪れた料理屋。予約はしていたとはいえ、いきなり卓に置かれていたのが

紙鍋。中にはぶりの切り身がまるまる。

煮えている間に海老入りのサラダ。

トラフグの唐揚げまで出てきます。

そして、メインディッシュの海鮮丼。ここで特筆すべきは右下。「河豚の皮の煮こごり」まで入っていたこと。この時点で、この店は先のトラフグをきちんと捌いていたことが見て取れます。
下手な旅行でも食べられないという豪華な正月料理の延長という形でした。
備考-なぜ「あく」が自然に取れるのか?
紙鍋に使われている和紙などの特殊な紙には、金属や土鍋にはない「吸着力」と「透過性」があります。
このように、紙鍋自体が「常に機能し続ける巨大なあく取りシート」として働いているため、自分でお玉を使ってあくをすくわなくても、透明度の高い綺麗なお出汁が保たれるのです。
この、英国テーマのデッキは大好きというお話です。
MtGユニバースビヨンド『ドクター・フーコラボ』パラドックスパワー。なんだかんだで使い続けて2年目を迎えようとしています。
現在のリストはこの形。
ティムールカラー
The Thirteenth Doctor / 13代目ドクター (1)(緑)(青)
伝説のクリーチャー — タイム(Time) ロード(Lord) ドクター(Doctor)
パラドックス ― あなたがあなたの手札以外から呪文1つを唱えるたび、クリーチャー1体を対象とする。それの上に+1/+1カウンター1個を置く。
チーム・ターディス ― あなたの終了ステップの開始時に、あなたがコントロールしていてカウンターが置かれている各クリーチャーをそれぞれアンタップする。2/2
Yasmin Khan / ヤズミン・カーン (3)(赤)
伝説のクリーチャー — 人間(Human) 探偵(Detective)
(T):あなたのライブラリーの一番上にあるカード1枚を追放する。次のあなたの終了ステップまで、それをプレイしてもよい。
ドクターのコンパニオン(もう一方がドクター(Doctor)であるなら、あなたは統率者2体を使用できる。)3/3
このデッキは、2体の統率者が完璧なエンジンとして機能します。
ヤズミンでカードを確保し、ドクターで強化し、ドクターの効果でヤズミンをアンタップすることで、「メインで能力を使いつつ、次のターンもブロックに回れる(あるいはマナさえあれば再度能力を使える)」という攻守の隙のなさが生まれます。
「手札以外から唱える」手段を多角的に搭載
赤の十八番となりました。。手札を消費せずリソースを伸ばせます。
一度使った呪文を「おかわり」することでパラドックスを誘発させます。
コンボがない分、盤面の圧倒的な制圧力で勝利を目指します。
Flaming Tyrannosaurus / 燃え盛るティラノサウルス
パラドックス ― …任意の対象1つに3点のダメージを与える。
このデッキのフィニッシャーの一つです。ヤズミンやフラッシュバック呪文を使うたびに《稲妻》が飛び交います。除去としても、プレイヤーへの直接火力としても強力です。
これらは放っておくと手がつけられないアドバンテージを生み出します。特にラエリアは追放するたびに大きくなるため、ヤズミンの能力とも相まって統率者ダメージに近い脅威となります。
統率者セットの看板コンビです。パコが攻撃するたびに手札以外(追放領域)にカードを溜め込み、ハルダンがそれを利用可能にします。
デッキの動きを滑らかにする、いぶし銀な組み合わせです。
Danny Pink / ダニー・ピンク
あなたがコントロールしているクリーチャー1体の上に初めて1個以上のカウンターが置かれるたび、カード1枚を引く。
13代目ドクターの効果で+1/+1カウンターを置くたびに、ダニー・ピンクの効果でドローができます。
「手札以外から唱える(パラドックス)」→「カウンターを置く」→「ドローする」という、リソースが尽きない循環が完成します。
13代目ドクターの「チーム・ターディス(終了ステップのアンタップ)」は、マナクリーチャーとも相性抜群です。
かなり久しぶりに統率者デッキをいじりました。
霊気走破の構築済みなどからも入れ替え。
相も変わらず「ブラケット4に近い3」。身内卓だから許されるデッキです。ウルザデッキと違って使って楽しいデッキなので回している形。
様々なメリットがある強力な種族であるイタル人。特に学院の知識量が+3という他と一線を画す能力持ちではありますが
「それを一切建てない」
戦略で乗り切りました。

マジョリティは
特に、この、施設数が厄介です。
なので、勝負所を3R目の「ガイア入植」を軸として、
という、溜めのラウンドを作りました。また、ラウンドブースターに得点系が多数あったので、それを多様。
この手の戦略での鍵となる「ガイア入植3点」を敢えて序盤に取らずC4を優先。
研究トラックも
に絞ります。そして、隙あらば「パワートークン3個」のパワーアクションを優先。

そうした中の最終図はこの通り。

研究トラックはガイアと航法、予想通り。特に、ガイアゴールの13点もしっかり狙いました。

ラウンドブースターも研究所×3をしっかりと建てた上でパスしたため、学院を建てる必要は無く。(そもそも14施設なので、3同盟は保証されています)

結果は169点の、150点止まりから脱却できました。
いずれにしても、快勝と言えるプレイングでした。
Powered by WordPress & Theme by Anders Norén