UNIX 操作系统安全检查列表

原文地址:http://netsecurity.51cto.com/art/200512/15131.htm

本文选自ChinaITLab网校课程《CIW网络安全工程师V3.0》
本小节的要点包括:
●常用网络服务安全
■DNS
■WWW
■WEB
■FTP
●LINUX帐户安全
■LINUX系统帐户文件
■LINUX系统帐户安全
●LINUX文件系统安全
■文件权限分类
■文件和目录的访问对象
■UMASK值
■不可改变位
■SUID/SGID文件
■文件完整性
■文件加密
■备份策略
1 常用网络服务安全
1.1 域名(dns)服务
1.1.1 DNS基本原理
1、DNS术语、特性:
●互连网上主机信息的分布式数据库
●域名服务器
●解析器即客户机
●域名查询采用UDP协议,而区域传输采用TCP协议
●域名解析过程分为两种方式:递归模式和交互模式
2、域名解析过程
典型的域名解析过程。
3、BIND主要配置文件
BIND的主要配置文件包括:
●named配置文件:/etc/named.boot、etc/named.conf
●DNS数据文件
●反向解析顺序文件/etc/resolv.conf
1.1.2 DNS服务器的常见攻击方法
DNS服务器的常见攻击方法包括:
●地址欺骗
●远程漏洞入侵
●拒绝服务
1、地址欺骗
2、缓冲区溢出漏洞
解决办法:
●安装最新BIND
■http://www.isc.org/products/BIND/bind9.html
3、DNS服务器的拒绝服务攻击
●针对DNS服务器软件本身
●利用DNS服务器作为中间的"攻击放大器",去攻击其它intetnet上的主机
1.1.3 Bind服务器安全配置
●基本安全配置
■隐藏版本信息
■named进程启动选项:
-r:关闭域名服务器的递归查询功能(缺省为打开)。
-u 和-g :定义域名服务器运行时所使用的UID和GID。
-t :指定当服务器进程处理完命令行参数后所要chroot()的目录。
●Bind服务器的访问控制
■限制查询
■限制区域传输
■关闭递归查询
■Bind服务器安全配置
/etc/named.conf
options{
directory"/var/named";
allow-query202.96.44.0/24;
allow-transfer  {
192.168.100.1;
202.96.44.0/24;
recursion no;
};
};
●设置chroot运行环境
■chroot 是 "change root" 的缩写
■chroot重定义了一个程序的运行环境。重定义了一个程序的"ROOT"目录或"/"。也就是说,对于chroot了的程序或shell来说,chroot环境之外的目录是不存在的。
■Chroot方法步骤:
建立"监狱式"目录
拷贝本身服务软件和其他要求的文件
拷贝所需要系统库文件
变换启动脚本,使系统启动正确环境
●及时更新安装bind的最新版本
1.2  WWW服务
1.2.1 常见安全威胁
对于WWW服务,常见安全威胁包括:
■HTTP拒绝服务:攻击者通过某些手段使服务器拒绝对HTTP应答
■缓冲区溢出
1.2.2 Web服务器(apache)配置文件
控制着服务器各个方面的特性的三个配置文件:
■httpd.conf主配置文件,是对守护程序httpd如何运行的技术描述
■srm.conf是服务器的资源映射文件,告诉服务器各种文件的MIME类型,以及如何支持这些文件
■access.conf用于配置服务器的访问权限,控制不同用户和计算机的访问限制
1、Apache的基本安全配置
■及时更新安装Apache的最新版本
■设置chroot运行环境
■隐藏版本信息
2、Apache服务器访问控制
■文件的访问控制
■目录的访问控制
■主机的访问控制
■access.conf文件包含一些指令控制允许某个用户、某个域、IP地址或者IP段的访问访问Apache目录。
■order deny,allow
■deny from all
■allow from sans.org
■使用.htaccess文件,可以把某个目录的访问权限赋予某个用户
1.3  mail服务
1.3.1 Sendmail的主要安全问题
■邮件转发与垃圾邮件
■避免未授权的用户滥用noexpn,novrfy
■限制可以审核邮件队列内容的人员
■(/etc/sendmail.cf: PrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq)
■关闭relay选项
■及时更新安装最新版本的Sendmail
■文件系统安全
■拒绝服务攻击
1、关闭relay选项
sendmail提供了许多在编译期间选择的功能特性
在/etc/sendmail.mc中与安全相关的特性有:
■FEATURE(*)
■promiscuous_relay
■accept_unqualified_senders
■loose_relay_check
■accept_unresolvable_domains
■blacklist_recipients
■relay_entire_domain
2、邮件转发与垃圾邮件
设置smtp身份验证。
3、文件系统安全
重要的文件设置不可更改位
■[root@deep]# chattr +i /etc/sendmail.cf
■[root@deep]# chattr +i /etc/sendmail.cw
■[root@deep]# chattr +i /etc/sendmail.mc
■[root@deep]# chattr +i /etc/aliases
■[root@deep]# chattr +i /etc/mail/access
4、Sendmail配置抵御DOS
■/etc/sendmail.cf üMinFreeBlocks--配置最少的自由块数
■MaxMessageSize--最大邮件大小
■AutoRebuildAliases--自动重建别名
■QueueLA--队列平均负荷
■RefuseLA--平均负荷拒绝临界点
■MaxDaemonChildren--最大的守护进程的子进程数
■MaxHeadersLength --最大的报头长度
■MaxMimeHeaderLength --最大MIME编码报文长度
■MaxRecipientsPerMessage --每封邮件的最多接收者
1.4 FTP
了解那些FTP有安全问题:
■wu-ftpd -(wu-ftpd 2.6.0 输入验证漏洞、site newer 内存耗尽问题)
■proftpd
1.4.1 Ftp安全要点
■使用最新版本 -http://www.wu-ftpd.org/ 2.6.2 -http://www.proftpd.org/ 1.2.9
■使用ftpuser限制ftp用户
■使用ftpaccess控制用户行为,流量等等
■设置chroot运行环境 o使用ssh或sftp代替ftp
2 UNIX系统帐号安全
2.1 UNIX系统帐号文件
2.1.1 Passwd文件剖析
■name:coded-passwd:UID:GID:user-info:home-directory:shell
passwd文件字段含义:
■7个域中的每一个由冒号隔开。
■name-给用户分配的用户名。
■Coded-passwd-经过加密的用户口令。如果一个系统管理员需要阻止一个用户登录,则经常用一个星号( : * :)代替。该域通常不手工编辑。
■UID-用户的唯一标识号。习惯上,小于100的UID是为系统帐号保留的。
■UNIX系统帐号安全
■GID-用户所属的基本分组。通常它将决定用户创建文件的分组拥有权。
■User_info-习惯上它包括用户的全名。邮件系统和finger这样的工具习惯使用该域中的信息。
■home-directory-该域指明用户的起始目录,它是用户登录进入后的初始工作目录。
■shell-该域指明用户登录进入后执行的命令解释器所在的路径。注意可以为用户在该域中赋一个/bin/false值,这将阻止用户登录。
2.1.2 shadow文件
其内容中各字段含义:
■上一次修改口令的日期,以从1970年1月1日开始的天数表示。
■口令在两次修改间的最小天数。口令在建立后必须更改的天数。
■口令更改之前向用户发出警告的天数。
■口令终止后帐号被禁用的天数。
■自从1970年1月1日起帐号被禁用的天数。
■保留域。
2.2 UNIX系统帐号安全
2.2.1 禁用的口令
■不要选择简单字母序列组成的口令(例如"qwerty"或"abcdef")。
■不要选择任何指明个人信息的口令(例如生日、姓名、配偶姓名、孩子姓名、电话号码、社会保障号码、汽车牌号、汽车执照号、居住的街道名称等)。
■不要选择一个与要替换的口令相似的新口令。
■不要选择一个包含用户名或相似内容的口令。
■不要选择一个短于6个字符或仅包含字母或数字的口令。
■不要选择一个所有字母都是小写或大写字母的口令。
■不要选择一个被作为口令范例公布的口令。
2.2.2 好的口令
■选择一个至少有10个字符长度的口令。
■选择一个包含非字母字符的口令,包括数字和特殊字符,如~ ! @ $ % ^ * ( ) _ - + ={ } [ ] | \ : ; ' " , . ? / 。
■选择一个容易记住而不必写下来的口令。
■选择一个不用看键盘而能迅速键入的口令,使偷看的人不能识别出键入的字符。
■禁止写下口令
2.2.3 安全缺省帐号
Linux系统中安全缺省帐号。
2.2.4 UNIX系统帐号安全事项
UNIX系统帐号安全注意事项:
●禁用和删除帐号
■禁用帐号最快的方式是在/etc/passwd或影子口令文件中用户加密口令的开始加一个星号(*)。该用户将不能再次登录。
■删除帐号
■userdel jrandom
删除一个帐号时要完整。
杀死任何属于该用户的进程或打印任务。
检查用户的起始目录并为任何需要保存的东西制作一个备份。
删除用户的起始目录及其内容。
删除用户的邮件文件(/var/spool /mail)。
把用户从邮件别名文件中删除(/usr/lib/aliases)。
如果事先知道用户帐号将在哪天终止,则考虑在/etc/shadow中设置口令和帐号终止域。
●Root帐号安全性
■确保root只允许从控制台登陆
■限制知道root口令的人数
■使用强壮的密码
■三个月或者当有人离开公司是就更改一次密码
■使用普通用户登陆,用su取得root权限, 而不是以root身份登录
■设置 umask 为077 ,在需要时再改回022
■请使用全路径执行命令
■不要允许有非root用户可写的目录存在root的路径里
■确保root没有~/.rhosts文件
■确保root的cron job文件里没有执行属于其它用户或人人可写的文件
■修改/etc/securetty,去除终端ttyp0-ttyp9,使root只能从console或者使用ssh登陆。
■禁止root用户远程登录
linux下: -/etc/pam.d/login -auth  required pam_securetty.so
其它多数系统: -/etc/default/login -CONSOLE=/dev/console
■自动帐号封锁-能够声明尝试登录失败的最大次数;一旦到达这个次数就封锁该帐号
■日期和时间限制-能够声明在一周或一天的什么时候可以使用一个用户的帐号;这是为了防御深更半夜的黑客
■自动登录退出-可以使长时间无反应的用户会话自动终止;这是有风险的,因为可能因一个合法的原因使一个会话显得不活跃
●密码策略
■密码长度的强制定义 -修改 /etc/login.defs -PASS_MIN_LEN 5
■为 PASS_MIN_LEN 8
■设置root登陆的timeout -/etc/profile: export TMOUT=7200
■用chage命令管理口令周期
chage -l username
[-m 最短周期] [-M 最长周期] [-I 口令到期到被锁定的天数]
[-E到期日期] [-W 口令到期之前开始警告的天数] username
●受限制的登录shell:
■编辑profile文件(vi /etc/profile),把这些行改成:
■HISTSIZE=20
●策略传播
●进行口令检查
●产生随机口令
●提前进行口令检查
●口令更换
3 UNIX文件系统安全
3.1 文件权限分类
■读:允许读文件和目录内容。
■写:允许修改、删除文件。
■执行:允许执行二进制程序和脚本
■目录粘着位:用户不能删除该目录下没有写权限的文件,尽管他对目录有写权限。
■SUID: 程序以所有者而不是执行者的身份执行。
■SGID(文件): 类似SUID,程序以所在组的权限运行。
3.2 文件和目录的访问对象
■文件所有者;
■文件所有组;
■其它人。
其中,文件权限的8进制表示。属主,组,其它分别以一个8进制位表示,其中: -r - 4 -w - 2 -x - 1
例子: "-rwxr-x---" 8进制表示为0750 0400 0200 0100 0040 0000 0010  +0000  ------------- 0750

