在CentOS上使用Apache限制訪問可以通過多種方法實現,以下是一些常見的方法:
.htaccess
文件.htaccess
文件是一個配置文件,可以放在網站的根目錄下,用于控制對該目錄及其子目錄的訪問。
<Directory "/var/www/html">
Order Deny,Allow
Deny from all
Allow from 192.168.1.1
Allow from 192.168.1.2
</Directory>
<Directory "/var/www/html">
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Directory>
然后創建 .htpasswd
文件并添加用戶名和密碼:
htpasswd -c /etc/httpd/conf/.htpasswd username
Require
指令(Apache 2.4+)Apache 2.4 引入了更簡潔的 Require
指令來控制訪問。
<Directory "/var/www/html">
Require ip 192.168.1.1 192.168.1.2
</Directory>
<Directory "/var/www/html">
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Directory>
mod_rewrite
模塊mod_rewrite
模塊可以用于復雜的訪問控制規則。
<Directory "/var/www/html">
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.
RewriteRule ^restricted-file\.txt$ - [F]
</Directory>
你也可以使用防火墻(如 iptables
或 firewalld
)來限制對Apache服務器的訪問。
firewalld
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
# 限制特定IP訪問
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="80" accept'
firewall-cmd --reload
SELinux 是一個安全模塊,可以用來進一步限制對Apache的訪問。
setsebool -P httpd_can_network_connect 0
chcon -Rv --type=httpd_sys_content_t /var/www/html/restricted
選擇哪種方法取決于你的具體需求和環境。對于簡單的IP限制,.htaccess
或 Require
指令通常足夠了。對于更復雜的規則,可能需要使用 mod_rewrite
。防火墻和 SELinux 提供了更底層的安全控制。