顯示具有 Apache2 標籤的文章。 顯示所有文章
顯示具有 Apache2 標籤的文章。 顯示所有文章

2025年6月24日 星期二

Ubuntu 24.04 的 Apache2 設定 Permissions-Policy




1.Apache2 啟用 mod_headers.so
$sudo a2enmod headers

2.編輯default-ssl.conf,設定#Permissions-Policy
$sudo nano /etc/apache2/sites-available/default-ssl.conf
加入
#Permissions-Policy
Header always set Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()"

3.重啟 Apache2
$sudo service apache2 restart

資料來源:
2.

Ubuntu 24.04 的 Apache2 設定 Cookies marked as HttpOnly


1.Apache2 啟用 mod_headers.so
$sudo a2enmod headers

2.編輯default-ssl.conf, 設定 HttpOnly;Secure;XSRF
$sudo nano /etc/apache2/sites-available/default-ssl.conf
加入
# HttpOnly;Secure;XSRF
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure;SameSite=strict


3.重啟 Apache2
$sudo service apache2 restart

4.如何檢測是否設定成功
假設該網站為https://www.example.com
$curl -I https://www.example.com

資料來源:

2025年6月19日 星期四

Ubuntu 24.04 的 Apache2 解決 TLS/SSL Weak Cipher Suites

1.apache2 啟用 SSL 模組
$sudo a2enmod ssl

2.使用nmap 檢查本機的漏洞
#掃RDP的3389
$nmap --script ssl-enum-ciphers -p 3389 127.0.0.1

#掃https的443
$nmap --script ssl-enum-ciphers -p 443 127.0.0.1

3.編輯 /etc/apache2/sites-available/default-ssl.conf
$sudo nano  /etc/apache2/sites-available/default-ssl.conf
將下面寫入

# 伺服器使用自己定義的 Cipher 排序(不要讓 client 決定)
SSLHonorCipherOrder on

# 停用 SSL 壓縮(防止 CRIME 攻擊)
SSLCompression off

# 安全 Cipher 套件組合
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305

SSLSessionTickets off

 SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

 # Security headers
 ## X-Content-Type-Options
 Header set X-Content-Type-Options "nosniff"
    
 ## Content-Security-Policy
 Header set Content-Security-Policy "frame-ancestors 'self';"
    
 ## Strict Transport Security (HSTS)
 Header set Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"


4.檢查設定語法是否正確
$sudo apache2ctl configtest

Ubuntu 24.04 的 Apache2 設定 HTTP Strict Transport Security(HSTS)與檢測方法

1.啟用 apache headers 模組 
$sudo a2enmod headers

2.重新啟動 apache 
$sudo service apache2 restart

3.編輯 /etc/apache2/conf-available/security.conf ,加上 header 設定
$sudo nano /etc/apache2/conf-available/security.conf

    Header always set Strict-Transport-Security "max-age=31536000;includeSubdomains; preload"
步驟3.的方式會將整個設定複雜化,可以直接將
Header always set Strict-Transport-Security "max-age=31536000;includeSubdomains; preload"
寫入到/etc/apache2/sites-available/default-ssl.conf 。這樣設定會比較單純。所以
3.1 編輯 /etc/apache2/sites-available/default-ssl.conf

Header always set Strict-Transport-Security "max-age=31536000;includeSubdomains; preload"


4.重新載入設定 
$sudo service apache2 reload

5.檢測https://www.example.com.tw指令:
$curl -s -D - https://www.example.com.tw -o /dev/null

資料來源:



Laravel 網站遇到Host header attack 解決方法及python檢測漏洞方法

1.設定.env的APP_ENV為production
APP_ENV=production

2.問Chat everywhere 的 prompt
host header attack apache 解決方案
host header attack apache 解決方案 https
host header attack apache 解決方案 https://www.example.com.tw
經過上述三段式的prompt,就可得到比較完整

步驟(1).修改/etc/apache2/sites-available/000-default.conf
確保 Apache 僅接受您擁有的域名的請求
<VirtualHost *:80>
    ServerName www.example.com.tw
    ServerAlias example.com.tw

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.example\.com\.tw$ [NC]
    RewriteRule ^ - [F]

<Directory /home/webadmin/html/example/public> Options -Indexes AllowOverride All Require all granted </Directory>

Redirect permanent / https://www.example.com/

</VirtualHost>

