PHP China | 中国开源之路 's Archiver

bodensky 发表于 2008-11-18 18:49

如何用Apache配置安全虚拟主机

在局域网里,我想用Apache配一台虚拟主机,不知道如何做到防PHP木马,或其他盗号病毒,FTP就用Serv-U.
形式就像空间商那样.

gr58046576 发表于 2008-11-18 18:56

一、APACHE服务面临的安全问题
   1、HTTP拒绝服务攻击:
      1)、数据包洪水攻击。通常由ICMP或UDP包来实现,黑客欺骗目标服务器,让其相信受到来自自身攻击
      2)、磁盘攻击。伪造用户请求利用写命令攻击目标计算机硬盘。
      3)、路由不可达攻击。先攻击目标机器,在修改路由器中的路由表。
      4)、分布式拒绝服务攻击(DDOS)。如SSL蠕虫。
   2、缓冲区溢出。
   3、攻击者获得ROOT权限。

二、配置一个安全的APACHE服务器
   1、勤打补丁。
   2、隐藏和伪装APACHE的版本。
      本机可以通过httpd -v来查看版本信息。
      也可以通过:telnet WEB服务器的IP  80  ,get 来获取WEB信息。
      WWW服务器应答报文的分析:如WSockExpert。
      利用文件名的差异性来判断,UNIX文件名区分大小写,windows文件名区分大小写。
      除Apache版本号的方法是修改配置文件/etc/httpd.conf,将     其   设   定为:
ServerSignature Off
ServerTokens Prod   
     重新编译安装程序,以替换里面的提示内容。
以Apache 2.0.50为例,编辑ap_release.h文件,修改“#define AP_SERVER_BASEPRODUCT \"Apache\"”为“#define AP_SERVER_BASEPRODUCT \"Microsoft-IIS/5.0\"”。编辑os/unix/os.h文件,修改“#define PLATFORM \"Unix\"”为“#define PLATFORM \"Win32\"”。修改完毕后,重新编译、安装Apache。
Apache安装完成后,修改httpd.conf配置文件,将“ServerTokens Full”改为“ServerTokens Prod”;将“ServerSignature On”改为“ServerSignature Off”,然后存盘退出。

3、LINUX的目录结构与安全
   serverROOT:配置文件、二进制文件与其它服务器配置文件,只能由root用户访问。
   documentroot:WEB站点的内容。WEB管理者和APACHE用户访问。
   scripalias:保存CGI脚本。只能被CGI开发人员和APACHE用户访问。
   customlog与errorlog:保存访问日志和错误日志。只有root可以访问。
4、APACHE服务器密码保护.htpasswd文件。
   vi .htaccess
   authtype basic
   authuserfile  /usr/home/***/htdocs/.abcname1
   authuserfile  /usr/home/***/htdocs/.abcname2
   authgroup  /usr/home/***/htdocs/.htgroup
   authname  information
   
   require  valid-user
   

   htpassword  -c /usr/home/***/htdocs/.abcname2 wang
   htpassword  -c /usr/home/***/htdocs/.abcname2 zhang
   vi .htgroup
   chen: a1 a2 a3
   li:   b1 b2 b3

   
   order  allow,deny
   deny from all
   

   order allow,deny
   allow from all
   deny from 111.222
   
5、在“监牢”中运行APACHE。
6、APACHE防范DOS攻击。
   其防范软件主要为apache dos evasive maneuvers module来实现,替代了mod_access.
   自动统计TCP连接的数量:
   netstat -an  | grep -i "服务器IP:80" |awk '{print $6}' | sort | uniq -c | sort -n
   echo 1 > /proc/sys/net/ipv4/tcp_syncookies
   echo "1" > /proc/sys/net/ipv4/tcp_syn_retries
   echo "1" >/proc/sys/net/ipv4/tcp_synack_retries
   增大syn_backlog数量:
   ech0 "2048" >/proc/sys/net/ipv4/tcp_max_syn_backlog

7、减少CGI和SSL风险。
8、APACHE的日志管理。
9、使用MYSQL对APACHE进行认证。
10、使用LDAP对APACHE进行认证。
11、其它安全工具的使用。

bodensky 发表于 2008-11-18 18:57

先感谢楼上兄弟的回答,你已经说出大体要求,但可不可以更详细一点?比如做法.
我是在WindowsXP下配置的

LeoPHP 发表于 2008-11-18 20:03

转帖一个

简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序
支持多个Apache服务器,如在公司财务部门有一台web服务器,名为
account.yourdomain.com,同时又想为sales部门建立网站,网站内容也
放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机
设置。

设置Apache虚拟主机通常有两种方案

[b]一、基于IP的虚拟主机[/b]

   这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
