跳到主要內容

發表文章

目前顯示的是有「Apache」標籤的文章

Ubuntu 24.04 使用 PPA 建置 Apache+PHP-FPM:安裝步驟與實作心得

過去建置 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...

Ubuntu阻擋uploads目錄內PHP腳本的HTTP存取(403)

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...

升級Ubuntu22.04(Apache / PHP ) Ondřej Surý 的 PPA套件方法

當初使用 Ondřej Surý 的 PPA套件安裝(Apache / PHP )就是為了解決惱人的資安通報,果然網站上線沒多久通報就來了,這次主要有兩項要升級(Apache要高於2.4.64 / PHP要高於8.3.23),剛好來試看看傳說中的 PPA套件升級到底有多容易,以下是升級完整步驟紀錄 先備份檔案以防萬一(後續比對用)重要 sudo mkdir -p /root/apache_backup_$(date +%Y%m%d) sudo cp /etc/php/8.3/apache2/php.ini /root/apache_backup_$(date +%Y%m%d)/ sudo cp /etc/apache2/sites-available/default-ssl.conf /root/apache_backup_$(date +%Y%m%d)/ sudo cp /etc/apache2/mods-available/ssl.conf /root/apache_backup_$(date +%Y%m%d)/ sudo cp /etc/apache2/apache2.conf /root/apache_backup_$(date +%Y%m%d)/ sudo cp /etc/apache2/conf-available/security.conf /root/apache_backup_$(date +%Y%m%d)/ sudo cp /etc/apache2/ports.conf /root/apache_backup_$(date +%Y%m%d)/ 這樣所有重要設定就會備份到 /root/apache_backup_ 20251020 /,如果升級後有任何異常,你只要: sudo cp /root/apache_backup_ 20251020 /* /etc/apache2/... sudo systemctl reload apache2 就能一鍵復原 (紅字為今天日期) 再來升級Apache 1、更新套件列表:  sudo apt update 2、升級 Apache : sudo apt install --only-upgrade apache2 備註: 如果發生Progress: [ 82%] [##################...

Ubuntu22.04安裝Apach啟用mod_rewrite套件的方法(網站根目錄能使用.htaccess)

如在Ubuntu中獨立安裝或是PPA安裝Apach,預設rewrite_module是未啟用,因此在根目中置入的.htaccess也無效用,需要透過指令及修改apache2.conf中設定來啟用,方法如下: 1、先在檢查 mod_rewrite 模組確認 mod_rewrite 模組是否已啟用 sudo apache2ctl -M | grep rewrite 如果輸出結果中顯示 rewrite_module,則表示該模組已經啟用,反之未啟用 2、需要手動編輯httpd.conf,先找到apache2.conf檔案,位置在/etc/apache2/apache2.conf,用筆記本編輯打開,找到 #<Directory /srv/> # Options Indexes FollowSymLinks //刪除避免目錄被刺穿攻擊 # AllowOverride None # Require all granted #</Directory> 將以下設定複製後貼上覆蓋原檔 <Directory /var/www/>     AllowOverride All     Require all granted </Directory> 3.儲存後,輸入以下指令啟用 mod_rewrite 模組 sudo a2enmod rewrite sudo systemctl restart apache2 這樣就能啟用mod_rewrite 模組 並於根目錄中使用.htaccess 以上工作心的撰寫,有需要的朋友參考看看 工作心的撰寫: 徐嘉裕 Neil hsu

Ubuntu22.04分拆安裝(Apache / PHP / MySQL/ phpMyAdmin)的方法

為了應對越來越頻繁的資安通報,解決方案就是用PPA各別安裝Apache / PHP / MySQL/  phpMyAdmin套件,這樣如果遇到資安通報可立即升級修補漏洞,確保系統安全,晚上也好睡覺,以下是分拆安裝(Apache / PHP / MySQL/  phpMyAdmin)的安裝方法步驟說明: 備註說明: 如果是學校雲主機未啟用 IPv6,建議於先停用 IPv6,不然安裝流程會卡死 【Ubuntu 永久停用 IPv6(全系統 IPv4 優先)】 建立設定檔 sudo tee /etc/sysctl.d/99-disable-ipv6.conf <<EOF net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 EOF 套用設定 sudo sysctl -p /etc/sysctl.d/99-disable-ipv6.conf 驗證 cat /proc/sys/net/ipv6/conf/all/disable_ipv6 如果回  1 ,表示 IPv6 已完全關閉。 這樣就能吧 IPv6關閉避免影響套件下載與安裝流程 步驟1. 安裝Apache/PHP 為了取得Apache官網最新版本及PHP最新版本,這裡使用 Ondřej Surý 的 PPA套件 ※輸入以下指令下載PPA套件 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 備註: 如發生add-apt-repository timeout 110無法安裝PPA,請參考這篇解決方案! ※安裝 Apache 2.4.XX最新版(包含 OpenSSL) sudo apt install -y apache2 apache2-utils ssl-cert openssl ※確認 Apache 版本及是否安裝 apache2 -v 應該會顯示: S...