admin管理员组文章数量:1122867
目录
引言
一、账号安全
1、系统账号清理
将非登录用户的Shell设为/sbin/nologin
锁定长期不使用的账号
删除无用的账号
锁定账号文件passwd、shadow
2、密码安全设置
设置密码有效期
要求用户下次登录时修改密码
3、命令历史限制和终端自动注销
命令历史限制
减少记录的命令条数
注销时自动清空命令历史
终端自动注销
二、用户切换和提权
1、su命令
2、sudo提权
sudo命令基本信息
用法:sudo 授权命令
语法格式:
sudo [参数选项] 命令
启用sudo操作日志
三、PAM安全认证
1、PAM概念
2、配置文件位置
3、PAM认证原理
4、PAM认证过程
5、控制标记的补充说明
6、通过pam模块来防止暴力破解sshd
四、开关机安全控制
调整BIOS引导设置
GRUB限制
五、终端控制
限制root只在安全终端登录
六、John the Ripper 工具
1、概述
2、系统弱口令检测
七、namp命令
总结
引言
在我们日常生活中,大家都会为我们各种账号设置密码,那我们为什么要设置密码呢?显然我们是为了安全,在我们linux 中也需要为类似的安全保护,来保证我们的数据安全,今天就来给大家说一下,如何做系统安全
一、账号安全
1、系统账号清理
将非登录用户的Shell设为/sbin/nologin
[root@localhost ~]# vim /etc/passwd #进入后设置/sbin/nologin
锁定长期不使用的账号
passwd -l 用户 #锁定
usermod -L 用户
passwd -u 用户 #解锁
usermod -U 用户
删除无用的账号
userdel -r 用户 #连宿主一起删除用户
锁定账号文件passwd、shadow
[root@localhost ~]# lsattr /etc/passwd /etc/shadow #查看账号状态
---------------- /etc/passwd
---------------- /etc/shadow
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow #锁定账号文件
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow #解锁账号文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow #查看文件状态
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# useradd ly3 #账号文件被锁定,无法创建编辑
useradd:无法打开 /etc/passwd
2、密码安全设置
设置密码有效期
[root@localhost ~]# vim /etc/login.defs #对后建用户设置密码失效时间
PASS_MAX_DAYS 天数
[root@localhost ~]# useradd ly4
[root@localhost ~]# chage -l ly4
最近一次密码修改时间 :8月 18, 2021
密码过期时间 :9月 17, 2021
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :30
在密码过期之前警告的天数 :7
root@localhost ~]# chage -l ly2
最近一次密码修改时间 :8月 18, 2021
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :8月 20, 2021
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
[root@localhost ~]# chage -M 30 ly2 #对已有用户设置密码有效天数
[root@localhost ~]# chage -l ly2
最近一次密码修改时间 :8月 18, 2021
密码过期时间 :9月 17, 2021
密码失效时间 :从不
帐户过期时间 :8月 20, 2021
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :30
在密码过期之前警告的天数 :7
要求用户下次登录时修改密码
[root@localhost ~]# chage -d 0 ly2 #强制设置下次登录修改密码
[root@localhost ~]# chage -d 9999999999 ly2 #取消设置下次登录修改密码
3、命令历史限制和终端自动注销
命令历史限制
减少记录的命令条数
[root@localhost ~]# history #查看历史命令操作
1 systemctl stop firewalld
[root@localhost ~]# history -c #临时清除命令历史
[root@localhost ~]# history
1 history
[root@localhost ~]# vim /etc/profile #进入配置文件
export HISTSIZE=条数 #设置历史显示条数
[root@localhost ~]# source /etc/profile #刷新文件
注销时自动清空命令历史
[root@localhost ~]# vim .bash_history #命令历史文件
[root@localhost ~]# echo "" > ~/.bash_history #清除所有历史命令
[root@localhost ~]# vim .bashrc #设置自动清除
echo "" > ~/.bash_history
[root@localhost ~]# vim .bash_logout #设置自动清除
history -c
clear
终端自动注销
闲置180秒后自动注销
[root@localhost ~]# vim /etc/profile #进入配置文件
export TMOUT=180 #设置待机3分钟自动注销
[root@localhost ~]# source /etc/profile #刷新文件
二、用户切换和提权
1、su命令
用途:Subsititute User 用户
格式:su -用户
密码验证
root—任意用户,不需要验证密码
普通用户—其他用户,验证目标用户密码
在/etc/pam.d/su文件里设置禁止用户使用su命令
auth sufficient pam_ rootok.so
#auth required pam_ wheel.so use_ _uid
a)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
b)两行都注释也是运行所有用户都能使用su命令,但root'下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码
c)如果开启第一行,开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令
d)如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。
普通用户切换登录测试验证
使用 su 命令切换用户的操作将会记录到安全日志/var/log/secure 文件中,可以根据需要进行查看
2、sudo提权
sudo命令基本信息
文件位置: /etc/sudoers(编辑文件:visudo或者vim /etc/sudoers)
用途:以其他用户身份(如root)执行授权的命令
用法:sudo 授权命令
语法格式:
用户 主机名=命令程序列表
用户 主机名=(用户)命令程序列表
[ly1@localhost root]$ useradd ly5 #新建用户
bash: /usr/sbin/useradd: 权限不够
[root@localhost ~]# visudo
ly1 localhost=/usr/sbin/useradd
[ly1@localhost root]$ sudo useradd ly5 #新建用户成功
[ly1@localhost root]$ useradd ly6 #新建用户
bash: /usr/sbin/useradd: 权限不够
[root@localhost ~]# visudo
%wheel localhost=NOPASSWD:/usr/sbin/useradd,!/sbin/reboot,!/sbin/poweroff,!/sbin/init
[ly1@localhost root]$ sudo useradd ly6 #新建用户成功
#%wheel,表示wheel组成员可使用sudo执行任何命令
#NOPASSWD:,表示成员无需验证密码即可使用sudo执行任何命令
#通配符“*"表示所有、取反符号“!”表示排除
注意:%wheel ALL=(ALL) ALL 文件默认对wheel放了所有权限,所以我们在设立wheel组成员的时候一般会取消部分权利
用户别名的语法格式(别名必须大写)
1)User_Alias 用户别名:包含用户、%组名
User_Alias U=ly1,ly2,%wheel
2)Host_Alias
主机别名:主机名、IP、网络地址、其他主机别名 !取反
Host_Alias H=localhost,ly
3)Cmnd_Alias
命令路劲、目录(此目录内的所有命令)、其他事先定义过的命令别名
Cmnd_Alias C=/usr/sbin/useradd,!/sbin/reboot
4)U H=NOPASSWD:C
sudo [参数选项] 命令
-l 列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的;
-v 验证用户的时间戳;如果用户运行sudo 后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo 操作;用-v 可以跟踪最新的时间戳;
-u 指定以以某个用户执行特定操作;
-k 删除时间戳,下一个sudo 命令要求用求提供密码;
启用sudo操作日志
sudo日志记录以备管理员查看,可以从/var/log/sudo 文件中看到用户的 sudo 操作记录
另外一个方法是/var/log/secure 日志可查看到sudo操作用户步骤
[root@localhost ~]# visudo
Defaults logfile=/var/log/sudo #启用日志
三、PAM安全认证
1、PAM概念
Linux-PAM,是linux可插拔认证模块,是一套可定制、 可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式。
2、配置文件位置
PAM使/etc/pam.d/下的配置文件,来管理对程序的认证方式
本地的认证模块,模块放置在/lib64/security下,以加载动态库的形式进行认证
3、PAM认证原理
PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_ *.so;
PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于/lib64/security/下)进行安全认证。
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。
不同的应用程序所对应的PAM模块也是不同的。
如果想查看某个程序是否支持PAM 认证,可以用ls命令进行查看/etc/pam.d/
4、PAM认证过程
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用
第一列代表PAM认证模块类型
auth: 对用户身份进行识别,如提示输入密码,判断是否为root。
account: 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password: 使用用户信息来更新数据,如修改用户密码。
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。
第二列代表PAM控制标记
required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
optional: 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),
include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。
第三列代表PAM模块
默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。
第四列代表PAM模块的参数
这个需要根据所使用的模块来添加。
传递给模块的参数。参数可以有多个,之间用空格分隔开
5、控制标记的补充说明
required:表示该行以及所涉及模块的成功是用户通过鉴别的[必要条件]。换句话说,只有当对应于应用程序的所有带
required:标记的模块全部成功后,该程序才能通过鉴别。同时,如果任何带requi red标记的模块出现了错误,PAM并不立
刻将错误消息返回给应用程序,而是在所有此类型模块都调用完毕后才将错误消息返回调用他的程序。
反正说白了,就是必须将所有的此类型模块都执行一次,其中任何一个模块验证出错,验证都会继续进行,并在执行完成
之后才返回错误信息。这样做的目的就是不让用户知道自己被哪个模块拒绝,通过一种隐蔽的方式来保护系统服务。就像
设置防火墙规则的时候将拒绝类的规则都设置为drop-样,以致于用户在访问网络不成功的时候无法准确判断到底是被拒
绝还是目标网络不可达。
requisite:与 required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别。不同之处在于其一旦失败 就不再执
行堆中后面的其他模块,并且鉴别过程到此结束,同时也会立即返回错误信息。与上面的required相比,似乎要显得更光
明正大一些。
sufficient:表示该行以及所涉及模块验证成功是用户通过鉴别的[充分条件]。也就是说只要标记为sufficient的模块
一旦验证成功,那么PAM便立即向应用程序返回成功结果而不必尝试任何其他模块。即便后面的层叠模块使用了requisite
或者required控制标志也是一 样。当标记为sufficient的模块失败时,sufficient模块会当做optional对待。因此拥有su
fficient标志位的配置项在执行验证出错的时候并不会导致整个验证失败,但执行验证成功之时则大门敞开。所以该控制
位的使用务必慎重。
optional:他表示即便该行所涉及的模块验证失败用户仍能通过认证。在PAM体系中,带有该标记的模块失败后将继续处
理下一模块。也就是说即使本行指定的模块验证失败,也允许用户享受应用程序提供的服务。使用该标志,PAM框架会忽
略这个模块产生的验证错误,继续顺序执行下一个层叠模块。
6、通过pam模块来防止暴力破解ssh
[root@localhost ~]# 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秒解锁
手动解除锁定:
例如,查看ly用户的错误登陆次数:
pam_tally2 --user ly
例如,清空 ly 用户的错误登陆次数,
pam_tally2 –-user ly --reset
四、开关机安全控制
调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统
将安全级别设为setup,并设置管理员密码
GRUB限制
使用grub2-mkpasswd-pbkdf2生成密钥
修改letc/grub.d/00_header文件中,添加密码记录
生成新的grub.cfg配置文件
[root@localhost ~]# grub2-mkpasswd-pbkdf2 #设置grub菜单的密码
输入口令:
Reenter password:
PBKDF2 hash of your password is
grub.pbkdf2.sha512.10000.26683562AC59F1881C14
6AFBF1B1171DB1A090D9B022E81B79BE959EA7F66F1F28598F7940129F3874E17BA05294C32998EB16BA99E8A614EBBF75F71ADC8F43.6C7458F66245CC90B32DA05C2355CC876A85E2420ADD602B29E012966B01269581BBE8DCC46070B3DE674A25620F8E01270D8E3CF962307294D0FDB11CD6412A
[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" #设置用户名为root
password pbkdf2 root
grub.pbkdf2.sha512.10000.26683562AC59F1881C14
6AFBF1B1171DB1A090D9B022E81B79BE959EA7F66F1F28598F7940129F3874E17BA05294C32998EB16BA99E8A614EBBF75F71ADC8F43.6C7458F66245CC90B32DA05C2355CC876A85E2420ADD602B
29E012966B01269581BBE8DCC46070B3DE674A25620F8E01270D8E3CF962307294D0FDB11CD6412AEOF
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg #生成新的grub.cfg 文件
五、终端控制
限制root只在安全终端登录
安全终端配置:/etc/securetty
[root@localhost ~]# vim /etc/securetty
#tty2
ctrl +alt +f2 无法登录root
ctrl +alt +f4 可以登录
六、John the Ripper 工具
1、概述
John the Ripper,简称为JR
—款密码分析工具,支持字典式的暴力破解
通过对shadow文件的口令分析,可以检测密码强度
官方网站: http://www.openwall/john/
2、系统弱口令检测
安装JR工具
安装方法 make clean 系统类型
主程序文件为john
检测弱口令账号
获得Linux/Unix服务器的shadow文件
执行john程序,将shadow文件作为参数
密码文件的暴力破解
准备好密码字典文件,默认为password.lst
执行john程序,结合--wordlist=字典文件
[root@localhost opt] # cd ~ #解压工具包
[root@localhost ~]# tar. zxf john-1.8.0.tar.gz -C /opt
[root@localhost ~]# yum install -y gcc gcc-c++ make #安装软件编译工具
[root@localhost ~]# cd /opt/john-1.8.0/src #切换到src子目录
[root@localhost src]# make clean linux-x86-64 #进行编译安装
[root@localhost src]# cp /etc/shadow /opt/shadow.txt #准备待破解的密码文件
[root@localhost src]#cd /opt/john-1.8.0/run #执行暴力破解
[root@localhost run]#./john /opt/shadow.txt
[root@localhost run]#./john --show /opt/shadow.txt #查看已破解出的账户列表
> john. pot #使用密码字典文件
./john --wordlist=./password.1st /opt/shadow.txt #清空已破解出的账户列表,以便重新分析
#使用指定的字典文件进行破解
七、namp命令
NMAP
一款强大的网络扫描、安全检测工具
官方网站: http://nmap
CentOS 7.7光盘中安装包 nmap-6.40-7.el7.x86_64.rpm
NMAP的扫描(需要yum安装)
nmap [扫描类型] [选项] <扫描目标...>
常用的扫描类型
-sS、-sT、-sF、-sU、-sP、-PO
-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端口、UDP端口
[root@localhost ~]# nmap -sT 127.0.0.1
Starting Nmap 6.40 ( http://nmap ) at 2021-08-19 21:52 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00019s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
631/tcp open ipp
检测192.168.149.0/24网段有哪些主机提供FTP服务示
[root@localhost ~]# nmap -p 80 192.168.149.0/24
Starting Nmap 6.40 ( http://nmap ) at 2021-08-19 22:19 CST
Nmap scan report for 192.168.149.1
Host is up (0.0010s latency).
PORT STATE SERVICE
80/tcp closed http
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.149.2
Host is up (0.00084s latency).
PORT STATE SERVICE
80/tcp closed http
MAC Address: 00:50:56:FA:1B:0E (VMware)
Nmap scan report for 192.168.149.159
Host is up (0.000098s latency).
PORT STATE SERVICE
80/tcp closed http
MAC Address: 00:0C:29:42:7F:C5 (VMware)
Nmap scan report for 192.168.149.254
Host is up (0.000065s latency).
PORT STATE SERVICE
80/tcp filtered http
MAC Address: 00:50:56:F8:FC:AE (VMware)
Nmap scan report for 192.168.149.152
Host is up (0.000045s latency).
PORT STATE SERVICE
80/tcp closed http
Nmap done: 256 IP addresses (5 hosts up) scanned in 4.37 seconds
检测192.168.149.0/24网段有哪些存活的主机
[root@localhost ~]# nmap -n -sP 192.168.149.0/24
Starting Nmap 6.40 ( http://nmap ) at 2021-08-19 21:55 CST
Nmap scan report for 192.168.149.1
Host is up (0.00065s latency).
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.149.2
Host is up (0.000099s latency).
MAC Address: 00:50:56:FA:1B:0E (VMware)
Nmap scan report for 192.168.149.159
Host is up (0.00032s latency).
MAC Address: 00:0C:29:42:7F:C5 (VMware)
Nmap scan report for 192.168.149.254
Host is up (0.00088s latency).
MAC Address: 00:50:56:F8:FC:AE (VMware)
Nmap scan report for 192.168.149.152
Host is up.
Nmap done: 256 IP addresses (5 hosts up) scanned in 2.25 seconds
总结
今天给大家分享的关于系统安全,重要性也是不言而喻的,主要是从账号的基本安全,系统账号清理,密码安全控制,命令历史,自动注销,在到用户的切换提权,开关机安全控制,终端控制,还要我们一些JR根据使用,最后的namp都是非常重要的,不管对于新手小伙伴还是老程序员,都有值得学习的地方
版权声明:本文标题:系统安全应用——系统引导、登录控制、弱口令检测、端口扫描 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1726359749a1080380.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论