跳轉到內容

Apache/安全性

來自華夏公益教科書

許多機器人試圖破解某些資料庫(例如透過 PhpMyAdminWordPress)。為了防止它們,我們可以利用幾個標準。

例如,要禁止檢視沒有索引檔案的目錄(例如:.html、.php),請新增程式碼:Options -Indexes

透過來源保護

[編輯 | 編輯原始碼]

只授權兩個 IP 讀取目錄

使用 Require[1] 白名單

[編輯 | 編輯原始碼]
    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_authz_core.c>
            <RequireAny>
                Require all denied
                Require ip 127.0.0.1
                Require ip 127.0.0.2
            </RequireAny>
        </IfModule>
    </Directory>

使用 allow 白名單(Apache 2.4 中已過時)

[編輯 | 編輯原始碼]
    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_access_compat.c>
            deny from all
            allow from 127.0.0.1
            allow from 127.0.0.2
        </IfModule>
    </Directory>

如果授權範圍與禁止範圍有一些地址重疊,最好指定它們的優先順序(.htaccess 檔案中的行順序不會改變任何內容)

order allow, deny
先從授權開始,然後開始禁止,以免禁止先前允許的操作。
order deny, allow
相反的做法限制較小。

使用 Require[2] 黑名單

[編輯 | 編輯原始碼]
    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_authz_core.c>
            Require all granted
            Require not ip 127.0.0.1
        </IfModule>
    </Directory>

使用 deny 黑名單(Apache 2.4 中已過時)

[編輯 | 編輯原始碼]
    <Directory /usr/share/phpmyadmin/>
        <IfModule mod_access_compat.c>
            order allow,deny
            allow from all
            deny from 127.0.0.1
        </IfModule>
    </Directory>

透過密碼保護

[編輯 | 編輯原始碼]

身份驗證配置

[編輯 | 編輯原始碼]

必須允許在 Apache 設定中修改身份驗證引數。

父目錄的 AllowOverride 指令必須包含 AuthConfig[3] 選項。

要放在 .htaccess 中的指令是

AuthType basic
普遍採用的身份驗證型別,但安全性較差。
AuthName "我的訊息"
作為對話方塊中邀請的文字。
AuthUserFile /etc/apache2/my_passwd
密碼檔案路徑。
Require valid-user
指定需要有效帳戶才能訪問資料夾。

我們也可以使用 Require user toto sasa 來只授權兩個帳戶 totosasa

basic 身份驗證型別使用未加密的密碼。

還存在其他一些更安全的型別,例如 digest,建議與 HTTPS 結合使用。

第一個請求將傳送到受保護的目錄,並會導致顯示對話方塊,使用者應在其中進行身份驗證(使用登入名和密碼)。

  • 如果密碼無效,則會再次顯示對話方塊。
  • 如果有效,則瀏覽器可以記錄它,並且直到下次重新啟動之前都不會再次詢問。

密碼檔案

[編輯 | 編輯原始碼]

以下命令建立一個名為 的密碼檔案,其中包含一個使用者 toto

htpasswd -c /home/user/www/.htpasswd toto

要新增或修改使用者

htpasswd /home/user/www/.htpasswd sasa

然後,使用以下命令告訴 .htaccess .htpasswd 檔案的路徑

 AuthName "Protected page"
 AuthType Basic
 AuthUserFile "/home/user/www/.htpasswd"
 Require valid-user

參考文獻

[編輯 | 編輯原始碼]
  1. https://httpd.apache.org/docs/2.4/en/howto/access.html
  2. https://httpd.apache.org/docs/2.4/en/upgrading.html
  3. http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride
華夏公益教科書