Linux系统安全设置

根据此文章写了一个自动检测脚本linux

脚本位置:https://gitee.com/wdze/linux_security_settingsgit

1、帐号管理vim

一、用户密码安全

检测方法:bash

(1)是否存在以下相似的简单用户密码配置,好比:root/root, test/test, root/root1234
(2)执行:more /etc/login.defs,检查PASS_MAX_DAYS/ PASS_MIN_DAYS/PASS_WARN_AGE参数
(3)执行:awk -F: '($2 == "") { print $1 }' /etc/shadow, 检查是否存在空口令账号

建议安全标准:服务器

(1)在/etc/login.defs文件中配置:
PASS_MAX_DAYS   90        #新建用户的密码最长使用天数
PASS_MIN_DAYS   0          #新建用户的密码最短使用天数
PASS_WARN_AGE   14        #新建用户的密码到期提早提醒天数
(2)不容许存在空口令账号

二、密码强度ssh

检测方法:ide

/etc/pam.d/system-auth文件中是否对pam_cracklib.so的参数进行了正确设置。

建议安全标准:工具

密码长度至少8位,并包括数字、小写字母、大写字母和特殊符号4种中至少3种
建议在/etc/pam.d/system-auth 文件中配置:
password  requisite pam_cracklib.so difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=1

三、用户锁定策略ui

检测方法:

/etc/pam.d/system-auth文件中是否对pam_tally.so的参数进行了正确设置。

建议安全标准:

设置连续输错10次密码,账号锁定5分钟,
使用命令“vim /etc/pam.d/system-auth”修改配置文件,添加
auth required pam_tally.so onerr=fail deny=10 unlock_time=300
注:解锁用户 faillog  -u  <用户名>  -r

四、禁止root用户远程登陆

检测方法:

执行:more /etc/securetty,检查Console参数

建议安全标准:

建议在/etc/securetty文件中配置:CONSOLE = /dev/tty01

五、检查是否存在root外的UID为0用户

检测方法:

执行:awk -F: '($3 == 0) { print $1 }' /etc/passwd

建议安全标准:

UID为0的任何用户都拥有系统的最高特权,保证只有root用户的UID为0,返回值包括“root”之外的条目,则低于安全要求;

六、检查root环境变量中是否包含777的目录

检测方法:

执行:echo $PATH | egrep '(^|:)(\.|:|$)',检查是否包含父目录,
执行:find `echo $PATH | tr ':' ' '` -type d \( -perm -002 -o -perm -020 \) -ls,检查是否包含组目录权限为777的目录

建议安全标准:

确保root用户的系统路径中不包含父目录,在非必要的状况下,不该包含组权限为777的目录

七、远程链接的安全性配置

检测方法:

执行:find  / -name  .netrc,检查系统中是否有.netrc文件,
执行:find  / -name  .rhosts ,检查系统中是否有.rhosts文件

建议安全标准:

如无必要,删除这两个文件

八、用户的umask安全配置

检测方法:

执行:more /etc/profile  more /etc/csh.login  more /etc/csh.cshrc  more /etc/bashrc检查是否包含umask值且umask=027

建议安全标准:

建议设置用户的默认umask=027

九、重要目录和文件的权限

检测方法:

执行如下命令检查目录和文件的权限设置状况:
ls -l /etc/
ls -l /etc/rc.d/init.d/
ls -l /etc/inetd.conf	
ls -l /etc/passwd
ls -l /etc/shadow
ls -l /etc/group
ls -l /etc/security
ls -l /etc/services
ls -l /etc/rc*.d

建议安全标准:

对于重要目录,建议执行以下相似操做:
chmod -R 750 /etc/rc.d/init.d/*
这样只有root能够读、写和执行这个目录下的脚本。

十、查找未受权的SUID/SGID文件

检测方法:

for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do
find $PART \( -perm -04000 -o -perm -02000 \) -type f -xdev -print
done

建议安全标准:

若存在未受权的文件,则低于安全要求
建议常常性的对比suid/sgid文件列表,以便可以及时发现可疑的后门程序

十一、检查任何人都有写权限的目录

检测方法:

for PART in `awk '($3 == "ext2" || $3 == "ext3") \
{ print $2 }' /etc/fstab`; do
find $PART -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
done

建议安全标准:

若返回值非空,则低于安全要求

十二、查找任何人都有写权限的文件

检测方法:

for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do
find $PART -xdev -type f \( -perm -0002 -a ! -perm -1000 \) -print
done

建议安全标准:

若返回值非空,则低于安全要求

1三、检查没有属主的文件

检测方法:

for PART in `grep -v ^# /etc/fstab | awk '($6 != "0") {print $2 }'`; do
find $PART -nouser -o -nogroup -print
done
注意:不用管“/dev”目录下的那些文件。

建议安全标准:

若返回值非空,则低于安全要求
发现没有属主的文件每每就意味着有******你的系统了。不能容许没有主人的文件存在。若是在系统中发现了没有主人的文件或目录,先查看它的完整性,若是一切正常,给它一个主人。有时候卸载程序可能会出现一些没有主人的文件或目录,在这种状况下能够把这些文件和目录删除掉

1四、检查异常隐含文件

检测方法:

用“find”程序能够查找到这些隐含文件。例如:
find  / -name ".. *" -print -xdev
find  / -name "…*" -print -xdev | cat -v
同时也要注意象“.xx”和“.mail”这样的文件名的。(这些文件名看起来都很象正常的文件名)

建议安全标准:

若返回值非空,则低于安全要求
在系统的每一个地方都要查看一下有没有异常隐含文件(点号是起始字符的,用“ls”命令看不到的文件),由于这些文件多是隐藏的***工具或者其它一些信息(口令破解程序、其它系统的口令文件,等等)。在UNIX下,一个经常使用的技术就是用一些特殊的名,如:“…”、“..    ”(点点空格)或“..^G”(点点control-G),来隐含文件或目录。

1五、登陆超时设置

检测方法:

使用命令“cat /etc/profile |grep TMOUT”查看TMOUT是否设置

建议安全标准:

使用命令“vi /etc/profile”修改配置文件,添加“TMOUT=”行开头的注释,建议设置为“TMOUT=180”,即超时时间为3分钟

1六、远程登陆设置

检测方法:

查看SSH服务状态:
service ssh status
查看telnet服务状态:
service telnet status

建议安全标准:

SSH服务状态查看结果为:running 
telnet服务状态查看结果为:not running/unrecognized

1七、Root远程登陆限制

检测方法:

使用命令“cat /etc/ssh/sshd_config”查看配置文件
(1)检查是否容许root直接登陆
检查“PermitRootLogin ”的值是否为no
(2)检查SSH使用的协议版本
检查“Protocol”的值

建议安全标准:

(1)不容许root直接登陆
设置“PermitRootLogin ”的值为no
设置后root用户须要使用普通用户远程登陆后su进行系统管理
(2)修改SSH使用的协议版本
设置“Protocol”的版本为2

1八、关闭没必要要的服务

检测方法:

使用命令“who -r”查看当前init级别
使用命令“chkconfig --list <服务名>”查看全部服务的状态

建议安全标准:

如有没必要要的系统在当前级别下为on,则低于安全要求
使用命令“chkconfig --level <init级别> <服务名> on|off|reset”设置服务在个init级别下开机是否启动

2、日志审计

一、syslog登陆事件记录

检测方法:

执行命令:more /etc/syslog.conf
查看参数authpriv值

建议安全标准:

若未对全部登陆事件都记录,则低于安全要求

二、Syslog.conf的配置审核

检测方法:

执行:more /etc/syslog.conf,查看是否设置了下列项:
kern.warning;*.err;authpriv.none\t@loghost
*.info;mail.none;authpriv.none;cron.none\t@loghost
*.emerg\t@loghost
local7.*\t@loghost

建议安全标准:

若未设置,则低于安全要求
建议配置专门的日志服务器,增强日志信息的异地同步备份

3、系统文件

一、系统core dump状态

检测方法:

执行:more /etc/security/limits.conf 检查是否包含下列项:
* soft core 0
* hard core 0

建议安全标准:

若不存在,则低于安全要求
core dump中可能包括系统信息,易被***者利用,建议关闭
相关文章
相关标签/搜索