当前位置:   article > 正文

Linux系统安全及应用_grub-mkpasswd-pbkdf2

grub-mkpasswd-pbkdf2

目录

一、账号安全基本设施

1、系统账号清理

1.1将非登录用户的shell设为/sbin/nologin

1.2锁定长期不使用的账号

1.3删除无用的账号

1.4锁定配置文件——chattr

2、密码安全控制

2.1未创建的用户密码管理

2.2已创建用户密码管理——chage命令

3、命令历史限制

3.1命令历史限制

3.2终端自动注销

二、用户切换与提权

1、su命令——切换用户

1.1切换用户的方式

​1.2限制使用su命令的用户

2、sudo命令——用户提权

2.1sudo命令提权

2.2sudo别名

2.3sudo子目录

三、系统引导和登录控制

1、调整BIOS引导设置原则

2、GRUB菜单设置

3、GRUB限制

3.1进行GRUB限制的步骤

3.2grub加密方法2

3.3grub加密方法2

4、终端登录安全控制

4.1限制root只在安全终端登录

4.2禁止普通用户登录

5、网络扫描—NMAP


一、账号安全基本设施

1、系统账号清理

1.1将非登录用户的shell设为/sbin/nologin

非登录:不可以使用bash程序 

1.2锁定长期不使用的账号

  • 使用usermod锁定用户
  1. usermod -L 用户名     //锁定用户
  2. usermod -U 用户名     //解锁用户

  • 使用passwd锁定账户
  1. passwd -l 用户名     //锁定用户
  2. passwd -u 用户名     //解锁用户

1.3删除无用的账号

1.4锁定配置文件——chattr

锁定配置文件即锁定配置文件passwd与shadow

  1. chattr +i /etc/passwd /etc/shadow //锁定配置文件
  2. chattr -i /etc/passwd /etc/shadow //解锁配置文件
  3. chattr +a /etc/passwd /etc/shadow //让文件或目录仅供附加用途,只能追加
  4. lsattr /etc/passwd /etc/shadow //查看文件状态属性

2、密码安全控制

2.1未创建的用户密码管理

未创建的用户需要进入/etc/login.defs进行修改密码属性,使得在下次创建用户时密码信息生效

例子

  • 新建用户并更改密码属性

  •  查看信息

2.2已创建用户密码管理——chage命令

格式:chage [选项] 用户名

常用选项作用
-m密码可更改的最小天数。为零时代表任何时候都可以更改密码
-M密码保持有效的最大天数
-W用户密码到期前,提前收到警告信息的天数
-E帐号到期的日期。过了这天,此帐号将不可用
-d上一次更改的日期
-i停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
-l例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期

 强制用户下次登录时一定修改密码,此时密码应该符合复杂性的要求

格式:chage -d 0 用户名

3、命令历史限制

3.1命令历史限制

Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只

要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文

的密码,则无意之中服务器的安全壁垒又多了一个缺口。Bash 终端环境中,历史命令的记录条数

由变量 HISTSIZE 控制,默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以

影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。

  • 临时修改当前用户的历史命令条数
[root@localhost ~]# export HISTSIZE=200 //临时修改历史命令条数为200条

  • 进入配置文件永久修改历史命令条数
  1. [root@localhost ~]# vim /etc/profile //进入配置文件
  2. HISTSIZE=200 //将历史命令条数由1000改为200
  3. [root@localhost ~]# source /etc/profile //刷新配置文件,使文件立即生效

  • 退出时清除
  1. [root@localhost ~]# vim .bash_logout
  2. echo " " > ~/.bash_history

  • 开机后清除
  1. [root@localhost ~]# vim .bashrc
  2. echo " " > ~/.bash_history

3.2终端自动注销

  1. [root@localhost ~]# vim /etc/profile
  2. export TMOUT=600

二、用户切换与提权

1、su命令——切换用户

su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命

格式: su [options...] [-] [user [args...]]

1.1切换用户的方式

  • su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换,与只切换了一部分,这会导致某些命令运行出现问题或错误
  • su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换,切换用户身份更彻底

说明

  • root su至其他用户无须密码
  • 非root用户切换时需要密码
  • su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。


1.2限制使用su命令的用户

  • su命令的安全隐患

     (1)  默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密

码,带来安全风险

      (2) 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进

