Doctor NoNoのブログ

Doctor NoNoのブログ

日々の愚痴とか不満とか...

Amebaでブログを始めよう!

RHEL8にPHP7を「yum」で入れるとデフォルトではCGI版が入ってしまうらしい。

で、これまでモジュール版のPHP5.4あたりで動いていたシステムを移設するケースでは、

 ・PHP5.4→PHP7.4のコンバート

 ・モジュール版→CGI版のコンバート

が必要になる。

 

・PHP5.4→PHP7.4のコンバート

まあこれは4→5のときと同様、粛々と作業するしかない。

そういう仕事してるわけだし。

 

・モジュール版→CGI版のコンバート

モジュール版のままなら必要ない作業なんだけど、まあこれも粛々と作業するしかない。

クライアントが「どうしてもCGI版で!!!」とおっしゃってるわけだから。(「どうしても余計な費用を払いたい!!!」って言われてるわけだから、ありがたいと思おう)

簡単なシステムなら「.htaccess」に書いてある設定のうち、PHPの設定部分を「.user.ini」に移動するだけでだいたいOKなのだが、細かく作りこんであるシステムだとそれだけでは終わらない。

画像ファイルに偽装したプログラムを「AddType」で起動しているようなケースだとソケット経由でCGIを起動する設定に変えないと動かない。

またブラウザと非同期連携するような実装がある場合、FastCGIのバッファを乗り越える実装に改修する必要があったりして、全体としてそこそこ工数がかかる。

 

でも専用サーバなのにどうしてわざわざ「CGI版」にするんだろう。

クライアントに聞いてみた。

 ク:セキュリティの問題です。

???え???

いちばんわけの分からん答えが返ってきた。

いくら「FastCGI」が速くなったとはいえ、専用サーバで「セキュリティ」を理由にわざわざCGI版を入れるメリットってあるのか?

ChatGPTも「専用サーバの場合はApacheモジュール版のPHPを使用する方が適切である場合が多いでしょう」って言ってるぞ。

でも、きっと自分の知らない深~い「セキュリティ」の世界があるんだろうな。

(まさか、RHEL8の「yum」で入れられるPHPのデフォルトが「CGI版」だから、などという素人チックな理由じゃないよね。頼むから「違う」と言ってくれ。)

 

まあいいか。追加作業料金もらえるわけだし。
このサーバで「パフォーマンスがぁぁ~!」という騒ぎだけは起こさないようにと祈ろう。

2022/09/04の20:30(日本時間)ごろからうちの「Windows Defender」がしきりに「Behavior:Win32/Hive.ZY」の脅威をレポートしてくる。

Win32/Hive.ZY

ちょうどその時間にあるアプリをインストールしていたので、そいつかと思っていったんアンインストールしたが改善されない。

ブラウザとかメーラがネットで通信するたびにレポートされてくるのでウザい。

いちおうネットで検索してみると、日本語の記事がほとんどないのが気にはなるが、同じ現象が同時期にあちこちで発生しているらしい。

各記事には「Windows Defender」の誤定義が原因というような見解もあったが、もしそうならすぐに改善版の定義データがが配布されそうなものだ。

実際にはそれ以降に定義データが二回リリースされているが、改善されていないので非常に気持ちが悪い。

「Win32/Hive.ZY」を許可すればレポートは止まるだろうけど、もし本当に「重大」な脅威だったらまずいのでしばらくこのままで様子を見ようと思う。

 

追記(2022/09/05 07:18):

どうやら「Defender build 1.373.1508.0」で引き起こされたバグだったらしい。

いま最新の定義「1.373.1537.0」がリリースされて治った。

「IP制限」したうえでさらに「基本認証」もかけたい。
「IP制限」か「基本認証」のどちらかが通ればアクセス許容、という設定はググればいくらでも出てくるのだが、両方とも有効にするような設定方法が見つからなかった。

「IP制限」or「基本認証」とする設定は、

# 基本認証設定ここから
AuthUserFile [パスワードファイルフルパス]
AuthGroupFile /dev/null
AuthName "Input ID and Password !!"
AuthType Basic
Require valid-user
# 基本認証設定ここまで
# IP制限設定ここから
Require ip xxx.xxx.xxx.xxx
Require ip xxx.xxx.xxx.xxx
Require ip xxx.xxx.xxx.xxx
Require ip xxx.xxx.xxx.xxx
# IP制限設定ここまで


で書ける。
「IP制限」「基本認証」「両方」とがでググるとたいていこの設定が出てくる。
しかしいまやりたいのは「IP制限」and「基本認証」という設定のしかた。
なかなか記事が見られなかったので、ここにメモしとく。
肝心なのは「RequireAll」と「RequireAny」の使い方。

<RequireAll>
    # 基本認証設定ここから
    AuthUserFile [パスワードファイルフルパス]
    AuthGroupFile /dev/null
    AuthName "Input ID and Password !!"
    AuthType Basic
    Require valid-user
    # 基本認証設定ここまで
    <RequireAny>
        # IP制限設定ここから
        Require ip xxx.xxx.xxx.xxx
        Require ip xxx.xxx.xxx.xxx
        Require ip xxx.xxx.xxx.xxx
        Require ip xxx.xxx.xxx.xxx
        # IP制限設定ここまで
    </RequireAny>
</RequireAll>


な感じで書かないといけないらしい。

以上