Category: 系统知识

2008-11-21

Linux 安全设置手册

归类于: 系统知识 - 21 Nov 2008

本文讲述了如何通过基本的安全措施,使你的Linux系统变得可靠。

1、Bios Security

一定要给Bios设置密码,以防通过在Bios中改变启动顺序,而可以从软盘启动。这样可以阻止别人
试图用特殊的启动盘启动你的系统,还可以阻止别人进入Bios改动其中的设置(比如允许通过软盘
启动等)。

2、LILO Security
在\”/etc/lilo.conf\”文件中加入下面三个参数:time-out,restricted,password。这三个参数可以
使你的系统在启动lilo时就要求密码验证。

第一步:

编辑lilo.conf文件(vi /etc/lilo.comf),假如或改变这三个参数:
boot=/dev/hda 
map=/boot/map 
install=/boot/boot.b 
time-out=00   #把这行该为00
prompt 
Default=linux 
restricted   #加入这行
password=   #加入这行并设置自己的密码
image=/boot/vmlinuz-2.2.14-12 
label=linux 
initrd=/boot/initrd-2.2.14-12.img 
root=/dev/hda6 
read-only 

第二步:

因为\”/etc/lilo.conf\”文件中包含明文密码,所以要把它设置为root权限读取。
[root@kapil /]# chmod 600 /etc/lilo.conf 

第三步:

更新系统,以便对\”/etc/lilo.conf\”文件做的修改起作用。
[Root@kapil /]# /sbin/lilo -v

第四步:

使用\”chattr\”命令使\”/etc/lilo.conf\”文件变为不可改变。
[root@kapil /]# chattr +i /etc/lilo.conf 
这样可以防止对\”/etc/lilo.conf\”任何改变(以外或其他原因)

3、删除所有的特殊账户

你应该删除所有不用的缺省用户和组账户(比如lp, sync, shutdown, halt, news, 
uucp, operator, games, gopher等)。
删除用户:
[root@kapil /]# userdel LP 
删除组:
[root@kapil /]# groupdel LP 

4、选择正确的密码

在选择正确密码之前还应作以下修改:
修改密码长度:在你安装linux时默认的密码长度是5个字节。但这并不够,要把它设为8。修改最
短密码长度需要编辑login.defs文件(vi /etc/login.defs),把下面这行
PASS_MIN_LEN    5 
改为
PASS_MIN_LEN    8
login.defs文件是login程序的配置文件。

5、打开密码的shadow支持功能:
你应该打开密码的shadow功能,来对password加密。使用\”/usr/sbin/authconfig\”工具打开shadow功
能。如果你想把已有的密码和组转变为shadow格式,可以分别使用\”pwcov,grpconv\”命令。

6、root账户
在unix系统中root账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销root账户,系统
会自动注销。通过修改账户中\”TMOUT\”参数,可以实现此功能。TMOUT按秒计算。编辑你的profile文件(vi /etc/profile),在\”HISTFILESIZE=\”后面加入下面这行:
TMOUT=3600
3600,表示60*60=3600秒,也就是1小时。这样,如果系统中登陆的用户在一个小时内都没有动作,那
么系统会自动注销这个账户。你可以在个别用户的\”.bashrc\”文件中添加该值,以便系统对该用户实行
特殊的自动注销时间。 改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能。

7、取消普通用户的控制台访问权限
你应该取消普通用户的控制台访问权限,比如shutdown、reboot、halt等命令。
[root@kapil /]# rm -f /etc/security/console.apps/ 
是你要注销的程序名。

8、取消并反安装所有不用的服务

