开发面试题 tensorflow VR全景图片 VBA acm callback Draggabilly vue优势 photoshop视频教程全集下载 less官网 idea整理代码 mac上传文件到linux pyhton中异常和模块 python线程 python开发环境 python安装环境变量 python怎么使用 java数据库连接 java字符串长度 java正则替换 java接口类型 java8函数式编程 vb编程 动态加载js stretchcolumns 卡巴斯基离线升级包 蓝牙测试软件 iframe跨域 pr怎么放大视频画面 华为手机刷公交卡 cf小号 脚本语言 win98序列号 鬼灵战马 dnf传说 苹果x怎么用 搜狗拼音输入法安装包 python常用函数 ppt去掉背景音乐 android模拟器下载
当前位置: 首页 > 学习教程  > 编程语言

linux系统安全与应用(账号清理,密码安全控制,清除命令历史与自动注销,用户切换与提权,开关机安全控制,终端及登录控制和弱口令检测)

2020/8/31 14:30:20 文章标签:

系统安全及应用

一,账号安全控制

1,基本安全措施

(1)系统账号清理
  • 将非登录用户的shell设为/sbin/nologin 来禁止用户登录
root@server1 ~]# useradd -s /sbin/nologin zhangsan

  • 锁定长期不适用的账号
[root@server1 ~]# usermod -L zhangsan     // 锁定账户zhangsan
[root@server1 ~]# passwd -S zhangsan     // 查看账户状态
zhangsan LK 2020-08-28 0 99999 7 -1 (Password locked.)   //已被锁定
[root@server1 ~]# usermod -U zhangsan     //解锁账户 
[root@server1 ~]# passwd -S zhangsan
zhangsan PS 2020-08-28 0 99999 7 -1 (Password set, MD5 crypt.)
  • 删除无用的账号
[root@server1 ~]# userdel zhangsan

  • 锁定账号文件passwd ,shadow
    在这里插入图片描述

    chattr 命令的用法

选项 用法
+ 在原有参数设定基础上,追加参数。(配合以下选项使用,不能单独使用)
- 在源有参数设定基础上,移除参数(配合以下选项使用,不能单独使用)
= 更新为指定参数设定(配合以下选项使用,不能单独使用)
A 文件或目录的atime 不可被修改,可以有效预防例如手提电脑磁盘I /0错误的发生。
S 硬盘 I/O 同步选项,功能类似sync
a 即 compresse,设定文件是经过压缩后再存储,读取时需要经过自动解压操作。
d 即 no dump ,设定文件不能成为dump 程序的备份目标
i 设定文件不能被删除,改名,设定链接关系,同时不能写入或新增内容,i 参数对于文 件 系统的安全设置有很大帮助
j 设定此参数使得当通过 mount 参数: data= ordered 或者 data = writeback 挂载的系统文件。

例如:

[root@server1 ~]# chattr +i /etc/passwd /etc/shadow     //锁定文件
[root@server1 ~]# lsattr /etc/passwd /etc/shadow      // 查看为锁定的状态
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@server1 ~]# useradd zhangsan         //此时创建账户因为是锁定状态无法创建
useradd: cannot open /etc/passwd
[root@server1 ~]# passwd zhangsan      // 修改密码也因无法打开文件而无法修改
passwd: Unknown user name 'zhangsan'.
[root@server1 ~]# chattr -i /etc/passwd /etc/shadow     //解锁文件
[root@server1 ~]# lsattr /etc/passwd /etc/shadow      //查看为解锁的状态
---------------- /etc/passwd
---------------- /etc/shadow
[root@server1 ~]# useradd zhangsan       //此时创建账户以及修改密码都可
[root@server1 ~]# passwd zhangsan
Changing password for user zhangsan.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@server1 ~]# id zhangsan
uid=1002(zhangsan) gid=1002(zhangsan) groups=1002(zhangsan)

(2)密码安全控制
  • 密码安全控制有以下两种:
    • 设置密码有效期
    • 要求用户下次登录时修改密码
      在这里插入图片描述
(3)命令历史,自动注销
  • 命令历史限制有以下三种方法:
    • 减少记录的命令条数
    • 注销时自动清空命令历史
【】vi /etc/profile      
histsize=200     //保留 200 t条历史命令  (重启之后生效)
【】vi ~/.bash_logout                
 history -c                // 清空历史记录   (重启之后生效)
 clear               
 或者   
【】echo > $home./bash_history         //清空历史记录
 
 
  • 终端自动注销
    • 闲置600 秒后自动注销
vi ~/.bash_profile
  .......
 export TMOUT=600     //闲置600秒后自动注销

2,用户切换与提权

