
在Linux服务器的web应用中,经常需要上传文件到服务器上。不管是php的也好,jsp的也好,如果web程序对于上传检查不严格,可导致黑客上传webshell,对服务器安全威胁自不用说了。对于web开发对文件上传的限制,这里就不说了,这里仅仅来讨论服务器如何设置才防止上传的webshell执行。
! n' D: w0 v. P! V * f- g7 F/ H+ L& n" F
记得以前写过一篇文章,针对Windows下web目录的设置,脚本可以执行的仅仅给web匿名账户读取文件的权限,用户可以上传的目录不给其执行权限。这样即使web程序有问题,就算上传了webshell也无法执行的。
5 `9 A) `2 A, D2 Y) N * `/ W7 _$ v! m* X' @3 k2 }
在Linux情况下,本来以为去除上传目录的执行权限后,就ok了的。通过chmod去除后,导致无法上传,比较郁闷。后来一想,在Windows下是通过IIS来限制对web目录的解析的,那apache应该也可以的吧。' p6 y! u' O( \
7 y; b! e; Y8 m; s! S0 W
查找了里的apache的帮助文档,终于让我找到了一种解决方法:/ d& l- @3 l' q
限制某一个目录针对php的解析方法之一,昨天在FreeBSD上测试可用。
% S7 o0 u* l" u5 O8 W 在httpd.conf配置文件中,搜索Directory节点,添加新的节点;+ ~, ^4 G p9 m
* b6 j2 G8 S# {0 h6 T1 c: c
AddType text/html .php" }. r/ G4 L5 n5 w9 j$ V. b
" v% D3 A ]& F- P6 K9 K: i2 t1 e 将php文件解析为html,浏览者看到的是自己的源码了,hoho。2 D+ r3 a7 A& e3 @# }8 u! y. I% ~
刚才又找到一种方法,关闭路径/www/home/upload的php解析:
+ _/ G9 ? P7 o6 `) J' ?/ S
3 e3 k1 M8 `' w- N2 S# C : E# C9 x% f* u" l
Order allow,deny# }6 C% O$ r$ c$ @, [' [
Deny from all3 S6 V& Q: d5 {) c! G
g- i/ i# W$ m3 Y& Z+ m/ X
/ }5 O1 o# [$ m; D8 z
限制针对php文件的解析,对于*.php.*这种文件,可以添加上即可。& U9 \$ U( A, p; T. e, J1 I
* I' \5 w: D, c8 Q
其实还有一种方法就是将图片文件上传到一个单独的文件夹,给一个二级的域名,这样不给这个虚拟站点解析权限。目前很多网站是采用的这种方式。
' |* y8 g2 J( J( U7 Y9 s 关闭虚拟主机的php解析:/ U$ u H- I' m; A4 q4 _* H
/ n j0 O* E8 C$ I+ b r
...! c+ C6 S; N' T
7 Y v4 c# X9 }5 p% [+ e8 [ Order allow,deny6 g0 R' h8 a5 Q- e6 m* h
Deny from all. V" e% D, T: A& f
|
|