取消并反安装所有不用的服务,这样你的担心就会少很多。察看\”/etc/inetd.conf\”文件,通过注释取
消所有你不需要的服务(在该服务项目之前加一个\”#\”)。然后用\”sighup\”命令升级\”inetd.conf\”文件。

第一步:

更改\”/etc/inetd.conf\”权限为600,只允许root来读写该文件。
[Root@kapil /]# chmod 600 /etc/inetd.conf

第二步:

确定\”/etc/inetd.conf\”文件所有者为root。

第三步:

编辑 /etc/inetd.conf文件(vi /etc/inetd.conf),取消下列服务(你不需要的):ftp, telnet,  shell, login, exec, talk, ntalk, imap, pop-2, pop-3, finger, auth等等。把不需要的服务关闭可以使系统的危险性降低很多。

第四步:

给inetd进程发送一个HUP信号:

[root@kapil /]# killall -HUP inetd 

第五步:

用chattr命令把/ec/inetd.conf文件设为不可修改,这样就没人可以修改它:

[root@kapil /]# chattr +i /etc/inetd.conf 

这样可以防止对inetd.conf的任何修改(以外或其他原因)。唯一可以取消这个属性的人只有root。如果要修改inetd.conf文件,首先要是取消不可修改性质:

[root@kapil /]# chattr -i /etc/inetd.conf

别忘了该后再把它的性质改为不可修改的。

9、TCP_WRAPPERS

使用TCP_WRAPPERS可以使你的系统安全面对外部入侵。最好的策略就是阻止所有的主机(在\”/etc/hosts.deny\” 文件中加入 \”ALL: ALL@ALL, PARANOID\” ),然后再在\”/etc/hosts.allow\” 文件中加入所有允许访问的主机列表。
第一步:
编辑hosts.deny文件(vi /etc/hosts.deny),加入下面这行
# Deny access to everyone. 
ALL: ALL@ALL, PARANOID
这表明除非该地址包好在允许访问的主机列表中,否则阻塞所有的服务和地址。
第二步:
编辑hosts.allow文件(vi /etc/hosts.allow),加入允许访问的主机列表,比如:
ftp: 202.54.15.99 foo.com
202.54.15.99和 foo.com是允许访问ftp服务的ip地址和主机名称。
第三步:
tcpdchk程序是tepd wrapper设置检查程序。它用来检查你的tcp  wrapper设置,并报告发现的潜在的和真实的问题。设置完后,运行下面这个命令:
[Root@kapil /]# tcpdchk 

10、禁止系统信息暴露
当有人远程登陆时,禁止显示系统欢迎信息。你可以通过修改\”/etc/inetd.conf\”文件来达到这个目的。
把/etc/inetd.conf文件下面这行:
telnet  stream  tcp     nowait root    /usr/sbin/tcpd  in.telnetd
修改为:
telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd -h
在最后加\”-h\”可以使当有人登陆时只显示一个login:提示,而不显示系统欢迎信息。

11、修改\”/etc/host.conf\”文件
\”/etc/host.conf\”说明了如何解析地址。编辑\”/etc/host.conf\”文件(vi /etc/host.conf),加入下面这行:
# Lookup names via DNS first then fall back to /etc/hosts. 
order bind,hosts 
# We have machines with multiple IP addresses. 
multi on 
# Check for IP address spoofing. 
nospoof on 
第一项设置首先通过DNS解析IP地址,然后通过hosts文件解析。第二项设置检测是否\”/etc/hosts\”文件中的主机是否拥有多个IP地址(比如有多个以太口网卡)。第三项设置说明要注意对本机未经许可的电子欺骗。

12、使\”/etc/services\”文件免疫
使\”/etc/services\”文件免疫,防止未经许可的删除或添加服务:
[root@kapil /]# chattr +i /etc/services

13、不允许从不同的控制台进行root登陆
\”/etc/securetty\”文件允许你定义root用户可以从那个TTY设备登陆。你可以编辑\”/etc/securetty\”文件,再不需要登陆的TTY设备前添加\”#\”标志,来禁止从该TTY设备进行root登陆。

14、禁止任何人通过su命令改变为root用户
su(Substitute User替代用户)命令允许你成为系统中其他已存在的用户。如果你不希望任何人通过su命令改变为root用户或对某些用户限制使用su命令,你可以在su配置文件(在\”/etc/pam.d/\”目录下)的开头添加下面两行:
编辑su文件(vi /etc/pam.d/su),在开头添加下面两行:
auth sufficient /lib/security/pam_rootok.so debug 
auth required /lib/security/Pam_wheel.so group=wheel 
这表明只有\”wheel\”组的成员可以使用su命令成为root用户。你可以把用户添加到\”wheel\”组,以使它可以使用su命令成为root用户。

15、Shell logging
Bash shell在\”~/.bash_history\”(\”~/\”表示用户目录)文件中保存了500条使用过的命令,这样可以使你输入使用过的长命令变得容易。每个在系统中拥有账号的用户在他的目录下都有一个\”.bash_history\”文件。bash shell应该保存少量的命令,并且在每次用户注销时都把这些历史命令删除。
第一步:
\”/etc/profile\”文件中的\”HISTFILESIZE\”和\”HISTSIZE\”行确定所有用户的\”.bash_history\”文件中可以保存的旧命令条数。强烈建议把把\”/etc/profile\”文件中的\”HISTFILESIZE\”和\”HISTSIZE\”行的值设为一个较小的数,比如 30。编辑profile文件(vi /etc/profile),把下面这行改为:
HISTFILESIZE=30 
HISTSIZE=30 
这表示每个用户的\”.bash_history\”文件只可以保存30条旧命令。
第二步:
网管还应该在\”/etc/skel/.bash_logout\” 文件中添加下面这行\”rm -f  $HOME/.bash_history\” 。这样,当用户每次注销时,\”.bash_history\”文件都会被删除。
编辑.bash_logout文件(vi /etc/skel/.bash_logout) ,添加下面这行:
rm -f $HOME/.bash_history

16、禁止Control-Alt-Delete 键盘关闭命令
在\”/etc/inittab\” 文件中注释掉下面这行(使用#):
ca::ctrlaltdel:/sbin/shutdown -t3 -r now 
改为:
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now 
为了使这项改动起作用,输入下面这个命令:
[root@kapil /]# /sbin/init q

17、给\”/etc/rc.d/init.d\” 下script文件设置权限
给执行或关闭启动时执行的程序的script文件设置权限。
[root@kapil/]# chmod -R 700 /etc/rc.d/init.d/* 
这表示只有root才允许读、写、执行该目录下的script文件。

18、隐藏系统信息
在缺省情况下,当你登陆到linux系统,它会告诉你该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
第二步:
删除\”/etc\”目录下的\”isue.net\”和\”issue\”文件:
[root@kapil /]# rm -f /etc/issue 
[root@kapil /]# rm -f /etc/issue.net 

19、禁止不使用的SUID/SGID程序
如果一个程序被设置成了SUID root,那么普通用户就可以以root身份来运行这个程序。网管应尽可能的少使用SUID/SGID 程序,禁止所有不必要的SUID/SGID程序。
查找root-owned程序中使用\’s\’位的程序:
[root@kapil]# find / -type f \\( -perm -04000 -o -perm -02000 \\) \\-exec ls -lg {} \\; 
用下面命令禁止选中的带有\’s\’位的程序:
[root@kapil /]# chmod a-s [program]

根据上面这些安全指导方针设置后,系统管理员就会拥有一个基本安全的系统。上面这些工作有些是个持续的过程,网管要不断进行这些工作,以保持系统的安全性。 

本文转自LinuxSir

SUN系统的基本安全配置

归类于: 系统知识 - 21 Nov 2008

一个SUN系统就象和NT系统一样,容易受到来自internet的各种可恶的攻击。幸运的是,不象NT,你可以用以下三个简单的手段把SUN变的相对安全些,它们是:

1)防止堆栈溢出
2)关闭不用的服务
3)给系统打补丁

