CentOS7 系统安全及应用

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: CentOS7 系统安全及应用

CentOS7 系统安全及应用



一、账户安全基本措施


1.系统账户清理

2.密码安全控制

3.命令历史限制


二、用户切换及提权


1.使用 Su 命令切换用户

2.使用 Sudo 机制提升权限


三、系统引导和登录控制


1.开关机安全控制

2.终端登录安全控制


一、账户安全基本措施



1.系统账户清理


1)将非登录用户的 Shell 设为 /sbin/nologin(/sbin/nologin:禁止终端登录)


[root@localhost ~]# grep "/sbin/nologin$" /etc/passwd | wc -l
[root@localhost ~]# grep "/sbin/nologin$" /etc/passwd | awk -F: '{print $1}' > nologin.txt
[root@localhost ~]# cat nologin.txt


image.png


2)锁定长期不使用的账号(例如一些用户长期不使用,但不确认是否删除)


[root@localhost ~]# useradd zhangsan
[root@localhost ~]# echo "123123" | passwd --stdin zhangsan
[root@localhost ~]# usermod -L zhangsan
[root@localhost ~]# passwd -S zhangsan
[root@localhost ~]# usermod -U zhangsan
[root@localhost ~]# passwd -S zhangsan


image.png


3)锁定账号文件 /etc/passwd /etc/shadow


  • 例如:服务器账户已固定,不再进行更改。可锁定


[root@localhost ~]# chattr +i /etc/passwd /etc/shadow         #锁定
[root@localhost ~]# lsattr /etc/passwd /etc/shadow            #查看文件状态
[root@localhost ~]# useradd wangwu                  #创建用户测试
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow         #解锁
[root@localhost ~]# useradd wanguw                  #再次创建用户测试
[root@localhost ~]# echo "123123" | passwd --stdin wangwu


image.png


2.密码安全控制


1)设置密码有效期(默认天数为 99999)


  • 适用于新建用户,密码有效期 30 天:


[root@localhost ~]# vim /etc/login.defs
找到:
PASS_MAX_DAYS   99999
改为:
PASS_MAX_DAYS   30


适用于已有用户:


[root@localhost ~]# chage -M 30 zhangsan


2)强制在下次登录时更改密码


[root@localhost ~]# chage -d 0 zhangsan


重新打开一个终端使用 zhangsan 用户登录


image.png


3.命令历史限制


1)减少记录的命令条数(默认条数是 1000 条)


[root@localhost ~]# vim /etc/profile
找到:
HISTSIZE=1000
改为:
HISTSIZE=5
[root@localhost ~]# source /etc/profile         #执行脚本
[root@localhost ~]# history               #查看历史记录


image.png


2)终端自动注销


  • 在 Bash 终端环境中可以设置一个限制超时时间,当超过指定时间没有任何操作自动注销终端。


[root@localhost ~]# echo "export TMOUT=30" >> ~/.bash_profile   #终端30秒不做任何操作将自动注销
[root@localhost ~]# source ~/.bash_profile              #使其生效


[root@localhost ~]# 等待输入超时:自动登出


image.png



  • 验证完后,将终端自动注销时间改为 600 秒。


二、用户切换及提权



1.使用 Su 命令切换用户


1)用途及用法


  • 用途:Substitute User,切换用户。


格式:su - 目标用户            # 带 - 选项表示将使用目标用户的登录 Shell 环境


2)密码验证


  • root --> 任意用户, 不验证密码。


  • 普通用户 --> 其他用户,验证目标用户的密码。


image.png


[root@localhost ~]# whoami          # 查看当前登录用户名


3)限制使用 Su 命令的用户


  • 默认都可以使用 Su 命令,防止密码穷举危险,只允许少量用户使用。


启用 pam_wheel 认证模块:


[root@localhost ~]# vim /etc/pam.d/su
#%PAM-1.0
auth        sufficient  pam_rootok.so                 # 默认就有
auth        required    pam_wheel.so use_uid          # 将前面 # 去掉
[root@localhost ~]# grep wheel /etc/group
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ su -
[zhangsan@localhost ~]$ exit


不能切换到 root 用户,需要将用户 tom 加入到 wheel 组中:


[root@localhost ~]# gpasswd -a ajbn wheel
[root@localhost ~]# su - ajbn
[zhangsan@localhost ~]$ su -


image.png


4)查看 Su 操作记录


  • 安全日志文件:/var/log/secure


[root@localhost ~]# tail /var/log/secure


image.png


5)Su 命令的缺点


  • 知道 root 密码的用户越少越安全。


2.使用 Sudo 机制提升权限


  • sudo:普通用户拥有一部分管理权限,又不需要知道 root 密码。


1)Sudo 命令的用途及用法


  • 用途:以其他用户身份(如 root)执行授权的命令。


格式:sudo 执行的授权命令


2)配置 Sudo 授权 /etc/sudoers


  • 因为该文件的默认权限为 440,所以在编辑(visudo 或 vi /etc/sudoers )完后需在输入模式中使用 w! 保存。


记录格式:用户 主机名=命令程序列表


  • 用户:用户名或 %组名(组内所有用户)


  • 主机名:一般为 localhost 或实际主机名。


  • 命令列表:命令的绝对路径,多命令用 , 号分割。


分别使用 zhangsan 用户和 wangwu 用户进行测试:


[root@localhost ~]# su - wangwu
[wangwu@localhost ~]$ sudo /bin/df -hT | grep '/$'
[wangwu@localhost ~]$ exit
[root@localhost ~]# su - zhangsan
[zhangsan@localhost ~]$ sudo /bin/df -hT | grep '/$'


image.png


[zhangsan@localhost ~]$ sudo -l             # 查看用户对应权限


image.png


使 wheel 组成员不需验证密码即可执行任何命令:


[root@localhost ~]# vim /etc/sudoers
将:
# %wheel  ALL=(ALL)       NOPASSWD: ALL
改为:
%wheel  ALL=(ALL)       NOPASSWD: ALL


使 wangwu 可使用 df 命令:


wamgwu  localhost=/bin/df                 # 加上这个表示可以执行 /bin/df 命令


image.png


可以使用通配符 * 和 取反符号 !


[root@localhost ~]# vim /etc/sudoers
wangwu localhost=/usr/sbin/*,!/usr/sbin/useradd,/usr/bin/cat /etc/shadow


  • 可以使用 /usr/sbin 下所有命令,但不能创建用户。


  • 可以查看 /etcshadow 文件内容。


3)查看 Sudo 操作记录


  • 需启用 Defaults logfile 配置(默认日志文件:/var/log/sudo)


启用日志配置以后,Sudo 操作过程才会被记录


在第二行添加:


在第二行添加:
Defaults logfile = "/var/log/sudo"


[root@localhost ~]# su - wangwu
[wangwu@localhost ~]$ sudo /usr/sbin/ss -anpt | grep 22
[wangwu@localhost ~]$ sudo /usr/sbin/useradd Coco
[wangwu@localhost ~]$ sudo /usr/bin/cat /etc/shadow


image.png


[root@localhost ~]# tail /var/log/sudo            # 查看日志


image.png


三、系统引导和登录控制



  • 服务器一般用远程登录的方式进行管理,而本地引导和终端登录过程被忽视,会留下安全隐患;


  • 因此需要加强对其他用户的非授权介入的安全管理。


1.开关机安全控制


1)设置 BIOS 密码


  • 防止 U 盘破解 root 密码,从网络启动等;重启虚拟机一直按 F2,进入如下:


image.png


image.png


2)禁用重启热键 Ctrl+Alt+Del


  • 避免因用户误操作导致重启。


在不影响此文件的前提下禁用此热键(注销此服务)


[root@localhost ~]# systemctl mask ctrl-alt-del.target
Created symlink from /etc/systemd/system/ctrl-alt-del.target to /dev/null.


重新加载 systemd 配置:


[root@localhost ~]# systemctl daemon-reload


3)设置 GRUB 引导密码


  • 使用 grub2-mkpasswd-pbkdf2 生成密钥;pbkdf 算法加密更安全。在 /etc/grub.d/00_header 配置文件中,添加用户密码。


  • 注意:实验中每个人生成的密码不一样。


[root@localhost ~]# grub2-mkpasswd-pbkdf2         # 生成密钥
输入口令:                               # 设置密码
Reenter password:                       # 再次输入密码


image.png


修改 /etc/grub.d/00_header 文件中,添加密码记录


[root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
[root@localhost ~]# vim /etc/grub.d/00_header
在末尾添加:
cat << EOF
set superusers="root"
password_pbkdf2 root
PBKDF2 hash of your password is
grub.pbkdf2.sha512.10000.922DA3FC35888D451ED9B45347F3E2C3F413BD1B41116622655D4B701DE26F5000D7FC7B9C26E4837BC58F16745FAF1E4A349AC39FE68D7AE52FC007732CCEDD.2E6B1CE241AD55D48639FD4EC0B2CA5ACB5620A530C0983B653F8CE8FF54DBBE071E152A2A98E0B567A6AF00B1C340B87C150752A25C80B685C2CED89911D20E
EOF


image.png


生成新的 grub.cfg 配置文件


[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg


image.png


验证:重启进入 grub 菜单,按 E 键将无法修改引导参数



image.png


2.终端登录安全控制


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


[root@localhost ~]# sed -i '/tty5/c#tty5' /etc/securetty
[root@localhost ~]# sed -i '/tty6/c#tty6' /etc/securetty
[root@localhost ~]# sed -n '/#/p' /etc/securetty


image.png


image.png


2)禁止普通用户登录(建议在服务器维护期间临时使用)


  • 创建 /etc/nologin 文件,login 程序会检查此文件是否存在。如果存在则拒绝普通用户登录系统(root 不受限制)`


[root@localhost ~]# touch /etc/nologin


使用普通用户在终端登录验证:


image.png


删除 /etc/nologin 文件或重启后即恢复正常:


[root@localhost ~]# rm -rf /etc/nologin


删除后再使用普通用户进行验证:


image.png



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7月前
|
网络协议 安全 Linux
linux系统安全及应用——端口扫描
linux系统安全及应用——端口扫描
88 0
|
4月前
|
应用服务中间件 Linux 网络安全
如何在 CentOS 6.5 上使用 Unicorn 和 Nginx 部署 Rails 应用
如何在 CentOS 6.5 上使用 Unicorn 和 Nginx 部署 Rails 应用
58 0
|
7月前
|
消息中间件 安全 Shell
系统安全及应用
系统安全及应用
|
7月前
|
Linux
百度搜索:蓝易云【centos系统应用日志文件被删,空间无法释放怎么办】
通过以上方法,你应该能够解决应用日志文件被删除但空间无法释放的问题,并恢复磁盘空间。
77 1
|
Linux Docker Python
centos 启动停止docker,并部署 flask 容器化应用
centos 启动停止docker,并部署 flask 容器化应用
105 0
|
安全 Shell 数据安全/隐私保护
系统安全及应用
系统安全及应用
90 0
|
安全 Linux 数据安全/隐私保护
|
安全 网络协议 Linux
系统安全应用
系统安全应用
376 0
|
缓存 Java Linux
Centos应用“Cannot allocate memory”的解决方案
Centos应用“Cannot allocate memory”的解决方案
511 0
Centos应用“Cannot allocate memory”的解决方案
|
Java Linux 网络安全
Centos7 systemctl 启动 Java 应用
本文主要记录在 Centos7 系统上部署启用 Java 的 jar 包应用服务,包含开放防火墙的指定端口,配置脚本自启动等。
795 0