序言

这里我主要介绍Linux系统安全与应用

系统安全与应用

  • 序言
  • 一 .账号安全控制
    • 1.账号安全基本措施
      • ①系统账号清理
      • ②密码安全控制
      • ③命令历史限制
      • ④终端自动注销
  • 二 .系统引导和登录控制
    • 1.使用su命令切换用户
      • ①限制使用su命令的用户
      • ②查看su操作记录
    • 2.Linux中的PAM认证
    • 3.PAM安全认证流程
      • ①通过PAM防止暴力破解ssh
    • 4.使用sudo机制提升权限
    • 5.开关机安全机制
    • 6.终端登录安全控制
  • 三.弱口令检查
  • 四.端口扫描
  • 总结

一 .账号安全控制

1.账号安全基本措施

①系统账号清理

将非登录用户的Shell设为/bin/nologin
锁定长期不使用的账号
删除无用的账号
锁定账号文件passwd、shadow

账号相关
注:chattr +i /etc/passwd /etc/shadow #锁定文件并查看状态
chattr -i /etc/passwd /etc/shadow #解锁文件并查看状态
lsattr /etc/passwd /etc/shadow #查看状态

②密码安全控制

设置密码有效期
要求用户下次登录时修改密码

密码相关
注:vim /etc/login.defs #适用于新建用户,改密码有效期
chage -M 30 lisi #适用于已有用户
chage -d 0 zhangsan #强制在下次登录时更改密码

③命令历史限制

减少记录的命令条数
注销时自动清空命令历史
①[~]vim /etc/profile #在history前改10再加export,执行减少记录命令条数,按q退出
source /etc/profile #刷新配置
②[~]vim .bash_history #按q退出
echo ‘’ > ~/.bash_history
③[~]vim .bashrc #按q退出
echo ‘’ > ~/.bashrc #自动清空记录

注:history -c #清除历史记录(临时清除,重启后还有)

④终端自动注销

闲置600秒后自动注销
①[~]vim /etc/profile
export TIMEOUT=600 #按q退出
source /etc/profile #刷新配置

二 .系统引导和登录控制

1.使用su命令切换用户

■用途及用法
用途:切换用户
格式:su - 目标用户 #带‘-’选项表示将使用目标用户的登录Shell环境
■密码验证
root ➔ 任意用户,不验证密码
普通用户 ➔ 其他用户,验证目标用户密码

①限制使用su命令的用户

将允许使用su命令的用户加入wheel组
启用pam_wheel认证模块

[zhangsan]gpasswd -a zhangsan wheel #将zhangsan加入到wheel组中
grep wheel /etc/passwd #查看zhangsan是否添加到wheel组中
vim /etc/pam.d/su #将里面的auth wheel注释去掉

②查看su操作记录

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

2.Linux中的PAM认证

■su命令的安全隐患
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
为了加强su命令的使用控制,可借助PAM认证模块,只允许极个别用户使用su命令进行切换
■PAM可插拔式认证模块
是一种高效且灵活便利的用户级别的认证方式
也是当前Linux服务器普遍使用的认证方式

PAM认证原理:
1.PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_ *.so;
2. PAM认证首先要确定哪一项应用 服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于/lib64/security/下)进行安全认证。
3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
如果想查看某个程序是否支持PAM 认证,可以用ls命令进行查看/etc/pam.d/

3.PAM安全认证流程

■控制类型也称作Control Flags,用于PAM验证类型的返回结果
1.required验证失败时仍然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
4.optional不在验证,只显示信息(通常用于session类型)

PAM实例:用户1       用户2      用户3       用户4
auth      required    模块1     pass        fail       pass        pass
auth      sufficient  模块2     pass        pass       fail        pass
auth      required    模块3     pass        pass       pass        fail结果      pass        fail       pass        pass

第一列代表PAM认证模块类型
auth: 对用户身份进行识别,如提示输入密码,判断是否为root。
account: 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password: 使用用户信息来更新数据,如修改用户密码。
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

第二列代表PAM控制标记
required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
optional: 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),
include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。

第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
传递给模块的参数。参数可以有多个,之间用空格分隔开

