19

一、确保你安装的是最新的补丁
         如果门是敞开的话,在窗户上加锁就毫无意义。同样道理,如果你没有打补丁,继续下面的操作就没有什么必要。
二、隐藏Apache的版本号及其它敏感信息
         默认情况下,很多Apache安装时会显示版本号及操作系统版本,甚至会显示服务器上安装的是什么样的Apache模块。这些信息可以为黑客所用,并且黑客还可以从中得知你所配置的服务器上的很多设置都是默认状态。
         这里有两条语句,你需要添加到你的httpd.conf文件中:

    ServerSignature Off
    ServerTokens Prod

         ServerSignature出现在Apache所产生的像404页面、目录列表等页面的底部。ServerTokens目录被用来判断 Apache会在Server HTTP响应包的头部填充什么信息。如果把ServerTokens设为Prod,那么HTTP响应包头就会被设置成:

Server:Apache

         如果你非常想尝试其它事物,你可以通过编辑源代码改成不是Apache的其它东西,或者你可以通过下面将要介绍的mod_security实现。
三、确保Apache以其自身的用户账号和组运行
         有的Apache安装过程使得服务器以nobody的用户运行,所以,假定Apache和你的邮件服务器都是以nobody的账号运行的,那么通过Apache发起的攻击就可能同时攻击到邮件服务器,反之亦然。

    User apache
    Group apache

四、确保web根目录之外的文件没有提供服务
         我们不让Apache访问web根目录之外的任何文件。假设你的所以web站点文件都放在一个目录下(例如/web),你可以如下设置:

    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
    Order Allow,Deny
    Allow from all

         注意,因为我们设置Opitins None 和AllowOverride None,这将关闭服务器的所有Option和Override。你现在必须明确把每个目录设置成Option或者Override。
五、关闭目录浏览
      你可以在Directory标签内用Option命令来实现这个功能。设置Option为None或者-Indexes。
         Options -Indexes
六、关闭includes
      这也可以通过在Directory标签内使用Option命令来实现。设置Option为None或者-Includes。
         Options -Includes
七、关闭CGI执行程序
         如果你不用CGI,那么请把它关闭。在目录标签中把选项设置成None或-ExecCGI就可以:
         Options -ExecCGI
八、禁止Apache遵循符号链接
         同上,把选项设置成None或-FollowSymLinks:
         Options -FollowSymLinks
九、关闭多重选项
         如果想关闭所有选项,很简单:
         Options None
         如果只想关系一些独立的选项,则通过将Options做如下设置可实现:
         Options -ExecCGI -FollowSymLinks -Indexes
十、关闭对.htaccess文件的支持
         在一个目录标签中实现:
         AllowOverride None
         如果需要重载,则保证这些文件不能够被下载,或者把文件名改成非.htaccess文件。比如,我们可以改成.httpdoverride文件,然后像下面这样阻止所有以.ht打头的文件:

    AccessFileName .httpdoverride
    Order allow,deny
    Deny from all
    Satisfy All

十一、运行mod_security
         Run mod_security是O’Reilly出版社出版的Apache Security一书的作者,Ivan Ristic所写的一个非常好用的一个Apache模块。可以用它实现以下功能:
         ·简单过滤
         ·基于过滤的常规表达式
         ·URL编码验证
         ·Unicode编码验证
         ·审计
         ·空字节攻击防止
         ·上载存储限制
         ·服务器身份隐藏
         ·内置的Chroot支持
         ·更多其它功能

十二、关闭任何不必要的模块
         Apache通常会安装几个模块,浏览Apache的module documentation,了解已安装的各个模块是做什么用的。很多情况下,你会发现并不需要激活那些模块。
         找到httpd.conf中包含LoadModule的代码。要关闭这些模块,只需要在代码行前添加一个#号。要找到正在运行的模块,可以用以下语句:

grep LoadModule httpd.conf

         以下模块通常被激活而并无大用:mod_imap,mod_include,mod_info,mod_userdir,mod_status,mod_cgi,mod_autoindex。

         网络上学习了解收集到的~当作收藏,这东西实用性因人而异,嗯。

written by Yousri \\ tags:

12

        很多多论坛网站,都具备有上传附件的的功能,一般都会开放rar附件上传,并可能会保留原来文件名称,这从而可能导致一个很严重的问题,test.php.rar文件可能会被Apache当作php文件来执行,造成一定程度的安全隐患。
        如何测试? 当你将某个php程序文件后缀名修改成 test.php.rar,这时测试一下,还是按照PHP文件解析执行,Apache并不会认为这是一个rar文件,这是为什么呢?
        其实,因为每遇到一种后双重后缀名(如test.php.rar)的文件,Apache都会去conf/mime.types文件中检查最后一个后缀,如果最后一个后缀并没有在mime.types文件中定义,则使用前一个后缀来解释,因为在默认情况下,rar并未在mime.types中定义,故 Apache会使用php后缀来解释文件,这就是漏洞的原因所在吧。
        由此可知,如果使用test.jsp.aaa.rar则会很可能认为是jsp文件,如果修改成test.shtml.rar,则会识别成shtml文件。
        如果没有相应修改设置,不知道有多少网站可能存在这个问题? 如何杜绝这个隐患 ?
        修改Apache相应的配置文件httpd.conf文件内容:

    AddType application/rar .rar
    AddType application/x-compressed .rar
    AddType application/x-rar .rar
    AddType application/x-rar-compressed .rar
    AddType application/x-rar-compressed; application/x-compressed .rar
    AddType compressed/rar; application/x-rar-compressed .rar

        然后重新启动Apache服务
        针对Web管理员及Web程序开发者,如何更安全
        1.只允许上传指定后缀名的文件,当然,要禁止掉rar格式文件上传。(但这条往往行不通,一般的网站都需要上传rar文件)
        2.对上传后的文件名进行强制重命名,强制使用最后一个扩展名,如原始文件名为test.php.rar,上传后强制重命名为20090412.rar即可避免这个隐患
        ps:早期版本的phpcms、discuz等貌似存在这个漏洞

written by Yousri \\ tags: ,