步驟(2).修改/etc/apache2/sites-available/default-ssl.conf
<VirtualHost *:443>
    ServerName www.example.com
    ServerAlias example.com

<Directory "/home/webadmin/html/example/public/"> Options -Indexes AllowOverride All Require all granted </Directory>

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
    RewriteRule ^ - [F]
    
    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private.key
    SSLCertificateChainFile /path/to/chainfile.pem
</VirtualHost>

3.問Chat everywhere 的 prompt
給我一個python 檢測 https://www.example.com.tw 的host header attack 漏洞
安裝套件:
pip install requests

檢測程式:
import requests

# 目標 URL
url = "https://www.example.com.tw"

# 攻擊的 Host 標頭
malicious_host = "malicious.com"

# 自定義請求頭
headers = {
    "Host": malicious_host
}

try:
    # 發送請求
    response = requests.get(url, headers=headers)

    # 檢查響應
    if response.status_code == 200:
        print(f"可能存在 Host Header Attack 漏洞,響應內容:\n{response.text}")
    else:
        print(f"響應碼:{response.status_code},未檢測到漏洞。")
except requests.exceptions.RequestException as e:
    print(f"請求出錯:{e}")

測試結果:
資料來源:

2025年5月11日 星期日

Ubuntu 24.04 安裝 laravel 5.7 的過程記錄

系列文章:
1.Ubuntu 24.04 安裝 chcweb 專案的過程記錄
2.Ubuntu 24.04 安裝 laravel 5.7 的過程記錄
3.laravel 5.7 初始相關設定與注意事項
4.想修改 chcweb 出現的問題解決集

一、系統更新:
sudo apt-get update
sudo apt-get upgrade

二、安裝解壓縮工具、wget 與 git
sudo apt-get install unzip zip wget git

三、安裝apache2
sudo apt-get install apache2

四、安裝php 7.3 、擴充包與 apache2 模組
//安裝軟體源拓展工具
sudo apt -y install software-properties-common apt-transport-https lsb-release ca-certificates
//安裝php 7.3 ppa
sudo add-apt-repository ppa:ondrej/php
sudo apt update
//安裝php 7.3 、擴充包
sudo apt-get install php7.3 php7.3-fpm php7.3-cli php7.3-json php7.3-mbstring php7.3-gd php7.3-xml php7.3-ldap php7.3-mysql php7.3-curl php7.3-zip php7.3-imap -y
//安裝php 7.3  apache2 模組
sudo apt-get install libapache2-mod-php7.3 -y

//檢查 php 版本
php -v

五、安裝 mariadb
sudo apt-get install mariadb-server -y
sudo -i
//設定安全相關
mysql_secure_installation

六、安裝composer
//下載composer
wget -c https://getcomposer.org/composer.phar

//將composer.phar設為可執行
chmod +x composer.phar

//移到/usr/local/bin,並改名composer,隨時可呼叫
sudo mv composer.phar /usr/local/bin/composer

//測試
composer

七、於html下安裝chcschool,放置在/home/webadmin/html/
cd /home/webadmin/
mkdir html
cd /var/www/
sudo mv html html2
sudo ln -s /home/webadmin/html /var/www/html    (此時 /var/www/ 有兩個目錄 html html2)
cd /home/webadmin/html/
mkdir mylaravel57

八、命令列建立資料庫mylaravel57與資料庫使用者“admin”,密碼“demo1234”。
//進入資料庫
sudo mariadb -u root -p
//建立資料庫mylaravel57與資料庫使用者“admin”,密碼“demo1234”
CREATE DATABASE mylaravel57 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER admin@localhost IDENTIFIED BY 'demo1234';
GRANT ALL PRIVILEGES ON mylaravel57.* TO admin@localhost;
FLUSH PRIVILEGES;
//確認admin的權限
SHOW GRANTS FOR admin@localhost;

九、安裝laravel 5.7
composer create-project laravel/laravel="5.7" --prefer-dist /home/webadmin/html/mylaravel57
注意composer安裝會依據php的版本,php7.3最高只能安裝到laravel8。
//進入目錄mylaravel57
cd mylaravel57

//編輯.env

sudo nano .env
//內容要改
DB_DATABASE=mylaravel57
DB_USERNAME=admin
DB_PASSWORD=demo1234
//建立專案的資料庫
php artisan migrate

十、加入apache虛擬主機
$sudo nano /etc/apache2/sites-available/mylaravel57.conf 
寫入:
-------------------------------------------------------------------------------------
<VirtualHost *:80>
   ServerName mylaravel57.localhost

   ServerAdmin webmaster@localhost
   DocumentRoot /home/webadmin/html/mylaravel57/public


<Directory /home/webadmin/html/mylaravel57/public>
         Options -Indexes
         AllowOverride All
         Require all granted
   
</Directory>

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

-------------------------------------------------------------------------------------

//如果要取消原本80網頁
sudo a2dissite 000-default.conf
//啟用新網頁
sudo a2ensite mylaravel57.conf
sudo a2enmod rewrite
sudo service apache2 restart
//更改特定目錄擁有者為www-data,或777
cd /home/webadmin/html/mylaravel57/
sudo chown -R www-data storage/ bootstrap/cache/
或
sudo chmod -R 777 storage/ bootstrap/cache/

注意網站運行的重大設定
/etc/php/7.3/apache2/php.ini
sudo nano /etc/php/7.3/apache2/php.ini



資料來源:

2025年5月10日 星期六

Ubuntu 24.04 安裝 chcweb 專案的過程記錄

系列文章:
1.Ubuntu 24.04 安裝 chcweb 專案的過程記錄
2.Ubuntu 24.04 安裝 laravel 5.7 的過程記錄
3.laravel 5.7 初始相關設定與注意事項
4.想修改 chcweb 出現的問題解決集

感恩和東國小王麒富組長的指導

一、系統更新:
sudo apt-get update
sudo apt-get upgrade

二、安裝解壓縮工具、wget 與 git
sudo apt-get install unzip zip wget git

三、安裝apache2
sudo apt-get install apache2

四、安裝php 7.3 、擴充包與 apache2 模組
//安裝軟體源拓展工具
sudo apt -y install software-properties-common apt-transport-https lsb-release ca-certificates
//安裝php 7.3 ppa
sudo add-apt-repository ppa:ondrej/php
sudo apt update
//安裝php 7.3 、擴充包
sudo apt-get install php7.3 php7.3-fpm php7.3-cli php7.3-json php7.3-mbstring php7.3-gd php7.3-xml php7.3-ldap php7.3-mysql php7.3-curl php7.3-zip php7.3-imap -y
//安裝php 7.3  apache2 模組
sudo apt-get install libapache2-mod-php7.3 -y

//檢查 php 版本
php -v

五、安裝 mariadb
sudo apt-get install mariadb-server -y
sudo -i
//設定安全相關
mysql_secure_installation
exit

六、安裝composer
//下載composer
wget -c https://getcomposer.org/composer.phar

//將composer.phar設為可執行
chmod +x composer.phar

//移到/usr/local/bin,並改名composer,隨時可呼叫
sudo mv composer.phar /usr/local/bin/composer

//測試
composer

七、於html下安裝chcschool,放置在/home/webadmin/html/
cd /home/webadmin/
mkdir html
cd /var/www/
sudo mv html html2
sudo ln -s /home/webadmin/html /var/www/html    (此時 /var/www/ 有兩個目錄 html html2)
cd /home/webadmin/html/

八、建立資料庫chcweb
//建立資料庫chcweb
mysqladmin -uroot -p create chcweb

九、下載、匯入資料庫chcweb、安裝與設定 chcweb
//下載 chcweb
git clone https://github.com/wangchifu/chcweb.git
//進入chcweb目錄
cd /home/webadmin/html/chcweb
//匯入資料庫chcweb
mysql -uroot -p  chcweb < /home/webadmin/html/chcweb/database/chcweb.sql
//安裝
composer install
cp .env.example .env
sudo nano .env
.env 中 DB_DATABASE=chcweb
.env 中 DB_USERNAME 及 DB_PASSWORD 填上正確資料
php artisan key:generate
php artisan storage:link
sudo chmod 777 -R storage bootstrap/cache

帳密
帳號 admin 密碼 demo1234

十、加入apache虛擬主機
sudo nano /etc/apache2/sites-available/chcweb.conf 
寫入:
-------------------------------------------------------------------------------------
<VirtualHost *:80>
   ServerName localhost

   ServerAdmin webmaster@localhost
   DocumentRoot /home/webadmin/html/chcweb/public


<Directory /home/webadmin/html/chcweb/public>
         Options -Indexes
         AllowOverride All
         Require all granted
   
</Directory>

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

-------------------------------------------------------------------------------------