文件权限命令
■chmod (改变权限)
■#chmod o+r file
■(用户(u)、分组(g)、其他(0))
■c h o w n(改变拥有权)
■#chown user1 file
■c h g r p(改变分组)
■#chgrp group1 file
3.3 umask值
当创建了一个新文件或目录时,它基于用户的权限屏蔽"umask"来确定缺省的权限设置。chmod命令用来声明要打开的权限,而umask命令用来指明要禁止的权限。
它用一个简单的三位数变元来声明在一个文件或目录被创建时应该被禁止的访问权限-或被屏蔽的。
umask主要在系统范围及个人的登录文件.login或.profile中建立。
3.3.1 文件权限
■应该设置root用户的umask为077,这使其它用户不能读写root新创建的文件。
■在多数系统中,u m a s k的缺省值是0 2 2。
3.3.2 附加的文件权限属性
■linux的ext2/ext3文件系统 -lsattr -chattr
■i 禁止修改
■#chattr +i files
■#chattr -i files
3.4 给口令文件和组文件设置不可改变位,
■[root@cnns]# chattr +i /etc/passwd
■[root@cnns]# chattr +i /etc/shadow
■[root@cnns]# chattr +i /etc/group
■[root@cnns]# chattr +i/etc/gshadow
3.5 SUID和SGID文件
■SUID表示"设置用户ID",SGID表示"设置组ID"。当用户执行一个SUID文件时,用户ID在程序运行过程中被置为文件拥有者的用户ID。如果文件属于root,那用户就成为超级用户。同样,当一个用户执行SGID文件时,用户的组被置为文件的组。
■Unix实际上有两种类型的用户ID。
■"real user ID"是在登录过程中建立的用户ID。 "effective user ID"是在登录后的会话过程中通过SUID和SGID位来修改。
■#find /-type f \ (-perm -4000 -o -perm -2000\) -ls
■这告诉find列出所有设置了SUID("4000")或SGID("2000")位的普通文件("f")。应该在每个本地系统中运行它。
■[root@kcn]# chmod a-s /usr/bin/chage
3.6 文件完整性
■确保操作系统文件,尤其可执行程序/bin,/sbin,/usr/bin/usr/sbin)不被修改。
■许多rootkit都要替换系统程序(如login,netstat,ps,ls等)来隐藏自己及安装后门
■一般通过计算文件校验码(如MD5码)的方式来检验文件完整性
■#md5sum --check bin.sum
■RPM检验和签名检查(linux)
■# rpm --verify timed -0.10-2
3.7 文件加密
Unix常用的加密算法有crypt(最早的加密工具)、DES(目前最常用的)、IDEA(国际数据加密算法)、RC4、Blowfish(简单高效的DES)、RSA。
PGP还可以用来加密本地文件。现在常用的Linux下的PGP工具为:pgpe(加密)、pgps(签名)、pgpv(确认/解密)、pgpk(管理密钥)
3.8 备份策略
3.8.1 备份策略包括
■第0天备份
■完全备份
■增量式备份
■特别备份
3.8.2 备份命令
■cp
■Tar(用于磁带机)
■Dump(把整个文件系统拷贝到备份介质上)
■-#dump 0f0 /dev/rst0 1500 /dev/sd0a
■把一个SCSI硬盘(/dev/rsd0a)以0级备份到磁带(/dev/rst0)。
■Restore(恢复整个文件系统或提取单个文件)
3.8.3 备份要注意的问题
■检验备份
■保护备份介质
■把备份磁带写保护
■定期把备份送到远离站点的地方
■要留神介质的限制

你可能感兴趣的:(apache,linux,unix,配置管理,ssh)