0


第十章 Linux系统安全及应用

一、账号安全控制

1、账号安全基本措施

(1)系统账号清理

a、将非登录用户的Shall设为/sbin/nologin

usermod -s/sbin/nologin 用户名

b、锁定长期不使用的账号

usermod -L 用户名 passwd -l 用户名

passwd -S 用户名

c、删除无用的账号

userdel[-r]用户名

d、锁定账号文件passwd、shadow

chattr +i/etc/passwd/etc/shadow(锁定文件并查看状态)

isattr /etc/passwd/etc/shadow

chattr -i/etc/passwd/etc/shadow(解锁文件)

账号安全管理
禁止程序用户登录 usermod -s /sbin/nologin 用户名
锁定禁用长期不使用的用户 passwd -l 用户名 usermod -L 用户名 #查看锁定账号状态 passwd -S 用户名
删除无效用户 userdel -r 用户名
禁止账号和密码的修改 chattr +i /etc/passwd /etc/shadow #查看锁定文件状态 lsattr 文件名

(2)密码安全控住

a、设置密码有效期

b、要求用户下次登录时修改密码

[root@localhost~]# vi/etc/login.defs(修改密码配置文件适用于新建用户)

PASS_MAX_DAYS 30

[root@localhost~]# chage-M 30 lisi(适用于已有用户)

[root@localhost~]# cat/etc/shadow | grep lisi

[root@localhost~]# chage -d 0 zhangsan(强制在下次登录时更改密码)

[root@localhost~]# cat /etc/shadow | grep zhangsan(shadow文件中的第三个字段被修改为0)

密码安全管理
设置密码有效期 chage -M 天数 用户名 #针对已存在的用户,天数为 99999 表示为永不过期
vim /etc/login.defs --> PASS_MAX_DAYS 天数 #针对新建的用户
强制用户下一次登录修改密码 chage -d 0 用户名

(3)命令历史限制

a、减少记录的命令条数

b、登录时自动清空命令历史

(4)终端自动注销

a、闲置600秒后自动注销

历史命令安全管理
查看历史命令 history
限制历史命令数量 vim /etc/profile --> export HISTSIZE=XX --> source /etc/profile
清空历史命令 history -c #临时清空
vim /etc/profile --> > ~/.bash_history

2、使用su命令切换用户

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

a、将允许使用su命令的用户加入wheel组

b、启用pam_wheel认证模块

限制su切换用户
1)将信任的用户加入到wheel组中 gpasswd wheel -a 用户名
2)修改su的PAM认证配置文件 vim /etc/pam.d/su -> 开启 auth required pam_wheel.so use_uid 的配置

3、Linux中的PAM安全认证

(1)su命令的安全隐患

a、默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险

b、为了加强su命令的使用控制,可借助于PAM认证模版,只允许极个别用户使用su命令进行切换

(2)PAM(Pluggable Authentication Modules)可插拔式认证模版

a、是一种高效而灵活便利的用户级别的认证方式

b、也是当前Linux服务器普遍使用的认证方式

4、PAM认证原理

(1)一般遵循的顺序

a、Service(服务)—>PAM(配置文件)—>pam_*.so

(2)首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下)进行安全认证

(3)不同的应用程序对应的PAM模块是不同的

5、PAM认证的构成

(1)查看某个程序是否支持PAM认证,可以使用ls命令

实例:查看su是否支持PAM模块认证

(2)查看su的PAM配置文件:cat/etc/pam.d/su

a、每一行都是一个独立的认证过程

b、每一行可以区分为三个字段

  • 认证类型
  • 控制类型
  • PAM模块及其参数

6、PAM安全认证流程

(1)控制类型也称做Contril Flags,用于PAM验证类型的返回结果

a、required验证失败时仍继续,但返回Fail

b、requiste验证失败则立即结束整个验证过程,返回Fail

c、suffcient验证成果则立即返回,不在继续,否则忽略结果并继续

d、optional不用于验证,只显示信息(通常用于session类型)

7、使用sudo机制提升权限

(1)su命令的缺点
(2)sudo命令的用途及用法

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

b、用法:sudo 授权命令

(3)配置sudo授权

a、visudo或者vi /etc/sudoers

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

sudo提权
visudo vim /etc/sudoers (要用 wq! 强制保存)
#用户/组授权
用户名 主机名=程序列表 #命令要用绝对路径表示,支持使用通配符 * 表示所有, ! 表示取反
%组名 主机名=程序列表
用户名 主机名=NOPASSWD: 程序列表 #NOPASSWD: 表示sudo不用密码验证