行切换

  •  限制使用su命令的用户

      将允许使用su命令的用户加入wheel组。

      启用pam_wheel认证模块。则只有wheel组内的用户可以使用su命令切换用户(编辑/etc/pam.d/su文件)。

  • 查看su操作记录

       安全日志:/var/log/secure

查看/etc/pam.d/su 文件

  •  以上两行是默认状态(即开启第二行,注释第六行),这种状态下是允许所有用户间使用su命令进行切换的。
  • 两行都注释这种状态下运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第二行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)
  • 如果开启第二行与第六行,表示只有root用户和wheel组内的用户才可以使用su命令
  • 如果注释第二行,开启第六行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。

限制使用su命令步骤:

  • 将用户加入wheel组中

  •  修改/etc/pam.d/su文件内容
    1. [root@localhost ~]# vim /etc/pam.d/su
    2. 2 auth sufficient pam_rootok.so
    3. 6 auth required pam_wheel.so use_uid

  • 使用su命令

2、sudo命令——用户提权

2.1sudo命令提权

sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如

halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早

之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告

知超级用户的密码。

sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可

以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc

/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限

时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户

本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分

钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。由于不需要超级用户的密码。

sudo特性

  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员

  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器

  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票。sudo -V 可以查看相关配置信息

  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

配置sudo

可以使用visudo也可以使用vim /etc/sudoers进行配置,但通常使用visudo,因为visudo可以自动检

查语法是否输入错误

  1. [root@localhost ~]# visudo
  2. ## Allow root to run any commands anywhere
  3. root ALL=(ALL) ALL
  4. ## Allows people in group wheel to run all commands
  5. %wheel ALL=(ALL) ALL

  1. #用户 登入主机=(代表用户) 命令
  2. #user host =(runas) command
  3. root ALL =(ALL) ALL(绝对路径) //root可以使用任何主机代表任何用户执行任何命令
  4. %wheel ALL =(ALL) ALL
  5. user: 运行命令者的身份
  6. 可以是用户也可以是组(组前应该加%)
  7. 用户可以是用户名或者UID
  8. 组可以是组名或者GID
  9. host: 通过哪些主机 可以写IP地址或主机名 可以有多个主机
  10. runas:以哪个用户的身份
  11. command: 运行哪些命令
  12. command name (命令)
  13. directory (文件夹里的命令)
  14. sudoedit (可以编辑sudoers这个文件,变相变成管理员)
  15. Cmnd_Alias (命令别名)

格式:sudo [-u用户名] [命令]

例子:

将用户加入sudoers

  • 进入配置文件

  •  提权后使用命令(命令必须与配置文件中的命令一致)

 将用户加入wheel组中

可以使用通配符

2.2sudo别名

sudo别名有四种类型:

  • User_Alias(用户)

  • Runas_Alias(代表用户)

  • Host_Alias(登录主机)

  • Cmnd_Alias(命令)

进入配置文件

2.3sudo子目录

