系统安全及应用

系统安全及应用

 

           一、账号安全基本措施

            1)系统账号清理

            2)密码安全控制

            3)命令历史限制

            4)终端自动注销

           二、使用su命令切换用户

            1)用途及用法

            2)密码验证

            3)限制使用su命令的用户

           三、Linux中的PAM安全认证

            1)su命令的安全隐患

            2)PAM可插拔式认证模块

            3)PAM认证原理

           四、PAM安全认证流程

           五、使用sudo机制提升权限

            1)sudo命令的用途及用法

            2)配置sudo授权

            3)查看sudo操作记录

            4)查询授权的sudo操作

           六、开关机安全控制

            1)调整BIOS引导设置

            2)GRUB限制

            3)限制更改GRUB引导参数

           七、终端登录安全控制

            1)限制root只在安全终端登录

            2)禁止普通用户登录

           八、系统弱口令检测

            1)Joth the Ripper,简称为 JR

            2)安装JR工具

            3)检测弱口令账号

            4)密码文件的暴力破解

           九、网络端口扫描

            1)安装NMAP软件包

            2)NMAP的扫描

            3)ping通而放弃扫描

 

 

 

 

 

一、账号安全基本措施

1)系统账号清理

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

usermod -s /sbin/nologin

锁定长期不使用的账号

usermod -L 用户名
passwd -l 用户名
passwd -S 用户名  #查看

删除无用的账号

userdel【-r】 用户名

锁定账号文件passwd、shadow

chattr +i /etc/passwd /etc/shadow   #锁定文件

lsattr /etc/passwd /etc/shadow      #查看

chattr -i /etc/passwd /etc/shadow   #解锁文件

例:

锁定、解锁文件

系统安全及应用

2)密码安全控制

设置密码有效期

vim /etc/login.defs
#修改密码配置文件适用于新建用户

chage -M 时间 用户名
#适用于已有用户

chage -d 0 用户名
#强制在下次登录时更改密码

例:

适用于新用户设置

系统安全及应用

 

系统安全及应用

修改后创建一个新用户系统安全及应用

查看一下,已设置好

系统安全及应用

例:

适用于已在用户

系统安全及应用

查看一下,已设置

系统安全及应用

3)命令历史限制

减少记录的命令条数

vim /etc/profile       进入
export HISTSIZE=条数自定
source /etc/profile 刷新

例:

减少历史命令条数

系统安全及应用

进入设置系统安全及应用

设置为十条

系统安全及应用

刷新一下系统安全及应用

查看

系统安全及应用

登录时自动清空命令历史

vim .bsahrc     进入
echo “” > ~/.bash_history
或
> ~/.bash_history

例:

登录自动清空

进入设置

系统安全及应用

 

系统安全及应用

设置好后重启后生效

4)终端自动注销

闲置多久后自动注销

vim /etc/profile       进入
export TMOUT=时间自动
source /etc/profile    刷新

例:

进入设置

系统安全及应用

时间可随便设置

系统安全及应用

设置好刷新

系统安全及应用

二、使用su命令切换用户

1)用途及用法

用途:Substitute User 切换用户

格式

su - 目标用户

例:

系统安全及应用

2)密码验证

root→任意用户,不验证密码

普通用户→其他用户,验证目标用户的密码

su -root   #带 - 选项表示将使用目标用户的登录Shell环境
whoami #查看当前有效用户

例:

系统安全及应用

3)限制使用su命令的用户

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

启用pam_wheel认证模块

gpasswd -a 授权用户 wheel   #添加授权用户到wheel组中

在/etc/ pam. d/su文件里设置禁止用户使用su命令
vim /etc/pam.d/ su

2// auth sufficient pam_ rootok. so

.......................

6// #auth required pam_ wheel.so use_ uid

.......................

a) 以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。

b) 两行都注释也是运行所有用户都能使用su命令,但root.下使用su切换到其他普通用户需要输入密码。
如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam_ rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码)。

c) 如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令。

d) 如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。

 

