linux系统安全及应用_m0_51160032的博客
目录
一、账号安全控制
1.1基本安全措施
1.1.1系统账号的清理
1.1.2密码安全控制
1.1.3命令历史、自动注销
1.2用户切换与提权(加入wheel组)
1.2.1su命令—切换用户
1.2.2sudo命令—提升执行权限
1.3PAM安全认证
二、系统引导和登录控制
2.1开关机安全控制
2.1.1调整BIOS引导设置原则
2.1.2GRUB菜单设置
2.1.3GRUB限制的实现
2.2终端及登录控制
2.2.1限制root用户只在安全终端登录
2.2.2禁止普通用户登录
三、弱口令检测、端口扫描
3.1弱口令检测—Joth the Ripper
3.1.1Joth the Ripper实例
3.2网络扫描—NMAP
一、账号安全控制
1.1基本安全措施
1.1.1系统账号的清理
1.1.1.1将非登录用户的Shell设为/sbin/nologin
-
在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。
1.1.1.2锁定长期不使用的账号
[root@localhost ~]# usermod -L test2 锁定用户账号方法一 [root@localhost ~]# passwd -l test3 锁定用户账号方法二 [root@localhost ~]# usermod -U test2 解锁用户账号方法一 [root@localhost ~]# passwd -u test3 解锁用户账号方法二
1.1.1.3删除无用账号
[root@localhost ~]# userdel test1 [root@localhost ~]# userdel -r test2
1.1.1.4锁定账号文件passwd、shadow
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow 锁定文件,包括root也无法修改 [root@localhost ~]# chattr -i /etc/passwd /etc/shadow 解锁文件 [root@localhost ~]# lsattr /etc/passwd /etc/shadow查看文件状态属性
1.1.2密码安全控制
1.1.2.1设置密码有效期
1.[root@localhost ~]# chage -M 60 test3 这种方法适合修改已经存在的用户1 2.[root@localhost ~]# vim /etc/login.defs 这种适合以后添加新用户, PASS_MAX_DAYS 30
1.1.2.2要求用户下次登录时修改密码
[root@localhost ~]# chage -d 0 test6 强制要求用户下次登陆时修改密码
1.1.3命令历史、自动注销
1.1.3.1命令历史限制
-
减少记录命令的条数
-
注销时自动情况命令历史
减少记录命令的条数: 1.[root@localhost ~]# vim /etc/profile 进入配置文件修改限制命令条数。适合新用户 HISTSIZE=200 修改限制命令为200条,系统默认是1000条profile [root@localhost ~]# source /etc/ 刷新配置文件,使文件立即生效 2.[root@localhost ~]# export HISTSIZE=200 适用于当前用户 [root@localhost ~]# source /etc/profile [root@localhost ~]# source /etc/profile 刷新配置文件,使文件立即生效 3. 注销时自动清空命令: [root@localhost ~]# vim ~/.bashrc echo "" > ~/.bash_history
2.
1.1.3.2终端自动注销
闲置600秒后自动注销: [root@localhost ~]#vim .bash_profile 进入配置文件 export TMOUT=60 全局声明超过60秒闲置后自动注销终端 [root@localhost ~]# source .bash_profile [root@localhost ~]# echo $TMOUT [root@localhost ~]# export TMOUT=600 如果不在配置文件输入这条命令,那么是对当前用户生效 [root@localhost ~]#vim .bash_profile # export TMOUT=60 注释掉这条命令,就不会自动注销了
1.2用户切换与提权(加入wheel组)
1.2.1su命令—切换用户
1.用途及用法 用途:Substitute User,切换用户 格式:su - 目标用户(横杠“ - ”代表切换到目标用户的家目录) root - - - >任意用户,不验证密码 普通用户- - - >其他用户,验证目标用户的密码 带 “ - ” 表示将使用目标用户的登录Shell环境 2.查看su操作记录 安全日志文件:/var/log/secure 3.whoami确定当前用户是谁 4. vim /etc/pam.d/su 把第六行注释去掉保存退出 默认情况下,使用root切换不需要密码 注释两行,所有账号都可以使用,但是root切换时需要密码 1.
2.
4.
1.2.2sudo命令—提升执行权限
sudo命令的用途及用法: 用途:以其他用户身份(如root)执行授权命令 用法:sudo 授权命令 1. 配置sudo授权 visudo 或者 vim /etc/sudoers 记录格式: 用户 主机名列表=命令程序列表 可以使用通配符“ * ”号任意值和“ !”号进行取反操作。 权限生效后,输入密码后5分钟可以不用重新输入密码。 2. 配置/etc/sudoers文件,可以授权用户较多的时使用 Host_Alias MYHOST= localhost 主机名 User_Alias MYUSER = yxp,zhangsan,lisi 需要授权的用户 Cmnd_Alias MYCMD = /sbin/*,/usr/bin/passwd 授权 MYUSER MYHOST = NOPASSWD : MYCMD 授权格式 3.查看sudo操作记录 需启用Defaults logfile 配置默认日志文件: /var/log/sudo
2.
3.
1.3PAM安全认证
-
su命令的安全隐患
-
默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root) 的登录密码,带来安全风险;
-
为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换。
-
-
什么是PAM?
-
PAM(Pluggable Authentication Modules)可插拔式认证模块
-
是一种高效而且灵活便利的用户级别的认证方式;
-
也是当前Linux服务器普遍使用的认证方式。
-
PAM提供了对所有服务进行认证的中央机制,适用于login,远程登陆,su等应用
-
系统管理员通过PAM配置文件来制定不同的应用程序的不同认证策略
-
-
PAM认证原理
-
PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_*.so;,
-
PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认 模块(位于/lib64/security/下)进行安全认证。
-
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
-
如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/。
ls /etc/pam.d/ | grep su
-
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。
二、系统引导和登录控制
-
2.1开关机安全控制
2.1.1调整BIOS引导设置原则
-
将第一引导设备设为当前系统所在硬盘;
-
禁止从其他设备(光盘、 U盘、网络)引导系统;
-
将安全级别设为setup,并设置管理员密码。
禁用重启热键:Ctrl+Alt+Delete 避免因用户误操作重启
2.1.2GRUB菜单设置
-
未经授权禁止修改启动参数
-
未经授权禁止进入指定系统
2.1.3GRUB限制的实现
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。
使用grub2-mkpasswd-pbkdf2获得加密字符串;
修改/etc/grub.d/00_ header文件中, 添加密码记录;
生成新的grub.cfg配置文件。
法一: 1. 使用grub2-mkpasswd-pbkdf2生成密钥并复制,然后备份两个配置文件。 2. 修改/etc/grub.d/00_ header文件中, 添加密码记录,并存并退出 法二: 直接设置grub2—setpasswd 设置grub密码
生成新的grub.cfg文件,然后重启系统
验证结果
法一:
法二:
2.2终端及登录控制
2.2.1限制root用户只在安全终端登录
-
安全终端配置:/etc/securetty
-
步骤:
-
更改相关配置文件
-
切换至指定终端进行测试
-
切换至其他终端进行测试
-
2.2.2禁止普通用户登录
三、弱口令检测、端口扫描
3.1弱口令检测—Joth the Ripper
-
一款密码分析工具,支持字典式的暴力破解;
-
通过对shadow文件的口令分析,可以检测密码强度;
-
官方网站:John the Ripper password cracker
3.1.1Joth the Ripper实例
-
安装方法
make clean 系统类型 -
主程序文件为john
1. 把下载好的安装包用过rz命令下到目录opy下(sz可以把linux系统中的文件传到自己的windows系统中): [root@localhost ~]#cd /opt [root@localhost ~]#rz [root@localhost opt]#ls john-1.8.0.tar.gz 2. 解压 [root@localhost opt]#tar zxvf john-1.8.0.tar.gz 3. 安装软件编译工具 [root@localhost src]#yum install gcc gcc-c++ make -y 4. 进行编译安装 [root@localhost src]#make clean linux-x86-64 5. 准备待破解的密码文件 [root@localhost src]#cd .. 切换至上级目录 [root@localhost src]#cp /etc/shadow /opt/shadow.txt 准备密码文件 6. 执行暴力破解 [root@localhost src]#cd /opt/john-1.8.0/run/ [root@localhost run]#./john /opt/shadow.txt 7.查看已经破解出的密码 [root@localhost run]#./john --show /opt/shadow.txt
3.2网络扫描—NMAP
-
一款强大的网络扫描、安全 检测工具
-
官方网站:Nmap: the Network Mapper - Free Security Scanner
-
CentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm
控制位:
| 控制位 | |
|---|---|
| SYN | 建立链接 |
| ACK | 确认 |
| FIN | 结束断开 |
| PSH | 传送 0 数据缓存 上层应用协议 |
| RST | 重置 |
| URG | 紧急 |
常用格式:
nmap [扫描类型] [选项] <扫描目标> netstat natp #查看正在运行的使用TCP协议的网络状态信息 netstat -natp | grep httpd #实际操作(httpd换成80也可以) netstat -naup #查看正在运行的使用UDP协议的网络状态信息 [root@localhost run]#rpm -qa|grep nmap 查看nmap [root@localhost run]#yum install -y nmap 安装nmap
| 常见 的选 项 | 选项的作用 |
|---|---|
| -p | 指定扫描的端口。 |
| -n | 禁用反向DNS解析(以加快扫描速度) |
| -sS | TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYNACK响应包就认为目标端口正在监听,并立即断开连接; 否则认为目标端口并未开放。 |
| -sT | TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否 则认为目标端口并未开放。 |
| -sF | TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而 忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。 |
| -sU | UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。 |
| -sP | ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。 |
| -P0 | 跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放 弃扫描。 |
| natstat常用选项 | 作用 |
|---|---|
| -a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。 |
| -n | 以数字的形式显示相关的主机地址、端1等信息。 |
| -t | 查看TCP相关的信息。 |
| -u | 显示UDP协议相关的信息。 |
| -p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限) |
| -r | 显示路由表信息。 |
| -l | 显示处于监听状态的网络连接及端口信息。 |
示例:
























































登录后可发表评论
点击登录