(1)su命令 --substitute user (切换用户)
  • 作用: substitute user 切换用户

  • 格式: su - 目标用户
    在这里插入图片描述

  • 密码验证

    • root -->任意用户,不验证密码
    • 普通用户–>其他用户,验证目标用户的密码
  • 限制使用 su 命令的用户

    • 将允许使用su命令的用户加入wheel组
    • 启用 pam_wheel 认证模块
      注意 : 现象就是加入wheel组之间的可以自由切换,包括root,但是新建的或者是未加入wheel组的切换不了
      例如
[root@server1 ~]# gpasswd -a lisi wheel     //添加授权用户lisi
Adding user lisi to group wheel        
[root@server1 ~]# grep wheel /etc/group      //确认wheel 组成员  
wheel:x:10:lihuihui,lisi
[root@server1 ~]# vi /etc/pam.d/su      //进入配置文件去掉下面行开头的#注释·
auth            required        pam_wheel.so use_uid

(2)sudo命令 (提升执行权限)
  • 弥补su命令的缺点
  • sudo 命令的用途及用法
    • 用途:以其他用户身份(如root)执行授权命令
    • 用法:sudo 授权命令
  • 配置sudo授权 (* 表示所有 !表示取反,不给使用)
    • visudo 或者vi /etc/sudoers (保存时:wq!)
    • 记录格式 用户 主机名列表=命令程序列表
      在这里插入图片描述