网卡上绑定多个IP地址去服务多个虚拟主机。
  若该机器的IP地址为192.168.11.2(account.yourdomain.com),首先
你要设置IP别名(假设用192.168.11.4作为其别名IP)。加下面的行到
/etc/rc.d/rc.local,确保每次启动后自动运行。

#/sbin/ifconfig eth0:0 192.168.11.4 netmask 255.255.255.0 broadcast 192.168.11.255 up
#/sbin/route add -host 192.168.11.4 eth0:0

然后你需要设置/etd/httpd/conf/httpd.conf文件:
[code]
<VirtualHost 192.168.11.4>*
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/sales.yourdomain.com
ServerName sales.yourdomain.com
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
</VirtualHost>
[/code]
然后分别创建目录
/home/httpd/sales.yourdomain.com,
/var/log/httpd/sales.yourdomain.com
,放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.11.4 。

注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
方案。


[b]二、基于名字的虚拟主机:
[/b]
   它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的
浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件
/etc/httpd/conf/httpd.conf
[code]
NameVirtualHost 192.168.11.2

<VirtualHost 192.168.11.2>
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/sales.yourdomain.com
ServerName sales.yourdomain.com
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
</VirtualHost>

<VirtualHost 192.168.11.2>
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/hr.yourdomain.com
ServerName hr.yourdomain.com
ErrorLog /var/log/httpd/hr.yourdomain.com/error_log
TransferLog /var/log/hr.yourdomain.com/access_log
</VirtualHost>
[/code]
注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,
为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS
都指向IP地址192.168.11.2

上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能
没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案,
若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。

一般DDNS下是用第种的
配置成功过很多

[[i] 本帖最后由 LeoPHP 于 2008-11-18 20:06 编辑 [/i]]

bodensky 发表于 2008-11-18 21:53

这个是Apache虚拟主机...我知道怎样配置,但仍然要感谢你的回复.
我的主要问题是如何防别人上传木马病毒...即使别人上传了木马病毒也使不了作用.
就像是在IDC里租空间那样,就算你上传木马病毒等也作用不了其他用户的空间.

半个书生 发表于 2008-11-19 19:58

用户权限控制,上传文件类型控制等!
windows下的话,杀毒软件是必须的,防火墙是必须的!呵呵!

飞翔de希望 发表于 2008-11-20 09:23

虚拟主机没什么安全不安全,能做到访问就行,主要在PHP方面控制。

推荐不要用WINDOWS,因为APACHE在WIN下是以SYSTEM用户运行,如果PHP脚本有问题,会以系统用户的身份执行一些东西,后果不堪设想。。

bodensky 发表于 2008-11-20 12:07

如果别人上传的是带病毒的文件那该怎么办?
那么说,IDC空间商是怎样配置系统的呢.

飞翔de希望 发表于 2008-11-20 16:50

回复 8# bodensky 的帖子

就算带毒,也无法运行,不会感染服务器的,这个可以安装杀毒软件,打开实时监控就可以了。与APACHE配置无关。

bodensky 发表于 2008-11-20 17:26

瑞星足够没?
还有,如果别人上传的是PHP木马,那又如何防止呢?

ronin 发表于 2008-11-20 17:37

[quote]原帖由 [i]飞翔de希望[/i] 于 2008-11-20 09:23 发表 [url=http://bbs.phpchina.com/redirect.php?goto=findpost&pid=734265&ptid=91760][img]http://bbs.phpchina.com/images/common/back.gif[/img][/url]
虚拟主机没什么安全不安全,能做到访问就行,主要在PHP方面控制。

推荐不要用WINDOWS,因为APACHE在WIN下是以SYSTEM用户运行,如果PHP脚本有问题,会以系统用户的身份执行一些东西,后果不堪设想。。 [/quote]

APACHE可以使用guest启动,服务那里设置
#========== 服 务 器 安 全 设 置  ==========
#尽量不使用CGI:一直是Apache安全问题最多的地方
#LoadModule cgi_module libexec/mod_cgi.so
#LoadModule asis_module libexec/mod_asis.so
#LoadModule action_module libexec/mod_actions.so
#server side include已经过时了
#LoadModule includes_module libexec/mod_include.so
#不需要将没有缺省index文件的目录下所有文件列出
#LoadModule autoindex_module libexec/mod_autoindex.so

#关闭服务器版本显示
ServerSignature Off      
ServerTokens ProductOnly

最重要的是PHP站点之间的隔离
       php_admin_value open_basedir "d:/www/domain/;c:/windows/temp/"
       php_admin_value safe_mode On

飞翔de希望 发表于 2008-11-21 11:48

回复 11# ronin 的帖子

这个没有想到,呵呵,以前只是改过httpd.conf,不好使。。。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.