LINUX DOTNET      Linux DotNET 中文社区

Linux .NET编程与应用技术之专业网站:www.linuxdot.net !     返回首页    
   
[楼主] 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,其安全强度是非常高的。

作者:linuxdotnet   发布时间:09年02月04日   可选操作:删除 回复

 
   
   

留言回复:
标题: * 标题必填
作者:   * 请填上你的名字  
操作键:   * 填入几个字母表示是您写的,便于进一步操作
发言内容:
 
发贴者须知:
1、您无需注册即可发贴,但是,贴子内容必须在法律法规和社会公德所允许的范围内;
2、本站专注IT技术,谢绝包括政治、社会、情感等任何与IT技术无关的贴子在本站发表;
3、本站保留对任何贴子进行删除、禁用、更改、举报、追究等所有权利;
 
今天是: 周一  周七  周二  周三  周四  周五  周六