控制标记的补充说明:
required:表示该行以及所涉及模块的成功是用户通过鉴别的[必要条件]。换句话说,只有当对应于应用程序的所有带requi red标记的模块全部成功后,该程序才能通过鉴别。同时,如果任何带requi red标记的模块出现了错误,PAM并不立刻将错误消息返回给应用程序,而是在所有此类型模块都调用完毕后才将错误消息返回调用他的程序。
反正说白了,就是必须将所有的此类型模块都执行一次,其中任何一个模块验证出错,验证都会继续进行,并在执行完成之后才返回错误信息。这样做的目的就是不让用户知道自己被哪个模块拒绝,通过一种隐蔽的方式来保护系统服务。就像设置防火墙规则的时候将拒绝类的规则都设置为drop-样,以致于用户在访问网络不成功的时候无法准确判断到底是被拒绝还是目标网络不可达。
requisite:与 required相仿,只有带此标记的模块返回成功后,用户才能通过鉴别。不同之处在于其一旦失败 就不再执
行堆中后面的其他模块,并且鉴别过程到此结束,同时也会立即返回错误信息。与上面的required相比,似乎要显得更光
明正大一些。
sufficient:表示该行以及所涉及模块验证成功是用户通过鉴别的[充分条件]。也就是说只要标记为sufficient的模块
一旦验证成功,那么PAM便立即向应用程序返回成功结果而不必尝试任何其他模块。即便后面的层叠模块使用了requisite或者required控制标志也是一 样。当标记为sufficient的模块失败时,sufficient模块会当做optional对待。因此拥有sufficient标志位的配置项在执行验证出错的时候并不会导致整个验证失败,但执行验证成功之时则大门敞开。所以该控制
位的使用务必慎重。
optional:他表示即便该行所涉及的模块验证失败用户仍能通过认证。在PAM体系中,带有该标记的模块失败后将继续处理下一模块。也就是说即使本行指定的模块验证失败,也允许用户享受应用程序提供的服务。使用该标志,PAM框架会忽略这个模块产生的验证错误,继续顺序执行下一个层叠模块。

①通过PAM防止暴力破解ssh

[root@zzc ~]#vim /etc/pam.d sshd
在第一行下面添加一行:
auth required pam_tally.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200
说明:尝试登录失败超过三次,普通用户600秒解锁,root用户1200秒解锁
手动解除锁定:
查看某一用户错误登录次数:
pam tally --user work
清空某一用户错误登录次数:
pam_tally --user --reset
例如:清空work用户的错误登录次数:
pam_tally --user work --reset

4.使用sudo机制提升权限

■su命令的缺点
■sudo命令的用途及用法
用途:以其他用户身份(如root)执行的命令
用法:sudo 授权命令
■配置sudo授权
visudo或者vi /etc/sudoers
记录格式:用户 主机名列表=命令程序列表

[root@zzc ~]visudo
......
%wheel   ALL=NOPASSWD:ALL
xxxx     xxxx=xxxx

■查看sudo操作记录
需启用Defaults logfile 配置
默认日志文件:/var/log/sudo
■查看授权的sudo操作
sudo -l

5.开关机安全机制

■调整BIOS引导设置
将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘、U盘、网络)引导系统
将安全级别设为setuo,并设置管理员密码
■GRUB限制
使用grub2-mkpasswd-pbkdf2生成密钥
修改/etc/grub,d/00_header文件中,添加密码记录
生成新的grub.cfg配置文件

6.终端登录安全控制

■限制root只在安全终端登录
安全终端配置:/etc/securetty
注:pts是远程登录终端ctrl+ALT F1-F6 tty1图形界面 2和6字符界面

■禁止普通用户登录
建立/etc/nologin文件
删除nologin文件或重启后即恢复正常

三.弱口令检查

JR
一款密码分析工具,支持字典式的暴力破解
通过对shadow文件的口令分析,可以检测密码强度

■安装JR工具
安装方法 make clean 系统类型
主程序文件为john
■检测弱口令账号
获得Linux/Unix服务器的shadow文件
执行john程序,将shadow文件作为参数
■密码文件的暴力破解
准备号密码文件字典,默认为passwd.txt
执行john程序,结合--wordlist=字典文件

四.端口扫描

NMAP
一款强大的网络扫描、安全检测工具
官方网站:http://nmap。org/
CentOS 7.7光盘中安装包nmap–el7.x86_64.rpm

■NMAP的扫描
nmap [扫描类型] [选项] <扫描目标>

■常用的扫描类型
-sS、-sT、-sF、-sU、-sP、-P0

■例:分别查看本机开放的TCP端口、UDP端口

■例:检测192.168.4.0/24网段有哪些主机提供FTP服务

■例:检测192.168.4.0/24网段有哪些存活主机

总结

【AWSL】之Linux系统安全及应用(su、PAM、sudo、GRUB、JR、NMAP)相关推荐

  1. Linux系统用户管理和su、sudo详细讲解

    1 Linux用户和组 1)Linux是多任务.多用户的系统 2)每个文件和进程,都需要对应一个用户和用户组 3)Linux系统是通过UID和FID来识别用户和组的用户相当于人名,UID和GID相当于 ...

  2. linux 切换用户身份、su、sudo、/etc/sudoers

    Linux系统中,有时候普通用户有些事情是不能做的,除非是root用户才能做到.这时就需要用su命令临时切换到root身份来做事了. su:substitute['sʌbstɪtjuːt]代替 use ...

  3. Linux 命令(17)—— su 与 sudo 命令

    1.su 命令 1.1 命令简介 su 用于临时切换身份到另一个指定的用户,未指定用户名默认为 root.使用 su 切换用户身份后,默认情况下不改变当前工作目录,但会改变 HOME.SHELL.US ...

  4. linux安全设置:限制su、sudo切换root用户权限设置,su\sudo使用,SSH远程连接密钥登录

    目录 限制su命令切换到root用户 限制非root用户修改密码 su.sudo.sudo su 服务器安全 限制su命令切换到root用户 限制su命令切换到root用户 不希望所有用户都可以通过s ...

  5. linux基础命令之:su和sudo用户切换命令的使用

    1.su 的用法 通过su可以在用户之间切换,如果超级权限用户root向普通或虚拟用户切换不需要密码,而普通用户切换到其它任何用户都需要密码验证. su [OPTION选项参数] [用户] 语 法:s ...

  6. linux入门教程(七) linux系统用户以及用户组管理

    关于这部分内容,笔者在日常的linux系统管理工作中用到的并不多,但这并不代表该内容不重要.毕竟linux系统是一个多用户的系统,每个账号都干什么用,你必须了如指掌.因为这涉及到一个安全的问题. [认 ...

  7. Linux用户管理(五)Linux系统的启动

    Linux系统的启动 一.启动步骤和GRUB 1.Linux启动过程分析                                                              (1 ...

  8. linux下的系统监控软件,Linux系统监控工具sysstat

    sysstat就有监控CPU使用率.硬盘和网络吞吐数据,对这些数据的收集和分析,有利于我们判断系统是否正常运行,是提高系统运行效率.安全运行服务器的得力助手. Ubuntu Linux系统下安装(见下 ...

  9. linux启动过程剖析,分析Linux系统的启动过程

    导读 一直使用linux系统,却对系统启动过程及系统初始化和各种服务的启动不太清楚.今天终于搞明白整个是怎么一回事了.本来想自己写篇文章,刚好在网上看到一篇不错的介绍,很详细,就直接拿来了. Linu ...

  10. 在安卓手机上下载linux系统,如何在安卓手机上运行Ubuntu系统

    Ubuntu是一款linux系统,一般我们都是将其运行在电脑中,可不可以在手机端也能运行Ubuntu呢?也是可以的,想知道如何实现的,就跟我来吧. 第一步: 首先, 你的手机需要获取root权限. 如 ...

最新文章

  1. 修改title样式_css常见样式命名规则
  2. 远程扫描iPhone相册?苹果的好心网友不领情
  3. python入门视频教程推荐-python入门学习哪个书比较好(python视频教程知乎)
  4. 在C语言的函数定义中 如果不需要返回结果,在C语言的函数定义中,如果不需要返回结果,就可以省略return语句...
  5. java学习里程碑_记录您的里程和社区运行情况:Java EE 7真实体验
  6. Spring Board View
  7. 使用jquery-qrcode生成二维码
  8. Codechef Black Nodes in Subgraphs(树型背包)
  9. 一个完整的python项目_一个完整的机器学习项目在Python中的演练(一)
  10. 通过笔记本wifi共享到以太网接口方法--使用嵌入式设备接入互联网
  11. Windows上实现iOS APP自动化测试:tidevice + WDA + airtest
  12. 设计模式之六个创建型模式的相关知识,简单易懂。
  13. Docker 安装 SRS
  14. 计算机蓝屏代码0x000000ED,电脑蓝屏代码0x000000ed解决步骤
  15. visual Studio Code(VS code)软件中HTML超级好用的一个插件 liveserver,vs code浏览网页
  16. 【Linux】linux进程--进程控制:进程创建、进程终止、进程等待、进程程序替换
  17. 2020第十七届华为杯数模C题——P300脑电信号数据预处理算法
  18. vue3获取当前页面组件的路由参数信息
  19. 求一百个人中有人生日相同的概率
  20. Android性能优化之工具篇 — — 开发者选项

热门文章

  1. java对象转xml jackson_五分钟Jackson入门(三) JSON数据类XML转换(附项目源码)
  2. codeblock socket 编译错误_从Linux源码看Socket(TCP)Client端的Connect
  3. 怎么把丢失的计算机放回桌面,不小心把电脑桌面开始哪里放在右边了,怎么把它放回原处啊...
  4. ubuntu 安装docker报错
  5. ubuntu系统如何切换到root用户登录
  6. seaborn常用的10种数据分析图表
  7. GitHub 标星 8w!学完这份指南后,你就可以去 Google 面试了!
  8. matlab直流电机双闭环控制系统设计,基于MATLAB的直流电机双闭环调速系统设计毕业论文.doc...
  9. python怎么编写视觉识别_Python视觉识别--OpenCV色彩空间\图像运算\ROI(四)
  10. pyinstaller打包exe在其他机器无法运行_详解pyinstaller selenium python3 chrome打包问题!解决率100%...