#1 防止堆栈溢出

至少90%以上的安全问题都是来自所谓的“堆栈溢出”。攻击者通过给一个以root身份运行的程序提供比它所预期的输入多得多的东西,使被攻击程序无法处理而改变执行流程去执行攻击者指定的代码。

Solaris 2.6和Solaris 7都具备把用户堆栈设成不可执行的能力,以使这种攻击不能得逞。要使能这个特点:

0)变成root
1)对/etc/system文件做个拷贝

cp /etc/system /etc/system.BACKUP

2)用你最钟爱的编辑器编辑/etc/system文件
3)到文件的最后,插入以下几行:

set noexec_user_stack=1
set noexec_user_stack_log=1

4)保存文件,退出编辑器

一旦重启机器,这些改变就会生效。如果这不是一个你可以关闭的系统,那么你用adb来改变一个运行中的系统的参数也是可能的,但这不是我个人乐意去干的事。

当然会有些合法使用可执行堆栈的程序在你做出如上改变后而不能正常运行。所幸的是这样的程序的并不多,我所知的就只有GNU ada 编译器。

#2 在inetd.conf中关闭用不着的服务

有许多用不着的服务自动的处于使能状态。它们中可能存在的漏洞将使攻击者甚至不需要一个账户就能控制你的机器。关闭这些不需要的服务来保护你的系统,你可以用如下方法来关闭:

0)变成root
1)对inetd的配置文件/etc/inetd.conf做个拷贝

cp /etc/inetd.conf /etc/inetd.conf.BACKUP

2)编辑/etc/inetd.conf文件
未被激活的服务是在前面被“#“符号注释掉的,举个例子,你的部份inetd.conf可能是这样的:

# Tnamed serves the …

sun OBP命令总结(精简)

归类于: 系统知识 - 21 Nov 2008

参考:OpenBoot3.x命令参考
说明:有部分实在无法用中文表达得或者说没有必要用中文表达的,保留使用了英文。里边有些是个人对OpenBoot3.x的理解,可能存在错误。
期望指正,QQ:33033777,MSN:wa0362@126.com

OpenBootPROM的介绍

简称OBP,可以理解为普通pc的BIOS的增强版,它是控制sun服务器的引导过程、初始化配置某些硬件和提供了某些诊断的工具。其配置保存在主板的prom固件中,配置的方式是通过在OBP命令行下进行配置。

我们可以通过它来:
调整启动设备和启动参数,如从光盘引导。
检测硬件故障
完成某些必须在操作系统启动之前完成的配置,如某些硬件设备的配置。
等等功能。

显然x86系统不会有OBP

1.Overview

用户界面

