CentOS中apache站点安全讲解
时间:2014-02-22 02:24 来源:51cto 作者:IT网
由于http是基于明文传输的,所以站点上的信息很容易被别人看到,为了实现我们的站点的安全性,我们通常的做法有三种:身份验证、来源控制和加密访问(https)。
1.身份验证:顾名思义,当用户访问我们的站点时,需要对访问者进行身份验证,只有用户输入正确的用户名和口令才能访问我们的站点内容。
环境:rhel 5.4
所使用的软件包:httpd-2.2.3-31.el5.i386.rpm
具体实现:
echo “welcome to my home”>/var/www/html/index.html 创建一个网站首页
vim /etc/httpd/conf/httpd.conf 修改httpd的配置文件
306 <Directory"/var/www/html">
327 AllowOverride all 此处将none修改为all
335 </Directory>
service httpd start 启动httpd服务
在站点根目录创建一个名为.htaccess的说明文件,文件内容如下:
authuserfile/var/www/.htpasswd 指明验证库文件
authname "please input your name and password" 验证提示
authtype basic 指明验证类型
require valid-user 指明可访问的用户(合法验证的用户)
使用htpasswd产生.htpasswd帐号文件:
htpasswd -c /var/www/.htpasswd zhangsan(注意:在产生新文件时需要-c,追加用户时不需要)
New password: 123
Re-type new password:123
service httpd restart 重新启动httpd服务
2.来源控制:即我们可以限制允许和禁止哪些网段的用户的访问。
具体实现:
我们只需要在上面的基础之上对httpd的配置文件进行修改即可:
332 Order allow,deny
333 deny from 192.168.2.2 表示允许除192.168.2.2以外的用户访问
334 Allow from all
注意:332行的顺序,顺序不同,结果就不同哦!
3.加密访问:我们通过http和安全套接字ssl结合从而实现站点的安全性的验证。ssl是介于应用层与传输层的一个夹层,由于http是明文传输的,为了对其实现一定的安全性,网景(Netscape)公司开发出了ssl后经标准化组织标准化以后也被称为tls。
https的原理:client在访问server时,server会向client出具数字证书(该证书是由证书机构CA颁发的),证书内包含:持有者标识、序列号、公钥(n,e)、有效期、签发机构标识和CA的数字签名(数字签名可以保证信息的完整性、真实性和不可抵赖性,从而保证证书不被篡改)。此时,客户端会产生密钥K,并且在ssl层用服务器的公钥进行加密,经网络传到服务器端在ssl层经服务器的私钥进行解密,此时client与server就拥有相同的密钥K,接着client与server进行对称的加密解密的过程来进行信息传递。

实现环境:rhel 5.4
需要软件包:httpd-2.2.3-31.el5.i386.rpm
mod_ssl-2.2.3-31.el5.i386.rpm
distcache-1.4.5-14.1.i386.rpm 此包被mod_ssl所依赖
bind-9.3.6-4.P1.el5.i386.rpm
bind-chroot-9.3.6-4.P1.el5.i386.rpm
caching-nameserver-9.3.6-4.P1.el5.i386.rpm
拓扑图:

具体实现:
安装所需软件包:
rpm -ivh httpd-2.2.3-31.el5.i386.rpm
rpm -ivh mod_ssl-2.2.3-31.el5.i386.rpm
rpm -ivh distcache-1.4.5-14.1.i386.rpm
rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm
rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm
rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm
由于服务器需要证书,所以需要有证书颁发机构CA,所以要先搭建CA server,在linux上可以用openca和openssl实现CA,我们这里用的是openssl:
vim/etc/pki/tls/openssl.cnf 修改配置文件
45 dir = /etc/pki/CA 指定所有文件的存放目录(绝对路径)
46 certs = $dir/certs 指定存放证书的目录
47 crl_dir = $dir/crl 指定吊销的证书存放目录
48 database = $dir/index.txt 数据库索引文件
51 new_certs_dir = $dir/newcerts 默认放置新发行的证书的目录
53 certificate = $dir/cacert.pem CAserver的证书
54 serial = $dir/serial 初始证书序列号(以后每发行一个证书在此基础上+1)
58 private_key = $dir/private/cakey.pem CA私钥的存放位置
88 countryName =optional
89 stateOrProvinceName = optional
90 organizationName = optional
135 countryName = Country Name (2 lettercode)
136 countryName_default = CN
137 countryName_min = 2
138 countryName_max = 2
140 stateOrProvinceName = State or Province Name (fullname)
141stateOrProvinceName_default = HENAN
143 localityName = Locality Name (eg, city)
144 localityName_default = ZHENGZHOU
上面的certs crl newcerts目录和index.txt serial文件都不存在,所以此处需要在目录/etc/pki/CA下创建:
mkdir certs crl newcerts
touch index.txt serial
echo “01”> serial 给serial一个初始值
为CA server产生私钥:
openssl genrsa 1024 >private/cakey.pem
chmod 600 private/cakey.pem 修改私钥的权限
为CA server产生证书:
openssl req -new -keyprivate/cakey.pem -x509 -out cacert.pem

