赞
踩
作为一种开放源代码的操作系统,linux服务器以其安全、高效和稳定的显著优势而得以广泛应用。本文主要从账号安全控制来加强系统安全。
用户账号,是计算机使用者的身份凭证或标识,每一个要访问系统资源的人,必须凭借其用户账号才能进入计算机
在linux系统中,除了手动创建的用户,还包括系统或程序安装过程生成的其他大量用户,除了root之外,其他用户一般是不允许登录系统的,这些用户的的登录shell通常是/sbin/nologin
[root@yzq ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
我们也可以手动将不允许登录系统的用户shell环境修改
将非登录用户的Shell设为/sbin/nolgin(usermod -s)
锁定长期不使用的账号
删除无用的账号(userdel [-r] 用户名 #-r参数表示连用户的宿主目录一并删除)
锁定账号文件passwd、shadow
passwd :
-d:删除密码,仅使用用户名即可登陆系统
-l:停止账号使用 #锁定
-u:启用已被停止的账户 #解锁
-S:显示密码信息(账户状态)是否被锁定
usermod :
-L(锁定!)
-U(解锁)
-s(指定用户的登录Shell)
对于长期不用的用户账户,若不能确定是否删除可以暂时将其锁定
[root@yzq ~]# tail -3 /etc/passwd
zhangsan:x:1001:1001::/data/zhangsan:/bin/bash
lisi:x:1002:1002::/home/lisi:/bin/bash
wangwu:x:1003:1003::/home/wangwu:/bin/bash
[root@yzq ~]# usermod -L lisi ##锁定账号
[root@yzq ~]# passwd -S lisi ##显示账号状态(是否被锁定)
lisi LK 2022-07-06 0 99999 7 -1 (密码已被锁定。)
[root@yzq ~]# usermod -U lisi ##解锁账号
[root@yzq ~]# passwd -S lisi
lisi PS 2022-07-06 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
如果服务器中的用户账号已固定,不再进行更改,还可以采取锁定账号配置的方法
chattr +i + 目标文件 #锁定文件
chattr -i + 目标文件 #解锁文件
lsattr + 目标文件 #查看文件锁定状态
passwd锁定后无法修改账号信息
shadow锁定后无法修改密码信息
解锁后可创建
[root@yzq ~]# chattr -i /etc/passwd
[root@yzq ~]# lsattr /etc/passwd
---------------- /etc/passwd
[root@yzq ~]# useradd li
useradd:无法打开 /etc/shadow
[root@yzq ~]# chattr -i /etc/shadow
[root@yzq ~]# lsattr /etc/shadow
---------------- /etc/shadow
[root@yzq ~]# useradd li
[root@yzq ~]# tail -1 /etc/passwd
li:x:1004:1004::/home/li:/bin/bash
为了降低密码被破解的风险,用户应该定期修改密码,管理员可以在服务器端限制用户密码的最大有效天数
设置密码有效期
要求用户下次登录时修改密码
可以通过chage -M +指定天数+目标用户
也可以通过vi /etc/login.defs进去登录文本文件查询修改
对于新建用户,可以修改/etc/login.defs配置文件
适用于所有用户
chage -M 30 lisi 用户李四30天后修改密码
chage -d 0 张三 强制用户张三下次登录修改密码
chage修改账号密码有效期
选项:
-m密码可改间隔期,为0时随时改
-M保持最大天数
-w警告期
-E到期时间(到期后无法登录)
-d上一次密码修改时间
-i延期时间
-l列出当前设置
shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险,只要获得用户的命令历史文件,该用户的操作将一览无余。
Bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条,通过修改/etc/profile文件中的HISTSIZE值,可以影响系统中的所有用户
减少记录的命令条数
注销时自动清空命令历史
进入/etc/profile环境变量配置文件(全局生效)中设置,保存退出后将设置生效,命令source /etc/profile,或者直接重启
history查看历史命令
进入环境变量配置文件修改设置
[root@yzq ~]# vim /etc/profile
修改用户宿主目录下的.bash_logout文件
再使用source命令重新加载识别此文件
[root@yzq ~]# source .bash_profile
history -c清空历史记录的缓存
可修改.bash_logout 中文件使机器登出时生效
vim .bash_logout 进入修改
输入想要生效的命令并保存
登出机器生效
~目录中文件
.bash_history 当前用户下保留的历史命令
.bash_profile 当前用户的环境变量
.bash_logout 用户从当前系统登出时执行的命令
.bash_profile 当前用户的环境变量
.bashrc 登录系统时加载的东西
(加载:.bash_profile——.bashrc——/etc/profile)
进入环境变量文件(/etc/profile)修改
输入export TMOUT=时间 --》闲置时间后自动注销
source /etc/profile 重新加载识别文件使修改生效
[root@yzq ~]# vim /etc/profile
[root@yzq ~]# source /etc/profile
修改并使其生效
闲置60s后自动注销
默认情况下,所有用户都可以使用su命令,从而有机会反复尝试其他用户的登录密码
[root@yzq ~]# su lisi ##root用户切换无需密码
[lisi@yzq root]$ su wangwu ##非root用户切换需密码
密码:
[wangwu@yzq root]$
为了加强su命令的控制,可以借用pam_wheel认证模块,只允许极个别用户使用su命令切换用户
在/etc/pam.d/su中第二行和第六行
2 auth sufficient pam_rootok.so
6 #auth required pam_wheel.so use_uid
a.默认状态下(第二行开启,第六行注释),允许所有用户使用su命令
b.如果开启第六行表示只有root用户和wheel组用户可以使用su命令
c.如果注释第二行,开启第六行,表示只有wheel组用户可以使用su命令,root用户也将被禁用su命令
[root@yzq ~]# gpasswd -a lisi wheel
正在将用户“lisi”加入到“wheel”组中
[root@yzq ~]# vim /etc/pam.d/su
非指定组将不允许使用su命令
[root@yzq ~]# su 123
[123@yzq root]$ su - zhangsan
密码:
su: 拒绝权限
指定组内用户可以使用su命令
[root@yzq pam.d]# cat /etc/group | grep -i "wheel"
wheel:x:10:lisi
[root@yzq ~]# su lisi
[lisi@yzq root]$ su root
密码:
[root@yzq ~]#
使用su命令切换用户的操作将会记录到/var/log/secure文件中查看
对于普通用户来说,有时需要部分管理权限,但是切换用户需要知道root密码,这样安全风险就增加了,使用sudo命令,可以避免这一点
用途:以其他用户身份(如root)执行授权的命令
用法:sudo 授权命令
sudo配置方式有以下两种(默认权限是440)
[root@yzq ~]# ll /etc/sudoers
-r--r-----. 1 root root 4328 10月 30 2018 /etc/sudoers
visudo进入修改格式
用户/组名称 主机组(主机名)= (提权的权限身份-root) 赋权的使用命令(以绝对路径的方式来写,可写多个,写多个命令加,)
使用者账户 登入者的来源主机名=(可切换的身份) 可下达的指令
root ALL=(ALL) ALL
用户lisi配置虚拟网卡ens33:1
[lisi@yzq etc]$ ifconfig ens33:1 192.168.28.200
SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作
为lisi配置权限
[root@yzq etc]# which ifconfig
/usr/sbin/ifconfig
[root@yzq etc]# visudo
`在
[root@yzq etc]# su lisi
[lisi@yzq etc]$ ifconfig ens33:1 192.168.28.200
SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作
[lisi@yzq etc]$ sudo ifconfig ens33:1 192.168.28.200
[sudo] lisi 的密码:
发现需要输入密码,继续配置
[lisi@yzq etc]$ sudo ifconfig ens33:1 192.168.28.200
[lisi@yzq etc]$ ifconfig
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.28.200 netmask 255.255.255.0 broadcast 192.168.28.255
ether 00:0c:29:9d:8d:e2 txqueuelen 1000 (Ethernet)
该文件为只读文件,需要强制保存(修改方法同visudo)
sudo 【参数选项】命令
-l列出用户在主机上可用和被禁止的命令
-v验证用户时间戳
⭐⭐-u指定以某个用户执行特定操作
-k删除时间戳
[lisi@yzq etc]$ sudo -l
用户 lisi 可以在 yzq 上运行以下命令:
(root) NOPASSWD: //usr/sbin/ifconfig
(ALL) ALL
对于已经启用sudo日志,可以从/var/log/sudo文件中查看用户的sudo操作
(1)PAM是一种高效而且灵活便利的用户级别认证方式,他也是当前Linux服务器普遍使用的认证方式
(2)PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录,su等应用程序
(3)系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略
1.PAM认证顺序:Service(服务)> PAM(配置文件)> pam_*.so
2.PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d),最后调用认证文件(位于/lib/security下)进行安全认证
3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM认证模块。不同的应用程序所对应的PAM模块也是不同的
[root@yzq ~]# cat /etc/pam.d/su #%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so
1.每一行都是一个独立的认证过程
2.每一行可以区分为三个字段
①认证类型
②控制类型
③PAM模块及其参数
1)认证管理
接受用户名和密码,进而对该用户的密码进行认证
2)账户管理
检查账户是否被允许登录系统,账号是否已经过期,账号的登录是否有时间段的限制
3)密码管理
主要用来修改用户的密码
4)会话管理
主要是提供对会话的管理和记账
1)required验证失败时仍然继续,但返回Fail
2)requisite验证失败则立即结束整个验证过程,返回Fail
3)sufficien验证成功则立即返回,不再显示,否则忽略结果并继续
4)optional不用于验证,只是显示信息(通常用于session类型)
限制root只在安全终端登录,禁止普通用户登录
touch /etc/nologin ##除root用户以外用户不能登录
或者vim /etc/securetty进入注释不允许登录的终端
(虚拟机内按下Ctrl+Alt和功能键Fn(n=1…6)来切换终端)
安装nmap工具
[root@yzq ~]# yum install -y 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 通而放弃扫描
扫描本地TCM端口开启情况
[root@yzq ~]# nmap -sT 127.0.0.1
Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-14 08:44 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0010s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
631/tcp open ipp
6000/tcp open X11
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
开启httpd服务,查看端口情况
[root@yzq ~]# systemctl start httpd
扫描存活的主机号
netstat可以查看当前操作系统的网络连接在状态、路由表、接口统计等信息,是了解网络状态及排除网络服务状态的有效工具
netstat命令
-n 以数字形式显示相关主机地址、端口等信息
-r 显示路由表信息
-a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-l 显示处于监听(listening)状态打完网络连接及端口信息
-t 查看TCP传输控制协议的相关信息
-u 查看UDP用户数据报协议相关信息
-p 显示网络连接相关联的进程号、进程信息(此选项需要root权限)
查看TCP默认选项-natlp
可连UDP一起全部查看-natlup
(ss -natulp可在服务繁忙时使用,只看一个服务,占用服务较少,比较快)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。