gpasswd -a haha wheel                #添加授权用户 haha 到wheel组中
groups haha                          #查看用户哈哈所属的组
vim /etc/pam.d/su                    #入设置su使用命令
auth required pam_wheel.so use_uid   #去掉此行开头的注释

启用pam_wheel认证以后,未加入到wheel组内的其他用户将无法使用su命令

例:

把用户xiaoming添加到wheel组中

系统安全及应用

设置只有xiaoming信任

系统安全及应用

查看su操作记录

/var/log/secure   #安全日志文件

三、Linux中的PAM安全认证

Linux-PAM,是linux可拔插认证模块,是一套可定制、可动态加载的共享库,是本地系统管理员可以随意选择程序的认证方式。

PAM使用/etc/pam.d/下的配置文件,来管理对程序的认证方式。

应用程序调用相应的PAM配置文件,从而调用本地的认证模块,模块放置在/lib64/security下以加载动态库的形式进行认证。比如使用su命令时,系统会提示输入root用户的密码,这就是su命令通过调用PAM模块实现的。

1)su命令的安全隐患

✎默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险。

✎为了加强su命令的使用控制,可借助于PAM认证模块只允许极个别用户使用su命令进行切换。

2)PAM可插拔式认证模块

(Pluggable Authentication Modules)

是一种高效而且灵活便利的用户级别的认证方式。

也是当前Linux服务器普遍使用的认证方式。

3)PAM认证原理

✎一般遵循的顺序

▪Service(服务)–>PAM(配置文件)–>pam_*.so

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

✎用户访问服务器的时候,服务器的某–个服务程序把用户的请求发送到PAM模块进行认证。

✎不同的应用程序所对应的PAM模块是不同的。

如果想查看某个程序是否支持PAM 认证,可以用ls命令进行查看/etc/ pam.d/。

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

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

auth: 对用户身份进行识别,如提示输入密码,判断是否为root。

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

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

session: 定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

第二列代表PAM控制标记

required: 表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。

requisite: 与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。

sufficient: 如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。

optional: 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session 类型)。

include: 表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。

第三列代表PAM模块

默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。

同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

第四列代表PAM模块的参数

这个需要根据所使用的模块来添加。

传递给模块的参数。参数可以有多个,之间用空格分隔开。

4)PAM认证的构成

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

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

ls /etc/pam.d | grep su

查看su的PAM配置文件

cat /etc/pam.d/su

每一行都是一个独立的认证过程

每一行可以区分为三个字段

▪认证类型

▪控制类型

▪PAM模块及其参数

四、PAM安全认证流程

控制类型也称做Control Flags,用于PAM验证类型的返回结果。
1.required验证失败时仍然继续,但返回Fail。

2.requisite验证失败则立即结束整个验证过程,返回Fail。

3. sufficient验证成功则立即返回,不再继续,否则忽略结果并继续。

4.optional不用于验证,只显示信息。
(通常用于session类型)
系统安全及应用

 

 

五、使用sudo机制提升权限

1)sudo命令的用途及用法

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

用法

sudo 授权命令

2)配置sudo授权

visudo或vim /etc/sudoers

此文件的默认权限为440,保存退出时必须执行 “:wq!”命令来强制操作。

语法格式

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

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

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

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

(用户): 用户能够以何种身份来执行命令。此项可省略,缺省时以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

USERS HOSTS=NOPASSWD:CMNDS
#执行过程不需要验证密码

3)查看sudo操作记录

需启动Defaults logfile配置

默认日志文件:/var/log/sudo

启用sudo操作日志

visudo
Defaults logfile =“/var/log/sudo”

启用日志配置以后,sudo操作过程才会被记录

4)查询授权的sudo操作

sudo -l

六、开关机安全控制

1)调整BIOS引导设置

• 将第一引导设备设为当前系统所在硬盘。

• 禁止从其他设备(光盘、U盘、网络)引导系统。

• 将安全级别设为setup,并设置管理员密码。

2)GRUB限制

