linux加固手册v10试行版.docx
《linux加固手册v10试行版.docx》由会员分享,可在线阅读,更多相关《linux加固手册v10试行版.docx(30页珍藏版)》请在冰豆网上搜索。
linux加固手册v10试行版
LINUX操作系统
安全加固手册
北京####有限公司
版本v1.0.0
目录
1概述1
1.1适用范围1
1.2外部引用说明1
1.3术语和定义1
1.4符号和缩略语1
2LINUX主机安全加固1
2.1身份鉴别1
2.1.1为空口令用户设置密码1
2.1.2缺省密码长度限制2
2.1.3缺省密码生存周期限制2
2.1.4口令过期提醒2
2.1.5限制超级管理员远程登录3
2.1.6使用ssh加密传输3
2.2访问控制3
2.2.1为不同的管理员分配不同的账号3
2.2.2去除不需要的帐号、修改默认帐号的shell变量4
2.2.3对系统账号进行登录限制4
2.2.4除root之外UID为0的用户5
2.2.5设置关键目录的权限5
2.2.6修改umask值5
2.2.7设置目录权限6
2.2.8设置关键文件的属性6
2.2.9对root为ls、rm设置别名7
2.2.10使用PAM禁止任何人su为root7
2.3安全审计8
2.3.1启用日志记录功能8
2.3.2记录系统安全事件8
2.3.3启用记录cron行为日志功能8
2.3.4增加ftpd审计功能9
2.4剩余信息保护9
2.5入侵防范9
2.5.1设置访问控制列表9
2.5.2更改主机解析地址的顺序10
2.5.3打开syncookie10
2.5.4不响应ICMP请求11
2.5.5防syn攻击优化11
2.5.6补丁装载11
2.5.7关闭无效服务11
2.5.8关闭无效服务和进程自动启13
2.5.9禁止/etc/rc.d/init.d下某些脚本的执行13
2.5.10加固snmp服务13
2.5.11修改ssh端口14
2.6恶意代码防范14
2.7资源控制15
2.7.1隐藏系统提示信息15
2.7.2设置登录超时时间15
2.7.3资源限制16
3推荐安装工具17
前言
近几年来Internet变得更加不安全了。
网络的通信量日益加大,越来越多的重要交易正在通过网络完成,与此同时数据被损坏、截取和修改的风险也在增加。
只要有值得偷窃的东西就会有想办法窃取它的人。
Internet的今天比过去任何时候都更真实地体现出这一点,基于Linux的系统也不能摆脱这个“普遍规律”而独善其身。
因此,优秀的系统应当拥有完善的安全措施,应当足够坚固、能够抵抗来自Internet的侵袭,这正是Linux之所以流行并且成为Internet骨干力量的主要原因。
但是,如果你不适当地运用Linux的安全工具,它们反而会埋下隐患。
配置拙劣的安全系统会产生许多问题,本文将为你解释必须掌握的Linux安全知识。
本文讲述了如何通过基本的安全措施,使Linux系统变得可靠。
1概述
1.1适用范围
1.2外部引用说明
1.3术语和定义
1.4符号和缩略语
(对于规范出现的英文缩略语或符号在这里统一说明。
)
缩写
英文描述
中文描述
2LINUX主机安全加固
本规范所指的设备为采用LINUX操作系统的设备。
本规范提出的安全配置要求,在未特别说明的情况下,均适用于采用LINUX操作系统的设备。
本规范从运行LINUX操作系统设备的身份鉴别、访问控制、安全审计、剩余信息保护、入侵防范、恶意代码防范、资源控制七个方面提出安全配置要求。
2.1身份鉴别
2.1.1为空口令用户设置密码
实施目的
禁止空口令用户,存在空口令是很危险的,用户不用口令认证就能进入系统
检测方法
查看文件中每行的第二个值是为空还是“X”,“X”则有密码,空则为无密码。
如example:
:
3:
3:
example:
/bin/example
操作指南
root身份登录后,在命令行状态下可直接输入命令,或在图形界面状态下右键点击桌面空白处,选择“打开终端”,执行下列命令
#cat/etc/passwd
查看文件中每行的第二个值是为空还是“X”,“X”则有密码,空则为无密码。
使用passwd命令,给空密码的用户添加密码。
2.1.2缺省密码长度限制
实施目的
防止系统弱口令的存在,减少安全隐患。
对于采用静态口令
认证技术的设备,口令长度至少8位。
检测方法
cat/etc/login.defs
查看是否有如下行:
PASS_MIN_LEN8
操作指南
1、参考配置操作
#vi/etc/login.defs
把下面这行
PASS_MIN_LEN5改为
PASS_MIN_LEN8
2.1.3缺省密码生存周期限制
实施目的
对于采用静态口令认证技术的设备,帐户口令的生存期不长
于90天,减少口令安全隐患。
检测方法
运行cat/etc/login.defs查看是否有如下行:
PASS_MAX_DAYS90
PASS_MIN_DAYS0
操作指南
1、参考配置操作
#vi/etc/login.defs
PASS_MAX_DAYS90
PASS_MIN_DAYS0
2.1.4口令过期提醒
实施目的
口令到期前多少天开始通知用户口令即将到期
检测方法
运行cat/etc/login.defs查看是否有如下行:
PASS_WARN_AGE7
操作指南
2、参考配置操作
#vi/etc/login.defs
PASS_WARN_AGE7
2.1.5限制超级管理员远程登录
实施目的
限制具备超级管理员权限的用户远程登录。
远程执行管理员
权限操作,应先以普通权限用户远程登录后,再切换到超级
管理员权限账。
检测方法
/etc/ssh/sshd_config中PermitRootLoginno
操作指南
1、参考配置操作
SSH:
#vi/etc/ssh/sshd_config
把
PermitRootLoginyes
改为
PermitRootLoginno
重启sshd服务
#servicesshdrestart
CONSOLE:
在/etc/securetty文件中配置:
CONSOLE=/dev/tty01
2.1.6使用ssh加密传输
实施目的
提高远程管理安全性
检测方法
运行#ps–elf|grepssh查看状态,是否存在ssh进程。
操作指南
1、参考配置操作
#servicesshdrestart
2.2访问控制
2.2.1为不同的管理员分配不同的账号
实施目的
根据不同类型用途设置不同的帐户账号,提高系统安全
检测方法
cat/etc/passwd查看当前用户列表
操作指南
1、参考配置操作
为用户创建账号:
#useraddusername#创建账号
#passwdusername#设置密码
修改权限:
#chmod750directory#其中755为设置的权限,可根据实际情况设置相应的权限,directory是要更改权限的目录)使用该命令为不同的用户分配不同的账号,设置不同的口令及权限信息等。
2.2.2去除不需要的帐号、修改默认帐号的shell变量
实施目的
删除系统不需要的默认帐号、更改危险帐号缺省的shell变量
检测方法
cat/etc/passwd记录当前用户列表,cat/etc/shadow记录当前密码配置
操作指南
1、参考配置操作
#userdellp
#groupdellp
如果下面这些系统默认帐号不需要的话,建议删除。
lp,sync,shutdown,halt,news,uucp,operator,games,gopher等
修改一些系统帐号的shell变量,例如uucp,ftp和news等,还有一些仅仅需要FTP功能的帐号,一定不要给他们设置/bin/bash或者/bin/sh等Shell变量。
可以在/etc/passwd中将它们的shell变量设为/bin/false或者/dev/null等,也可以使用usermod-s/dev/nullusername命令来更改username的shell为/dev/null。
2.2.3对系统账号进行登录限制
实施目的
对系统账号进行登录限制,确保系统账号仅被守护进程和服务使用
检测方法
/etc/passwd中的禁止登陆账号的shell是/sbin/nologin
操作指南
1、参考配置操作
Vi/etc/passwd
例如修改
lynn:
x:
500:
500:
:
/home/lynn:
/sbin/bash
更改为:
lynn:
x:
500:
500:
:
/home/lynn:
/sbin/nologin
该用户就无法登录了。
禁止所有用户登录。
touch/etc/nologin
除root以外的用户不能登录了。
2、补充操作说明
禁止交互登录的系统账号,比如daemon,bin,sys、adm、lp、
uucp、nuucp、smmsp等等
2.2.4除root之外UID为0的用户
实施目的
帐号与口令-检查是否存在除root之外UID为0的用户
检测方法
awk-F:
'($3==0){print$1}'/etc/passwd
返回值包括“root”以外的条目,则低于安全要求
操作指南
删除处root以外的UID为0的用户。
2.2.5设置关键目录的权限
实施目的
在设备权限配置能力内,根据用户的业务需要,配置其所需
的最小权限。
检测方法
运行ls–al/etc/记录关键目录和文件的权限
操作指南
1、参考配置操作
通过chmod命令对目录的权限进行实际设置。
2、补充操作说明
etc/passwd必须所有用户都可读,root用户可写
–rw-r—r—
/etc/shadow只有root可读–r--------
/etc/group必须所有用户都可读,root用户可写
–rw-r—r—
使用如下命令设置:
chmod644/etc/passwd
chmod600/etc/shadow
chmod644/etc/group
如果是有写权限,就需移去组及其它用户对/etc的写权限(特殊情况除外)执行命令#chmod-Rgo-w/etc
2.2.6修改umask值
实施目的
控制用户缺省访问权限,当在创建新文件或目录时,屏蔽掉
新文件或目录不应有的访问允许权限。
防止同属于该组的其
它用户及别的组的用户修改该用户的文件或更高限制。
检测方法
more/etc/profile
more/etc/csh.login
more/etc/csh.cshrc
more/etc/bashrc
检查是否包含umask值
操作指南
1、参考配置操作
设置默认权限:
vi/etc/profile
vi/etc/csh.login
vi/etc/csh.cshrc
vi/etc/bashrc
在末尾增加umask027
修改文件或目录的权限,操作举例如下:
#chmod444dir;#修改目录dir的权限为所有人都为只读。
根据实际情况设置权限;
2、补充操作说明
如果用户需要使用一个不同于默认全局系统设置的umask,可以在需要的时候通过命令行设置,或者在用户的shell启动文件中配置
3、补充说明
umask的默认设置一般为022,这给新创建的文件默认权限755(777-022=755),这会给文件所有者读、写权限,但只给组成员和其他用户读权限。
umask的计算:
umask是使用八进制数据代码设置的,对于目录,该值等于八进制数据代码777减去需要的默认权限对应的八进制数据代码值;对于文件,该值等于八进制数据代码666减去需要的默认权限对应的八进制数据代码值。
2.2.7设置目录权限
实施目的
设置目录权限,防止非法访问目录
检测方法
查看重要文件和目录权限:
ls–l
判断/etc/init.d/*下的文件权限750以下
操作指南
1、参考配置操作
查看重要文件和目录权限:
ls–l
更改权限:
对于重要目录,建议执行如下类似操作:
#chmod-R750/etc/init.d/*
这样只有root可以读、写和执行这个目录下的脚本。
2.2.8设置关键文件的属性
实施目的
增强关键文件的属性,减少安全隐患。
使messages文件只可追加。
使轮循的messages文件不可更改。
检测方法
#lsattr/var/log/messages
#lsattr/var/log/messages.*
#lsattr/etc/shadow
#lsattr/etc/passwd
#lsattr/etc/group
判断属性
操作指南
1、参考配置操作
#chattr+a/var/log/messages
#chattr+i/var/log/messages.*
#chattr+i/etc/shadow
#chattr+i/etc/passwd
#chattr+i/etc/group
建议管理员对关键文件进行特殊设置(不可更改或只能追加等)。
2.2.9对root为ls、rm设置别名
实施目的
为ls设置别名使得root可以清楚的查看文件的属性(包括不
可更改等特殊属性)。
为rm设置别名使得root在删除文件时进行确认,避免误操作。
检测方法
查看当前shell:
#echo$SHELL
如果是csh:
#vi~/.cshrc
如果是bash:
#vi~/.bashrc
查看内容是否有
aliasls=’ls-aol‘
aliasrm=’rm–i’
类似的定义
操作指南
1、参考配置操作
查看当前shell:
#echo$SHELL
如果是csh:
#vi~/.cshrc
如果是bash:
#vi~/.bashrc
加入
aliasls=ls-aol
aliasrm=rm-i
重新登录之后查看是否生效。
2.2.10使用PAM禁止任何人su为root
实施目的
避免任何人可以su为root,减少安全隐患。
检测方法
cat/etc/pam.d/su
操作指南
1、参考配置操作
编辑su文件(vi/etc/pam.d/su),在开头添加下面两行:
authsufficient/lib/security/pam_rootok.so
authrequired/lib/security/pam_wheel.sogroup=wheel
这表明只有wheel组的成员可以使用su命令成为root用户。
你可以把用户添加到wheel组,以使它可以使用su命令成为root用户。
添加方法为:
#chmod–G10username
2.3安全审计
2.3.1启用日志记录功能
实施目的
登陆认证服务记录
检测方法
运行cat/etc/syslog.conf查看状态,是否有如下行
authpriv.*/var/log/secure
操作指南
1、参考配置操作
cat/etc/syslog.conf
#Theauthprivfilehasrestrictedaccess.
authpriv.*/var/log/secure
*auth,authpriv:
主要认证有关机制,例如telnet,login,ssh等需要认证的服务都是使用此一机制
2.3.2记录系统安全事件
实施目的
通过设置让系统记录安全事件,方便管理员分析
检测方法
Cat/etc/syslog.conf是否记录系统安全事件
操作指南
1、参考配置操作
修改配置文件vi/etc/syslog.conf,
配置如下类似语句:
*.err;kern.debug;daemon.notice;/var/adm/messages
定义为需要保存的设备相关安全事件。
2.3.3启用记录cron行为日志功能
实施目的
对所有的cron行为进行审计。
检测方法
Cat/etc/syslog.conf|grepcron
操作指南
1、参考配置操作
Vi/etc/syslog.conf
#Logcronstuff
cron.*/var/log/cron
2.3.4增加ftpd审计功能
实施目的
增加ftpd审计功能,增强ftpd安全性。
检测方法
Cat/etc/inetd.conf是否有如下行:
ftpd-l-r-A–S
cat/etc/syslog.conf是否有如下行:
ftp.*/var/log/ftpd
操作指南
1、参考配置操作
#vi/etc/inetd.conf
ftpstreamtcpnowaitroot/usr/libexec/ftpd
ftpd-l-r-A-S
其中:
-l成功/失败的ftp会话被syslog记录
-r使ftpd为只读模式,任何命令都不能更改文件系统
-A允许anonymous用户登录,/etc/ftpwelcome是欢迎信息
-S对anonymousftp传输进行记录
在/etc/syslog.conf中,增加
ftp.*/var/log/ftpd
使日志产生到/var/log/ftpd文件
重新启动inetd进程:
#kill-1`cat/var/run/inetd.pid`
2.4剩余信息保护
暂无。
2.5入侵防范
2.5.1设置访问控制列表
实施目的
设置访问控制列表,使得只有可信主机才能访问服务器在/etc/(x)inetd.conf中启用的特定网络服务。
检测方法
查看/etc/hosts.allow和/etc/hosts.deny2个文件的配置状态,
并记录。
操作指南
1、参考配置操作
使用TCP_Wrappers可以使系统安全面对外部入侵。
最好的
策略就是阻止所有的主机(在“/etc/hosts.deny”文件中加入
“ALL:
ALL@ALL,PARANOID”),然后再在
“/etc/hosts.allow”文件中加入所有允许访问的主机列表。
第一步:
编辑hosts.deny文件(vi/etc/hosts.deny),加入下
面该行:
#Denyaccesstoeveryone.
ALL:
ALL@ALL,PARANOID
第二步:
编辑hosts.allow文件(vi/etc/hosts.allow),加入允
许访问的主机列表,比如:
ftp:
202.54.15.99
202.54.15.99和是允许访问ftp服务的IP地址和主
机名称。
第三步:
tcpdchk程序是TCP_Wrapper设置检查程序。
它用
来检查你的TCP_Wrapper设置,并报告发现的潜在的和真实
的问题。
设置完后,运行下面这个命令:
#tcpdchk
2.5.2更改主机解析地址的顺序
实施目的
更改主机解析地址的顺序,减少安全隐患。
检测方法
Cat/etc/host.conf
/etc/host.conf
orderbind,hosts
nospoofon
操作指南
“/etc/host.conf”说明了如何解析地址。
编辑“/etc/host.conf”
文件(vi/etc/host.conf),加入下面该行:
#LookupnamesviaDNSfirstthenfallbackto/etc/hosts.
orderbind,hosts
#WehavemachineswithmultipleIPaddresses.
multion
#CheckforIPaddressspoofing
nospoofon
第一项设置首先通过DNS解析IP地址,然后通过hosts文
件解析。
第二项设置检测是否“/etc/hosts”文件中的主机是
否拥有多个IP地址(比如有多个以太口网卡)。
第三项设置
说明要注意对本机未经许可的IP欺骗。
2.5.3打开syncookie
实施目的
打开syncookie缓解synflood攻击
检测方法
Cat/proc/sys/net/ipv4/tcp_syncookies值为1
操作指南
#echo1>/proc/sys/net/ipv4/tcp_syncookies
可以加入/etc/rc.d/rc.local中。
2.5.4不响应ICMP请求
实施目的
不响应ICMP请求,避免信息泄露
检测方法
Cat/proc/sys/net/ipv4/icmp_echo_ignore_all返回1
操作指南
不响应ICMP请求:
#echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all
2.5.5防syn攻击优化
实施目的
提高未连接队列大小
检测方法
sysctlnet.ipv4.tcp_max_syn_backlog值为2048
操作指南
1、参考配置操作
sysctl-wnet.ipv4.tcp_max_syn_backlog="2048"
2.5.6补丁装载
实施目的
可以使系统版本为最新并解决安全问题
检测方法
Uname–a
Rpm–qa
cat/proc/version