Linux系统安全及应用

文章目录

  • 一.账号安全管理
    • 1.账户管理
      • 1.1系统账号的清理
      • 1.2锁定长期不使用的账号
      • 1.3删除无用的账号
      • 1.4锁定账号文件
      • 1.5密码安全控制
      • 1.6命令历史
      • 1.7自动注销
    • 2.切换用户--su
  • 二.用户提权--sudo
    • 2.1单用户授权
    • 2.2别名方式授权
    • 2.3sudo日志
  • 三.PAM安全认证
  • 四.开机安全控制
    • 4.1BIOS引导设置
    • 4.2GRUB菜单设置
  • 五.终端及登录控制
    • 5.1限制root用户终端登录
    • 5.2禁止普通用户登录
  • 六.弱口令检测与端口扫描
    • 6.1弱口令检测
    • 6.2端口扫描
  • 总结

一.账号安全管理

当系统账户过多时,我们有时候需要有些用户不能进行某些操作,或者给一些用户设置使用期限,或者给某些用户更多的权限,这时我们就需要对账户进行一些设置。

1.账户管理

之前的文章中有介绍过账户管理,详细操作和命令可以去看下,这边就不再过多的介绍。

1.1系统账号的清理

在Linux中除了我们用户自己创建的账号之外,还会产生系统或应用程序安装过程中产生的许多其它账户,除了root用户之外,其它账号都是用来维护系统运作的,一般不允许登录系统,比如:bin、ftp、apache、mail等。它们的账户结尾都是以/sbin/nologin结尾
Linux系统安全及应用_第1张图片

在我们创建用户账号之后,当不想让这个账户进行登录shell时,我们也可以对其进行设置,让其没有权限登录。

usermod -s /sbin/nologin +用户名
[root@xiayan ~]# usermod -s /sbin/nologin csdn
[root@xiayan ~]# grep "csdn" /etc/passwd
csdn:x:1001:1001::/home/csdn:/sbin/nologin

1.2锁定长期不使用的账号

对于长期不用的账号,我们也可以对其锁定,让其无法继续登入系统。

方法一:
usermod -L    锁定
usermod -U    解锁
#usermod的锁定方式是将
方法二:
passwd -l     锁定
passwd -u     解锁
[root@xiayan ~]# passwd -l csdn
锁定用户 csdn 的密码 。
passwd: 操作成功
[root@xiayan ~]# passwd -S csdn
csdn LK 2022-04-01 0 99999 7 -1 (密码已被锁定。)
[root@xiayan ~]# passwd -u csdn
解锁用户 csdn 的密码。
passwd: 操作成功
[root@xiayan ~]# passwd -S csdn
csdn PS 2022-04-01 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@xiayan ~]# 
[root@xiayan ~]# usermod -L csdn
[root@xiayan ~]# passwd -S csdn
csdn LK 2022-04-01 0 99999 7 -1 (密码已被锁定。)
[root@xiayan ~]# usermod -U csdn
[root@xiayan ~]# passwd -S csdn
csdn PS 2022-04-01 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

1.3删除无用的账号

userdel -r +账户名 删除账号
注:一定要-r连同宿主目录一起删除
Linux系统安全及应用_第2张图片

1.4锁定账号文件

chattr +i /etc/passwd /etc/shadow    //锁定文件,包括root也无法修改
chattr -i /etc/passwd /etc/shadow    //解锁文件
lsattr /etc/passwd /etc/shadow       //查看文件锁定属性

对文件锁定

[root@xiayan ~]# chattr +i /etc/passwd   
[root@xiayan ~]# chattr +i /etc/shadow
[root@xiayan ~]# lsattr /etc/passwd /etc/shadow
----i----------- /etc/passwd            //i表示锁定,锁定后所有用户无法修改,包含root用户
----i----------- /etc/shadow
[root@xiayan ~]# 

对passwd进行锁定后,无法进行添加更改账户信息,但是可以进行密码更改。因为账户密码储存再shadow中,passwd中只有密码的占位符,并无实际意义。
但当锁定shadow文件后,添加用户的操作也将无法成功。在创建用户的同时会在shadow中生成相对应的密码信息,因shadow锁定无法创建密码信息,所以添加用户会失效。

解锁文件

[root@xiayan ~]# chattr -i /etc/passwd
[root@xiayan ~]# chattr -i /etc/shadow
[root@xiayan ~]# lsattr /etc/passwd /etc/shadow
---------------- /etc/passwd     
---------------- /etc/shadow

1.5密码安全控制

在日常生活中,我们都知道密码长的比短的可靠性高,密码中含有大小写字母数字和特殊字符的更加复杂,同时更加的安全。
在我们Linux系统中,为了提高账户的安全性,密码一般设置为包含大小写字母数字和特殊字符的18位密码。
然后定期通知用户进行密码更改,一般我们会设置密码有效期,提醒用户进行密码更改。