备注: %sudo ALL=(ALL:ALLALL 从左到右,第一个all是用户,第二个是机器,第三个是新用户身份(如 run_as_user ,如root ,oracle )第四个是命令
例如: (提权过程)

[root@server1 ~]# su lisi       //切换用户
[lisi@server1 root]$ vi a       //创建文件并编辑,此时因为没有权限是编辑不了的
[lisi@server1 root]$ sudo /usr/bin/vi a    //提升权限,  此时编辑是可以编辑的,编辑内容如下
[lisi@server1 root]$ sudo /usr/bin/cat a
123
[lisi@server1 root]$ touch b.txt       //创建文件夹,此时也因为没有权限是创建不了
touch: cannot touch ‘b.txt’: Permission denied    //无权限,,拒绝
[lisi@server1 root]$ sudo /usr/bin/touch b.txt     //提升  限
[lisi@server1 root]$ sudo /usr/bin/ls -lh    //给ls -lh也提升权限来查看一下,此时,已经创建文件
total 20K
-rw-r--r--  1 root root    4 Aug 30 19:35 a
-rw-r--r--  1 root root    7 Aug 30 19:30 aa
-rw-------. 1 root root 2.9K Aug  9 20:18 anaconda-ks.cfg
-rw-r--r--  1 root root    0 Aug 30 19:31 a.txt
-rw-r--r--  1 root root    0 Aug 30 19:35 b.txt
... 省略部分内容
  • 用sudo -l 来参看用户所拥有的权限 (whoami查看当前用户是哪个)
    注意:改权限的时候先查看在哪个文件夹下面,比如说,查看路由 which route ,如果一个账户属于多个组,那这个账户拥有多个组的权限
[# ]route add -host 192.168.20.100 gw 192.168.20.1     // 加路由
【#】# route -n              // 查看路由
【$】sudo /ussr/sbin/route add -host 92.168.20.100 gw 192.168.20.1
【$】sudo /usr/sbin/ifconfig ens33:3 192.168.50.1/24

tail -f /var/log/secure : 查看日志记录

  • 查看sudo 操作记录
    • 需要启用 defaults logfile 配置
    • 默认日志文件 : /var/log/sudo
   【#】 visudo    // 日志的引用,进去之后加下面一行
    defaults logfile = "/var/log/sudo"      //之后在所有wheel组的成员有权限查看
    【*】sudo /usr/bin/sudo tail /var/log/sudo   //在wheel组的用户下查看日志文件后一行
   例如: [lisi@server1 root]$ sudo /usr/bin/sudo cat /var/log/sudo   //在lisi账户下查看日志文件  ,下面是日志文件内容
Aug 30 20:21:49 : zhangsan : command not allowed ; TTY=pts/0 ; PWD=/root ;
    USER=root ; COMMAND=list
Aug 30 20:22:42 : zhangsan : command not allowed ; TTY=pts/0 ; PWD=/root ;
    USER=root ; COMMAND=list
Aug 30 20:23:37 : zhangsan : user NOT in sudoers ; TTY=pts/0 ; PWD=/root ;
    USER=root ; COMMAND=/usr/bin/sudo -l
Aug 30 20:24:15 : lisi : TTY=pts/0 ; PWD=/root ; USER=root ; COMMAND=list
Aug 30 20:27:49 : lisi : TTY=pts/0 ; PWD=/root ; USER=root ;
    COMMAND=/usr/bin/sudo cat /var/log/sudo
Aug 30 20:27:49 : lisi : TTY=pts/0 ; PWD=/root ; USER=root ; COMMAND=/bin/cat  /var/log/sudo

3,PAM安全认证

  • PAM 认证原理
    • 一般遵循的顺序
      service(服务)—>PAM (配置文件)—>pam_*.so
    • 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
    • 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到pam模块进行认证
    • 不同的应用程序所对应的pam模块是不同的
  • PAM 认证的构成
    • 查看某个程序是否支持pam认证,可以用ls命令
      例如
ls /etc/pam.d \ grep su
  • 查看su 的pam配置文件:cat /etc/pam.d/su
    • 每一行都是一个独立的认证过程
    • 每一行可以区分为三个字段 (认证类型 ,控制类型,PAM模块及其参数)
      • 认证类型 (有以下四种)
        + 认证管理: 授权用户名和密码,进而对该用户的密码进行认证
        + 账户管理 : 检查账户是否被允许登录系统,账号时候已经过期,账号的登录时候有时间段的限制等
        + 密码管理 : 主要用来修改用户的密码
        + 会话管理 : 主要提供对话的管理和记账

      • 控制类型
        控制类型也可以称作control flags ,用于PAM验证类型的返回结果
        + <1> required 验证失败时仍然继续,但返回fail
        + <2>requisite 验证失败则立即结束整个验证过程,返回fail
        + <3>sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续
        + <4>optinal 不用于验证只显示信息

      • PAM 模块及其参数

在这里插入图片描述

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

二,系统引导和登录控制

1,开关机安全控制

(1)调整bios引导设置
  • 调整BIOS引导设置
    • 将第一引导设备设为当前系统所在硬盘
    • 禁止从其他设备(光盘,U盘,网络)引导系统
    • 将安全级别设为setup,并设置管理员密码
(2) 禁止ctrl +alt +del 快捷键重启
(3)限制更改GRUB引导参数
  • 使用gtub2-mkpasswd-pbkdf2生成密钥
    • 修改/etc/grub.d/00_header文件中,添加密码记录
    • 生成新的grub.cfg配置文件
      相关命令:
grub2-mkpasswd-pbkdf2    //根据提示指定密码,生成加密密钥
Enter passwd:
Reenter password: 
此段密钥 is 后面才开始 假设密钥为:asfhoia hfoasnvosdjiodcnxcjoasdnvasvnaf
.....
//以上是经过加密的密码字符串省略
【#】cp -rp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
【#】cp  -rp /etc/grub.d/00_header  /etc/grub.d/00_header.bak
【#】vim /etc/grub.d/00_header   //将下面内容添加到文件最后一行
        cat << EOF
        set superusers="root" password_pbkdf2 root 这里后面加入is 后面的密钥
        EOF
 【#】grub2-mkconfig -o /boot/grub2/grub.cfg

注意:在使用cat <<EOF时,输入完毕之后,需要在一个新的一行输入EOF结束stdin的输入。EOF必须顶行写,前面不能用制表符或者空格。密钥也可参考下面密钥复制:
在这里插入图片描述

2,终端及登录控制

(1)减少开放的tty终端个数(以下方法只适用于contens 6)
  • /etc/init/tty.conf 控制tty终端的开启
  • /etc/init/start-ttys.conf 控制tty终端的开启数量,设备文件
  • /etc/sysconfig/init 控制tty 终端的开启数量,终端颜色
    配置示例如下
【#】vi /etc/init/start-ttys.conf
.....
env  ACTIVE_CONSOLES=/dev/tty[456]
【#】vi /etc/sysconfig/init
...
ACTIVE_CONSOLES=/dev/tty[456]
【reboot】

禁用tty1,tty2,tty3终端以后,重新开机并进入字符模式,默认将无法登陆。必须按alt+f4,alt+f5,alt+f6组合切换到可用的终端,然后才能进行登陆操作。

(2) 禁止root 用户登录
  • 限制root 只在安全终端登录
    • 安全终端配置:/etc/securetty
      例如:
[root@server1 ~]# vi /etc/securetty
...
#tty5   
#tty6     //禁止 root 用户从终端tty5,tty6 登录
(3) 禁止普通用户登录

在服务器进行备份或调试过程时用
在这里插入图片描述

三,弱口令检测,端口扫描

1,弱口令检测

  • 介绍

    • John the Ripper 简称JR ,一款密码分析工具,支持字典式的暴力破解
    • 通过对shadow文件的口令分析,可以检测密码强度
    • 官方网站: http://www.openwall.com/john/
      在这里插入图片描述
  • 检测过程

    • 安装JR工具
      • 安装方法 : make clean系统类型
      • 主程序文件为 john
    • 检测弱口令账号
      • 获得linux/unix服务器的shadow文件
      • 执行john程序,将shadow文件作为参数
    • 密码文件的暴力破解
      • 准备好密码字典文件,默认为password.lst
      • 执行john程序,结合–wordlist=字典文件
        示例

2,网络扫描 -NMAP


本文链接: http://www.dtmao.cc/news_show_150223.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?