Linux安全加固

1 设备管理

1.1 管理远程工具

1
2
3
4
5
6
7
8
9
10
11
12
管理远程工具
SSH协议可以有效的防止远程管理过程中的信息泄露问题,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程连接服务器软件等。
默认状态下,SSH服务主要提供两个服务功能:
① 提供类似Telnet远程连接服务器的服务,即上面提到的SSH服务(具有数据加密功能);
② 另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据,提供更安全的SFTP服务(vsftp,proftp)。

+ scp
本地 ---》对方
scp 1.txt demo@192.168.137.199:/home/demo/Desktop

对方 ---》本地
scp demo@192.168.137.199:/home/demo/Desktop/ping.sh .

1.2 ssh服务加固

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
+ 如何进行限制IP地址的爆破攻击
- ssh服务加固
1.登录失败处理功能
2.防火墙 --- firewall、iptables
3.黑白名单
4.从服务自身进行配置 --- 1.改端口;2.限制IP

+ 修改ssh服务端口
vim /etc/ssh/sshd_config
Port 48935
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

systemctl restart sshd

semanage port -a -t ssh_port_t -p tcp 48935
semanage port -l | grep ssh

firewall-cmd --zone=public --add-port=48935/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

+ 限制IP
vim /etc/ssh/sshd_config
AllowUsers 用户名@主机IP/IP段
- 允许哪些ip能够使用哪些用户
DenyUsers 用户名@主机IP/IP段
- 拒绝哪些ip能够使用哪些用户

+ 不允许以root身份登录到系统
vim /etc/ssh/sshd_config
PermitRootLogin no

1.3 访问控制

1
2
3
4
5
6
7
8
9
10
添加条目格式:
①/etc/hosts.allow 白名单
sshd:[IP] [IP段]
②/etc/hosts.deny 黑名单
sshd:[IP] [IP段]
sshd:192.168.140.1
sshd:192.168.140.
ALL:ALL
- 黑名单拒绝所有,白名单允许需要的服务 --- 最安全的策略
- 优先级 --- 白名单优先级高于黑名单

2 用户与口令安全

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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账户无效

修改口令生存周期
相关文件:
/etc/login.defs
#此文件即时生效
建议值:
PASS_MAX_DAYS 90 # 密码最大使用天数
PASS_MIN_DAYS 2 # 密码最小使用天数
PASS_MIN_LEN 8 # 密码最小长度
PASS_WARN_AGE 7 # 密码到期提前提醒天数

2.4 修改登录认证限制
相关文件:/etc/pam.d/system-auth 配置用户身份验证、授权和账户管理的文件
- LINUX-PAM 嵌入式身份认证模块
第一层 模块层
组件 功能
auth 认证接口,要求并验证密码 —- 登录处理功能
account 检测是否允许访问
password 设置并验证密码 —- 密码复杂度
session 配置和管理用户sesison
1
第二层 应用接口层
控制标志 功能
**required ** 必须success才能进行继续,即使失败用户也不会立刻获知,直到所有相关模块完成 —- 登录处理功能
**requisite ** 必须success才能使认证继续进行 —- 密码复杂度
suffifient 如果失败则忽略
optinal 忽略结果,不管是否失败
1
第三层 应用程序 程序文件
1
2
3
4
5
6
7
8
9
密码复杂度
建议值:
password requisite pam_pwquality.so retry=3 difok=5 minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1
- 检查密码强度的模块 允许重试机会 新密码中允许的最大不同字符数 最小长度 小写至少一个 大小至少一个 数字至少一个 特殊字符至少一个

登录失败锁定
建议值:
auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800 root_unlock_time=1800
- 账户锁定和计数模块 当遇到错误时的处理方式 达到5次,账户锁定 如果账户被锁定,将等待1800秒解锁 root解锁时间
1
2
3
4
5
6
7
8
9
10
2.5 控制用户登录会话
相关文件:/etc/profile
添加参数
TMOUT=1800 # 会话超时时间1800s

2.6 查看系统是否存在空口令账户
awk -F: '{if($2 == "") print $1 }' /etc/shadow

2.7 检查是否存在除root用户外UID=0的用户
awk -F: '($3 == 0) { print $1 }' /etc/passwd

3 禁用不必要的系统服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
on/off 开启/关闭服务
--add   增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
--del   删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
--level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关闭。


查看运行级别命令runlevel
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

4 安全防护

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
4.1 umask权限
相关文件:
/etc/profile
修改文件参数
umask 022 # 修改umask为022
或者直接输入命令
umask 0022# 修改umask为0022

4.2 敏感文件保护
示例文件:
/etc/passwd
/etc/shadow
相关命令:
chmod [权限] [文件/目录]
chattr [模式] [文件]

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 [网关/下一跳地址]
# 添加路由
route del –net [目标网站] netmask [目标网段掩码] gw 网关/下一跳地址
# 删除默认路由

5 三权分立

1
2
3
4
5
6
7
8
9
10
11
三员的理解:系统管理员,安全保密管理员,安全审计员
三员之三权:废除超级管理员;三员是三角色并非三人;安全保密管理员与审计员必须非同一个人。
BMB20-2007 提出的系统管理员、安全保密管理员和安全审计员是 3 类岗位或角色,并不是指 3 个人,可以是多人。各涉密信息系统应该根据实际情况,配备合理数量的安全保密管理人员,以满足系统安全保密管理的需要。
系统管理员主要负责系统的日常运行维护工作;
安全保密管理员主要负责涉密信息系统的日常安全保密管理工作;
安全审计员主要负责对系统管理员、安全保密管理员的操作行为进行审计跟踪分析和监督检查。

+ 为什么要有三权分立? --- 为了能够将权限分离
security
audit
admin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
身份鉴别
a
1.用户是否都有配置密码
2.是否存在同名用户
3.是否有配置密码复杂度和周期
b
1.登录失败处理功能
2.连接超时是否配置
c
判断是否使用ssh远程连接并且是否存在telnet服务

访问控制
a
是否有三权用户

b
是否存在默认账户并且默认账户是否是默认口令

c
是否存在多余账户并已禁用

d
是否存在三权用户,是否存在最高权限用户

安全审计
a
检查rsyslog服务和auidt服务是否开启
b
1.是否有开启审计功能
- 一般有开启审计功能都会有记录日志信息并且包含事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息
2.检查是否有按照要求配置日志轮转 --- 至少存储180天以上的日志信息

入侵防范
a
是否有安装其他的软件程序

b
是否有开启高危端口
是否有开启共享服务 --- NFS/SAMBA

c
是否有配置最安全的策略
- 黑白名单