现在我们修改web server的配置文件/etc/httpd/conf/httpd.conf
#Listen 80 禁用80端口
cd /var/www/html 进入此目录
echo “welcome to my home” >index.html 产生首页
为web server 颁发证书:
mkdir /etc/httpd/certs 创建存放web证书及密钥的目录
cd /etc/httpd/certs 切换目录
openssl genrsa 1024 >httpd.key 为web server产生私钥
chmod 600 httpd.key 修改私钥的权限值
openssl req -new -key httpd.key -out httpd.req 产生证书的请求文件

openssl ca -in httpd.req -out httpd.cert CA签发请求文件形成证书

将证书与web server进行捆绑,修改/etc/httpd/conf.d/ssl.conf文件
112 SSLCertificateFile /etc/httpd/certs/httpd.cert 指明证书存放的位置
119 SSLCertificateKeyFile /etc/httpd/certs/httpd.key 指明私钥存在的位置
128 SSLCertificateChainFile /etc/pki/CA/cacert.pem 指明CA的证书所在位置
DNS server的配置:
cp -pnamed.caching-nameserver.conf named.conf 拷贝配置文件的样例文件
vim /var/named/chroot/etc/named.conf 修改配置文件
15 listen-on port 53 { any; };
27 allow-query { any; };
28 allow-query-cache { any; };
37 match-clients { any; };
38 match-destinations { any; };
vim /var/named/chroot/etc/named.rfc1912.zones 修改区域声明文件,添加一个abc.com的域

进入/var/named/chroot/var/named目录下:
cp –p localhost.zone abc.com.zone 拷贝一个区域文件
vim abc.com.zone 修改区域文件

客户端进行访问测试:

安装证书,使证书颁发机构成为信任机构:






再次访问https://www.abc.com

