Linux系统安全及应用

目录

一、账号安全基本设施

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程序 

Linux系统安全及应用_第1张图片

1.2锁定长期不使用的账号

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

Linux系统安全及应用_第2张图片

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

Linux系统安全及应用_第3张图片

1.3删除无用的账号

Linux系统安全及应用_第4张图片

1.4锁定配置文件——chattr

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

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

Linux系统安全及应用_第5张图片

2、密码安全控制

2.1未创建的用户密码管理

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

Linux系统安全及应用_第6张图片

例子

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

Linux系统安全及应用_第7张图片

  •  查看信息

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

格式:chage [选项] 用户名

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

Linux系统安全及应用_第8张图片

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

格式:chage -d 0 用户名

Linux系统安全及应用_第9张图片

3、命令历史限制

3.1命令历史限制

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

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

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

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

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

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

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

Linux系统安全及应用_第10张图片

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

Linux系统安全及应用_第11张图片

Linux系统安全及应用_第12张图片

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

Linux系统安全及应用_第13张图片

3.2终端自动注销

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

二、用户切换与提权

1、su命令——切换用户

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

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

1.1切换用户的方式

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

Linux系统安全及应用_第14张图片

说明

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

Linux系统安全及应用_第15张图片
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 文件

Linux系统安全及应用_第16张图片

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

限制使用su命令步骤:

  • 将用户加入wheel组中

Linux系统安全及应用_第17张图片

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

Linux系统安全及应用_第18张图片

  • 使用su命令

Linux系统安全及应用_第19张图片

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可以自动检

查语法是否输入错误

[root@localhost ~]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

Linux系统安全及应用_第20张图片

#用户    登入主机=(代表用户)  命令
#user    host   =(runas)   command
root     ALL    =(ALL)     ALL(绝对路径)  //root可以使用任何主机代表任何用户执行任何命令
%wheel   ALL    =(ALL)     ALL

user: 运行命令者的身份
      可以是用户也可以是组(组前应该加%)
      用户可以是用户名或者UID
      组可以是组名或者GID
host: 通过哪些主机 可以写IP地址或主机名 可以有多个主机
runas:以哪个用户的身份
command: 运行哪些命令
     command name  (命令)
     directory     (文件夹里的命令)
     sudoedit      (可以编辑sudoers这个文件,变相变成管理员)
     Cmnd_Alias    (命令别名)

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

例子:

将用户加入sudoers

  • 进入配置文件

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

Linux系统安全及应用_第21张图片

 将用户加入wheel组中

Linux系统安全及应用_第22张图片

可以使用通配符

2.2sudo别名

sudo别名有四种类型:

  • User_Alias(用户)

  • Runas_Alias(代表用户)

  • Host_Alias(登录主机)

  • Cmnd_Alias(命令)

进入配置文件

2.3sudo子目录

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

[root@localhost ~]# vim /etc/sudoers.d/test
tieniu1 ALL=(root) usr/bin/*,!/usr/sbin/reboot

[root@localhost ~]# useradd tieniu1
[root@localhost ~]# echo "123123" |passwd --stdin tieniu1
更改用户 tieniu1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# ll /etc/sudoers.d/test 
-rw-r--r--. 1 root root 24 3月  11 00:05 /etc/sudoers.d/test
[root@localhost ~]# chmod 440 /etc/sudoers.d/test 
[root@localhost ~]# ll /etc/sudoers.d/test 
-r--r-----. 1 root root 24 3月  11 00:05 /etc/sudoers.d/test

 Linux系统安全及应用_第23张图片

Linux系统安全及应用_第24张图片

三、系统引导和登录控制

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

 Linux系统安全及应用_第25张图片

3.3grub加密方法2

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

[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 ~]# grub2-mkpasswd-pbkdf2   //根据提示设置GRUB菜单的密码
输入口令:               //输入密码
Reenter password:       //重新输入密码 
PBKDF2 hash of your password is //生成的密码口令
grub.pbkdf2.sha512.10000.D256BD5860E19BD5D861BB353C00BA75747C04271D4C2C029760DC4CA1542ADC7A7DBFA6D3F2382971FFFFD03D57E1A9B524F60153E691A8F98FDEC69996EF73.C4B2FDF005391F90CA7B0CE6D840BFCE8D7C3EF386C3DCEC097282D59B6FE5798A45E3D8886C446DABA1113D47D174075208D2433D63CCE8B5F5A42A9BF06506
[root@localhost ~]# vim /etc/grub.d/00_header //在/etc/grub.d/00_header文件中
cat <
  • 文件备份

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

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

Linux系统安全及应用_第26张图片

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

Linux系统安全及应用_第27张图片

  •  重启按e键进入grub菜单

Linux系统安全及应用_第28张图片

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

Linux系统安全及应用_第29张图片

4、终端登录安全控制

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

安全终端配置:/etc/securetty

Linux系统安全及应用_第30张图片

4.2禁止普通用户登录

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

Linux系统安全及应用_第31张图片

 

 Linux系统安全及应用_第32张图片

5、网络扫描—NMAP

  • 一款强大的网络扫描、安全 检测工具
  • 官方网站:Nmap: the Network Mapper - Free Security Scanner
  • CentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm

网络端口扫描

控制位 作用
SYN 建立链接
ACK 确认
FIN 结束断开
PSH 传送 0 数据缓存 上层应用协议
RST 重置
URG 紧急
服务 端口号
HTTP 80
HTTPS 443
Telnet 23
FTP 21
SSH(安全登录)、SCP(文件传输)、端口重定向 22
SMTP 25
POP3 110
WebLogic 7001
TOMCAT 8080
WIN2003远程登录 3389
Oracle数据库 1521
MS SQL* SEVER数据库sever 1433
MySQL 数据库sever 3306

使用nmap前需要安装

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

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

Linux系统安全及应用_第33张图片

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

Linux系统安全及应用_第34张图片

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

Linux系统安全及应用_第35张图片

你可能感兴趣的:(系统安全,linux,安全)