分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

httpd的安全策略

发布时间:2023-09-06 02:09责任编辑:熊小新关键词:http
一、基于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 grantedRequire not ip 172.16.1.1 拒绝特定IP</RequireAll> 

2、除所有ip外拒绝所有ip访问

<RequireAny>Require all deniedrequire 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 NoneAllowOverride NoneAuthType BasicAuthName "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 alicehtpasswd ??/etc/httpd/conf.d/.htpasswd bobhtpasswd ??/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文件

[root@centos7 admin]#vim /data/website/admin/.htpasswdAuthType BasicAuthName "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.crtscp 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.pemtouch index.txtecho 01 > serialopenssl 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/sslcacert.pem ?httpd.crt ?httpd.csr ?httpd.keyvim /etc/httpd/conf.d/ssl.confSSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crtSSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.keySSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem

httpd的安全策略

原文地址:http://blog.51cto.com/11637832/2157369

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved