Linux 系统和安全


1.前言

  作为一个开放源代码的操作系统,Linux 服务器以其安全、高效和稳定的显著优势而得以广泛应用。下面主要从账户安全、系统引导、登录控制等角度演示如何优化 Linux 系统的安全性。

2.账号安全与控制

2.1 将非登录用户的 Shell 设为 /sbin/nologin

grep "/sbin/nologin" /etc/passwd
usermod -s /sbin/nologin testuser

2.2 锁定长期不使用的账号

usermod -L testuser(-U 解锁)
passwd -l testuser(-u 解锁)

2.3 删除无用账号

userdel testuser

2.4 锁定账号文件 passwd、shadow

chattr +i /etc/passwd /etc/shadow	#锁定文件
chattr -i /etc/passwd /etc/shadow	#解锁文件
lsattr ...	#查看文件属性

示例:

[root@c7-1 ~]#touch test
[root@c7-1 ~]#lsattr test 
---------------- test
[root@c7-1 ~]#chattr +i test 
[root@c7-1 ~]#echo "123456" >> test 
-bash: test: 权限不够
[root@c7-1 ~]#lsattr test 
----i----------- test
[root@c7-1 ~]#chattr -i test 
[root@c7-1 ~]#echo "123456" >> test 
[root@c7-1 ~]#cat test 
123456
[root@c7-1 ~]#lsattr test 
---------------- test

2.5 设置密码有效期

#新建用户遵循此规则,密码有效期为 30 天或 90 天
vim /etc/login.defs
修改 PASS_MAX_DAYS 30/90	

#修改已存在的用户密码有效天数,chage -l user 查看
chage -M 30/90 testuser

#强制用户下次登录时修改密码
chage -d 0 testuser

2.6 历史命令设置

#永久减少记录的命令条数
vim /etc/profile	#第46行(末行输入 :46| 跳转)
HISTSIZE=10	或者	export HISTSIZE=10

source /etc/profile	#使配置文件永久生效

#登录时自动清空命令历史
vim ~/.bash_logout
history -c 			#该命令临时清除历史命令

#手动清除存放历史命令的配置文件
echo > ~/.bash_history

#重启永久清除历史命令
vim ~/.bashrc
echo > ~/.bash_history

2.7 设置终端自动注销

vim ~/.bash_profile
export TMOUT=600	#设置无操作 600 秒后终端自动注销

2.8 su 命令管理

su(switch user)命令将有效用户 id 和组 id 更改为 user 的 id。单个 - 视为 -l。如果未指定 user,将默认为 root。
格式:

su [选项] [-] [USER [参数]...]
参数含义
-m / -p不重置环境变量
-g指定主组
-G指定一个辅助组
- / -l使 shell 成为登录 shell
-c使用 -c 向 shell 传递一条命令
-f向 shell 传递 -f 选项(csh 或 tcsh)
-s若 /etc/shells 允许,则运行 shell

示例:

[root@c7-1 ~]#su - syhj
上一次登录:日 822 13:07:23 CST 2021pts/1 上
[syhj@c7-1 ~]$exit
登出
[root@c7-1 ~]#su syhj
[syhj@c7-1 /root]$exit
exit
[root@c7-1 ~]#su - syhj
上一次登录:日 822 16:27:30 CST 2021pts/2 上
[syhj@c7-1 ~]$su -c ls root
密码:
test3  test4
[syhj@c7-1 ~]$whoami
syhj
[syhj@c7-1 ~]$pwd
/home/syhj
# su 切换用户更换了用户身份,但是 shell 仍然是当前用户 shell;su - 不仅更换用户也更换 shell

(1) 限制使用 su 命令的用户

#将允许使用 su 命令的用户加入 wheel 组
#启用 pam_wheel 认证模块
gpasswd -a user1 wheel	#将 user1 用户加入 wheel 组里
grep "wheel" /etc/group
gpasswd -d user1 wheel	#从 wheel 组中删除 user1 用户

vim /etc/pam.d/su
auth            sufficient      pam_rootok.so
auth	   		required        pam_wheel.so  use_uid		#去掉注释开启此模块
#启用 pam wheel 认证以后,未加入到 wheel 组内的其他用户将无法使用 su 命令,尝试进行切换时将提示"拒绝权限",从而将切换用户的权限控制在最小范围内。
#如果注释第一行,开启第二行,表示只有 wheel 组内的用户才能使用 su 命令,root 用户也被禁用 su 命令。

tail -f /var/log/secure	#查看安全日志文件

(2) PAM 安全认证

#通过 pam 模块防止暴力破解 ssh
vim /etc/pam.d/sshd
#在第一行下面添加
auth	required		pam_tally2.so	deny=3	unlock_time=600	even_deny_root	root_unlock_time=1200
#说明:尝试登陆失败超过 3 次,普通用户 600 秒解锁,root 用户 1200 秒解锁

#sudo机制提升权限
vim /etc/sudoers
......
%wheel  ALL=(ALL)       ALL		# % 代表用户组的意思,ALL 代表所有主机名,这个配置表示 wheel 组成员有和 root 用户一样的最高权限
......

#示例
useradd zhangsan
echo "123456" | passwd --stdin zhangsan
su - zhangsan
useradd lisi	#创建失败,权限不足
exit

vim /etc/sudoers
zhangsan kgc=(root) /usr/sbin/useradd,/usr/sbin/ifconfig	
#张三用户获得了 useradd 命令的使用权限,sudo useradd lisi 成功
#张三用户获得 ifconfig 命令权限,sudo ifconfig ens33:0 192.168.10.50/24
Host_Alias MYHOSTS = kgc,localhost
User_Alias MYUSERS = lisi,wangwu	#也可以加组
Cmnd_Alias MYCMNDS= /usr/sbin/useradd,/usr/sbin/usermod,/usr/bin/rm,/usr/bin/passwd,!/sbin/init,!/sbin/reboot,!/usr/sbin/poweroff
MYUSERS MYHOSTS=MYCMNDS		#调用别名

su - lisi
sudo useradd wangliu		#可以添加用户,输入密码

vim /etc/sudoers
MYUSERS MYHOSTS=NOPASSWD:MYCMNDS
#配置此模块后再创建用户不需要输入密码

sudo reboot/init/poweroff	#没有权限

#定义使用 rm 命令需要输入密码
Cmnd_Alias MYCMNDS = PASSWD:/usr/sbin/rm

#启用 sudo 操作日志
visudo
Defaults logfile = "/var/log/sudo"	

tail -f /var/log/sudo

3.系统引导与登录控制

3.1 开关机安全控制

(1) 调整 BIOS 引导设置

  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全基本设为 setup,并设置管理员密码

(2) GRUB限制(以 centos7 为例)

grub2-mkpasswd-pbkdf2	#生成加密算法口令,从 grub.pbkdf2.sha512 开始
cd /boot/grub2/ && cp grub.cfg grub.cfg.bak && cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
#备份原 grub.cfg 和 00_header 配置文件

vim /etc/grub.d/00_header
#在最后添加如下内容,shift + G 可以跳转到文档末尾
cat << EOF
set superusers="root"
password pbkdf2 root grub.pbkd2.sha512...........		#上面生成的一长串加密算法口令
EOF
#保存退出

grub2-mkconfig -o /boot/grub2/grub.cfg	#生成新的 grub.cfg 配置文件
init 6	#重启虚拟机
在 VMware 虚拟机界面按 e 进入编辑,需要输入用户和密码(root <自己设的密码>)
进入内核文件菜单

3.2 终端登录安全控制

(1) 限制 root 只能在安全终端登录

vim /etc/securetty
......
tty1		#图形界面
tty2-tty6	#字符界面
禁止从哪个终端登录就将其注释掉
#tty*

(2) 禁止普通用户登录

touch /etc/nologin		#建立该文件后普通用户不可登录系统
rm -rf /etc/nologin		#删除文件即可恢复正常

4.弱口令检测

通过 JR 软件(John the Ripper)检测口令强度

  • JR 是一款密码分析工具,支持字典式的暴力破解
  • 通过对 shadow 文件的口令分析,可以检测密码强度
  • 官方网站: http://www.openwall.com/john/

操作顺序:

安装 JR 工具 -> 检测弱口令账号 -> 密码文件的暴力破解

示例:

#网络下载工具包
wget http://www.openwall.com/john/j/john-1.8.0.tar.gz 
#解压工具包
tar zxvf john-1.8.0.tar.gz -C /opt
#安装编译工具
yum -y install gcc gcc-c++ make
#进行编译安装
cd /opt/john-1.8.0/src && make clean linux-x86-64
#准备待破解的密码文件
cp /etc/shadow /opt/shadow.txt
#执行暴力破解
cd /opt/john-1.8.0/run
/opt/john-1.8.0/run/john /opt/shadow.txt
#查看已破解出的账户列表
/opt/john-1.8.0/run/john --show /opt/shadow.txt
#使用密码字典文件
> john.pot	#清空已破解的账户列表,以便重新分析
#使用指定的字典文件 password.lst 进行破解
./john --wordlist=./password.lst /opt/shadow.txt
#手动添加密码
vim password.lst

5.端口扫描 – nmap

nmap 是一个强大的端口扫描类安全评测工具,支持 ping 扫描、多端口检测等多种技术。

# nmap 软件包安装
rpm -qa | grep nmap
yum -y install nmap

格式:

nmap [扫描类型] [选项] [扫描目标]

常用参数选项:

-p:指定扫描的端口
-n:禁用反向 DNS 解析(加快扫描速度)
-sS:TCP 的 SYN 扫描(半开扫描),只向目标发出 SYN 数据包,如果收到 SYN/ACK 响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放
-sT:TCP 连接扫描,这是完整的 TCP 扫描方式(默认扫描类型),用来建立一个 TCP 连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放
-sF:TCP 的 FIN 扫描,开放的端口会忽略这种数据包,关闭的端口会回应 RST 数据包。许多防火墙只对 SYN 数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间接检测防火墙的健壮性
-sU:UDP 扫描,探测目标主机提供哪些 UDP 服务,UDP 扫描的速度会比较慢
-sP:ICMP 扫描,类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描
-P0:跳过 ping 检测,这种方式认为所有的目标主机是存活的,当对方不响应 ICMP 请求时,使用这种方式可以避免因无法 ping 通而放弃扫描

TCP 控制位类型:

SYN  建立连接
ACK  确认数据包传输状况
FIN  关闭连接
PSH  推送位
RST  重置
URG  紧急

示例:

#分别查看本机开放的 TCP 端口、UDP 端口
nmap -sT 127.0.0.1
nmap -sU 127.0.0.1
#检测 192.168.80.0/24 网段有哪些主机提供 HTTP 服务
nmap -p 80 192.168.80.0/24
#检测 192.168.80.0/24 网段有哪些存活主机
nmap -n -sP 192.168.80.0/24 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值