可以通过下面的方式进入OBP界面
• halt你的系统,init 1,等等
• 使用组合键 Stop-A
• 没有设定auto-boot?为ture的话每次开机自动进入
• 系统硬件检测到错误,并且不能跳过的话会进入OBP界面
(This is known as a Watchdog Reset.)

设备树
跟solaris操作系统的设备的物理命名方式相同。

设备别名
设备名通常是类似下面的格式
/sbus@1f,0/esp@0,40000/sd@3,0:a
在我们的使用中很不方便,使用设备别名却是我们的操作相当的方便

devalias
显示当前的别名设置
devalias …

inetd 程序了不起的替代

归类于: 系统知识 - 21 Nov 2008

每个 UNIX 管理员都熟悉 inetd,inetd 是一个守护程序,通过一个集中的配置文件(inetd.conf)来管理大多数入网连接。xinetd 守护程序是 inetd 的替代,它提供许多改进的或新的特性,以及更容易的配置。Ted 解释了 inetd 背后的概念,并且给出了在您自己的站点上设置 xinetd 的示例。

经典的 inetd 守护程序已经存在很久了。有几种替换 inetd 的功能的方法,但是最灵活、最简便的方法似乎是 xinetd。inetd 能做的,xinetd 也能做,并且 xinetd 还能做更多的事情。譬如,TCP 封装、模块化配置、连接重定向和入站连接的负载限制,而这些只是使得 xinetd 成为系统管理员良好选择的部分特性。

本文是为从初学者到中级系统管理员这样的读者而准备的,并且文中的说明和示例并不尝试假设您已经熟悉 inetd。在本文中,我们将研究 xinetd 的一些简单用法,从安装到安全性策略的实现。

开始之前为实现本文的目的,您的系统最好安装了最近的主流(2000 或更新)UNIX(Linux、Solaris、BSD)。这些示例在 Perl 和 UNIX(以及其它操作系统)的早期版本上也可以运行,但是它们功能方面的障碍应该由读者作为练习来解决。给定的特定示例是用于 Red Hat Linux 的,但是它们在其它系统上应该也可以运行(除 chkconfig 以外)。

inetd 到底是什么对于 …

高级Linux安全管理技巧

归类于: 系统知识 - 21 Nov 2008

由于Linux操作系统是一个开放源代码的免费操作系统,因此受到越来越多用户的欢迎。随着Linux操作系统在我国的不断普及,有关的政府部门更是将基于Linux开发具有自主版权的操作系统提高到保卫国家信息安全的高度来看待,因此我们不难预测今后Linux操作系统在我国将得到更快更大的发展。虽然Linux与UNIX很类似,但它们之间也有一些重要的差别。对于众多的习惯了UNIX和Windows NT的系统管理员来讲,如何保证Linux操作系统的安全将面临许多新的挑战。本文介绍了一系列实用的Linux安全管理经验。

一、文件系统

在Linux系统中,分别为不同的应用安装单独的主分区将关键的分区设置为只读将大大提高文件系统的安全。这主要涉及到Linux自身的ext2文件系统的只添加(只添加)和不可变这两大属性。

●文件分区Linux的文件系统可以分成几个主要的分区,每个分区分别进行不同的配置和安装,一般情况下至少要建立/、/usr/local、/var和/home等分区。/usr可以安装成只读并且可以被认为是不可修改的。如果/usr中有任何文件发生了改变,那么系统将立即发出安全报警。当然这不包括用户自己改变/usr中的内容。/lib、/boot和/sbin的安装和设置也一样。在安装时应该尽量将它们设置为只读,并且对它们的文件、目录和属性进行的任何修改都会导致系统报警。

当然将所有主要的分区都设置为只读是不可能的,有的分区如/var等,其自身的性质就决定了不能将它们设置为只读,但应该不允许它具有执行权限。

●扩展ext2使用ext2文件系统上的只添加和不可变这两种文件属性可以进一步提高安全级别。不可变和只添加属性只是两种扩展ext2文件系统的属性标志的方法。一个标记为不可变的文件不能被修改,甚至不能被根用户修改。一个标记为只添加的文件可以被修改,但只能在它的后面添加内容,即使根用户也只能如此。

可以通过chattr命令来修改文件的这些属性,如果要查看其属性值的话可以使用lsattr命令。要想了解更多的关于ext2文件属性的信息,可使用命令man chattr来寻求帮助。这两上文件属性在检测黑客企图在现有的文件中安装入侵后门时是很有用的。为了安全起见,一旦检测到这样的活动就应该立即将其阻止并发出报警信息。

如果你的关键的文件系统安装成只读的并且文件被标记为不可变的,入侵者必须重新安装系统才能删除这些不可变的文件但这会立刻产生报警,这样就大大减少了被非法入侵的机会。

