Linux的系统安全及管理

Linux的系统安全及管理

文章目录

  • Linux的系统安全及管理
    • 1账号安全控制
      • 1.1系统账号清理
        • 1.1.1将非登录用户的Shell设为/sbin/nologin
        • 1.1.2锁定解锁长期不用账号
        • 1.1.3锁定账号文件passwd、shadow
    • 2密码安全控制
    • 3命令历史限制
      • 3.1风险
      • 3.2限制历史命令个数
      • 3.3清空历史命令
    • 4使用su命令切换用户
      • 4.1限制用户使用su命令
      • 4.2查看su操作记录
    • 5用户授权sudo
      • 5.1sudo命令的用途及用法
      • 5.2sudo参数命令
      • 5.3sudo命令授权
      • 5.4别名给用户组设置提权
    • 6PAM安全认证
      • 6.1**PAM(Pluggable Authentication Modules)可插拔式认证模块**
      • 6.2**PAM认证原理**
      • 6.3PAM配置文件介绍
    • 7终端登录安全控制
    • 8网络端口扫描-nmap
      • 8.1nmap介绍
    • 9netstat命令
    • 10总结

1账号安全控制

1.1系统账号清理

1.1.1将非登录用户的Shell设为/sbin/nologin

Linux的系统安全及管理_第1张图片

1.1.2锁定解锁长期不用账号

命令一:
passwd -l lin #锁定用户lin
passwd -u lin #解锁用户lin

命令二:
usermod -L lin #锁定用户lin
usermod -U lin #解锁用户lin

1.1.3锁定账号文件passwd、shadow

chattr +i /etc/passwd /etc/shadow
#将passwd和shadow文件进行锁定
chattr -i /etc/passwd /etc/shadow
#将passwd和shadow文件解锁
lsattr /etc/passwd /etc/shadow
#查看passwd和shadow文件的状态
将passwd进行锁定

Linux的系统安全及管理_第2张图片

对passwd进行解锁

image-20220713091556300

2密码安全控制

密码信息内容修改可以使用chage命令进行修改shadow里面的信息内容来达到限制用户的情况。

除了以上方法还有一种可以修改配置文件的内容。

可以进入配置文件 /etc/nologin.defs 进行修改,修改之后以后创建的用户都会按照文件配置内容进行执行

image-20220528153247947

修改密码时间

Linux的系统安全及管理_第3张图片

3命令历史限制

3.1风险

当我们在终端使用history,会查看到以前在终端输入的命令都会被记录。就算终端进行重启,命令还是会被记录。

Linux的系统安全及管理_第4张图片

3.2限制历史命令个数

HISTSIZE=1000 默认历史命令存储1000条

修改为100条

Linux的系统安全及管理_第5张图片

image-20220713185423110

3.3清空历史命令

临时清空 history -c

永久清空 如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加下面这行rm -f $HOME/.bash_history 。这样,当用户每次注销时,
.bash_history文件都会被删除.

4使用su命令切换用户

切换到目标用户。当前目录不变

root切换到任意用户,不需要验证密码。

普通用户之间切换,都需要验证目标用户的密码。

4.1限制用户使用su命令

su用户的安全隐患

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户的登录密码,带来安全风险。
  • 为了加强su命令的使用控制,可借助于PAM认证模块。只允许极个别用户使用su命令进行切换

解决方法

将需要限制的用户添加到 wheel 组里面,加入进去后,该用户不能被除了root用户的其它用户切换。

因为wheel组里面有su命令模块,叫做PAM认证,只要开启这个认证,别的用户就无法使用su命令切换到该用户,wheel组内的成员可以相互切换。

Linux的系统安全及管理_第6张图片

默认情况第一行开启,第二行被注释。

以上第一行是决定root用户切换到别的用户是否需要密码。(注释即需要,不注释即不需要)

行决定是否开启pam认证,(开启后只有wheel组成员才能使用su命令)

注释第一行,开启第二行,那么就表示只有wheel组内才能使用su命令,root也会被禁用

4.2查看su操作记录

image-20220713191808859

5用户授权sudo

在进行系统操作时,有些命令只有root用户可以执行,为了避免root用户密码被更多的人知道,我们可以对普通的用户进行提权,使其可以使用root的一些权限而不用登入root账户。
在Linux中可以使用visudo或vim /etc/sudoers文件进行对用户进行提权设置。这里的/etc/sudoers文件权限为440,所以在编辑完之后需要wq!保存强制退出。

5.1sudo命令的用途及用法

  • 用途:以其它的用户身份(如root)执行授权的命令
  • 用法:sudo 授权命令

5.2sudo参数命令

-l 列出用户在主机上可用的和被禁止的命令,一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的。
-v 验证用户的时间戳,如果用户运行sudo后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo操作,可以跟踪最新的时间戳
-u 指定以用户执行特定操作
-k 删除时间戳

5.3sudo命令授权

配置sudo命令授权的配置文件在:

Linux的系统安全及管理_第7张图片

用户 主机名=(用户)命令程序表 :用户表示执行哪个用户的权限(可以不写,默认root)

用户:直接授权指定的用户名,或采用"组名"的形式(授权一个组的所有用户)
主机名:使用此规则的主机名,每配置过主机名时可以用locathost,有配过主机名
则用实际的主机min,ALL代表带所有主机。
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需要填写命令程序的完整路径,多个命令之间以逗号进行分隔。ALL代表所有命令
操作实例

Linux的系统安全及管理_第8张图片

需要用sudo提权

5.4别名给用户组设置提权

当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、 主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置。

查看组下面的用户
grep “wheel” /etc/group