本文出自 “夜风” 博客,请务必保留此出处http://jiangkun08.blog.51cto.com/6266992/1281694
(责任编辑:IT)
由于http是基于明文传输的,所以站点上的信息很容易被别人看到,为了实现我们的站点的安全性,我们通常的做法有三种:身份验证、来源控制和加密访问(https)。 1.身份验证:顾名思义,当用户访问我们的站点时,需要对访问者进行身份验证,只有用户输入正确的用户名和口令才能访问我们的站点内容。 环境:rhel 5.4 所使用的软件包:httpd-2.2.3-31.el5.i386.rpm 具体实现: echo “welcome to my home”>/var/www/html/index.html 创建一个网站首页 vim /etc/httpd/conf/httpd.conf 修改httpd的配置文件 306 <Directory"/var/www/html"> 327 AllowOverride all 此处将none修改为all 335 </Directory> service httpd start 启动httpd服务 在站点根目录创建一个名为.htaccess的说明文件,文件内容如下: authuserfile/var/www/.htpasswd 指明验证库文件 authname "please input your name and password" 验证提示 authtype basic 指明验证类型 require valid-user 指明可访问的用户(合法验证的用户) 使用htpasswd产生.htpasswd帐号文件: htpasswd -c /var/www/.htpasswd zhangsan(注意:在产生新文件时需要-c,追加用户时不需要) New password: 123 Re-type new password:123 service httpd restart 重新启动httpd服务
2.来源控制:即我们可以限制允许和禁止哪些网段的用户的访问。 具体实现: 我们只需要在上面的基础之上对httpd的配置文件进行修改即可: 332 Order allow,deny 333 deny from 192.168.2.2 表示允许除192.168.2.2以外的用户访问 334 Allow from all 注意:332行的顺序,顺序不同,结果就不同哦!
3.加密访问:我们通过http和安全套接字ssl结合从而实现站点的安全性的验证。ssl是介于应用层与传输层的一个夹层,由于http是明文传输的,为了对其实现一定的安全性,网景(Netscape)公司开发出了ssl后经标准化组织标准化以后也被称为tls。 https的原理:client在访问server时,server会向client出具数字证书(该证书是由证书机构CA颁发的),证书内包含:持有者标识、序列号、公钥(n,e)、有效期、签发机构标识和CA的数字签名(数字签名可以保证信息的完整性、真实性和不可抵赖性,从而保证证书不被篡改)。此时,客户端会产生密钥K,并且在ssl层用服务器的公钥进行加密,经网络传到服务器端在ssl层经服务器的私钥进行解密,此时client与server就拥有相同的密钥K,接着client与server进行对称的加密解密的过程来进行信息传递。
实现环境:rhel 5.4 需要软件包:httpd-2.2.3-31.el5.i386.rpm mod_ssl-2.2.3-31.el5.i386.rpm distcache-1.4.5-14.1.i386.rpm 此包被mod_ssl所依赖 bind-9.3.6-4.P1.el5.i386.rpm bind-chroot-9.3.6-4.P1.el5.i386.rpm caching-nameserver-9.3.6-4.P1.el5.i386.rpm 拓扑图:
具体实现: 安装所需软件包: rpm -ivh httpd-2.2.3-31.el5.i386.rpm rpm -ivh mod_ssl-2.2.3-31.el5.i386.rpm rpm -ivh distcache-1.4.5-14.1.i386.rpm rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm 由于服务器需要证书,所以需要有证书颁发机构CA,所以要先搭建CA server,在linux上可以用openca和openssl实现CA,我们这里用的是openssl: vim/etc/pki/tls/openssl.cnf 修改配置文件 45 dir = /etc/pki/CA 指定所有文件的存放目录(绝对路径) 46 certs = $dir/certs 指定存放证书的目录 47 crl_dir = $dir/crl 指定吊销的证书存放目录 48 database = $dir/index.txt 数据库索引文件 51 new_certs_dir = $dir/newcerts 默认放置新发行的证书的目录 53 certificate = $dir/cacert.pem CAserver的证书 54 serial = $dir/serial 初始证书序列号(以后每发行一个证书在此基础上+1) 58 private_key = $dir/private/cakey.pem CA私钥的存放位置
88 countryName =optional 89 stateOrProvinceName = optional 90 organizationName = optional 135 countryName = Country Name (2 lettercode) 136 countryName_default = CN 137 countryName_min = 2 138 countryName_max = 2 140 stateOrProvinceName = State or Province Name (fullname) 141stateOrProvinceName_default = HENAN
143 localityName = Locality Name (eg, city) 144 localityName_default = ZHENGZHOU 上面的certs crl newcerts目录和index.txt serial文件都不存在,所以此处需要在目录/etc/pki/CA下创建: mkdir certs crl newcerts touch index.txt serial echo “01”> serial 给serial一个初始值 为CA server产生私钥: openssl genrsa 1024 >private/cakey.pem chmod 600 private/cakey.pem 修改私钥的权限 为CA server产生证书: openssl req -new -keyprivate/cakey.pem -x509 -out cacert.pem
现在我们修改web server的配置文件/etc/httpd/conf/httpd.conf #Listen 80 禁用80端口 cd /var/www/html 进入此目录 echo “welcome to my home” >index.html 产生首页 为web server 颁发证书: mkdir /etc/httpd/certs 创建存放web证书及密钥的目录 cd /etc/httpd/certs 切换目录 openssl genrsa 1024 >httpd.key 为web server产生私钥 chmod 600 httpd.key 修改私钥的权限值 openssl req -new -key httpd.key -out httpd.req 产生证书的请求文件
openssl ca -in httpd.req -out httpd.cert CA签发请求文件形成证书
将证书与web server进行捆绑,修改/etc/httpd/conf.d/ssl.conf文件 112 SSLCertificateFile /etc/httpd/certs/httpd.cert 指明证书存放的位置 119 SSLCertificateKeyFile /etc/httpd/certs/httpd.key 指明私钥存在的位置 128 SSLCertificateChainFile /etc/pki/CA/cacert.pem 指明CA的证书所在位置
DNS server的配置: cp -pnamed.caching-nameserver.conf named.conf 拷贝配置文件的样例文件 vim /var/named/chroot/etc/named.conf 修改配置文件 15 listen-on port 53 { any; }; 27 allow-query { any; }; 28 allow-query-cache { any; }; 37 match-clients { any; }; 38 match-destinations { any; }; vim /var/named/chroot/etc/named.rfc1912.zones 修改区域声明文件,添加一个abc.com的域
进入/var/named/chroot/var/named目录下: cp –p localhost.zone abc.com.zone 拷贝一个区域文件 vim abc.com.zone 修改区域文件
客户端进行访问测试:
安装证书,使证书颁发机构成为信任机构:
再次访问https://www.abc.com
本文出自 “夜风” 博客,请务必保留此出处http://jiangkun08.blog.51cto.com/6266992/1281694 (责任编辑:IT) |