更改密码有效期:
chage -M 日期 + 用户
Linux系统安全及应用_第3张图片
对于还未建立的用户,比如我们即将新建一批用户时,可以更改系统的默认设置,提示用户更改密码
vim /etc/login.defs
Linux系统安全及应用_第4张图片

1.6命令历史

我们在系统操作的每一条命令,系统都会记录在宿主目录下的".bash_history"下,系统默认存储1000调历史记录。我们可以修改配置文件更改默认设置:vim /etc/profile
更改HISTSIZE的值,将HISTSIZE更改为较小的数值,系统默认为1000,可以设置为200或者更小
在这里插入图片描述
或者在退出账户时,清空历史命令记录

~/.bash_history
向.bash_history中输入一个空内容,覆盖掉原有内容
vim ~/.banshrc 编辑此文件后,每次登入系统时会自动清空历史命令记录
Linux系统安全及应用_第5张图片
用户登录系统---->加载~/.bash_profile配置文件-----> ~/.bashrc生效

1.7自动注销

当用户长时间无操作时,我们可以让其自动退出账号
vim /etc/profile
添加全局变量,设置时间300s
在这里插入图片描述

[root@xiayan ~]# vim /etc/profile
[root@xiayan ~]# source /etc/profile    //刷新下文件,同步变量

2.切换用户–su

用途:Substitute User,切换用户
格式:su - 目标用户(横杠“ - ”代表切换到目标用户的家目录)
root切换任意用户,不验证密码
普通用户切换其他用户,验证目标用户的密码
带 “ - ” 表示将使用目标用户的登录Shell环境
su操作记录:/var/log/secure

设置除root用户外其它所有用户禁止使用su命令
vim /etc/pam.d/su
Linux系统安全及应用_第6张图片此时启动PAM安全认证,除root用户外,其它用户无法使用su命令

Linux系统安全及应用_第7张图片
若要其它用户也可以使用su命令,可以将其加入wheel组

[root@xiayan ~]# gpasswd -a jie wheel
正在将用户“jie”加入到“wheel”组中
[root@xiayan ~]# su - jie
上一次登录:四 47 07:15:46 CST 2022pts/0 上
[jie@xiayan ~]$ su - csdn
密码:
最后一次失败的登录:四 47 07:15:59 CST 2022pts/0 上
[csdn@xiayan ~]$ 

二.用户提权–sudo

在进行系统操作时,有些命令只有root用户可以执行,为了避免root用户密码被更多的人知道,我们可以对普通的用户进行提权,使其可以使用root的一些权限而不用登入root账户。
在Linux中可以使用visudo或vim /etc/sudoers文件进行对用户进行提权设置。这里的/etc/sudoers文件权限为440,所以在编辑完之后需要wq!保存强制退出。

2.1单用户授权

语法格式:
用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表
可以使用通配符“ * ”号任意值和“ !”号进行取反操作;“%”用于对组的表示
方法:visudo
在这里插入图片描述

[csdn@xiayan ~]$ useradd cs             //没有使用提权命令时无法添加用户
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
[csdn@xiayan ~]$ sudo useradd cs        //使用sudo提权后可以成功添加用户
[csdn@xiayan ~]$ tail -1 /etc/passwd
cs:x:1003:1003::/home/cs:/bin/bash      //用户成功添加
[csdn@xiayan ~]$ sudo userdel cs        //刚没有给csdn用户授权userdel命令,无法使用
对不起,用户 csdn 无权以 root 的身份在 xiayan 上执行 /sbin/userdel cs。

2.2别名方式授权

用户别名的语法格式:
1 ) User Alias
用户别名:包含用户、用户组(%组名(使用%引导) )
User_Alias OPERATORS= zhangsan, tom, lisi
2) Host Alias
主机别名:主机名、IP、网络地址、其他主机别名!取反
Host_ Alias MAILSVRS=smtp, pop .
3) Cmnd Alias
命令路径、目录(此目录内的所有命令)、其他事先定义过的命令别名
Cmnd_Alias PKGTOOLS=/bin/ rpm, /usr/bin/ yum .
语法格式:
别名用户 别名主机=别名命令列表
上面用了visudo的编辑方法,这儿换个方式
方法:vim /etc/sudoers
记得此文件权限为440是只读文件,编辑后要wq!
Linux系统安全及应用_第8张图片

[jie@xiayan ~]$ sudo useradd tom
[jie@xiayan ~]$ tail -1 /etc/passwd
tom:x:1004:1004::/home/tom:/bin/bash

我们也可以使用sudo -l+用户名 查询可以使用sudo提权的命令,默认为当前用户
Linux系统安全及应用_第9张图片

2.3sudo日志

查看sudo日志有两种方法
方法一:
visudo 打开
最后行添加:Defaults logfile=var/log/sudo
将sudo日志文件放在var/log/sudo中
在这里插入图片描述

方法二:
var/log/secure查看日志文件

三.PAM安全认证