将用户添加至/etc/sudoers.d子目录中也可以提权

  1. [root@localhost ~]# vim /etc/sudoers.d/test
  2. tieniu1 ALL=(root) usr/bin/*,!/usr/sbin/reboot
  3. [root@localhost ~]# useradd tieniu1
  4. [root@localhost ~]# echo "123123" |passwd --stdin tieniu1
  5. 更改用户 tieniu1 的密码 。
  6. passwd:所有的身份验证令牌已经成功更新。
  7. [root@localhost ~]# ll /etc/sudoers.d/test
  8. -rw-r--r--. 1 root root 24 311 00:05 /etc/sudoers.d/test
  9. [root@localhost ~]# chmod 440 /etc/sudoers.d/test
  10. [root@localhost ~]# ll /etc/sudoers.d/test
  11. -r--r-----. 1 root root 24 311 00:05 /etc/sudoers.d/test

 

三、系统引导和登录控制

1、调整BIOS引导设置原则

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

2、GRUB菜单设置

  • 未经授权禁止修改启动参数
  • 未经授权禁止进入指定系统

3、GRUB限制

通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是

一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

3.1进行GRUB限制的步骤

定义每个菜单项的所有脚本都存放在/etc/grub.d目录中,这些脚本的名称必须有两位的数字前缀,

其目的是构建GRUB 2菜单时定义脚本的执行顺序以及相应菜单项的顺序,比如00_header文件首

先被读取。

文件描述
00_header设置grub默认参数
10_linux系统中存在多个linux版本
20_ppc_terminfo设置tty控制台
30_os_prober设置其他分区中的系统(硬盘中有多个操作系统时设置)
40_custom和41_custom用户自定义的配置

设置GRUB 2加密

由于GRUB 2负责引导linux系统,其作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行

加密可以实现安全性。

在默认情况下,GRUB 2对所有可以在物理上进入控制台的人都是可访问的。任何人都可以选择并

编辑任意菜单项,并且可以直接访问GRUB命令行。要启用认真支持,必须将环境变量超级用户设

置为一组用户名(可以使用空格、逗号、分号作为分隔符)这样就只允许超级用户使用GRUB命令行

编辑菜单项以及执行任意菜单项。

GRUB 2密码支持以下两种格式

  • 明文密码:密码数据没有经过加密,安全性差
  • PBKDF2加密密码:密码经过PBKDF2哈希算法进行加密,在文件中存储的是加密后的密码数据,安全性较高。

3.2grub加密方法2

 

3.3grub加密方法2

先要使用grub2-mkpasswd-pbkdf2命令生成PBKDF2加密口令,然后在/etc/grub.d/00_header文件中添加超级用户和PBKDF2加密口令,最后使用grub2-mkconfig命令生成grub配置文件。

  1. [root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak //将文件备份
  2. [root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
  3. [root@localhost ~]# grub2-mkpasswd-pbkdf2 //根据提示设置GRUB菜单的密码
  4. 输入口令: //输入密码
  5. Reenter password: //重新输入密码
  6. PBKDF2 hash of your password is //生成的密码口令
  7. grub.pbkdf2.sha512.10000.D256BD5860E19BD5D861BB353C00BA75747C04271D4C2C029760DC4CA1542ADC7A7DBFA6D3F2382971FFFFD03D57E1A9B524F60153E691A8F98FDEC69996EF73.C4B2FDF005391F90CA7B0CE6D840BFCE8D7C3EF386C3DCEC097282D59B6FE5798A45E3D8886C446DABA1113D47D174075208D2433D63CCE8B5F5A42A9BF06506
  8. [root@localhost ~]# vim /etc/grub.d/00_header //在/etc/grub.d/00_header文件中
  9. cat <<EOF
  10. set superusers="root"// 添加超级用户 此时超级用户名为root
  11. password_pbkdf2 root//添加生成的随机的PBKDF2加密口令
  12. grub.pbkdf2.sha512.10000.D256BD5860E19BD5D861BB353C00BA75747C04271D4C2C029760DC4CA1542ADC7A7DBFA6D3F2382971FFFFD03D57E1A9B524F60153E691A8F98FDEC69996EF73.C4B2FDF005391F90CA7B0CE6D840BFCE8D7C3EF386C3DCEC097282D59B6FE5798A45E3D8886C446DABA1113D47D174075208D2433D63CCE8B5F5A42A9BF06506
  13. EOF
  14. [root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg//使用grub2-mkconfig命令生成grub配置文件。
  • 文件备份

  • 使用grub2-mkpasswd-pbkdf2命令生成PBKDF2加密口令

  • 在/etc/grub.d/00_header文件中添加用户和PBKDF2加密口令

  •  使用grub2-mkconfig命令生成grub配置文件

  •  重启按e键进入grub菜单

 如果不设密码则会直接进入grub菜单

4、终端登录安全控制

4.1限制root只在安全终端登录

安全终端配置:/etc/securetty

4.2禁止普通用户登录

  • 建立/etc/nologin文件
  • 删除nologin文件或者重启后即恢复正常

 

 

5、网络扫描—NMAP

网络端口扫描

控制位作用
SYN建立链接
ACK确认
FIN结束断开
PSH传送 0 数据缓存 上层应用协议
RST重置
URG紧急
服务端口号
HTTP80
HTTPS443
Telnet23
FTP21
SSH(安全登录)、SCP(文件传输)、端口重定向22
SMTP25
POP3110
WebLogic7001
TOMCAT8080
WIN2003远程登录3389
Oracle数据库1521
MS SQL* SEVER数据库sever1433
MySQL 数据库sever3306

使用nmap前需要安装

格式:nmap [扫描类型] [选项] <扫描目标>

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

  • nmap -sP查看网段有哪些存活主机

  •  nmap -sU查看目标主机提供的UDP服务

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/748154
推荐阅读
相关标签
  

闽ICP备14008679号