centos7下的apache2.4安全配置
基本概括
关键词Server
ServerRoot "/etc/httpd" #apache软件安装的位置
Listen 80 #监听的端口号
ServerName www.test.com:80 #网站的名字
ServerAdmin #管理员的邮件地址
DocumentRoot "/var/www/html" #站点的网页存储位置
主站点的目录访问控制解析
1 <Directory "/var/www/html">
2 Options FollowSymLinks Indexes
3 AllowOverride None
4 Order allow,deny
5 (Allow from all) #httpd2.2版本
6 Require all granted
7 </Directory>
在这段代码中的内容每一个开头都是一个属性 而后面的都是配置该属性的选项
1. Options 配置特定目录要使用的特性
- FollowSymLinks 在该目录下允许文件系统使用符号连接
符号链接:相当于可以使用url定位资源
- indexes 当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。
如果为了网站安全可以在indexes前加一个 '-' (-indexes) 或直接删除indexes选项
- ExecCGI 在该目录下允许执行CGI脚本
- SymLinksIfOwnerMatch 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问
- Includes 允许服务器端包含功能
- IncludesNoExec 允许服务器端包含功能,但禁止执行CGI脚本
2.AllowOverride 允许存在于.htaccess文件中的指令类型
- None 不搜索该目录下的.htaccess文件,减少开销
- ALL 在.htaccess文件中可以使用所有的指令
- authconfig 一行表示允许对/var/www/html目录下的内容进行用户认证
- 访问目录/var/www/html下创建文件.htaccess 内容如下:
AuthName "提示信息"
AuthType basic
AuthUserFile /var/www/html/members.txt
require valid-user
- 1) AuthName:定义提示信息,用户访问时提示信息会出现在认证的对话框中
2) AuthType:定义认证类型,在HTTP1.0中,只有一种认证类型:basic。在HTTP1.1中有几种认证类型,如:MD5
3) AuthUserFile:定义包含用户名和密码的文本文件,每行一对
4) AuthGroupFile:定义包含用户组和组成员的文本文件。组成员之间用空格分开,如:group1:user1 user2
5) require命令:定义哪些用户或组才能被授权访问。如:
require user user1 user2 (只有用户user1和user2可以访问)
requires groups group1 (只有group1中的成员可以访问)
require valid-user (在AuthUserFile指定的文件中的所有用户都可以访问)
apache用户认证访问机制 - 不熟悉 - 博客园 (cnblogs.com)
关于.htaccess文件的作用这里给个友情链接
apache .htaccess文件详解和配置技巧总结 - 恩恩先生 - 博客园 (cnblogs.com)
3.Order 控制在访问时Allow和Deny两个访问规则哪个优先 (httpd-2.2版本)
- Allow 允许访问的主机列表(可用域名或子网)
用法 : Allow from 192.168.245.0/24 Allow from all
- Deny 拒绝访问的主机列表
4. Require all granted (httpd2.4版本)
此为http-2.4中的允许所有人访问的格式。除此还可以禁止某个IP或域名的访问
Require not ip 1.1.1.1
Require not host host.example.com
Require all denied #禁止访问
安全加固
1. 隐藏apache的版本信息
ServerTokens
1 #仅软件名称,例如:apache
2 ServerTokens Prod
3
4 包括主版本号,例如:apache/2
5 ServerTokens Major
6
7 #包括次版本号,例如:apache/2.0
8 ServerTokens Minor
9
10 #仅apache的完整版本号,例如:apache/2.0.54
11 ServerTokens Min
12
13 #包括操作系统类型,例如:apache/2.0.54(Unix)
14 ServerTokens OS
15
16 #包括apache支持的模块及模块版本号,例如:Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g
17 ServerTokens Full
ServerSignature off /on
在文末添加即可
2.配置所有的web网站请求使用https协议.必须将所有http请求重定向到https
在网站目录的文件夹创建一个.htaccess文件
vi .htaccess #写入 RewriteEngine On RewriteBase / RewriteCond %{SERVER_PORT} ^!443$ RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [L,R]