//如果要取消原本80網頁
sudo a2dissite 000-default.conf
//啟用新網頁
sudo a2ensite chcweb.conf
sudo a2enmod rewrite
sudo service apache2 restart
//更改特定目錄擁有者為www-data,及777
cd /home/webadmin/html/chcweb/
sudo chown -R www-data storage/ bootstrap/cache/
sudo chmod -R 777 storage/ bootstrap/cache/

注意網站運行的重大設定
/etc/php/7.3/apache2/php.ini
sudo nano /etc/php/7.3/apache2/php.ini
注意事項:
1.檢查已安裝的php 版本
update-alternatives --list php
2.切換php 版本
sudo update-alternatives --config php
3.確認是否切換成功
php -v
4.切換 Apache 用的 PHP 版本
(1). 停用舊版本
sudo a2dismod php8.4
(2). 啟用新版本
sudo a2enmod php7.3
(3). 重啟 Apache
sudo systemctl restart apache2
5.Mysql 注意事項
(1)創建該使用者並設置密碼:
CREATE USER 'webadmin'@'localhost' IDENTIFIED BY '密碼';
(2)如果想給這個使用者更多權限:
GRANT ALL PRIVILEGES ON *.* TO 'webadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;


資料來源:


2023年1月29日 星期日

Xoops 網站從原先sslforfree憑證改用公用憑證的安裝步驟


壹、第一次設定:
自縣網中心取得檔案,其檔案內容如下圖:


一、下載與解壓縮eCA1_GTLSCA.zip,取得eCA1_GTLSCA.crt
$wget https://gtlsca.nat.gov.tw/download/eCA1_GTLSCA.zip
$unzip eCA1_GTLSCA.zip

二、變更已下載簽發之 SSL 伺服器軟體憑證(*.cer)檔名為server.cer
$mv 3E0F555985B24E84092C96C1762173B4.cer server.cer

三、將SSL伺服軟體憑證由DER編碼格式轉換成PEM編碼格式
$openssl x509 -in server.cer -inform DER -out server.crt

四、整合server.crt eCA1_GTLSCA.crt 為 server-chain.crt,再更名為server.crt
$cat server.crt eCA1_GTLSCA.crt > server-chain.crt
$mv server-chain.crt server.crt

五、將server.crt  與 myserver.key 分別複製到 /etc/ssl 與 /etc/ssl/private
目前只需要兩個檔案,分別是server.crt  與 myserver.key
將server.crt  與 myserver.key 分別複製到 /etc/ssl 與 /etc/ssl/private。即
server.crt         --->    /etc/ssl
myserver.key  --->    /etc/ssl/private
其指令如下:
$mv server.crt  /etc/ssl
$mv myserver.key  /etc/ssl/private

六、修改default-ssl.conf 與 000-default.conf
檔案名稱default-ssl.conf
檔案修改內容:
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite EECDH+AES128:EECDH+AES256:EECDH+CAMELLIA:!ECDSA:!MD5
SSLHonorCipherOrder on
SSLCertificateFile  /etc/ssl/server.crt
SSLCertificateKeyFile  /etc/ssl/private/myserver.key
將原先的設定作註解
                # SSLCertificateFile /etc/ssl/certificate.crt
                # SSLCertificateKeyFile /etc/ssl/private/private.key
                # SSLCertificateChainFile  /etc/ssl/ca_bundle.crt
整個狀況如下圖:

檔案名稱000-default.conf
檔案修改內容:
將原先的設定作註解
# Redirect permanent / https://abc.def.ghi.tw
其內容如下:

七、重啟Apache2
$sudo service apache2 restart

貳、日後處理
一、將縣網中心取得的檔案送至 /home/webadmin/PublicCert
二、修改CertReplacement.sh 黃色部分名稱
三、執行CertReplacement.sh

檔案名稱:CertReplacement.sh
檔案內容:
#!/bin/bash
wget https://gtlsca.nat.gov.tw/download/eCA1_GTLSCA.zip
unzip eCA1_GTLSCA.zip
mv 3E0F555985B24E84092C96C1762173B4.cer server.cer
openssl x509 -in server.cer -inform DER -out server.crt
cat server.crt eCA1_GTLSCA.crt > server-chain.crt
mv server-chain.crt server.crt
mv server.crt  /etc/ssl
mv myserver.key  /etc/ssl/private
service apache2 restart

資料來源:


2022年7月18日 星期一

