当前位置:   article > 正文

linux系统安全及应用_siocsifaddr: 不允许的操作

siocsifaddr: 不允许的操作


前言

作为一种开放源代码的操作系统,linux服务器以其安全、高效和稳定的显著优势而得以广泛应用。本文主要从账号安全控制来加强系统安全。

账号安全控制

用户账号,是计算机使用者的身份凭证或标识,每一个要访问系统资源的人,必须凭借其用户账号才能进入计算机

1.基本安全措施

1.1 系统账号清理

在linux系统中,除了手动创建的用户,还包括系统或程序安装过程生成的其他大量用户,除了root之外,其他用户一般是不允许登录系统的,这些用户的的登录shell通常是/sbin/nologin

[root@yzq ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
  • 1
  • 2
  • 3
  • 4

我们也可以手动将不允许登录系统的用户shell环境修改
将非登录用户的Shell设为/sbin/nolgin(usermod -s)
在这里插入图片描述

锁定长期不使用的账号
删除无用的账号(userdel [-r] 用户名 #-r参数表示连用户的宿主目录一并删除)
锁定账号文件passwd、shadow
passwd :
-d:删除密码,仅使用用户名即可登陆系统
-l:停止账号使用 #锁定
-u:启用已被停止的账户 #解锁
-S:显示密码信息(账户状态)是否被锁定
usermod
-L(锁定!)
-U(解锁)
-s(指定用户的登录Shell)

对于长期不用的用户账户,若不能确定是否删除可以暂时将其锁定

[root@yzq ~]# tail -3 /etc/passwd
zhangsan:x:1001:1001::/data/zhangsan:/bin/bash
lisi:x:1002:1002::/home/lisi:/bin/bash
wangwu:x:1003:1003::/home/wangwu:/bin/bash
[root@yzq ~]# usermod -L lisi    ##锁定账号
[root@yzq ~]# passwd -S lisi     ##显示账号状态(是否被锁定)
lisi LK 2022-07-06 0 99999 7 -1 (密码已被锁定。)
[root@yzq ~]# usermod -U lisi      ##解锁账号
[root@yzq ~]# passwd -S lisi
lisi PS 2022-07-06 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

如果服务器中的用户账号已固定,不再进行更改,还可以采取锁定账号配置的方法
chattr +i + 目标文件 #锁定文件
chattr -i + 目标文件 #解锁文件
lsattr + 目标文件 #查看文件锁定状态
passwd锁定后无法修改账号信息
shadow锁定后无法修改密码信息
在这里插入图片描述
解锁后可创建

[root@yzq ~]# chattr -i /etc/passwd
[root@yzq ~]# lsattr /etc/passwd
---------------- /etc/passwd
[root@yzq ~]# useradd li
useradd:无法打开 /etc/shadow
[root@yzq ~]# chattr -i /etc/shadow
[root@yzq ~]# lsattr /etc/shadow
---------------- /etc/shadow
[root@yzq ~]# useradd li
[root@yzq ~]# tail -1 /etc/passwd
li:x:1004:1004::/home/li:/bin/bash

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

1.2 密码安全控制

为了降低密码被破解的风险,用户应该定期修改密码,管理员可以在服务器端限制用户密码的最大有效天数
设置密码有效期
要求用户下次登录时修改密码
可以通过chage -M +指定天数+目标用户
也可以通过vi /etc/login.defs进去登录文本文件查询修改
对于新建用户,可以修改/etc/login.defs配置文件

在这里插入图片描述

适用于所有用户
chage -M 30 lisi 用户李四30天后修改密码
chage -d 0 张三 强制用户张三下次登录修改密码

chage修改账号密码有效期
选项:
-m密码可改间隔期,为0时随时改
-M保持最大天数
-w警告期
-E到期时间(到期后无法登录)
-d上一次密码修改时间
-i延期时间
-l列出当前设置

1.3历史命令限制,终端自动注销

shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险,只要获得用户的命令历史文件,该用户的操作将一览无余。
Bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条,通过修改/etc/profile文件中的HISTSIZE值,可以影响系统中的所有用户

历史命令限制

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

进入/etc/profile环境变量配置文件(全局生效)中设置,保存退出后将设置生效,命令source /etc/profile,或者直接重启

适用与所有用户

history查看历史命令
在这里插入图片描述
进入环境变量配置文件修改设置

[root@yzq ~]# vim /etc/profile

  • 1
  • 2

在这里插入图片描述
在这里插入图片描述

适用于单个用户

修改用户宿主目录下的.bash_logout文件

在这里插入图片描述
再使用source命令重新加载识别此文件

[root@yzq ~]# source .bash_profile 

  • 1
  • 2

history -c清空历史记录的缓存
可修改.bash_logout 中文件使机器登出时生效
vim .bash_logout 进入修改
输入想要生效的命令并保存
登出机器生效

~目录中文件
.bash_history 当前用户下保留的历史命令
.bash_profile 当前用户的环境变量
.bash_logout 用户从当前系统登出时执行的命令
.bash_profile 当前用户的环境变量
.bashrc 登录系统时加载的东西
(加载:.bash_profile——.bashrc——/etc/profile)

终端自动注销(闲置时)

进入环境变量文件(/etc/profile)修改
输入export TMOUT=时间 --》闲置时间后自动注销
source /etc/profile 重新加载识别文件使修改生效

[root@yzq ~]# vim /etc/profile
[root@yzq ~]# source /etc/profile

  • 1
  • 2
  • 3

修改并使其生效
在这里插入图片描述
闲置60s后自动注销
在这里插入图片描述

2.系统引导和登录控制

2.1 使用su命令切换用户(加载环境)

默认情况下,所有用户都可以使用su命令,从而有机会反复尝试其他用户的登录密码

[root@yzq ~]# su lisi         ##root用户切换无需密码
[lisi@yzq root]$ su wangwu    ##非root用户切换需密码 
密码:
[wangwu@yzq root]$ 

  • 1
  • 2
  • 3
  • 4
  • 5
限制su命令的使用

为了加强su命令的控制,可以借用pam_wheel认证模块,只允许极个别用户使用su命令切换用户

在/etc/pam.d/su中第二行和第六行
2 auth sufficient pam_rootok.so
6 #auth required pam_wheel.so use_uid

a.默认状态下(第二行开启,第六行注释),允许所有用户使用su命令
b.如果开启第六行表示只有root用户和wheel组用户可以使用su命令
c.如果注释第二行,开启第六行,表示只有wheel组用户可以使用su命令,root用户也将被禁用su命令

[root@yzq ~]# gpasswd -a lisi wheel
正在将用户“lisi”加入到“wheel”组中
[root@yzq ~]# vim /etc/pam.d/su

  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
非指定组将不允许使用su命令

[root@yzq ~]# su 123
[123@yzq root]$ su - zhangsan
密码:
su: 拒绝权限

  • 1
  • 2
  • 3
  • 4
  • 5

指定组内用户可以使用su命令

[root@yzq pam.d]# cat /etc/group | grep -i "wheel"
wheel:x:10:lisi
[root@yzq ~]# su lisi
[lisi@yzq root]$ su root
密码:
[root@yzq ~]# 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

使用su命令切换用户的操作将会记录到/var/log/secure文件中查看

2.2 使用sudo机制提升权限

对于普通用户来说,有时需要部分管理权限,但是切换用户需要知道root密码,这样安全风险就增加了,使用sudo命令,可以避免这一点
用途:以其他用户身份(如root)执行授权的命令
用法:sudo 授权命令

配置sudo授权

sudo配置方式有以下两种(默认权限是440)

[root@yzq ~]# ll /etc/sudoers
-r--r-----. 1 root root 4328 1030 2018 /etc/sudoers

  • 1
  • 2
  • 3
1.visudo

visudo进入修改格式
用户/组名称 主机组(主机名)= (提权的权限身份-root) 赋权的使用命令(以绝对路径的方式来写,可写多个,写多个命令加,)
使用者账户 登入者的来源主机名=(可切换的身份) 可下达的指令
root ALL=(ALL) ALL
在这里插入图片描述
用户lisi配置虚拟网卡ens33:1

[lisi@yzq etc]$ ifconfig ens33:1 192.168.28.200
SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作

  • 1
  • 2
  • 3
  • 4

为lisi配置权限

[root@yzq etc]# which ifconfig 
/usr/sbin/ifconfig
[root@yzq etc]# visudo

  • 1
  • 2
  • 3
  • 4

在这里插入图片描述`在

[root@yzq etc]# su lisi
[lisi@yzq etc]$ ifconfig ens33:1 192.168.28.200
SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作
[lisi@yzq etc]$ sudo ifconfig ens33:1 192.168.28.200
[sudo] lisi 的密码:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

发现需要输入密码,继续配置
在这里插入图片描述

[lisi@yzq etc]$ sudo ifconfig ens33:1 192.168.28.200
[lisi@yzq etc]$ ifconfig 
ens33:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.28.200  netmask 255.255.255.0  broadcast 192.168.28.255
        ether 00:0c:29:9d:8d:e2  txqueuelen 1000  (Ethernet)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
2.在配置文件/etc/sudoers中添加授权

该文件为只读文件,需要强制保存(修改方法同visudo)
在这里插入图片描述

sudo命令

sudo 【参数选项】命令
-l列出用户在主机上可用和被禁止的命令
-v验证用户时间戳
⭐⭐-u指定以某个用户执行特定操作
-k删除时间戳

[lisi@yzq etc]$ sudo -l
用户 lisi 可以在 yzq 上运行以下命令:
    (root) NOPASSWD: //usr/sbin/ifconfig
    (ALL) ALL

  • 1
  • 2
  • 3
  • 4
  • 5

对于已经启用sudo日志,可以从/var/log/sudo文件中查看用户的sudo操作

3.PAM安全认证

3.1 PAM及其作用

(1)PAM是一种高效而且灵活便利的用户级别认证方式,他也是当前Linux服务器普遍使用的认证方式
(2)PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录,su等应用程序
(3)系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略

3.2 PAM认证原理

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

3.3 PAM认证的构成

[root@yzq ~]# cat /etc/pam.d/su
#%PAM-1.0
auth		sufficient	pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth		sufficient	pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth		required	pam_wheel.so use_uid
auth		substack	system-auth
auth		include		postlogin
account		sufficient	pam_succeed_if.so uid = 0 use_uid quiet
account		include		system-auth
password	include		system-auth
session		include		system-auth
session		include		postlogin
session		optional	pam_xauth.so

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

3.4 PAM认证类型

1)认证管理
接受用户名和密码,进而对该用户的密码进行认证
2)账户管理
检查账户是否被允许登录系统,账号是否已经过期,账号的登录是否有时间段的限制
3)密码管理
主要用来修改用户的密码
4)会话管理
主要是提供对会话的管理和记账

3.5 PAM控制类型

1)required验证失败时仍然继续,但返回Fail
2)requisite验证失败则立即结束整个验证过程,返回Fail
3)sufficien验证成功则立即返回,不再显示,否则忽略结果并继续
4)optional不用于验证,只是显示信息(通常用于session类型)

终端登录安全检测

限制root只在安全终端登录,禁止普通用户登录

touch /etc/nologin ##除root用户以外用户不能登录

或者vim /etc/securetty进入注释不允许登录的终端
(虚拟机内按下Ctrl+Alt和功能键Fn(n=1…6)来切换终端)
在这里插入图片描述

网络端口扫描

⭐⭐nmap

安装nmap工具

[root@yzq ~]# yum install -y nmap

  • 1
  • 2

nmap命令常用选项与对应扫描类型
-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 通而放弃扫描

扫描本地TCM端口开启情况

[root@yzq ~]# nmap -sT 127.0.0.1

Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-14 08:44 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0010s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
111/tcp  open  rpcbind
631/tcp  open  ipp
6000/tcp open  X11

Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述
开启httpd服务,查看端口情况

[root@yzq ~]# systemctl start httpd

  • 1
  • 2

在这里插入图片描述
扫描存活的主机号
在这里插入图片描述

查看当前网络状态netstat

netstat可以查看当前操作系统的网络连接在状态、路由表、接口统计等信息,是了解网络状态及排除网络服务状态的有效工具
netstat命令
-n 以数字形式显示相关主机地址、端口等信息
-r 显示路由表信息
-a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-l 显示处于监听(listening)状态打完网络连接及端口信息
-t 查看TCP传输控制协议的相关信息
-u 查看UDP用户数据报协议相关信息
-p 显示网络连接相关联的进程号、进程信息(此选项需要root权限)

查看TCP默认选项-natlp
可连UDP一起全部查看-natlup
在这里插入图片描述
(ss -natulp可在服务繁忙时使用,只看一个服务,占用服务较少,比较快)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/190579
推荐阅读
相关标签
  

闽ICP备14008679号