Apache 安全配置 - Ubuntu 12
我在 Ubuntu 12 上執行 LAMP 堆棧,其主要功能是提供基於 PHP 的 API。
我只想向公眾公開一個文件,名為:
api.php
它需要引用我擁有的配置文件,
/cfg/api-config.php
其中包含數據庫密碼,以便 API 可以寫入數據庫等。所以我只希望
api.php
apache 被“服務”並公開。我放入 /cfg 的配置文件必須可以被 api.php 讀取,但不能被任何可能訪問該站點的人讀取。
我沒有
.htaccess
,只是httpd.conf
按照下面的配置。<VirtualHost *:44448> DocumentRoot "/api" ServerName localhost:44448 ServerAlias Server.local DirectoryIndex index.html CustomLog "/var/log/apache_access.log" combined ErrorLog "/var/log/apache_error.log" SetEnv APPLICATION_ENV development php_flag magic_quotes_gpc off <Directory "/api"> Options Indexes MultiViews FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
我的
/cfg
和/api
文件夾的權限是:我的敏感配置文件的drwxr-xr-x
權限和數據庫密碼位於/cfg/api-config.php``-rw-r--r--
我想知道是否有人可以告訴我這是否設置正確且安全?
藉此:
A)除 之外的所有文件
/api/api.php
都不是公開的,並且無法訪問我的伺服器文件。B)任何訪問該站點的人也無法讀取帶有 db 密碼(用於 api)的配置文件?
我試圖通過在
/cfg
with中創建一個新文件夾來測試這一點chmod 777
,但我似乎無法訪問它,這很好!
您有兩個文件(假設它們位於 /var/www)
- /var/www/api/api.php
- /var/www/cfg/api-config.php
首先,使用 apache 限制對 /cfg 的訪問(這確保沒有人可以從 http 訪問它)並允許訪問 /api:
<Directory /var/www/api> Options None AllowOverride None Order allow,deny Allow from all <Directory> <Directory /var/www/cfg> Options None AllowOverride None Order allow,deny Deny from all <Directory>
接下來,使用 open_basedir 限制您的 php:
open_basedir = /var/www/api:/var/www/cfg
(如果需要,在此處添加 /tmp、session 和其他目錄)
接下來,更改 /var/www/cfg 目錄和 /var/www/cfg/api-config.php 文件的訪問模式(假設您的 apache 使用者是 www-data):
chown -Rv root:root /var/www/{cfg,api} chmod -v 711 /var/www/cfg chmod -v 755 /var/www/api chmod -v 644 /var/www/api/api.php /var/www/cfg/api-config.php
通過在 /cfg 上使用711,您可以確保沒有人可以讀取(列出)目錄的內容,同時仍然可以讀取 api-config.php(您需要這個來通過 PHP 讀取文件)