一、基于IP和主機的通路控制
通常我們可以使用防火牆來控制網絡使用者對HTTP服務的通路,包括允許通路以及拒絕通路。相對于複雜的firewall指令,我們還可以直接利用HTTP服務的配置檔案來控制網絡使用者的通路。
無明确授權的目錄,預設拒絕
允許所有主機通路:Require all granted
拒絕所有主機通路:Require all denied
控制特定的IP通路:
Require ip IPADDR:授權指定來源的IP通路
Require not ip IPADDR:拒絕特定的IP通路控制特定的主機通路:
Require host HOSTNAME:授權特定主機通路
Require not host HOSTNAME:拒絕
HOSTNAME:
FQDN:特定主機
domin.tld:指定域名下的所有主機
1、除特定ip外授權所有ip通路
<RequireAll>
Require all granted
Require not ip 172.16.1.1 拒絕特定IP
</RequireAll>
2、除所有ip外拒絕所有ip通路
<RequireAny>
Require all denied
require ip 172.16.1.1 允許特定IP
</RequireAny>
3、表示拒絕所有主機通路,單獨允許IP網段為192.168.25.0/24的主機通路,而拒絕網段裡面IP為192.168.25.51的主機通路
<directory /app/website/html/>
<RequireAll>
require all denied
require ip 192.168.25.
require not ip 192.168.25.51
</RequireAll>
</directory>
針對特定Hostname的通路控制有一個前提,伺服器能夠将hostname解析成對應的IP,也就是說需要有相應的解析服務,DNS或者hosts檔案都可以。類似于Require ip語句,針對特定host也有類似的用法,
授權特定主機通路:Require host HOSTNAME
拒絕特定主機通路:Require not host HOSTNAME12
4、表示拒絕所有主機通路,唯獨允許hostname為Centos7的主機通路。配置如下:
<directory /app/website/a/>
require all denied
require host Centos7
</directory>1234
5、表示允許所有主機通路,唯獨拒絕hostname為Centos7的主機通路。同Require not ip,Require not host也指令需要在一對<RequireAll>指令裡面使用,示例如下:
<directory /app/website/html/>
<RequireAll>
require all granted
require not host Centos7
</RequireAll>
</directory>
二、基于使用者的通路控制
1、認證方式兩種
basic:明文
digest:消息摘要認證,相容性差
basic認證配置示例:
(1) 定義安全域
<Directory “/path">
Options None
AllowOverride None
AuthType Basic
AuthName "String“
AuthUserFile "/PATH/HTTPD_USER_PASSWD_FILE"
Require user username1 username2 ...
</Directory>
允許賬号檔案中的所有使用者登入通路:Require valid-user
(2) 提供賬号和密碼存儲(文本檔案)
使用專用指令完成此類檔案的建立及使用者管理
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
建立密碼檔案的方式有兩種,一種的手動建立,當然建立的是明文密碼,安全性不夠;另一種是使用 htpasswd 指令生成,這個工具有一些選項:
選項 注釋
-c 自動建立檔案,僅應該在檔案不存在時使用(初建時使用-c,再次建立不取消該選項則會覆寫之前内容)
-m md5格式加密
-s sha格式加密
-D 删除指定使用者
2、建立授權使用者資訊(注意:第一次建立需要加上-c選項)
htpasswd -c /etc/httpd/conf.d/.htpasswd alice
htpasswd /etc/httpd/conf.d/.htpasswd bob
htpasswd /etc/httpd/conf.d/.htpasswd jack
方法一
vim /etc/httpd/conf.d/test.conf
<Directory /data/website/admin>
AuthType Basic //認證模式
AuthName "Secure login" //登陸安全提示符
AuthUserFile "/etc/httpd/conf.d/.htpasswd" //授權的使用者認證資訊存放路徑
Require valid-user //指定使用者授權:Require user username
</Directory>
方法二
先建立.htpasswd檔案
[[email protected] admin]#vim /data/website/admin/.htpasswd
AuthType Basic
AuthName "Secure login"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
Require user bob
再對httpd配置檔案進行如下配置
vim /etc/httpd/conf.d/test.conf
<Directory /data/website/admin>
AllowOverride authconfig </Directory>
<Location "/status"> SetHandler server-status
Require all granted
</Location>
三、實作https
1、安裝ssl子產品
yum install mod_ssl
2、 httpd伺服器申請證書
(umask 077;openssl genrsa -out httpd.key 2048)
openssl req -new -key httpd.key -out httpd.crt
scp httpd.csr caserver:/etc/pki/CA/
3、 建立CA并頒發httpd伺服器證書
cd /etc/pki/CA
(umask 077;openssl genrsa -out private/cakey.pem 2048)
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
touch index.txt
echo 01 > serial
openssl ca -in httpd.csr -out certs/httpd.crt
scp certs/httpd.crt cacert.pem httpdserver:/etc/httpd/conf.d/ssl/
4 、配置httpd實作加密
ls /etc/httpd/conf.d/ssl
cacert.pem httpd.crt httpd.csr httpd.key
vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key
SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem
轉載于:https://blog.51cto.com/11637832/2157369