2036 字
10 分钟
Linux 安全加固

Linux安全加固#

1 设备管理#

1.1 管理远程工具#

SSH协议可以有效的防止远程管理过程中的信息泄露问题,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程连接服务器软件等。
地址、账户、口令
本地---》对方
scp 文件 用户名@ip:路径
对方---》本地
scp 用户名@ip:路径/文件 .

1.2 ssh服务加固#

vim /etc/ssh/sshd_config
Port 2200
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
防火墙:
1.关闭Firewalls和selinux
2.firewall-cmd --zone=public --add-port=2200/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port
semanage port -l | grep ssh
semanage port -a -t ssh_port_t -p tcp 2200

1.3 访问控制#

①/etc/hosts.allow 白名单
②/etc/hosts.deny 黑名单
格式:
服务名:ip或ip段
即时生效的文件
sshd:192.168.137.0/24
sshd:192.168.137.
最安全的策略:
黑名单拒绝所有,白名单放行对应的服务
优先级:白名单优先级高于黑名单
黑名单:ALL:ALL

1.4 pam模块#

PAM(Pluggable Authentication Modules )是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。
PAM的文件:
/etc/pam.conf或者/etc/pam.d/ PAM配置文件
/usr/lib/security/pam_*.so 可动态加载的PAM service module
对于RedHat,其目录不是/usr/lib,而是/lib。

2 用户与口令安全#

2.1 限制系统没用的默认账户登录
passwd -l [用户名] #锁定用户
passwd -u [用户名] #解锁用户
usermod -L [用户名] #锁定用户
usermod -U [用户名] #解锁用户
2.2 root用户远程登录控制
相关文件:
/etc/ssh/sshd_config
修改参数
PermitRootLogin no
# 不允许root用户远程登录
2.3 口令生存周期
相关文件:
/etc/login.defs # 此文件配置对Root账户无效
2.3.1 修改口令生存周期
相关文件:
/etc/login.defs
#此文件即时生效
建议值:
PASS_MAX_DAYS 180 # 密码最大使用天数
PASS_MIN_DAYS 1 # 密码最小使用天数
PASS_MIN_LEN 8 # 密码最小长度
PASS_WARN_AGE 28 # 密码到期提前提醒天数
2.3.2 修改登录认证限制
相关文件:
/etc/pam.d/system-auth //配置用户身份验证、授权和账户管理的文件
Linux-PAM 嵌入式身份认证模块 --- 分层体系结构
第一层 模块层
组件 功能
☆auth 认证接口,要求并验证密码(配置登录处理功能)
account 检测是否允许访问(跟认证无关的账户检测机制)
☆password 设置并验证密码(配置口令复杂度策略)
session 配置和管理用户sesison(如果密码通过探针,就会打开一个会话,让我们跟系统交互)
第二层 应用接口层
控制标志 功能
☆required 必须success才能进行继续,即使失败用户也不会立刻获知,直到所有相关模块完成
☆requisite 必须success才能使认证继续进行
suffifient 如果失败则忽略
optinal 忽略结果,不管是否失败
第三层 应用程序,程序文件
2.3.3 查看系统是否存在空口令账户
awk -F ':' 'if{($2 == "") print $1 }' /etc/shadow
2.4 控制用户登录会话
相关文件:
/etc/login.defs
添加参数
TMOUT=300 # 会话超时时间300S
2.5 检查是否存在除root用户外UID=0的用户
awk -F ':' '($3 == 0) { print $1 }' /etc/passwd

3 禁用不必要的系统服务#

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
on/off 开启/关闭服务
--add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
--del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
--level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。
查看运行级别命令runlevel
运行级别 含义
等级表示:
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
在centos 6 中与centos 7中,chkconfig命令已经重置,现在基本用systemctl

4 安全防护#

4.1 umask权限
相关文件:
/etc/profile
修改文件参数
umask 022 # 修改umask为022
或者直接输入命令
umask 0022
# 修改umask为0022
4.2 敏感文件保护
示例文件:
/etc/passwd
/etc/shadow
相关命令:
chmod [权限] [文件/目录]
chattr [模式] [文件]
lsattr
4.3历史命令优化
在/etc/profile的文件尾部添加如下行数配置信息:
###############
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"
###################
4.4 Root操作历史
相关文件:
/etc/profile
修改参数
HISTSIZE=100 # 历史操作保存100条
4.5 修改路由信息
route add –net [目标网站] netmask [目标网段掩码] gw $gateway1
# 添加路由
route del –net 0.0.0.0 netmask 0.0.0.0 gw $gateway
# 删除默认路由
route -n //查看路由信息
4.6日志切割配置
logrotate介绍:logrotate 程序是一个日志文件管理工具用来进行日志切割和定期删除,简单来说就是将某个日志文件按照时间或大小分割成多份,删除时间久远的日志。
Logrotater日志文件切割策略
查看logrotate.conf配置:cat /etc/logrotate.conf
weekly //默认每一周执行一次rotate轮转工作
rotate 4 //保留多少个日志文件(轮转几次).默认保留四个.就是指定日志文件删除之前轮转的次数,0 指没有备份
create //自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志
dateext //这个参数很重要!就是切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式
compress //是否通过gzip压缩转储以后的日志文件,如xxx.log-20131216.gz ;如果不需要压缩,注释掉就行
include /etc/logrotate.d //导入/etc/logrotate.d/ 目录中的各个应用配置
/var/log/wtmp { //仅针对 /var/log/wtmp 所设定的参数
monthly //每月一次切割,取代默认的一周
minsize 1M //文件大小超过 1M 后才会切割
create 0664 root utmp //指定新建的日志文件权限以及所属用户和组
rotate 1 //只保留一个日志.}

5 三权分立#

三员的理解:系统管理员,安全保密管理员,安全审计员
三员之三权:废除超级管理员;三员是三角色并非三人;安全保密管理员与审计员必须非同一个人。
BMB20-2007 提出的系统管理员、安全保密管理员和安全审计员是 3 类岗位或角色,并不是指 3 个人,可以是多人。各涉密信息系统应该根据实际情况,配备合理数量的安全保密管理人员,以满足系统安全保密管理的需要。
系统管理员主要负责系统的日常运行维护工作;
安全保密管理员主要负责涉密信息系统的日常安全保密管理工作;
安全审计员主要负责对系统管理员、安全保密管理员的操作行为进行审计跟踪分析和监督检查。
useradd system
useradd audit
useradd security
Linux 安全加固
https://wangyi187.top/posts/os-19-linux-hardening/
作者
WangYi
发布于
2024-07-27
许可协议
CC BY-NC-SA 4.0