操作系统安全加固
linux操作系统
1.用户账号配置
要求:不应存在超级管理员账户,应三权分立,并设置最小权限。
应配置secadm安全管理员 audadm审计管理员 sysadm系统管理员
(1)用户配置
cat /etc/passwd
#查看用户信息
例:root: x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell (帐号:密码:用户ID:组ID:一般的信息:目录:shell)
伪用户一般分为两种,一种是与linux系统相关的,一种是与程序服务相关的。比如使用shutdown关机的时候就会调用伪用户的身份。在linux系统里面任何一个进程操作都必须有一个用户身份,这个就通过调用伪用户。比如安装了apache,http的进程,启动以后也要对应一个用户身份,但是不能对应root启动这个进程,如果别人得到这个进程相当于窃取到管理员root的权限,这样很危险,所以都是通过一些伪用户,添加一些服务的伪用户,比如apache,mysql。这些实际上是这些进程启动之后调用的用户身份。
所以伪用户最大的作用就是在一些系统操作或一些应用服务的调用的身份而已。
useradd secadm
#创建安全管理账户
useradd audadm
#创建审计账户
passwd secadm
#设置secadm账号密码
passwd audadm
#设置audadm账号密码
删除账户
userdel secadm
#删除secadm账号,但此方法只删除了/etc/passwd、/etc/shadow、/etc/group/、/etc/gshadow四个文件里的该账户和组的信息。默认情况下创建一个用户账号,会创建一个家目录和一个用户邮箱(在/var/spool/mail目录以用户名命名)。此时useradd secadm会提示已有此组,无法创建。
userdel -r secadm
#此方法可以删除干净
更改shell
usermod -s /sbin/nologin secadm
#将secadm改为/sbin/nologin,一般创建账号默认为/bin/bash
改为/sbin/nologin后,账户无法登录。
2.密码复杂度设置
(1)密码长度不小于8位
(2)口令是字母、数字和特殊字符组成。
(3)口令不得与账户名相同。
#root用户:
vi /etc/pam.d/system-auth-ac
#pam_cracklib.so后更改配置
passwd requisite pam_cracklib.so minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 retry=5 difok=3
#minlen不少于多少位
#dcredit=-1 --最少数字1个
#ucredit=-1--最少大写字母1个
#lcredit=-1 --最少小写字母1个
#ocredit-1 --最少特殊字符1个
#retry =5 --尝试次数5次
#difok=3 --最少3种不同字符
验证是否设置成功时,例建了test用户,如果在root账号下passwd test设置密码时,虽然你输入了简单的密码,会提示你密码过于简单,但是依旧可以成功。
登录test用户,输入passwd设置密码时,如果不符合规则,是不允许保存密码的。
3.登录次数限制
要求:配置当用户连续认证失败次数超过5次,锁定该用户使用的账户10分钟
#root用户下
vi /etc/pam.d/system-auth
#添加
auth required pam_tally2.so deny=5 unlock_time=60 even_deny_root root_unlock_time=60
注意:该命令必须输入在最前面,不然无法使用,输入到中间会出现登录超级用户密码输入正确也无法登录的情况,待查找原因。可以使用find命令查看时pam_tally.so还是pam_tally2.so
deny=5 允许错误次数5次
unlock_time=60 锁定60秒
even_deny_root 对root用户同样适用
root_unlock_time=60 root锁定60秒
4.用户口令有效期设置
要求:①口令 90 天定期更换
②口令过期前 10 天,应提示修改
su
vim /etc/login.defs
找到PASS_MAX_DAYS、PASS_MIN_LEN、PASS_WARN_AGE参数配
置,做出以下配置:
PASS_MAX_DAYS=90
PASS_MIN_LEN=8
PASS_WARN_AGE=10
保存并退出文件编辑。
对于在更改login.defs之前就已经存在的用户,修改该文件对他们不起作用。
此时需要
chage -l 用户名 #查看账户口令过期时间
chage -M 90 yonghuming #修改账户口令时间
5.桌面配置
1.系统桌面只显示业务系统软件,禁止除业务系统软件外的其他程序,如各类小游戏,远程运行软件
2.消除无关软件、程序
1.在桌面上删除其他文件
root权限:
#cd /home/d5000/desktop
#ls
查看目录下文件,不存在与D5000系统无关的程序及shell,若存
在,使用以下命令删除:
rm -rf 文件名
rpm -qa
rpm -ql [package name]
rpm -e [package name] --nodeps
rpm -qa --查询所有已安装的软件包
rpm -ql [package name] --查 看rpm包安装位置
rpm -e [package name] --nodeps --忽略依赖关系进行删除
6.禁止默认路由配置
su
route -n #查看路由表
route add -net IP地址 netmask 掩码 gw 网关
#此方法添加的路由重启后会消失
route del default gw 网关
#删除默认路由
vi /etc/rc.local
在文件未添加路由配置:
route add -net IP地址 netmask 掩码 gw 网关
保存文件并退出编辑。
#此方法可以设置永久路由
7.umask更改权限
umask是更改用户创建文件或文件夹时的默认权限,例如umask=002
那么所创建的文件权限为777-002=775
umask
#可以查看默认umask
umask 027
#可以临时更改umask为027
su
vi /etc/bashrc
#最后一行添加
umask=027
#可以永久更改
8.安全内核
开启操作系统的安全内核。
root权限:
#vi /etc/selinux/config
找到“SELINUX=”字段,更改参数配置:
SELINUX=permissive
保存并退出文件编辑。
SELINUX=permissive
–允许用户执行操作,并进行日志记录
9. 禁用bluetooth USB 光驱
1.bluetooth
root权限:
lsmod | grep bluetooth #查看模块挂在状态
uname -r #查看内核版本
service bluetooth stop #关闭bluetooth
mv /lib/modules/内核版本/kernel/drivers/bluetooth /BAK
#将bluetooth文件夹移走,既可以禁止该功能,也可以再以后需要时找回来
rmmod bluetooth #卸载模块
2.usb
root权限:
lsmod | grep usb_storage #查看模块挂在状态
uname -r #查看内核版本
mv /lib/modules/内核版本/kernel/drivers/usb/storage /BAK
#将storage文件夹移走,既可以禁止该功能,也可以再以后需要时找回来
3.光驱
root权限
lsmod | grep sr_mod
lsmod | grep cdrom
uname -r
mv /lib/modules/内核版本/kernel/drivers/scsi/sr_mod.ko /BAK
mv /lib/modules/内核版本/kernel/drivers/cdrom/cdrom.ko /BAK
rmmod sr_mod
rmmod cdrom
10. 关闭无用服务和端口
1.应禁止非必要的服务开启,关闭vsftp、telnet、login、SMTP/POP3、netbios、dns、dhcp,SNMPv3 以下版本等公共网络服务。
chkconfig --list #查看服务目前状况
service 服务名称 stop #当前将服务关闭
chkconfig --level 2345 服务名称 off #将不同视图下的开机自启服务关闭
2.关闭135、445等高危的网络端口
root权限:
netstat -ano #查看端口状态
在防火墙中禁用端口
iptables -A INPUT -p tcp --dport 135 -j DROP
iptables -A OUTPUT -p tcp --dport 135 -j DROP
11. 消除多余网络接口
service network status #查看哪些网口活跃期
ifconfig #查看网络配置
ifconfig 网口 stop #关闭网口
cd /etc/sysconfig/network-scripts #进入网口文件夹,可以删除不用的网口文件
12. 限制远程管理地址配置
限制指定 IP 地址范围主机的远程登录。
root权限:
vi /etc/hosts.allow
#在文件末尾添加允许远程访问的地址
sshd:IP地址或IP地址段:allow
#保存文件并退出编辑。
vi /etc/hosts.deny
#在文件末尾添加拒绝远程访问的地址
sshd:IP地址或IP地址段:deny
或sshd:all:deny
#保存文件并退出编辑。
13.设置ssh连接超时时间,不允许root远程
su
vi /etc/profile
#末尾添加
TMOUT=600
#10分钟后自动断开
vi /etc/ ssh/sshd_config
去掉#,并将yes改为no
service sshd restart 使配置生效
14.远程用户资源限制配置
su
vi /etc/security/limits_conf
加入以下内容
用户名 soft nproc 16384
用户名 hard nproc 16384
用户名 soft nofile 10240
用户名 hard nofile 65536
用户名 soft stack 10240
用户名 hard stack 32768
用户名 soft memlock unlimited
用户名 hard memlock unlimited
用户名 soft core unlimited
用户名 hard core unlimited
#soft表示警告,hard表示阻止
vi /etc/pam.d/login #编辑login文件,加入以下内容
session required pam_limits.so
#pam_limits.so加入启动文件中以确保配置生效。
15.消除无用日志
cd /var/log
find -mtime +365
rm -rf 文件名
只保留1年以内 的日志
进入/var/log/目录下 将路径下的超1年无价值日志进行删除
/var/log/secure 与安全相关的日志信息 /var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息查看各类事件的日志