|
|
[楼主] Jexus与网站、服务器的安全保护策略 Jexus与网站、服务器的安全保护策略 www.linuxdot.net原创 Jexus web server 会主动对访问者提交的请求数据进行安全检测,即“入侵检测”,当它发现用户具有“SQL注入”之类的恶意请求现象时就会自动终止向这个用户提供服务,并将它所发现的不安全访问情况写入日志以备进行更深入的处理。因此,从主动防卫而言,Jexus较之其它web服务器具有更强的安全保护能力。 但是,我们也不能掉以轻心,必须明白,网站和服务器的安全保护,仅靠Jexus单方面的努力是不够的。 一、默认配置下的安全保护要点 虽然Jexus能够主动防止很多外来的恶意访问,但是,Jexus及其对应网站中的ASP.NET程序(.aspx/.dll/.cs/.asmx等)在默认情况下是以root权限运行的,因而它们有能力对整过服务器的文件进行任意的操作。高权限是一把“双刀剑”,有利的一面是,我们因此可以利用服务器全部资源而写出功能极为强劲的ASP.NET网站程序,不利的一面是,如果这种强有力的权限一旦被人非法利用,那么这台服务器就没有安全性可言了。因此,当Jexus在默认配置的状态下工作时,我们强烈建议: 1、一定要对网站的ASP.NET程序(网页)的读写功能,进程操作功能进行限制和认真检查,一定要了解每个网站程序有些什么功能,可能会产生哪些不安全后果; 2、要严格禁止用户向网站上传ASP.NET程序或perl等脚本程序,比如.aspx、.dll、.cs、.pl、.sh等等; 3、既使允许上传其它的在ASP.NET网站上不可执行的文件,也要严格限制用户对文件扩展名进行修改的权力,绝不允许用户把上传的文件更名为aspx/dll/cs等等ASP.NET可执行文件; 4、如果asp.net程序必须具有让用户上传文件的功能,那么,接受文件时一定要对文件扩展名进行严格的限制,保存时给文件更名,然后把文件存放到网站文件夹之外,或者把文件数据放到数据库中去; 5、禁止用linux服务器向用户提供ASP.NET虚拟空间,或者说禁止任何安全性不可信任的文件出现在WEB服务器上。 6、同时,对Linux服务器的其它功能的安全性也要认真限制,比如FTP服务器、SSH服务器等等,努力提升服务器的整体安全性。 二、给Jexus加上“金钟罩”,精心打造高安全性网站服务器 要想让网站更加安全,最重要方法就是给Jexus加个“金钟罩”:让Jexus以非root身份运行。 但是,另一个问题出来了,在linux中,普通用户无法使用1024以前的端口,而WEB服务器的常用端口是80,刚刚在这个限制范围内! 由此可以看出,解决问题的核心就是一定要让Jexus的服务端口大于1024的同时,当访问者访问80端口时,其数据会自动转发到这个大于1024的端口上来。 让Jexus用大于1024的端口号运行并不难,只需在网站配置文件中改一下就行了,比如将 port=80 改成 port=8088 就行。 但是,我们怎么让用户访问80端口时,数据却自动传送到我们自定义的这个8088的端口呢?Linux已经为我们准备好了,iptables就有这个能力! 于是,我们找到了下面的方法: 步骤一:建立一个非root的普通用户 1、建立普通用户,比如:www-data useradd www-data -d /home/www -s /sbin/nologin (注:如果系统中已经有这个用户了,就不用再建) 2、按上面的指令内容,为这个用户建一个目标文件夹“/home/www”,再在/home/www中新建一个文件夹,名为“.wapi” 3、让“.wapi”文件夹的所有者为 www-data chown www-data:www-data /home/www/.wapi 步骤二:修改网站配置文件site.conf,将WEB服务器侦听端口改为大于1024的端口,比如8088。 vim site.conf 删除 port=80 添加 port=8088 步骤三:修改Jexus操作脚本“jws”文件中的启动代码,使Jexus以www-data之类的身份工作 vim /etc/jws/jws 找到下面这一句: start-stop-daemon --start --background --quiet -m --pidfile $pidPath --exec $monoPath -- $binPath -f $cfgPath 改为(其实就是添加一对参数:--chuid www-data): start-stop-daemon --start --background --quiet -m --chuid www-data --pidfile $pidPath --exec $monoPath -- $binPath -f $cfgPath (注:不要使用jws.start,jws.restart,jws.stop这几个脚本,只用jws就行了) 步骤四:利用iptables把80端口重定向到8088,命令如下(假设用户从“eth0”这个网卡进来访问): iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to-ports 8088 (注:为了你不需要每次启动服务器都得输入步骤四的这条命令,请将该命令写到/etc/rc.local文件中去。) 步骤五:让Jexus对日志文件和PID文件具有写入权。 Jexus运行时,会自动产生两类文件,一是按用户设置的路径和文件名产生的日志文件,二是进程ID文件(在/tmp中),Jexus必须对这些文件或文件夹拥有写入权,否则就无法启动。我们建议给Jexus设一个专用的JEXUS具有写入权的日志文件目录,把所有的日志都放在这里以便操作管理。 通过以上设置,网站中的ASP.NET程序就只具有www-data的权限了,这个权限非常小,既使“恶意访问者”有效突破了Jexus本身的检测防护关口而把恶意程序上传到网站中,也会因为没有相应权限而无法发挥其破坏作用。我们可以说,拥有“内外兼修”安全保护机制(即外围的权限设置和它本身的安全检测与防护能力)的Jexus,其安全强度是非常高的。 |
|