• 使用grub2-mkpasswd-pbkdf2生成密钥。

• 修改/etc/grub.d/00_ header文件中, 添加密码记录。

• 生成新的grub.cfg配置文件。

3)限制更改GRUB引导参数

通常情况下在系统开机进入GRUB菜单时,按 e 键可以查看并修改GRUB引导参数,这对服务器是–个极大的威胁。

可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

grub2 -mkpasswd-pbkdf2
#根据提示设置GRUB菜单的密码

PBKDF2 hash of your password is grub. pbkdf2...
#省略部分内容为经过加密生成的密码字符串

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_ header /etc/grub.d/00_ header.bak

vim /etc/grub.d/00_ header
cat << EOF

set superusers=“root”
#设置用户名为root

password_ pbkdf2 root grub.pbkd2....
#设置密码,省略部分内容为经过加密生成的密码字符串
EOF

grub2-mkconfig -o /boot/grub2/grub.cfg 
#生成新的 grub.cfg 文件

重启系统进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数

七、终端登录安全控制

1)限制root只在安全终端登录

安全终端配置:/etc/securetty

vi /etc/ securetty
#tty5
#tty6      #禁止root用户从终端tty5、tty6登录

例:

进入编辑

系统安全及应用

限制终端

系统安全及应用

按Ctrl+Alt F5 进入

系统安全及应用

取消限制

系统安全及应用

取消后

系统安全及应用

2)禁止普通用户登录

建立/etc/nologin文件

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

touch /etc/nologin    #禁止普通用户登录
rm -rf /etc/nologin   #取消上述登录限制

八、系统弱口令检测

John the Ripper是一款开源的密码破解工具,可使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。

1)Joth the Ripper,简称为 JR
• 一款密码分析工具,支持字典式的暴力破解。

• 通过对shadow文件的口令分析,可以检测密码强度。

• 官方网站: http://www.openwall.com/john/

2)安装JR工具
• 安装方法

make clean 系统类型

• 主程序文件为john

3)检测弱口令账号
• 获得Linux/Unix服务器的shadow文件。

• 执行john程序,将shadow文件作为参数。

4)密码文件的暴力破解
• 准备好密码字典文件,默认为password.lst。

• 执行john程序,结合- -wordlist=字典文件。
步骤:

#解压工具包
cd /opt
tar zxvf john-1.8.0.tar.gz
#安装软件编译工具
yum install -y gcc gcc-c++ make
#切换到src子目录
cd /opt/john-1.8.0/src
#进行编译安装
make clean linux-x86-64
#准备待破解的密码文件
cp /etc/shadow /opt/shadow.txt
#执行暴力破解
cd /opt/john-1.8.0/run
./john /opt/shadow.txt
#查看已破解出的账户列表
./john --show /opt/ shadow.txt

九、网络端口扫描

NMAP是一个强大的端1扫描类安全评测工具,支持ping扫描、多端口检测等多种技术。

1)安装NMAP软件包

rpm -qa | grep nmap
yum install -y nmap

2)NMAP的扫描

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

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请求时,使用这种方式可以避免因无法。
3)ping通而放弃扫描

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

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

netstat命令常用选项
-a: 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。

-n: 以数字的形式显示相关的主机地址、端CI等信息。

-t: 查看TCP相关的信息。

-u: 显示UDP协议相关的信息。

-P: 显示与网络连接相关联的进程号、进程名称信息( 该选项需要root 权限)。

-r: 显示路由表信息。

-l:显示处于监听状态的网络连接及端口信息。
例:

#分别查看本机开放的TCP端口、UDP端口
nmap -sT 127.0.0.1
nmap -sU 127.0.0.1
#检测192.168.116.0/24网段有哪些主机提供HTTP服务
nmap -p 116 192.168.116.0/24

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

 

原文链接: https://www.cnblogs.com/BokeGai/p/14929265.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    系统安全及应用

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/359804

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午12:57
下一篇 2023年3月2日 下午12:59

相关推荐