如何用Apache配置安全虚拟主机
在局域网里,我想用Apache配一台虚拟主机,不知道如何做到防PHP木马,或其他盗号病毒,FTP就用Serv-U.形式就像空间商那样. 一、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、其它安全工具的使用。 先感谢楼上兄弟的回答,你已经说出大体要求,但可不可以更详细一点?比如做法.
我是在WindowsXP下配置的
转帖一个
简介:这里说的虚拟主机是指在一台机器上仅运行一个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]] 这个是Apache虚拟主机...我知道怎样配置,但仍然要感谢你的回复.
我的主要问题是如何防别人上传木马病毒...即使别人上传了木马病毒也使不了作用.
就像是在IDC里租空间那样,就算你上传木马病毒等也作用不了其他用户的空间. 用户权限控制,上传文件类型控制等!
windows下的话,杀毒软件是必须的,防火墙是必须的!呵呵! 虚拟主机没什么安全不安全,能做到访问就行,主要在PHP方面控制。
推荐不要用WINDOWS,因为APACHE在WIN下是以SYSTEM用户运行,如果PHP脚本有问题,会以系统用户的身份执行一些东西,后果不堪设想。。 如果别人上传的是带病毒的文件那该怎么办?
那么说,IDC空间商是怎样配置系统的呢.
回复 8# bodensky 的帖子
就算带毒,也无法运行,不会感染服务器的,这个可以安装杀毒软件,打开实时监控就可以了。与APACHE配置无关。 瑞星足够没?还有,如果别人上传的是PHP木马,那又如何防止呢? [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
回复 11# ronin 的帖子
这个没有想到,呵呵,以前只是改过httpd.conf,不好使。。。页:
[1]
