過去建置 Apache 網站時,多半使用 mod_php,讓 Apache 直接載入 PHP 模組。這次新主機改採 Apache event MPM 搭配 PHP-FPM,將 PHP 請求交由獨立的工作程序處理,作為後續新建站的施工方式。 PHP-FPM 可以管理 PHP 工作程序數量,也能透過不同的 pool,分別設定執行帳號與資源限制。這讓網站伺服器與 PHP 的設定、維護更有彈性;不過,各站的隔離程度仍取決於實際帳號、權限與 pool 配置,不是安裝後就自動完成隔離。 採用 PHP-FPM,是希望讓 Apache 連線處理與 PHP 工作量能分別管理,便於後續調整資源。 本次已完成新站建置與操作確認,以下整理實際使用的步驟;併發效能仍需依各站負載測試。 本文以 Ubuntu 24.04、Apache、PHP 8.4-FPM 為例,Apache 與 PHP 採用 Ondřej Surý 提供的第三方 PPA;資料庫與 phpMyAdmin 接續原有 SOP。安裝時請確認實際套件版本與安全更新狀態,既有主機則應先備份並安排維護時段。 0. 開工前核對 ```bash cat /etc/os-release apache2 -v 2>/dev/null || true php -v 2>/dev/null || true ``` - 預期為 Ubuntu 24.04 LTS。若不是 24.04,先調整套件版本及本 SOP。 - 若機器不是全新、已有 Apache/PHP,先記錄 `sudo apache2ctl -M`、`dpkg -l | grep -E 'apache2|php8\.'`,再決定是否要停用既有 handler;不要在未知站台上直接切換。 1. 使用 Ondřej Surý PPA 安裝套件來源與 Apache ```bash sudo apt update sudo apt install -y software-properties-common sudo add-apt-repository -y ppa:ondrej/apache2 sudo add-apt-repository -y ppa:ondrej/php sudo apt update apt-cache policy apache2 php8.4-f...
XOOPS 網站的 uploads 是各模組存放圖片、附件等檔案的地方。早期站台有時把目錄權限設為 777;若模組的前端上傳檢查不夠嚴謹,攻擊者便可能把 PHP 木馬混進來,再從網址呼叫木馬,讓後續污染擴大。 替 uploads 加一道 Apache 的 <Directory> 防線,就能讓圖片、附件照常上傳與讀取,卻不讓 uploads 及其子目錄內的 PHP 類檔案透過 HTTP 執行。若攻擊鏈是「上傳 PHP 木馬 → 呼叫木馬網址 → 擴散」,請求在第二步就會收到 403,鏈路因此中斷。這是很實用的止血補強,但不能代替上傳檢查、漏洞修補與清除已植入的檔案;新站也不要因為有這道鎖,就把 uploads 預設設為 777。 設定步驟 1. 到 /etc/apache2/sites-available/ 找出目前網站正在使用的設定檔,例如 000-default-le-ssl.conf;各站檔名不同,不能隨便挑一份 .conf。不確定時先執行 sudo apache2ctl -S 查看啟用的 vhost,並備份要修改的設定檔。 2. 確認網站實際的 uploads 路徑。在該網站的 <VirtualHost *:443> 區塊內加入下列設定。以下 /var/www/html/uploads 只是範例,現場路徑不同就要修改。 <Directory "/var/www/html/uploads"> AllowOverride None Options -Indexes <FilesMatch "(?i:\.(?:php[0-9]*|phtml|pht|phtm|phar)(?:\.|$))"> Require all denied </FilesMatch> </Directory> <Directory> 會涵蓋 uploads 和所有子目錄;<FilesMatch> 會擋常見 PHP 類副檔名、大小寫變化與 .php.jpg 這類多重副檔名。AllowOverride None 會讓此目錄下的 .htacc...