如何在離線狀態下,利用Windows電腦測試HOST內VM的Aapache2 多個網站(多網域)設定

        最近要在Ubuntu的Apache 架Django網站,希望能夠在Windows主機內的虛擬機上測試。其架構圖如下:
        那我要如何如何在離線狀態下,利用Windows電腦測試HOST內VM的Aapache2 多個網站(多網域)設定?
在連接網路的情況下,需完成下列事項:
        一、VMware安裝虛擬機Ubuntu20.04
        二、在Ubuntu 20.04安裝 Apache2
接下來,請拔除Windows 主機的網路線
        三、設定Windows 電腦的hosts
        四、開啟瀏覽器進行測試

        在連接網路的情況下,需完成下列事項:
        一、VMware安裝虛擬機Ubuntu20.04

        二、在Ubuntu 20.04安裝 Apache2
                00.確認IP
                $ip a
                此時IP為192.168.181.144

                01.更新與安裝Apache2
                $sudo apt update && sudo apt install apache2

                02.測試Apache2是否安裝成功
                $sudo service apache2 status

                03.在 /var/www/ 建立兩個網域資料夾 test01.com.tw 與 test02.com.tw
                $sudo mkdir -p /var/www/test01.com.tw/
                $sudo mkdir -p /var/www/test02.com.tw/

                04.分別在兩個網域資料夾 test01.com.tw 與 test02.com.tw下建立資料夾html
                $sudo mkdir -p /var/www/test01.com.tw/html
                $sudo mkdir -p /var/www/test02.com.tw/html

                05.修改  /var/www 及其內容權限
                $sudo chmod -R 755 /var/www 

                06.分別在資料夾html 建立index.html
                $sudo nano /var/www/test01.com.tw/html/index.html
                其內容為
                <html>
                   <head>
                     <title>test01.com.tw</title>
                   </head>
                   <body>
                      <h1>test01.com.tw</h2>
                   </body>
                </html>

                $sudo nano /var/www/test02.com.tw/html/index.html
                其內容為
                <html>
                   <head>
                     <title>test02.com.tw</title>
                   </head>
                   <body>
                      <h1>test02.com.tw</h2>
                   </body>
                </html>

                07.在/etc/apache2/sites-available中建立虛擬主機文件(Virtual Host Files)
                $sudo nano /etc/apache2/sites-available/test01.com.tw.conf
                其內容為
                <VirtualHost *:80>
                    ServerAdmin webadmin@test01.com.tw
                    ServerName test01.com.tw
                    ServerAlias www.test01.com.tw
                    DocumentRoot /var/www/test01.com.tw/html
                    ErrorLog ${APACHE_LOG_DIR}/error.log
                    CustomLog ${APACHE_LOG_DIR}/access.log combined
                </VirtualHost>

                $sudo nano /etc/apache2/sites-available/test02.com.tw.conf
                其內容為
                <VirtualHost *:80>
                    ServerAdmin webadmin@test02.com.tw
                    ServerName test02.com.tw
                    ServerAlias www.test02.com.tw
                    DocumentRoot /var/www/test02.com.tw/html
                    ErrorLog ${APACHE_LOG_DIR}/error.log
                    CustomLog ${APACHE_LOG_DIR}/access.log combined
                </VirtualHost>

                08.啟用新的虛擬主機文件(Virtual Host Files)
                $sudo a2ensite test01.com.tw
                $sudo a2ensite test02.com.tw

                09.檢查設定語法是否有問題
                $apachectl configtest

                10.重啟Apache2
                $sudo systemctl reload apache2

接下來,請拔除Windows 主機的網路線
三、設定Windows 電腦的hosts
        在 C:\WINDOWS\system32\drivers\etc 內,有個hosts。
        請將
        192.168.181.144 test01.com.tw
        192.168.181.144 test02.com.tw
        加入 hosts,如下圖:

四、開啟瀏覽器進行測試
        分別在瀏覽器網址輸入 test01.com.tw 與 test02.com.tw,即可看到


只要點兩下就能將 彰化縣EIP系統全校學生帳號總表 依 各班級 分成 各班級學生帳號總表

系列文章: 1. 只要點兩下就能產出彰化縣Cloud School 學生帳號密碼匯入彰化縣EIP系統學生帳號密碼的CSV 1. https://skjhcreator.blogspot.com/2025/08/cloud-school-eipcsv.html 2. 只要點兩下就能...