●保护log文件当与log文件和log备份一起使用时不可变和只添加这两种文件属性特别有用。系统管理员应该将活动的log文件属性设置为只添加。当log被更新时,新产生的log备份文件属性应该设置成不可变的,而新的活动的log文件属性又变成了只添加。这通常需要在log更新脚本中添加一些控制命令。

二、备份

在完成Linux系统的安装以后应该对整个系统进行备份,以后可以根据这个备份来验证系统的完整性,这样就可以发现系统文件是否被非法窜改过。如果发生系统文件已经被破坏的情况,也可以使用系统备份来恢复到正常的状态。

●CD-ROM备份当前最好的系统备份介质就是CD-ROM光盘,以后可以定期将系统与光盘内容进行比较以验证系统的完整性是否遭到破坏。如果对安全级别的要求特别高,那么可以将光盘设置为可启动的并且将验证工作作为系统启动过程的一部分。这样只要可以通过光盘启动,就说明系统尚未被破坏过。

如果你创建了一个只读的分区,那么可以定期从光盘映像重新装载它们。即使象/boot、/lib和/sbin这样不能被安装成只读的分区,你仍然可以根据光盘映像来检查它们,甚至可以在启动时从另一个安全的映像重新下载它们。

●其它方式的备份虽然/etc中的许多文件经常会变化,但/etc中的许多内容仍然可以放到光盘上用于系统完整性验证。其它不经常进行修改的文件,可以备份到另一个系统(如磁带)或压缩到一个只读的目录中。这种办法可以在使用光盘映像进行验证的基础上再进行额外的系统完整性检查。

既然现在绝大多数操作系统现在都在随光盘一起提供的,制作一个CD-ROM紧急启动盘或验证盘操作起来是十分方便的,它是一种十分有效而又可行的验证方法。

三、改进系统内部安全机制

可以通过改进Linux操作系统的内部功能来防止缓冲区溢出攻击这种破坏力极强却又最难预防的攻击方式,虽然这样的改进需要系统管理员具有相当丰富的经验和技巧,但对于许多对安全级别要求高的Linux系统来讲还是很有必要的。

●Solaris Designer的安全Linux补丁Solaris Designer用于2.0版内核的安全Linux补丁提供了一个不可执行的栈来减少缓冲区溢出的威胁,从而大大提高了整个系统的安全性。

缓冲区溢出实施起来是相当困难的,因为入侵者必须能够判断潜在的缓冲区溢出何时会出现以及它在内存中的什么位置出现。缓冲区溢出预防起来也十分困难,系统管理员必须完全去掉缓冲区溢出存在的条件才能防止这种方式的攻击。正因为如此,许多人甚至包括Linux Torvalds本人也认为这个安全Linux补丁十分重要,因为它防止了所有使用缓冲区溢出的攻击。但是需要引起注意的是,这些补丁也会导致对执行栈的某些程序和库的依赖问题,这些问题也给系统管理员带来的新的挑战。

不可执行的栈补丁已经在许多安全邮件列表(如securedistros@nl.linux.org)中进行分发,用户很容易下载到它们等。

●StackGuardStackGuard是一个十分强大的安全补丁工具。你可以使用经StackGuard修补过的gcc版本来重新编译和链接关键的应用。

StackGuard进行编译时增加了栈检查以防止发生栈攻击缓冲区溢出,虽然这会导致系统的性能略有下降,但对于安全级别要求高的特定应用来讲StackGuard仍然是一个十分管用的工具。

现在已经有了一个使用了SafeGuard的Linux版本,用户使用StackGuard将会更加容易。虽然使用StackGuard会导致系统性能下降约10~20%,但它能够防止整个缓冲区溢出这一类攻击。

●增加新的访问控制功能Linux的2.3版内核正试图在文件系统中实现一个访问控制列表,这要可以在原来的三类(owner、group和other)访问控制机制的基础上再增加更详细的访问控制。

在2.2和2.3版的Linux内核中还将开发新的访问控制功能,它最终将会影响当前有关ext2文件属性的一些问题。与传统的具有ext2文件系统相比它提供了一个更加精确的安全控制功能。有了这个新的特性,应用程序将能够在不具有超级用户权限的情况下访问某些系统资源,如初始套接等。

●基于规则集的访问控制现在有关的Linux团体正在开发一个基于规则的访问控制(RSBAC)项目,该项目声称能够使Linux操作系统实现B1级的安全。RSBAC是基于访问控制的扩展框架并且扩展了许多系统调用方法,它支持多种不同的访问和认证方法。这对于扩展和加强Linux系统的内部和本地安全是一个很有用的。

四、设置陷井和蜜罐

所谓陷井就是激活时能够触发报警事件的软件,而蜜罐(honey pot)程序是指设计来引诱有入侵企图者触发专门的报警的陷井程序。通过设置陷井和蜜罐程序,一旦出现入侵事件系统可以很快发出报警。在许多大的网络中,一般都设计有专门的陷井程序。陷井程序一般分为两种:一种是只发现入侵者而不对其采取报复行动,另一种是同时采取报复行动。

