正确配置与维护Apache安全性设置方法
程序员文章站
2022-06-11 23:47:18
一,apache服务器的介绍 apache服务器它是internet网上应用最为广泛的web服务器软件之一。apache服务器源自美国国家超级技术计算应用中心(ncsa)的...
一,apache服务器的介绍
apache服务器它是internet网上应用最为广泛的web服务器软件之一。apache服务器源自美国国家超级技术计算应用中心(ncsa)的 web服务器项目中。目前已在互联网中占据了领导地位。apache服务器得经过精心配置之后,才能使它适应高负荷,大吞吐量的互联网工作。快速、可靠、通过简单的api扩展,perl/python解释器可被编译到服务器中,且完全免费,完全源代码开放。如果你需要创建一个每天有数百万人访问的web服务器,apache可能是最佳选择。
二,apache服务器的主要安全缺陷
正如我们前言所说尽管apache服务器应用最为广泛,设计上非常安全的程序。但是同其它应用程序一样,apache也存在安全缺陷。毕竟它是完全源代码,apache服务器的安全缺陷主要是使用http协议进行的拒绝服务攻击(denial of service)、缓冲区溢出攻击以及被攻击者获得 root权限三缺陷和最新的恶意的攻击者进行“拒绝服务”(dos)攻击。合理的网络配置能够保护apache服务器免遭多种攻击。我们来介绍一下主要的安全缺陷:
(1)使用http协议进行的拒绝服务攻击(denial of service)的安全缺陷
这种方法攻击者会通过某些手段使服务器拒绝对http应答。这样会使apache对系统资源(cpu时间和内存)需求的剧增,最终造成apache系统变慢甚至完全瘫痪。
(2)缓冲区溢出的安全缺陷
该方法攻击者利用程序编写的一些缺陷,使程序偏离正常的流程。程序使用静态分配的内存保存请求数据,攻击者就可以发送一个超长请求使缓冲区溢出。比如一些perl编写的处理用户请求的网关脚本。一旦缓冲区溢出,攻击者可以执行其恶意指令或者使系统宕机。
(3)被攻击者获得root权限的安全缺陷
该安全缺陷主要是因为apache服务器一般以root权限运行(父进程),攻击者会通过它获得root权限,进而控制整个apache系统。
(4)恶意的攻击者进行“拒绝服务”(dos)攻击的安全缺陷
这个最新在6月17日发现的漏洞,它主要是存在于apache的chunk encoding中,这是一个http协议定义的用于接受web用户所提交数据的功能。 利用黑客程序可以对于运行在freebsd 4.5, openbsd 3.0 / 3.1, netbsd 1.5.2平台上的 apache服务器均可进行有效的攻击.
所有说使用最高和最新安全版本对于加强apache web服务器的安全是至关重要的。请广大apache服务器管理员去http://www.apache.org/dist/httpd/下载补丁程序以确保其web服务器安全!
三, 正确维护和配置apache服务器
虽然apache服务器的开发者非常注重安全性,由于apache服务器其庞大的项目,难免会存在安全隐患。正确维护和配置apache web服务器就很重要了。我们应注意的一些问题:
(1)apache服务器配置文件
apache web服务器主要有三个配置文件,位于/usr/local/apache/conf目录下。这三个文件是:
httpd.con-----〉主配置文件
srm.conf------〉填加资源文件
access.conf---〉设置文件的访问权限
注:具体配置可以参考:http://httpd.apache.org/docs/mod/core.html
(2)apache服务器的日志文件
我们可以使用日志格式指令来控制日志文件的信息。使用logformat “%a %l“指令,可以把发出http请求浏览器的ip地址和主机名记录到日志文件。出于安全的考虑,在日志中我们应知道至少应该那些验证失败的web用户,在http.conf文件中加入logformat “%401u“指令可以实现这个目的。这个指令还有其它的许多参数,用户可以参考apache的文档。另外,apache的错误日志文件对于系统管理员来说也是非常重要的,错误日志文件中包括服务器的启动、停止以及cgi执行失败等信息。更多请参看apache日志系列1-5。
(3)apache服务器的目录安全认证
在apache server中是允许使用 .htaccess做目录安全保护的,欲读取这保护的目录需要先键入正确用户帐号与密码。这样可做为专门管理网页存放的目录或做为会员区等。
在保护的目录放置一个档案,档名为.htaccss
authname “会员专区“
authtype “basic“
authuserfile “/var/tmp/xxx.pw“ -----〉把password放在网站外
require valid-user
到apache/bin目录,建password档
% ./htpasswd -c /var/tmp/xxx.pw username1 -----〉第一次建档要用参数“-c“
% ./htpasswd /var/tmp/xxx.pw username2
这样就可以保护目录内的内容,进入要用合法的用户.
注:采用了apache内附的模组。也可以采用在httpd.conf中加入:
options indexes followsymlinks
allowoverride authconfig
order allow,deny
allow from all
(4)apache服务器访问控制
我们就要看三个配置文件中的第三个文件了,即access.conf文件,它包含一些指令控制允许什么用户访问apache目录。应该把deny from all设为初始化指令,再使用allow from指令打开访问权限。
order deny,allow
deny from all
allow from safechina.net
设置允许来自某个域、ip地址或者ip段的访问。
(5)apache服务器的密码保护问题
我们再使用.htaccess文件把某个目录的访问权限赋予某个用户。系统管理员需要在httpd.conf或者srm.conf文件中使用accessfilename指令打开目录的访问控制。如:
authname privatefiles
authtype basic
authuserfile /path/to/httpd/users
require phoenix
# htpasswd -c /path/to/httpd/users phoenix
四,设置apache服务器的web和文件服务器
我们在apache服务器上存放web服务器的文件,供用户访问,并设置/home/ftp/pub目录为文件存放区域,用http://download.your.com/pub/来访问。在防火墙上设置apache反向代理技术,由防火墙代理访问。
(1)apache服务器的设置
apache服务器采用默认配置。主目录为/home/httpd/html,主机域名为phoenix.your.com,且别名到www.your.com中, 并且设置srm.conf加一行别名定义如下:
alias /pub /home/ftp/pub/
更改默认应用程序类型定义如下:
defaulttype application/octet-stream
最后在/etc/httpd/conf/access.conf中增加一项定义
options indexes
allowoverride authconfig
order allow,deny
allow from all
注:options indexes允许在找不到index.html文件的情况下允许列出目录/文件列表。
allowoverride authconfig允许做基本的用户名和口令验证。这样的话,
需要在/home/ftp/pub目录下放入.htaccess,内容如下:
[root@shopu pub]# more .htaccess
authname branch office public software download area
authtype basic
authuserfile /etc/.usrpasswd
require valid-user
用# htpasswd -c /etc/.usrpasswd user1 分别创建不同的允许访问/pub下文件服务的外部用户名和口令。
(2)在防火墙上配置反向代理技术.
在/etc/httpd/conf/httpd.conf 中加入 namevirtualhost xxx.xxx.xxx.xxx
# xxx.xxx.xxx.xxx -----〉是防火墙外部在互联网上永久ip地址
servername www.your.com
errorlog /var/log/httpd/error_log
transferlog /var/log/httpd/access_log
rewriteengine on
proxyrequests off
usecanonicalname off
rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 apache服务器的ip地址。
servername http://download.your.com/pub/
errorlog /var/log/httpd/download/error_log
transferlog /var/log/httpd/download/access_log
rewriteengine on
proxyrequests off
usecanonicalname off
rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 同上apache服务器的ip地址。
设置防火墙上的dns,让download.your.com和www.your.com都指向防火墙的外部网地址xxx.xxx.xxx.xxx。用 http://www.your.com访问主页,用http://download.your.com/pub/访问公共文件的下载区。
注:还需要在apache服务器主机上建立目录/var/log/httpd/download/,否则会出错。另外,也可以设置防火墙主机上的 /home/httpd/html/index.html的属性为750来阻止访问,这是防外部用户能访问到防火墙上的apache服务器的http: //www.your.com中。
总结:apache server是一个非常优秀,非常棒的服务器,只要你正确配置和维护好apache服务器,你就会感受到apache server 所带来的好处,同样希望你能够通过阅读本文达到理论和实践双丰收的目的。
apache服务器它是internet网上应用最为广泛的web服务器软件之一。apache服务器源自美国国家超级技术计算应用中心(ncsa)的 web服务器项目中。目前已在互联网中占据了领导地位。apache服务器得经过精心配置之后,才能使它适应高负荷,大吞吐量的互联网工作。快速、可靠、通过简单的api扩展,perl/python解释器可被编译到服务器中,且完全免费,完全源代码开放。如果你需要创建一个每天有数百万人访问的web服务器,apache可能是最佳选择。
二,apache服务器的主要安全缺陷
正如我们前言所说尽管apache服务器应用最为广泛,设计上非常安全的程序。但是同其它应用程序一样,apache也存在安全缺陷。毕竟它是完全源代码,apache服务器的安全缺陷主要是使用http协议进行的拒绝服务攻击(denial of service)、缓冲区溢出攻击以及被攻击者获得 root权限三缺陷和最新的恶意的攻击者进行“拒绝服务”(dos)攻击。合理的网络配置能够保护apache服务器免遭多种攻击。我们来介绍一下主要的安全缺陷:
(1)使用http协议进行的拒绝服务攻击(denial of service)的安全缺陷
这种方法攻击者会通过某些手段使服务器拒绝对http应答。这样会使apache对系统资源(cpu时间和内存)需求的剧增,最终造成apache系统变慢甚至完全瘫痪。
(2)缓冲区溢出的安全缺陷
该方法攻击者利用程序编写的一些缺陷,使程序偏离正常的流程。程序使用静态分配的内存保存请求数据,攻击者就可以发送一个超长请求使缓冲区溢出。比如一些perl编写的处理用户请求的网关脚本。一旦缓冲区溢出,攻击者可以执行其恶意指令或者使系统宕机。
(3)被攻击者获得root权限的安全缺陷
该安全缺陷主要是因为apache服务器一般以root权限运行(父进程),攻击者会通过它获得root权限,进而控制整个apache系统。
(4)恶意的攻击者进行“拒绝服务”(dos)攻击的安全缺陷
这个最新在6月17日发现的漏洞,它主要是存在于apache的chunk encoding中,这是一个http协议定义的用于接受web用户所提交数据的功能。 利用黑客程序可以对于运行在freebsd 4.5, openbsd 3.0 / 3.1, netbsd 1.5.2平台上的 apache服务器均可进行有效的攻击.
所有说使用最高和最新安全版本对于加强apache web服务器的安全是至关重要的。请广大apache服务器管理员去http://www.apache.org/dist/httpd/下载补丁程序以确保其web服务器安全!
三, 正确维护和配置apache服务器
虽然apache服务器的开发者非常注重安全性,由于apache服务器其庞大的项目,难免会存在安全隐患。正确维护和配置apache web服务器就很重要了。我们应注意的一些问题:
(1)apache服务器配置文件
apache web服务器主要有三个配置文件,位于/usr/local/apache/conf目录下。这三个文件是:
httpd.con-----〉主配置文件
srm.conf------〉填加资源文件
access.conf---〉设置文件的访问权限
注:具体配置可以参考:http://httpd.apache.org/docs/mod/core.html
(2)apache服务器的日志文件
我们可以使用日志格式指令来控制日志文件的信息。使用logformat “%a %l“指令,可以把发出http请求浏览器的ip地址和主机名记录到日志文件。出于安全的考虑,在日志中我们应知道至少应该那些验证失败的web用户,在http.conf文件中加入logformat “%401u“指令可以实现这个目的。这个指令还有其它的许多参数,用户可以参考apache的文档。另外,apache的错误日志文件对于系统管理员来说也是非常重要的,错误日志文件中包括服务器的启动、停止以及cgi执行失败等信息。更多请参看apache日志系列1-5。
(3)apache服务器的目录安全认证
在apache server中是允许使用 .htaccess做目录安全保护的,欲读取这保护的目录需要先键入正确用户帐号与密码。这样可做为专门管理网页存放的目录或做为会员区等。
在保护的目录放置一个档案,档名为.htaccss
authname “会员专区“
authtype “basic“
authuserfile “/var/tmp/xxx.pw“ -----〉把password放在网站外
require valid-user
到apache/bin目录,建password档
% ./htpasswd -c /var/tmp/xxx.pw username1 -----〉第一次建档要用参数“-c“
% ./htpasswd /var/tmp/xxx.pw username2
这样就可以保护目录内的内容,进入要用合法的用户.
注:采用了apache内附的模组。也可以采用在httpd.conf中加入:
options indexes followsymlinks
allowoverride authconfig
order allow,deny
allow from all
(4)apache服务器访问控制
我们就要看三个配置文件中的第三个文件了,即access.conf文件,它包含一些指令控制允许什么用户访问apache目录。应该把deny from all设为初始化指令,再使用allow from指令打开访问权限。
order deny,allow
deny from all
allow from safechina.net
设置允许来自某个域、ip地址或者ip段的访问。
(5)apache服务器的密码保护问题
我们再使用.htaccess文件把某个目录的访问权限赋予某个用户。系统管理员需要在httpd.conf或者srm.conf文件中使用accessfilename指令打开目录的访问控制。如:
authname privatefiles
authtype basic
authuserfile /path/to/httpd/users
require phoenix
# htpasswd -c /path/to/httpd/users phoenix
四,设置apache服务器的web和文件服务器
我们在apache服务器上存放web服务器的文件,供用户访问,并设置/home/ftp/pub目录为文件存放区域,用http://download.your.com/pub/来访问。在防火墙上设置apache反向代理技术,由防火墙代理访问。
(1)apache服务器的设置
apache服务器采用默认配置。主目录为/home/httpd/html,主机域名为phoenix.your.com,且别名到www.your.com中, 并且设置srm.conf加一行别名定义如下:
alias /pub /home/ftp/pub/
更改默认应用程序类型定义如下:
defaulttype application/octet-stream
最后在/etc/httpd/conf/access.conf中增加一项定义
options indexes
allowoverride authconfig
order allow,deny
allow from all
注:options indexes允许在找不到index.html文件的情况下允许列出目录/文件列表。
allowoverride authconfig允许做基本的用户名和口令验证。这样的话,
需要在/home/ftp/pub目录下放入.htaccess,内容如下:
[root@shopu pub]# more .htaccess
authname branch office public software download area
authtype basic
authuserfile /etc/.usrpasswd
require valid-user
用# htpasswd -c /etc/.usrpasswd user1 分别创建不同的允许访问/pub下文件服务的外部用户名和口令。
(2)在防火墙上配置反向代理技术.
在/etc/httpd/conf/httpd.conf 中加入 namevirtualhost xxx.xxx.xxx.xxx
# xxx.xxx.xxx.xxx -----〉是防火墙外部在互联网上永久ip地址
servername www.your.com
errorlog /var/log/httpd/error_log
transferlog /var/log/httpd/access_log
rewriteengine on
proxyrequests off
usecanonicalname off
rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 apache服务器的ip地址。
servername http://download.your.com/pub/
errorlog /var/log/httpd/download/error_log
transferlog /var/log/httpd/download/access_log
rewriteengine on
proxyrequests off
usecanonicalname off
rewriterule ^/(.*)$ http://xxx.xxx.xx.x/$1 同上apache服务器的ip地址。
设置防火墙上的dns,让download.your.com和www.your.com都指向防火墙的外部网地址xxx.xxx.xxx.xxx。用 http://www.your.com访问主页,用http://download.your.com/pub/访问公共文件的下载区。
注:还需要在apache服务器主机上建立目录/var/log/httpd/download/,否则会出错。另外,也可以设置防火墙主机上的 /home/httpd/html/index.html的属性为750来阻止访问,这是防外部用户能访问到防火墙上的apache服务器的http: //www.your.com中。
总结:apache server是一个非常优秀,非常棒的服务器,只要你正确配置和维护好apache服务器,你就会感受到apache server 所带来的好处,同样希望你能够通过阅读本文达到理论和实践双丰收的目的。