PAM(Pluggable Authentication Modules)可插拔式认证模块,是一种高效而且灵活便利的用户级别的认证方式,也是当前Linux服务器普遍使用的认证方式。PAM提供了对所有服务进行认证的中央机制,适用于login,远程登陆,su等应用系统管理员通过PAM配置文件来制定不同的应用程序的不同认证策略。
PAM工作原理:
PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_*.so
PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用模块(位于/lib64/security/下)进行安全认证。
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。、

四.开机安全控制

4.1BIOS引导设置

将第一引导设备设为当前系统所在硬盘;
禁止从其他设备(光盘、 U盘、网络)引导系统;
将安全级别设为setup,并设置管理员密码。
禁用重启热键:Ctrl+Alt+Delete 避免因用户误操作重启

4.2GRUB菜单设置

在系统开机时可以在GRUB菜单中按e进入GRUB引导设置,进入单用户模式,为了安全可以将其设置密码,无密码禁止用户进入修改参数

方法一:
grub2-mkpasswd-pbkdf2                                   //设置GRUB菜单的密码

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak        //备份源文件
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak      //备份源文件
vim /etc/grub.d/00_header
cat << EOF
set superusers="root”                                   //设置用户名为root
password_pbkdf2
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg                  //生成新的grub.cfg文件
重启系统进入GRtB菜单时,按e键将需要输入账号密码才能修改引导参数。

Linux系统安全及应用_第10张图片
Linux系统安全及应用_第11张图片

Linux系统安全及应用_第12张图片
Linux系统安全及应用_第13张图片

方法二:
grub2-setpassword

Linux系统安全及应用_第14张图片

五.终端及登录控制

5.1限制root用户终端登录

为了root账户安全,可以设置root用户禁止登入一些终端

vim /etc/securetty           
#tty7           //使用#号注释掉相应的终端
tty8 
可以使用w命令或tty查看当前用户登录的终端情况
[root@xiayan ~]# w
 00:41:20 up 16 min,  1 user,  load average: 0.07, 0.03, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.48.1     00:25    0.00s  0.05s  0.01s w
[root@xiayan ~]# tty
/dev/pts/0

tty1-tty6表示字符界面,可以用Ctrl+Alt+F1-F6切换
tty7是图形界面,用Ctrl+Alt+F7切换回图形界面
pts是所谓的伪终端或虚拟终端,具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1。

Linux系统安全及应用_第15张图片

5.2禁止普通用户登录

login程序会检查/etc/nologin文件是否存在,如果存在,则拒绝普通用户登入系统

删除/etc/nologin或者重启系统恢复正常

六.弱口令检测与端口扫描

6.1弱口令检测

Joth the Ripper一款密码分析工具,支持字典式的暴力破解; 通过对shadow文件的口令分析,可以检测密码强度;
官方网站:John the Ripper password cracker

1. 把下载好的安装包上传到Linux中
2. 解压                                
tar zxvf john-1.9.0.tar.gz               //解压工具包 
3.安装软件编译工具
yum -y install gcc gcc-c++ make          //安装软件编译工具 
4.编译安装
cd /opt/john-1.9.0/src 
make clean linux-x86-64                  
cp /etc/shadow /opt/shadow.txt           //将密码文件复制到软件同目录下
5.执行暴力破解
cd /opt/john-1.9.0/run                   
./john /opt/shadow.txt                  //执行破解
./john --show /opt/shadow.txt           //查看已破解出的账户列表

Linux系统安全及应用_第16张图片

6.2端口扫描

NMAP
NMAP是一个强大的端口扫描类安全评测工具,支持 ping 扫描、多端口检测等多种技术
官方网站:http://nmap.org/
软件安装:yum install nmap -y

命令格式:nmap [扫描类型] +扫描目标

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

查看本机TCP端口开放
Linux系统安全及应用_第17张图片
查看同网段主机存活情况
Linux系统安全及应用_第18张图片

natstat

nstsat常用选项 作用
-a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-n 以数字的形式显示相关的主机地址、端1等信息
-t 查看TCP相关的信息
-u 显示UDP协议相关的信息
-p 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)
-r 显示路由表信息
-l 显示处于监听状态的网络连接及端口信息

查看系统正在运行的TCP信息
Linux系统安全及应用_第19张图片

总结

1.在Linux系统中,账户安全尤为重要,可以通过设置18位的组合密码提高安全性,对长期不用的账户进行锁定,减少历史命令记录存储或即时清除历史命令记录。
2.su命令切换用户,不利于系统其它用户安全,所以要启用PAM认证,开启wheel组进行禁用一些用户的su命令使用权限
3.因root账户拥有最高管理权限,所以root的账户安全尤为重要,使用sudo命令提权,可以避免频繁使用root账户。
4.使用别名方式进行sudo授权,适合批量定义多用户或组的提权
5.开机GRUB设置密码,建议使用grub2-setpassword,简单方便

你可能感兴趣的:(linux,运维,云计算)