设置蜜罐的一种常用方法是故意声称Linux系统使用了具有许多脆弱性的IMAP服务器版本。当入侵者对这些IMAP服务器进行大容量端口扫瞄就会落入陷井并且激发系统报警。

另一个蜜罐陷井的例子就是很有名的phf,它是一个非常脆弱的Web cgi-bin脚本。最初的phf是设计来查找电话号码的,但它具有一个严重的安全漏洞:允许入侵者使用它来获得系统口令文件或执行其它恶意操作。系统管理员可以设置一个假的phf脚本,但是它不是将系统的口令文件发送给入侵者,而是向入侵者返回一些假信息并且同时向系统管理员发出报警。

另外一类蜜罐陷井程序可以通过在防火墙中将入侵者的IP地址设置为黑名单来立即拒绝入侵者继续进行访问。拒绝不友好的访问既可以是短期的,也可以是长期的。Linux内核中的防火墙代码非常适合于这样做。

五、将入侵消灭在萌芽状态

入侵者进行攻击之前最常做的一件事情就是端号扫瞄,如果能够及时发现和阻止入侵者的端号扫瞄行为,那么可以大大减少入侵事件的发生率。反应系统可以是一个简单的状态检查包过滤器,也可以是一个复杂的入侵检测系统或可配置的防火墙。

●Abacus Port SentryAbacus Port Sentry是开放源代码的工具包,它能够监视网络接口并且与防火墙交互操作来关闭端口扫瞄攻击。当发生正在进行的端口扫瞄时,Abacus Sentry可以迅速阻止它继续执行。但是如果配置不当,它也可能允许敌意的外部者在你的系统中安装拒绝服务攻击。

Abacus PortSentry如果与Linux中透明的代理工具一起使用可以提供一个非常有效地入侵防范措施。这样可以将为所有IP地址提供通用服务的未使用端口重定向到Port Sentry中,Port Sentry可以在入侵者采取进一步行动之前及时检测到并阻止端口扫瞄。

Abacus Port Sentry能够检测到慢扫瞄(slow scan),但它不能检测到结构化攻击(structured attack)。这两种方式最终目的都要试图掩盖攻击意图。慢扫瞄就是通过将端口扫瞄分散到很长的时间内来完成,而在结构化的攻击中,攻击者试图通过扫瞄或探测多个源地址中来掩盖自己的真实攻击目标。

正确地使用这个软件将能够有效地防止对IMAP服务大量的并行扫瞄并且阻止所有这样的入侵者。Abacus Sentry与Linux 2.2内核的IPChains工具一起使用时最有效,IPChains能够自动将所有的端口扫瞄行为定向到Port Sentry。
Linux 2.0内核可以使用IPChains进行修补,Abacus Port Sentry也可以与早期的2.0版内核中的ipfwadm工具一起使用,ipfwadm在2.2版本以后被IPChains取代了。

Abacus Port Sentry还可以被配置来对Linux系统上的UDP扫瞄作出反应,甚至还可以对各种半扫瞄作出反应,如FIN扫瞄,这种扫描试图通过只发送很小的探测包而不是建立一个真正的连接来避免被发现。

当然更好的办法就是使用专门的入侵检测系统,如ISS公司的RealSecure等,它们可以根据入侵报警和攻击签名重新配置防火墙。但这样的产品一般价格较高,普及的用户承受起来有困难。

六、反攻击检测

系统主要通过阻止入侵企图来防止入侵,而反攻击系统则可以反向进行端口扫瞄或发起其它的攻击,这一着让入侵者不仅入侵阴谋未能得逞,反而“引狼入室”,招致反攻击。 …

Linux安全基础

归类于: 系统知识 - 21 Nov 2008

一、系统简介
Linux是一个真正意义上的免费的操作系统,起初是由Linus Torvalds出于个人爱好,在业余时间写成的一个操作系统,后来放到了INTERNET上而逐步演变成今天的Linux。今天的Linux,吸引了全世界成千上万的程序员,他们在不同的国家和地区来共同开发和完善这一免费的操作系统。 Linux继承了UNIX系统的特点,它的发展凝聚了世界各地无数开发人员的大量心血,体现了一种信息世界的共建、共享和共荣的精神。

二、基本概念

1、用户和用户组
Linux有很强的用户管理机制,它是通过用户和用户组这两个概念来实现的。
用户是指可以登录到系统的帐号。Linux是一个多用户的操作系统,它允许
多个用户同时登录到系统,Linux给每一个系统帐号一个用户ID,来区别不同的
用户。
同时Linux还通过用户组来为同一个组的用户分配权限,每一个组也有一个
组ID,来区别不同的组。

2、文件与目录许可权限
文件和目录的属性决定了文件和目录的被访问权限,即谁能存取或执行该文件。
使用命令ls -l将显示文件类型及文件许可权限等。
如:

文件类型
文件拥有者(u)许可权限
文件组拥有者(g) 许可权限

其他用户(o)许可权限
- rwx rwx rwx 1 root root 437428 Sep 15 21:21 vi

用三元组表示文件许可权限,第一个三元组是拥有文件的用户(u),第二个三元组是拥有文件的组(g),第三个三元组是其他用户(o)。

Linux就是通过这种方法来对文件的许可权限进行管理,系统根据每个文件的许可权限来判断每个用户对每个文件的操作权限。

在整个系统中有一个用户不受限于这个限制,即root用户,系统的超级用户,它可以更改任何一个文件的许可权限。普通用户也可以使用chmod来改变属于他自己的文件和目录的许可权限。

除了上面介绍的rwx三种许可权限外还有两种特殊的权限:s和t。s位出现在组三元组或拥有者三元组的第三位,也就是x位,它表示此文件是可执行文件,并且在文件执行时,以文件所有者的ID可文件组ID运行,而不是用运行命令的用户的ID来运行。可执行脚本被置s位,存在一种潜在的危险,特别是文件拥有者或组拥有者是root的文件。t这一符号在其他用户三元组中的第三位置,通常,如果在目录上的其他用户三元组中指定了执行和可写许可权限时,任何用户无论所有权及许可权限都可删除该目录中任何文件,使用这种设置可防止用户而不是拥有删除或修改目录中的文件。

三、系统认证
Linux系统目前采用一种全新的认证方式,即:可插式认证模块(PAM: Pluggable Authentication Modules)。
PAM是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。

系统管理员通过PAM配置文件来制定认证策略,即指定什么服务该采用什么样的认证方法;应用程序开发者通过在服务程序中使用PAM API而实现对认证方法的调用;而PAM服务模块(service module)的开发者则利用PAM SPI(Service Module API)来编写认证模块(主要是引出一些函数pam_sm_xxxx( )供libpam调用),将不同的认证机制(比如传统的UNIX认证方法、Kerberos等)加入到系统中;PAM核心库(libpam)则读取配置文件,以此为根据将服务程序和相应的认证方法联系起来。

通过使用PAM这种认证方式,可以使整个系统的认证有更大的灵活性,系统管理员可以根据需要来调整认证模块,根据不同的安全级别来配置系统环境。

四、安全shell
在通常的系统管理中,系统管理员常常通过telnet登录到系统,对系统进行配置管理。但这种方式下,系统的用户名和口令在整个网络中的传输是明文,很容易被窃取,SSH(secure shell)是一个客户-服务器应用,它通过加密,通过基于RSA机制的主机认证以及用户认证中的多种选项提供安全的通信。它提供rlogin,rsh和rcp的替代程序。它也提供加密的X窗口系统连接和加密的TCP会话连接。

下面的图说明整个ssh在认证连接过过程中的流程:

通过使用ssh有效地保证了用户数据在整个通信过程中的安全,保证了内容的私密性。

五、用ipchains过滤数据包
在通常的系统安装中,系统对外开放所有服务端口,我们利用ipchains可以把系统配置成一个基于主机的防火墙,通过适当配置可以有效的限制、保护系统以及控制局域网范围内的访问。

防火墙是阻止非授权用户进入、离开、穿过网络的系统。Linux的ipchains命令可以建立规则,为进入、离开、穿过系统的数据流提供可选的限制,从而提供比较安全的防火墙功能。

Linux ipchains实现包过滤防火墙功能,网络上的每一个包都根据规则过滤。使用ipchains的内核分析每一个包,查找指定的源、目标IP地址及端口,或指定的ICMP类型及代码。

整个ipchains的包过滤流程如下图所示:

ipchains在每一个数据包到来之前,都会根据规则检查每一个IP包的包头,进 行有效的过滤。同时它也对每一个从本机出去的包进行检查,保证每一个出去 和进来的包,符合规则。

除了把ipchains配置成基于主机的防火墙外,还可以把ipchains配置成一个基于网络的防火墙,用ipchains来保护一个网段。

六、系统日志
Linux使用日志来记录用户的动作和系统的一些错误信息。Linux下有两个重要的日志守护程序:syslog和klogd。
syslog是以守护进程运行,在启动时他从/etc/syslog.conf文件中读取不同的选项,根据不同的应用程序把相关信息记录到相应的日志文件中。

klogd是一个内核日志记录程序,它记录内核出现的任何错误和异常。
下图是日志信息流的过程。

(戴忠华)

linux指令大全(完整篇)

归类于: 系统知识 - 21 Nov 2008

cat cd
chmod chown
cp cut

