系统安全及应用
文章目录
![在这里插入图片描述](https://img-blog.csdnimg.cn/a2576d9d94c746f78fa1dcd9557f6f6d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAPz8_Pzlva2VyPz8=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
账号安全基本措施
系统账号清理
- 将用户设置为无法登录、
- 锁定账户
- 删除账户
- 锁定账户密码 本质锁定
shell——/sbin/nologin却比较特殊,所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。举例来说,各个系统账号中,打印作业有lp这个账号管理,www服务器有apache这个账号管理,他们都可以进行系统程序的工作,但就是无法登陆主机而已
将用户设置为无法登录
示例:
[root@localhost ~]# chsh -s /sbin/nologin lisi
锁定用户—passwd
- passwd -l 锁定用户
- passwd -u 解锁用户
示例:
[root@localhost ~]# passwd -l zhaosi
passwd:
[root@localhost ~]# passwd -u zhaosi
passwd:
删除账户—userdel
- userdel -r 用户名
示例:
[root@localhost ~]# userdel -r wpc
锁定配置文件—chattr
选项 | 说明 |
---|---|
-a | 让文件或目录仅供附加用途,只能追加 |
-i | 不得任意更动文件或目录 |
示例:
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow
密码安全控制
设置密码规则—chage
- 新建用户,可以修改/etc/login.defs文件里的内容来设置密码规则
[root@localhost ~]# vim /etc/login.defs
- chage [选项] 用户名 (对于已有用户可以使用)
选项 | 说明 |
---|---|
m | 密码可更改的最小天数,为零时代表任何时候都可以更改密码 |
M | 密码保持有效的最大天数 |
w | 用户密码到期前,提前收到警告信息的天数 |
E | 帐号到期的日期,过了这天,此帐号将不可用 |
d | 上一次更改的日期 |
i | 停滞时期,如果一个密码已过期这些天,那么此帐号将不可用 |
l | 出当前的设置,由非特权用户来确定他们的密码或帐号何时过期 |
示例:
[root@localhost ~]# chage -d 0 zhangsan
历史命令
Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户,例如,可以设 置最多只记录 200 条历史命令
示例:
清除历史命令
history -c
clear
设置历史记录条数
[root@localhost ~]#vim /etc/profile
.............................
export HISTSIZE=200
退出清空密码
[root@localhost ~]#vim .bash_logout
# ~/.bash_logout
echo " " >~/.bash_history
开机后清除
[root@localhost ~]#vim .bashrc
echo " " >~/.bash_history
设置超时时间
[root@localhost ~]# vi /etc/profile
.................................
export TMOUT=60s
切换用户—su
-
su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令
-
su [options…] [-] [user [args…]]
示例:
[root@localhost ~]#su wpc
- 限制使用su命令的用户
示例:
[root@localhost ~]# gpasswd -a lisi wheel
#将用户加入 wheel组 root
[root@localhost ~]#vim /etc/pam.d/su
#开启服务
#auth required pam_wheel.so use_uid
vim /etc/pam.d/su
2 # auth sufficient pam_ rootok.so
6 #auth required pam_ wheel.so use_ _uid
PAM安全认证二进制语言
PAM:Pluggable Authentication Modules,插件式的验证模块,Sun公司于1995 年开发的一种与认证相关的通用框架机制。PAM 只关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证。
PAM相关文件
- 包名: pam
- 模块文件目录:/lib64/security/*.so
- 特定模块相关的设置文件:/etc/security/
- 应用程序调用PAM模块的配置文件
- 主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置
- 为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME
- 注意:如/etc/pam.d存在,/etc/pam.conf将失效
PAM工作原理
PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so
PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
sudo
sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。sudo于1980年前后推出,sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等。
sudo特性:
- sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
- sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
- sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
- sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440
配置sudo授权示例:
[root@localhost ~]#vim /etc/sudoers
lisi ALL=(root) /usr/bin/mount /dev/cdrom /mnt/
别名
sudo别名有四种类型:
- User_Alias(用户)
- Runas_Alias(代表用户)
- Host_Alias(登录主机)
- Cmnd_Alias(命令)
grub 加密
/etc/grub.d目录
定义每个菜单项的所有脚本都存放在/etc/grub.d目录中,这些脚本的名称必须有两位的数字前缀,其目的是构建GRUB 2菜单时定义脚本的执行顺序以及相应菜单项的顺序,比如00_header文件首先被读取。
文件 | 描述 |
---|---|
00_header | 设置grub默认参数 |
10_linux | 系统中存在多个linux版本 |
20_ppc_terminfo | 设置tty控制台 |
30_os_prober | 设置其他分区中的系统(硬盘中有多个操作系统时设置) |
40_custom和41_custom | 用户自定义的配置 |
设置GRUB 2加密
由于GRUB 2负责引导linux系统,其作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行加密可以实现安全性。
在默认情况下,GRUB 2对所有可以在物理上进入控制台的人都是可访问的。任何人都可以选择并编辑任意菜单项,并且可以直接访问GRUB命令行。要启用认真支持,必须将环境变量超级用户设置为一组用户名(可以使用空格、逗号、分号作为分隔符)这样就只允许超级用户使用GRUB命令行、编辑菜单项以及执行任意菜单项。
GRUB 2密码支持以下两种格式
- 明文密码:密码数据没有经过加密,安全性差
- PBKDF2加密密码:密码经过PBKDF2哈希算法进行加密,在文件中存储的是加密后的密码数据,安全性较高。
先要使用grub2-mkpasswd-pbkdf2命令生成PBKDF2加密口令,然后在/etc/grub.d/00_header文件中添加超级用户和PBKDF2加密口令,最后使用grub2-mkconfig命令生成grub配置文件。
在/etc/grub.d/00_header文件中添加用户和PBKDF2加密口令的格式如下。
grub2-mkpasswd-pbkdf2 ## 生成密钥
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
vi /etc/grub.d/00_header ## 进入文件中
cat << EOF
set superusers="root"
password_pbkdf2 root
粘贴上面已复制的密码
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg ## 使密钥生效
暴力破解密码
方法1:
导入john.tar.gz压缩包
tar.zxvf john.tar.gz ## 解压john压缩包
cd john-1.8.0
cd src
make clean linux-x86-64 ## 执行编译文件
ls .. /run/john ## 查看上一级目录是否生成john程序
cp /etc/shadow root/shadow.txt ## 复制密码文件
.john /root/shadow.txt ## 破译账户弱密码
.john --show /root/shadow.txt ## 查看已破译出的账户列表
方法2:
:> john.pot
./john --wordlist=./password.lst /root/shadow.txt
./john --show /root/shadow.txt
网络端口扫描NMAP
- nmap [扫描类型] [选项] <扫描目标>
选项 | 作用 |
---|---|
-sT | tcp扫描连接 |
-sU | udp扫描连接 |
-sP | icmp扫描 |
-sS | tcp syn扫描 |
-sF | tcp fin扫描 |
-P | 指定端口扫描 |