26

        介绍推荐两款命令系统工具:硬件配置信息查看工具lshw及查看打开的文件和套接字工具lsof
        lshw硬件查看工具,它全称叫:HardWare LiSter,实现的原理应该可以说是获取使用/proc里面读取到的数据来显示相关的信息
        下载地址:http://ezix.org/software/files/lshw-B.02.14.tar.gz
        解压安装:tar -zxvf lshw-B.02.14.tar.gz && make && make install 即可
        可以先了解查看解压后目录下的README文件信息:

    1 lshw: HardWare LiSter for Linux
    2 ===============================
    4 lshw is a small tool to provide detailed information on the hardware confi-
    5 guration of the machine. It can report exact memory configuration, firmware
    6 version, mainboard configuration, CPU version and speed, cache configuration,
    7 bus speed, etc. on DMI-capable x86 or EFI (IA-64) systems and on some PowerPC
    8 machines (PowerMac G4 is known to work).
    10 Information can be output in plain text, XML or HTML.
    12 It currently supports DMI (x86 and EFI only), OpenFirmware device tree
    13 (PowerPC only), PCI/AGP, ISA PnP (x86), CPUID (x86), IDE/ATA/ATAPI, PCMCIA
    14 (only tested on x86), USB and SCSI.
    16  * Requirements
    17     . Linux 2.4.x or 2.6.x (2.2.x might work, though)
    18     . a PA-RISC, Alpha, IA-64 (Itanium), PowerPC or x86 based machine
    19     . an ANSI (or close enough to ANSI compliance) C++ compiler
    20     (tested with g++ 2.95.4 and 3.2.2)
    21     . for the (optional) GTK+ graphical user interface, you will need a
    22     complete GTK+ 2.4 development environment (gtk2-devel on RedHat/Fedora
    23     derivatives)
    25  * To compile it, just use:
    27     $ make
    29  * If you want to build the optional GUI, do:
    31     $ make
    32     $ make gui
    34  * the lshw home page is http://lshw.org/
    35  * send bug reports, requests for help, feature requests, comments, etc. to
    36    bugs@ezix.org.  The author can be contacted directly (lyonel@ezix.org)
    37    Please make sure you include enough information in your bug report:
    XML  38    output from lshw is preferred over text or HTML, indicate the affected
    39    version of lshw, your platform (i386, x86-64, PA-RISC, PowerPC, etc.) and 40
    your distribution.
    and so on。。。

        可以使用html格式输出这些信息 通过web浏览查看 如:

    #lshw -html >/var/www/pcinfo.html

        然后网页 http://yourdomain/pcinfo.html 查看
        还有更多的相关lshw参数可以使用 也支持图形界面的查看,详见

    #lshw –X    //图形界面
    #man lshw   // 查看lshw工具更多参数用法

        lsof轻松查看正在运行的进程可打开哪些文、目录及套接字等信息,了解应用程序打开了哪些文件或者哪个应用程序打开了特定的文件,进而了解更多关于系统的信息。
        快速查出哪个进程在使用某个特定目录(如:/root/install) ,此有助于umount(卸载)或rm(删除)某些文件系统或目录前进行确认,可尝试使用lsof工具:

    [root@yanqx ~]# lsof /root/install/
    COMMAND   PID USER   FD   TYPE DEVICE SIZE      NODE NAME
    bash    18041 root  cwd    DIR   0,29 4096 188088470 /root/install/

        可见得,显然是root进入到了/root/install目录中。。。。
        同样,lsof也可列举出与特地进程相关联到的文件、目录、库等等信息,如要显示与指定PI进程相关联的文件可使用-p选项:

    [root@yanqx ~]# lsof -p 9554
    COMMAND  PID USER   FD   TYPE   DEVICE    SIZE      NODE NAME
    sshd    9554 root  cwd    DIR     0,29    4096 187957388 /
    sshd    9554 root  rtd    DIR     0,29    4096 187957388 /
    sshd    9554 root  txt    REG     0,29  409560 187988270 /usr/sbin/sshd
    sshd    9554 root  mem    REG     0,29  132304 187973604 /lib64/ld-2.5.so
    sshd    9554 root  mem    REG     0,29   44472 187973606 /lib64/libpam.so.0.81.5
    sshd    9554 root  mem    REG     0,29   20424 187973386 /lib64/libdl-2.5.so
    sshd    9554 root  mem    REG     0,29 1750504 190255826 /usr/local/ssl/lib/libcrypto.so.0.9.8
    sshd    9554 root  mem    REG     0,29   15280 187973406 /lib64/libutil-2.5.so
    sshd    9554 root  mem    REG     0,29   83344 187959026 /usr/lib64/libz.so.1.2.3
    sshd    9554 root  mem    REG     0,29  111480 187973548 /lib64/libnsl-2.5.so
    sshd    9554 root  mem    REG     0,29   45728 187973602 /lib64/libcrypt-2.5.so
    sshd    9554 root  mem    REG     0,29   89800 187972006 /lib64/libresolv-2.5.so
    sshd    9554 root  mem    REG     0,29 1698672 187973486 /lib64/libc-2.5.so
    sshd    9554 root  mem    REG     0,29   84400 187973582 /lib64/libaudit.so.0.0.0
    sshd    9554 root  mem    REG     0,29   53880 187973574 /lib64/libnss_files-2.5.so
    sshd    9554 root    0u   CHR      1,3          12392555 /dev/null
    sshd    9554 root    1u   CHR      1,3          12392555 /dev/null
    sshd    9554 root    2u   CHR      1,3          12392555 /dev/null
    sshd    9554 root    3u  IPv6 12393000               TCP *:ssh (LISTEN)
    sshd    9554 root    4u  IPv4 12393002               TCP *:ssh (LISTEN)

        或也可以通过使用-c参数选项,来通过进程名称来指定的进程查看:

    [root@yanqx ~]# lsof -c init
    COMMAND PID USER   FD   TYPE DEVICE    SIZE      NODE NAME
    init      1 root  cwd    DIR   0,29    4096 187957388 /
    init      1 root  rtd    DIR   0,29    4096 187957388 /
    init      1 root  txt    REG   0,29   40968 187988546 /sbin/init
    init      1 root  mem    REG   0,29          96280139 /sbin/init (path inode=187988546)
    init      1 root  mem    REG   0,29  132304 187973604 /lib64/ld-2.5.so
    init      1 root  mem    REG   0,29  245264 187973608 /lib64/libsepol.so.1
    init      1 root  mem    REG   0,29   92960 187973474 /lib64/libselinux.so.1
    init      1 root  mem    REG   0,29 1698672 187973486 /lib64/libc-2.5.so
    init      1 root  mem    REG   0,29   20424 187973386 /lib64/libdl-2.5.so
    init      1 root   10u  FIFO   0,48          12392766 /dev/initctl

        关于lsof这工具还可以通过相当多的不同参数进行实现不同功能 这里就不一一列举。。可自己查看工具命令帮助文档了解 嗯
        对此两工具就简单介绍分享推荐到此////

written by Yousri \\ tags: ,