名称:cat
使用权限:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
说明:把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
参数:
-n 或 –number 由 1 开始对所有输出的行数编号
-b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 –show-nonprinting

范例:
cat -n …

SUN系统的基本安全配置

归类于: 系统知识 - 21 Nov 2008

一个SUN系统就象和NT系统一样,容易受到来自internet的各种可恶的攻击。幸运的是,不象NT,你可以用以下三个简单的手段把SUN变的相对安全些,它们是:

  1)防止堆栈溢出
  2)关闭不用的服务
  3)给系统打补丁

  #1 防止堆栈溢出

  至少90%以上的安全问题都是来自所谓的“堆栈溢出”。攻击者通过给一个以root身份运行的程序提供比它所预期的输入多得多的东西,使被攻击程序无法处理而改变执行流程去执行攻击者指定的代码。

  Solaris 2.6和Solaris 7都具备把用户堆栈设成不可执行的能力,以使这种攻击不能得逞。要使能这个特点:

  0)变成root
  1)对/etc/system文件做个拷贝

  cp /etc/system /etc/system.BACKUP

  2)用你最钟爱的编辑器编辑/etc/system文件
  3)到文件的最后,插入以下几行:

  set noexec_user_stack=1
  set noexec_user_stack_log=1

  4)保存文件,退出编辑器

  一旦重启机器,这些改变就会生效。如果这不是一个你可以关闭的系统,那么你用adb来改变一个运行中的系统的参数也是可能的,但这不是我个人乐意去干的事。

  当然会有些合法使用可执行堆栈的程序在你做出如上改变后而不能正常运行。所幸的是这样的程序的并不多,我所知的就只有GNU ada 编译器。

  #2 在inetd.conf中关闭用不着的服务

  有许多用不着的服务自动的处于使能状态。它们中可能存在的漏洞将使攻击者甚至不需要一个账户就能控制你的机器。关闭这些不需要的服务来保护你的系统,你可以用如下方法来关闭:

  0)变成root
  1)对inetd的配置文件/etc/inetd.conf做个拷贝

  cp /etc/inetd.conf /etc/inetd.conf.BACKUP

  2)编辑/etc/inetd.conf文件
  未被激活的服务是在前面被“#“符号注释掉的,举个例子,你的部份inetd.conf可能是这样的:

  # Tnamed serves the obsolete IEN-116 name server protocol.
  #
  name dgram udp wait root /usr/sbin/in.tnamed in.tnamed

  不需要这个服务,因为你们中的99.999%不会用到这个“已经被废弃的IEN-116名字服务协议“,把这个注释掉以后,这行看起来会象是:

  # Tnamed serves the obsolete IEN-116 name server protocol.
  #
  #name dgram udp wait root …

2008-11-20

unix入门材料

归类于: 系统知识 - 20 Nov 2008

首先,我们一起看看UNIX的目录,因为清楚了目录,才能对UNIX的框架有个大概的印象!当然这里讲的是系统正常运转所必须的,并且一定不能删除或者修改。
/ 是系统的根目录;

/bin目录中包括最常用的UNIX命令;

/dev目录包括控制访问外部设备的特殊设备文件;

/etc目录中包括各种各样的系统程序和数据文件;

/lib目录里包括C语言以及其他语言程序的运行库文件;

/mnt目录是一个空目录,是为安装可移动的文件系统保留的;

/opt目录中包括在所谓的“软件存储目标”;

/shlib目录中包括系统使用的共享库;

/usr目录中有几个子目录,(/usr/include目录包括编译C语言程序的头文件;/usr/lib目录包括各种UNIX命令使用的更多的库和数据文件;/usr/spool目录包括各种各样的目录,用于存储那些将被打印、邮寄、或通过网络传递的文件;/usr/tmp目录包括更多的临时文件;/usr/adm目录包括与系统管理或记帐相联系的数据文件;特别地,/usr/adm/messages和/usr/adm/syslog文件包括系统错误消息的记录。)

/stand目录是引导文件系统的安装点,引导文件系统包括安装程序(boot),核心(unix),以及相关的boot文件;

/tcb目录包括所有作为TCB一部分的文件;

/tmp目录UNIX系统程序产生的临时文件;

/var目录包括指定某一单独客户或服务器的非共享SSO文件。

一、目录管理
1、创建目录:mkdir directory_name
比如:在/usr/目录下新建子目录apple
#mkdir /usr/apple 或者
#cd /usr
#mkdir apple …

HP小型机的信息的命令集-01

归类于: 系统知识 - 20 Nov 2008

下面是查看HP小型机的信息的命令集:

1、机型
#model
9000/800/L2000-44
注意:其中44是指每个cpu有440MHZ。

2、cpu个数
#top
CPU LOAD USER NICE SYS IDLE BLOCK SWAIT INTR SSYS
0 0.02 …

下一页 »