linux 系统安全及应用

目录

一、账号安全控制

1.1 账号安全基本措施

1.1.1 系统账号清理

1.1.2 密码安全控制

1.1.3 命令历史限制

1.1.4 终端自动注销

1.2 使用su命令切换用户

1.2.1 用途及用法

1.2.2 密码验证

1.2.3 限制使用su命令的用户

1.2.4 查看su操作记录

1.3 linux中的PAM安全认证

1.3.1 su命令的安全隐患

1.3.2 PAM可插拔式认证模块

1.4 PAM认证原理

1.5 PAM认证的构成

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

1.5.2 查看su的PAM配置文件:/cat /etc/pam.d/su

1.6 PAM安全认证流程

1.7 使用sudo机制提升权限

1.7.1 sudo命令的用途及用法

1.7.2 配置sudo授权

1.7.3 查看sudo操作记录

1.7.4 查询授权的sudo操作

二、系统引导和登录控制

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

2.2 进制普通用户登录

三、弱口令检测

3.1 Joth the Ripper,简称为JR

四、端口扫描

4.1 NMAP

4.2 NMAP的扫描

4.3 常用的扫描类型


一、账号安全控制

1.1 账号安全基本措施

1.1.1 系统账号清理

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

usermod -s /sbin/nologin

  • 锁定长期不使用的账号

usermod -L 用户名        passwd -l 用户名        passwd -S 用户名

  • 删除无用账号

userdel [-r] 用户名

  • 锁定账号文件 passwd、shadow

chattr +i /etc/passwd /etc/shadow

lsatr /etc/passwd /etc/shadow

chattr -i /etc/passwd /etc/shadow

示列

[root@localhost ~]# chattr +i /etc/passwd        #锁定文件
[root@localhost ~]# lsattr /etc/passwd
----i----------- /etc/passwd                    #查看文件
[root@localhost ~]# chattr -i /etc/passwd        #解锁文件
[root@localhost ~]# lsattr /etc/passwd            
---------------- /etc/passwd                    #再次查看

1.1.2 密码安全控制

  • 设置密码有效期
  • 要求用户下次登录时修改密码

1.适用于新建用户

vim /etc/login.defs                #修改配置文件

########

第25行:

PASS_MAX_DAYS 30          #修改密码有效期为30天

2.适用于已有用户

chage -M 30 dn                        #x修改密码有效期为30天

3.强制在下次登录成功时修改密码(/etc/shadow第三个字段被修改为0)

chage -d 0 dn                        #设置下次登录强制修改密码

1.1.3 命令历史限制

  • 减少记录历史命令的条数
  • 登录时自动清空命令历史

[root@localhost ~]# vi ~/.bashrc                        #编辑配置文件

echo" ">~/.bash history                                        #输入空格进入文件以清除历史命令

1.1.4 终端自动注销

  • 闲置300秒后自动注销

[root@localhost ~]# vi /etc/profile        #编辑配置文件

.......

export TMOUT=300                                #设置空闲300秒后自动注销

[root@localhost ~]# source /etc/profile        #刷新配置文件生效

1.2 使用su命令切换用户

1.2.1 用途及用法

  • 用途:Substitute User, 切换用户
  • 格式:su - 目标用户

1.2.2 密码验证

  • root切换任意用户,不验证密码
  • 普通用户切换其他用户,验证目标用户的密码

[root@localhost ~]# su - root                #带“-”选项表示将使用目标用户的登录shell环境

password:

1.2.3 限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组
  • 启动pam_wheel认证模块

[root@localhost ~]# gpasswd -a tsengyia wheel

#将用户“tsengyia”加入到组“wheel”中

#启动pam_wheel认证模块

[root@localhost ~]# vi /etc/pam.d/su

#%PAM-1.0

auth        sufficient pam_rootok.so

auth        requiredpam wheel.so use uid

1.2.4 查看su操作记录

  • 安全日志文件:/var/log/secure

1.3 linux中的PAM安全认证

1.3.1 su命令的安全隐患

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

1.3.2 PAM可插拔式认证模块

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

1.4 PAM认证原理

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

1.5 PAM认证的构成

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

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

ls  /etc/pam.d | grep su

1.5.2 查看su的PAM配置文件:/cat /etc/pam.d/su

  • 每一行都是一个独立的认证过程
  • 每一行可以区分为三个字段
    • 认证类型
    • 控制类型
    • PAM模块及其参数

1.6 PAM安全认证流程

  • 控制类型也称做Control Flags,用于PAM验证类型的返回结果
  1. required验证失败时仍然继续,但返回Fail
  2. requisite验证失败则立即结束整个验证过程,返回Fail
  3. sufficient验证成功则立即返回,不再继续,否则忽略结果并继续
  4. optional不用于验证,只显示信息 (通常用于session类型)

1.7 使用sudo机制提升权限

1.7.1 sudo命令的用途及用法

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

sudo 授权命令

1.7.2 配置sudo授权

  • visudo或者vi /etc/sudoers
  • 记录格式

用户        主机名=命令程序列表

用户        主机名=(用户)命令程序列表

用户: 直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)。

主机名: 使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机

(用户): 用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令

命令程序列表: 允许授权的用户通过sudo方式执,行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号进行分隔。ALL则代表系统中的所有命令

示列:

Tom ALL=/sbin/ifconfig
Jerry localhost=/sbin/*,!/sbin/reboot,!/sbin/poweroff    
#通配符“*"表示所有、取反符号"!”表示排除

%wheel ALL=NOPASSWD: ALL        #表示wheel组成员无需验证密码即可使用sudo执行任何命令
Mike ALL=(root)NOPASSWD: /bin/kill, /usr/bin/killall

使用关键字 User_Alias、Host_Alias、Cmnd_Alias 来进行设置别名(别名必须为大写)
User_Alias USERS=Tom,Jerry,Mike
Host_Alias HOSTS=localhost,bogon
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel
USERS HOSTS=CMNDS

1.7.3 查看sudo操作记录

  • 需要启用 Defaults logfile 配置
  • 默认日志文件:/var/log/sudo

1.7.4 查询授权的sudo操作

sudo -l        #查看当前用户获得哪些 sudo 授权

二、系统引导和登录控制

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

  • 安全终端配置:/etc/securetty

在 Linux 系统中,login 程序会读取/etc/securetty 文件,以决定允许 root 用户从哪些终端(安全终端)登录系统。
vi /etc/securetty
#tty5
#tty6

2.2 进制普通用户登录

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

login 程序会检查/etc/nologin 文件是否存在,如果存在,则拒绝普通用户登录系统(root 用户不受限制)。
touch /etc/nologin            #禁止普通用户登录
rm -rf /etc/nologin            #取消登录限制

三、弱口令检测

3.1 Joth the Ripper,简称为JR

  • 一款密码分析工具,支持字典式的暴力破解
  • 通过对shadow文件的口令分析,可以检测密码强度
  • 官方网站:John the Ripper password cracker

四、端口扫描

4.1 NMAP

  • 一款强大的网络扫描、安全检测工具
  • #安装 NMAP 软件包    rpm -qa | grep nmap      yum install -y nmap

4.2 NMAP的扫描

nmap        【扫描类型】 【选项】 <扫描目标>...

4.3 常用的扫描类型

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

示列:

#分别查看本机开放的TCP端口、UDP端口
nmap -sT 127.0.0.1
nmap -sU 127.0.0.1

#检测192.168.4.0/24网段有哪些主机提供HTTP服务
nmap -p 80 192.168.4.0/24

#检测192.168.4.0/24网段有哪些存活主机
nmap -n -sP 192.168.4.0/24

扩展:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值