su切换用户

创建用户及密码

(4)查看sudo操作记录

a、需启用Defaults logfile 配置

b、默认日志文件:/var/log/sudo

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

(5)查询授权的sudo操作

a、sudo -l

别名设置
User_Alias 大写别名=用户1, 用户2, ...
Host_Alias 大写别名=主机名1, 主机名2, ...
Cmnd_Alias 大写别名=命令路径1, 命令路径2, ...
用户别名 主机别名=命令别名

#设置sudo日志路径
Defaults logfile = "/var/log/sudo.log"

sudo -l #普通用户查看有哪些sudo权限

二、系统引导和登录控制

1、开关机安全控制

(1)调整BIOS引导设置

a、将第一引导设备设为当前系统所在硬盘

b、禁止从其他设备(光盘、U盘、网络)引导系统

c、将安全级别设为setup,并设置管理员密码

(2)GRUB限制

a、使用grub2-mkpasswd-pdkbf2生成密钥

b、修改/etc/grub.cfg配置文件

c、生成新的grub。cfg配置文件

服务器一般从第一次开机一直到天荒地老使用设备寿命到达时 (除了中途维护保养)

生成密钥信息

修改文件前先备份

先进去su的PAM认证配置文件 :用户名和密钥的设置中间部分

2、终端登录安全控制

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

a、安全终端配置:**/etc/securetty**

(2)禁止普通用户登录

a、建立/etc/nologin文件

b、删除nologin文件或重启后立即恢复正常

三、弱口令检测

1、系统弱口令检测

(1)Joth the Ripper,简称为JR

a、一款密码分析工具,支持字典式的百里破解

b、通过对shadow文件的口令分析,可以检测密码强度

c、官方网站:http://www.openwall.com/john/

(2)安装JR工具

a、安装方法 make clean 系统类型

b、主程序文件为john

(3)检测弱口令账号

a、获得Linux/unix服务器的shadow文件

b、执行john程序,将shadow文件作为参数

(4)密码文件的暴力破解

a、准备好密码字典文件,默认为password.lst

b、执行john程序,结合--wordlist=字典文件

四、端口扫描

1、网络端口扫描

(1)NMAP

a、一款强大的网络扫描、安全检测工具

b、官方网站:http://nmap.org/

c、CentOS 7.3光盘中安装包nmap-6.40-7.el.x86_64.rpm

(2)NMAP的扫描
(3)常用的扫描类型

a、-sS、-sT、-sF、-sU、-sP、-PO

b、分别查看本机开放的TCP端口、DUP端口

nmap -sT 127.0.0.1

nmap -sU 127.0.0.1

c、检测192.168.4.0/24网段哪些主机提供FTP服务

nmap -p 21 192.168.4.0/24

d、检测192.168.4,0/24网段有哪些存活主机

nmap -n-sP 192.1968.4,0/24

**如何查看进程是否已经开启?
systemctl status 进程名
ps aux/-elf | grep 进程名
netstat/ss -lntup | grep 进程名/:端口
lsof -i :端口 **

**如何通过端口查看进程号?
netstat -lntup | grep :端口
ss -lntup | grep :端口
lsof -i :端口 **

对新服务器做过哪些初始化操作?
安装操作系统
设置网络,比如 网卡IP、网关、路由、DNS服务器地址、双网卡绑定bond(在物理机环境中使用)
设置主机名 hostnamectl set-hostname
设置ntp时间同步 ntpd chronyd ntpdate
设置防火墙规则 iptables firewalld
关闭selinux setenforce 0 /etc/selinux/config
精简开机启动服务 systemctl enable crond rsyslog network sshd
设置yum仓库镜像源 /etc/yum.repos.d/
磁盘使用lvm或raid
升级linux内核

对服务器初始化后做过哪些安全加固?
禁止 root 用户远程登陆 /etc/ssh/sshd_config --> PermitRootLogin no
修改 ssh 端口号 /etc/ssh/sshd_config --> Port
普通用户限制 su 切换用户 /etc/pam.d/su
普通用户通过 sudo 授权管理 visudo /etc/sudoers
锁定关键系统文件 chattr +i
设置历史命令保存条数 /etc/profile HISTSIZE
设置账户超时时间 /etc/profile TMOUT
限制用户的登录次数 /etc/pam.d/sshd
设置用户密码强度 /etc/pam.d/system-auth
接入堡垒机或跳板机

标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/w1251427056/article/details/137961965
版权归原作者 w王大头w 所有, 如有侵权,请联系我们删除。

“第十章 Linux系统安全及应用”的评论:

还没有评论