用户别名的语法格式:
1)User_Alias 用户别名:包含用户、用户组(%组名(使用%引导))、还可以包含其他其他已经用户的别名
User_Alias OPERATORS=zhangsan,tom,lisi
2)Host_Alias
主机别名:主机名、IP、网络地址、其他主机别名 !取反
Host_Alias MAILSVRS=smtp,pop
3)Cmnd_Alias
命令路劲、目录(此目录内的所有命令)、其他事先定义过的命令别名
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum

6PAM安全认证

6.1PAM(Pluggable Authentication Modules)可插拔式认证模块

  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式

6.2PAM认证原理

具体步骤:PAM认证首先要确定那一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于/lib64/security)进行安全认证。

用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不用的。

如果想查看某个程序是否支持PAM认证,可以用ls命令进程查看/etc/pam.d 下面是否有相应的配置文件

6.3PAM配置文件介绍

PAM的配置文件中的每一行都是一个独立的认证过程,它们从上往下的顺序依次由PAM模块调用。

每一行可以区分为三个字段:认证类型 、 控制类型 、 PAM模块及参数

Linux的系统安全及管理_第9张图片

第一列代表PAM认证模块类型

auth(认证管理) : 对用户身份进行识别,如提示输入密码,或者判断是否为root

account(账户管理) : 对账号各项属性进行检查,如是否允许登录系统,账号是否已过期,是否达到最大用户数等。

password(密码管理) : 使用用户信息来更新数据,如修改用户密码。

session (会话管理) : 定义登录前以及退出后要进行的会话草最管理,如登录连接信息,用户数据打开和关闭,挂载文件系统。
第二列代表PAM控制标记

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

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

PAM简单来说就是管理系统“默认”程序/服务的权限程序

7终端登录安全控制

限制root只在安全终端登录
禁止普通用户登录当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统。这时候,只需要简单地建立/etc/nologin文件即可。login程序会检查/etc/nologin文件是否存在,如果存在,则拒绝普通用户登录系统(root用户不受限制)。

touch /etc/nologin #除root以外的用户不能登录了。
此方法实际上是利用了shutdown延迟关机的限制机制,只建议在服务器维护期间临时使用。当手动删除/etc/nologin文件或者重新启动主机以后,即可恢复正常。
虚拟机内远程不可虚拟控制台的选择可以通过按下ctrl+A1t键和功能键Fn(n=1~6)来实现(tty1-tty6)tty1图形界面tty2-6字符界面

8网络端口扫描-nmap

8.1nmap介绍

端口取值范围: 0-65535。0是一个预留的特殊端口。

扫描目标: 主机名,IP地址,网络地址等,多个目标以空格分隔。

常用选项

-p分别用来指定端口扫描

-n禁止反向DNS解析

image-20220714100658756

常用扫描类型

-sS 半开扫描: 值向目标发送SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接,如果没收到则认为目标端口未开放
-sT 连接扫描: 这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,如果失败则认为目标端口未开放
-sF TCP FIN 扫描: 开放的端口会忽略这种数据包,关闭的端口会回应RST数据白,许多防火墙只对SYN数据包进行简单过滤,而忽略了其它形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sU UDP扫描: 探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢
-sP ICMP扫描: 类似于ping检测,快速判断目标主机是否存活,不做其它扫描
-P0 跳过ping检测: 这种方式认为所有的目标主机时存活的,当不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。
例namp -sp

Linux的系统安全及管理_第10张图片

namp -ss

Linux的系统安全及管理_第11张图片

namp -sU

Linux的系统安全及管理_第12张图片

9netstat命令

查看当前操作系统的网络连接状态、路由表、接口等信息,它是了解网络状态及排除网络故障的有效工具。

常用选项

-n 以数字的形式显示相关的主机地址,端口等信息
-r 显示路由表信息
-a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-l 显示处于监听(Listening)状态的网络连接及端口信息
-t 查看TCP相关信息
-u 查看UDP相关信息
-p 显示与网络连接相关的进程号、进程名称信息(需要root权限)
netstat -natp 查看正在运行的使用TCP协议的网络状态信息

netstat -naup #查看正在运行的使用UDP协议的网络状态信息

10总结

1账号管理

    • 账号锁定:passwd 、 usermod
  • 文件/目录锁定:chattr +i 、文件/目录解锁:chattr -i
  • 查看文件锁定:lsattr

2密码安全

  • chage命令---->控制账号的密码
  • 修改配置文件:/etc/logine.defs

3历史命令限制history

4切换用户登录SU

5sudo提权(暂时用root用户的权限来执行操作)

6PAM原理

  • 用户---->访问服务----->进项pam验证------>调用对应的so模块
  • 如何查看指定的一个服务程序或命令工具,是否能被pam管理?
    • ls /etc/pam.d/ |grep 名称对象

7终端登录

8nmap端口扫描

  • 可以使用nmap扫描主机。主要输出的内容在于端口、协议、主机ip、是否存活。
  • 作用场景:

9netstat命令

控制账号的密码

  • 修改配置文件:/etc/logine.defs

3历史命令限制history

4切换用户登录SU

5sudo提权(暂时用root用户的权限来执行操作)

6PAM原理

  • 用户---->访问服务----->进项pam验证------>调用对应的so模块
  • 如何查看指定的一个服务程序或命令工具,是否能被pam管理?
    • ls /etc/pam.d/ |grep 名称对象

7终端登录

8nmap端口扫描

  • 可以使用nmap扫描主机。主要输出的内容在于端口、协议、主机ip、是否存活。
  • 作用场景:

9netstat命令

  • netstat是查看指定协议的网络信息

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