10 - Linux系统安全及应用

目录

一、账号安全控制

1.系统账号清理

2.密码安全控制

3.命令历史限制

4.终端自动注销

二、用户切换和用户提权

[1. su 命令 - 切换用户](#1. su 命令 - 切换用户)

[1.1 su 命令的用途及用法](#1.1 su 命令的用途及用法)

[1.2 限制使用su 命令的用户](#1.2 限制使用su 命令的用户)

[1.3 查看su操作记录](#1.3 查看su操作记录)

[2. sudo 命令 - 用户提权](#2. sudo 命令 - 用户提权)

[2.1 sudo 命令的用途及用法](#2.1 sudo 命令的用途及用法)

[2.2 配置sudo授权](#2.2 配置sudo授权)

[2.3 查看sudo操作日志](#2.3 查看sudo操作日志)

3.终端登录安全控制

[3.1 限制root只在安全终端登录](#3.1 限制root只在安全终端登录)

[3.2 禁止普通用户登录](#3.2 禁止普通用户登录)

三、Linux中的PAM安全认证

1.什么是PAM

[2. su 命令的安全隐患](#2. su 命令的安全隐患)

[3. PAM认证原理](#3. PAM认证原理)

[4. PAM认证的构成](#4. PAM认证的构成)

[四、网络端口扫描 - nmap](#四、网络端口扫描 - nmap)


一、账号安全控制

1.系统账号清理

  • 设置非登录用户

    usermod -s /sbin/nologin

  • 锁定长期不使用的账号

    #方法一:
    usermod -L "用户名" #锁定指定用户
    usermod -U "用户名" #解锁指定用户

    #方法二:
    passwd -l "用户名" #锁定指定用户
    passwd -u "用户名" #解锁指定用户

  • 删除无用的账号

    userdel "用户名" #删除用户
    userdel -r "用户名" #删除用户及其家目录

  • 锁定账号文件

    chattr +i /etc/passwd /etc/shadow #锁定passwd、shadow文件
    lsattr /etc/passwd /etc/shadow #查看passwd、shadow文件状态
    chattr -i /etc/passwd /etc/shadow #解锁指passwd、shadow文件

2.密码安全控制

  • 对于新建用户设置密码规则

    vi /etc/login.defs
    ......
    PASS_MAX_DAYS 99999 #用户密码最长有效天数
    PASS_MIN_DAYS 0 #用户可修改密码的最小间隔天数
    PASS_MIN_LEN 5 #用户密码的最小长度
    PASS_WARN_AGE 7 #指定在密码过期前几天向用户发出警告

  • 对于已有用户设置密码规则

    chage "选项" "用户名"
    例:chage -M 30 lisi #设置lisi用户的密码有效期为30天

选项 解释
-m 设置修改密码的最小间隔天数,m=0时任何时间都可以更改密码
-M 设置密码有效天数
-w 设置用户密码到期前,收到警告信息的天数
-E 设置帐号到期的日期
-i 设置密码可以过期的天数,超过此限制此帐号将不可用
-l 列出当前设置
-d 上一次更改密码的日期
复制代码
chage -d 0 zhangsan     #强制zhangsan用户在下次登陆时修改密码

3.命令历史限制

  • 减少记录的命令条数

    vi /etc/profile
    ......
    export HISTSIZE=20 #使用histor命令时,可查询到的历史命令为20条
    ......

    source /etc/profile #重新加载配置文件

  • 登陆时自动清空命令历史记录

    vi ~/.bashrc #登录时会自动运行此配置文件内的操作
    ......
    echo " " > ~/.bashrc_history #将空行替换入.bashrc_history中
    ......
    #即登录时会自动运行上述命令,即登陆时自动清除命令的历史记录

4.终端自动注销

复制代码
vi /etc/profile
......
export TMOUT=600     #设置终端闲置600秒后自动注销
......


source /etc/profile     #重新加载配置文件

二、用户切换和用户提权

1. su 命令 - 切换用户

1.1 su 命令的用途及用法

复制代码
su - "目标用户"     #切换目标用户

whoami     #显示当前登录用户

1.2 限制使用su 命令的用户

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

    gpasswd -a lisi wheel #将lisi用户加入到wheel组内

  • 启用pam_wheel认证模块

    vi /etc/pam.d/su
    #%PAM-1.0
    auth sufficient pam_rootok.so #将开头的"#"删除
    auth required pam_wheel.so use_uid #将开头的"#"删除
    ......
    wq #保存退出

    启用pam_wheel认证模块后没有加入wheel组的用户将无法使用su命令

1.3 查看su操作记录

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

2. sudo 命令 - 用户提权

2.1 sudo 命令的用途及用法

用途:以其他身份(如root)执行授权的命令

复制代码
sudo "授权命令"

2.2 配置sudo授权

复制代码
vi sudo 或 vi /etc/sudoers     #此文件默认权限为440,保存退出时必须使用"wq!"命令强制执行
#语法格式: 用户 主机名=命令程序列表
#          %组名 主机名=(用户)命令程序列表
#用户\%组名:直接授权的用户、组
#(用户);以何种身份执行命令,缺省时默认以root用户身份运行命令
#主机名:使用此规则的主机名,ALL代表所有主机
#命令程序列表:允许执行的命令,需填写命令的绝对路径,多个命令之间以","分隔,ALL代表所有命令

#例:
Tom ALL=/sbin/ifconfig     #授权TOM使用ifconfig命令
%wheel ALL=NOPASSWD:ALL     #wheel组内成员无需验证密码即可使用所有命令

User_Alias USERS=Tom,lisi,zhangsan     #为指定用户设置别名
Host_Alias HOSTS=localhost,bogon     #为指定主机名设置别名
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/useradd,/usr/bin/userdel     #为指定命令设置别名

2.3 查看sudo操作日志

  • 需先启用sudo操作日志

    visudo
    ......
    Defaults logfile = "/var/log/sudo"

  • 查看sudo操作日志

    tail /ver/log/sudo

3.终端登录安全控制

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

复制代码
vi /etc/securetty
......
vc/9
vc/10
vc/11
tty1
#tty2     #禁止终端tty2登录,在其前方输入#
#tty3     #禁止终端tty3登录,在其前方输入
tty4
tty5
tty6
tty7

3.2 禁止普通用户登录

需建立/etc/nologin文件

复制代码
touch /etc/nologin     #禁止普通用户登录

删除nologin文件或重启后即恢复正常

复制代码
rm -rf /etc/nologin     #取消限制

三、Linux中的PAM安全认证

1.什么是PAM

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

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

2. su 命令的安全隐患

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

3. PAM认证原理

PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_*.so

  • PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。
  • 用户访问服务器的时候,服务器的某一个服务程序把用户的不同请求发送到PAM模块进行认证。
  • 不同的应用程序所对应的PAM模块也是不同的。

4. PAM认证的构成

查看某个程序是否支持PAM认证,可以用ls命令

  • 示例:查看su是否支持PAM模块认证

    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. optional不用于验证,只显示信息(通常用于session(会话)类型)

四、网络端口扫描 - nmap

  • 需先安装namp工具

    yum install nmap -y #安装nmap工具

  • 用法:

    namp "扫描类型" "选项" "扫描目标"

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

例:

复制代码
namp -sT 127.0.0.1     #查看本机的TCP端口
namp -p 80 192.168.4.0/24     #检测192.168.4.0/24网段有哪些主机提供HTTP服务
namp -n -sP 192.168.4.0/24     #检测192.168.4.0/24网段有哪些存活主机
相关推荐
_OP_CHEN1 小时前
【Linux网络编程】(一)初识计算机网络:从独立主机到协议世界的入门之旅
linux·服务器·网络·网络协议·计算机网络·socket·c/c++
原来是猿1 小时前
Linux-【文件系统上】
linux·服务器·数据库
寂柒4 小时前
信号量——基于环形队列的生产消费模型
linux·ubuntu
vin_zheng6 小时前
破解企业安全软件网络拦截实战记录
运维
林姜泽樾8 小时前
Linux入门第十二章,创建用户、用户组、主组附加组等相关知识详解
linux·运维·服务器·centos
xiaokangzhe8 小时前
Linux系统安全
linux·运维·系统安全
feng一样的男子9 小时前
NFS 扩展属性 (xattr) 提示操作不支持解决方案
linux·go
xiaokangzhe9 小时前
Nginx核心功能
运维·nginx
松果1779 小时前
以本地时钟为源的时间服务器
运维·chrony·时间服务器
yy55279 小时前
系统安全及应用
安全·系统安全