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网段有哪些存活主机
相关推荐
qq_433618443 分钟前
shell 编程(三)
linux·运维·服务器
苹果醋311 分钟前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
两张不够花12 分钟前
Jenkins 持续集成部署
运维·jenkins
Tlzns24 分钟前
Linux网络——UDP的运用
linux·网络·udp
码农土豆30 分钟前
PaddlePaddle飞桨Linux系统Docker版安装
linux·docker·paddlepaddle
Hacker_xingchen35 分钟前
天融信Linux系统安全问题
linux·运维·系统安全
丘狸尾36 分钟前
[cisco 模拟器] ftp服务器配置
android·运维·服务器
黑客老陈1 小时前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
张暮笛1 小时前
抓取手机HCI日志
linux
大猫和小黄1 小时前
Windows、CentOS环境下搭建自己的版本管理资料库:GitBlit
linux·服务器·windows·git