Linux系统安全与应用
Posted Richard_Chiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统安全与应用相关的知识,希望对你有一定的参考价值。
Linux系统安全与应用(二)
壹、使用sudo机制提升权限
1、su命令的缺点
- 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录码,带来安全风险
2、sudo命令的用途及用法
- 用途:以其他用户身份(如root)执行授权命令
- 用法:
sudo 授权命令
3、配置sudo权限
- visudo或者
vi /etc/sudoers
(此文件的默认权限为 440,保存退出时必须执行":wq!"命令来强制操作)
- 记录格式
[root@localhost~]#visudo
或
[root@localhost~]#vi /etc/sudoers
用户名 主机名=命令程序列表 #可以使用通配符*表示所有,用!取反表示排除
字段 | 介绍 |
---|---|
用户 | 直接授权指定的用户名,或采用"%组名"的形式(授权一个组的所有用户) |
主机名 | 使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机 |
(用户) | 用户能够以何种身份来执行命令。此项可省略,缺省时以root用户身份来运行命令 |
命令程序列表 | 允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号","进行分隔。ALL则代表系统中的所有命令 |
语法记录格式
用户名 主机名=命令程序列表
用户名 主机名=(用户)命令程序列表
例子分析:
Tom ALL=/sbin/ifconfig
Jerry localhost=/sbin/*,!/sbin/reboot,!/sbin/poweroff#通配符“*"表示所有、取反符号“!”表示排除;
%wheel ALL=NOPASSWD: ALL#表示whee1组成员无需验证登录码即可使用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
首先查询主机名称:nanjing,然后查询命令ifconfig绝对路径/sbin/ifconfig,然后进入配置sudo授权,大G跳到最后一行,输入nanjing localhost.localdomain=/sbin/ifconfig,接下来请看图中注释。
4、启用sudo操作日志
visudo #进入编辑
Default logfile ="/var/log/sudo" #将该命令添加至最后一行:wq保存并退出即可
su - Tom
/sbin/ifconfig ens33:0 192.168.1.11/24
#初次使用sudo时需验证当前用户的登录码,默认超时时长为5分钟,在此期间不再重复验证登录码
创建别名
用户别名 User_Alias
主机别名 Host_Ailas
命令别名 Cmnd_Ailas
[root@localhost~]#visudo #设置sudo授权
User_Alias USERS=xxx0,xxx1,xxx2 #用户的别名User包括:xxx0,xxx1,xxx2
Host_Alias HOSTS=localhost,root1 #主机别名包括localhost,root1
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel
USERS HOSTS=CMNDS #用户名 主机名=命令程序列表
具体操作:
5、查询用户拥有的su权限
[root@localhost~]#sudo -l#查询用户拥有的su权限
贰、开关机安全控制
1、调整Bios引导设置
- 将第一引导设备设为当前系统所在硬盘
- 禁止从其他设备(光盘、U盘、网络)引导系统
- 将安全级别设为setup,并设置管理员登录码
2、GRUB限制
- 使用grub2-mkpasswd-pbkdf2生成密钥
- 修改
/etc/grub.d/00_ header
文件中,添加登录码记录 - 生成新的grub.cfg配置文件
限制更改GRUB引导参数
通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB引导参数,这对服务器是一个极大的威胁。
可以为GRUB菜单设置一个登录码,只有提供正确的登录码才被允许修改引导参数。
3、终端登录安全控制
- 限制root只在安全终端登录
- 安全终端配置:
/etc/securetty
- 安全终端配置:
[root@localhost~]#vi /etc/securetty
......
#tty5
#tty6 #通过在前面注释禁止root用户从终端tty5、tty6登录
- 禁止普通用户登录
- 建立
/etc/nologin
文件 - 删除nologin文件或重启即恢复正常
- 建立
[root@localhost~]#touch /etc/nologin #禁止普通用户登录
[root@localhost~]#rm -rf /etc/nologin #取消上述登录限制
叁、系统弱口令检测
- John the Ripper ,简称为 JR
- 一款登录码分析工具,支持字典式的暴力po解
- 通过对shadow文件的口令分析,可以检测登录码强度
- 官方网站: http://www.openwall.com/john/
弱口令检测 John the Ripper
John the Ripper 是一款开源的登录码pojie工具,可使用登录码字典(包含各种登录码组合的列表文件)来进行暴力pojie。
1.解压工具包
cd /opt
tar zxf john-1.8.0.tar.gz
2.安装软件编译工具
yum install -y gcc gcc-c++ make
3.切换到src子目录
cd /opt/john-1.8.0/src
4.进行编译安装
make clean linux-x86-64
5.准备待pojie的登录码文件
cp /etc/shadow /opt/shadow.txt
6.执行暴力pojie
cd /opt/john-1.8.0/run
./john /opt/shadow.txt
7.查看已pojie出的账户列表
./john --show /opt/shadow.txt
8.使用登录码字典文件
>john. pot #清空已pojie出的账户列表,以便重新分析
./john --wordlist=. /password.1st /opt/ shadow. txt #使用指定的字典文件进行pojie
肆、网络端口扫描NMAP命令
- 一款强大的网络扫描、安全检测工具,支持 ping 扫描、多端口检测等多种技术
- 官方网站: http://nmap.org/
- CentOS 7.3光盘中安装包nmap-6.40-7.el7.x86_ 64.rpm
1、NMAP的扫描
nmap 扫描类型 [选项] <扫描目标...>
nmap命令常用的选项和扫描类型
常用选项 | 介绍 |
---|---|
-p | 指定扫描的端口。 |
-n | 禁用反向DNS解析(以加快扫描速度) |
-sS | TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。 |
-sT | TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。 |
-sF | TCP的FIN描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的TCP攻ji包。这种类型的扫描可间接检测防火墙的健壮性。 |
-sP | ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。 |
-sU | UDP 扫描,探测目标主机提供哪些UDP 服务,UDP 扫描的速度会比较慢。 |
-P0 | 跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。 |
2、示例:
①分别查看本机开发的TCP端口、UDP端口
[root@localhost~]#nmap -sT 192.168.80.1 #查看本机开发的TCP端口
[root@localhost~]#nmap -sU 192.168.80.1 #查看本机开发的UDP端口
②检测192.168.80.0/24网段有哪些主机提供HTTP服务
[root@localhost~]#nmap -p 80 192.168.80.0/24 #80为HTTP默认端口号
③检测192.168.80.0/24网段有哪些存活主机
[root@localhost~]#nmap -n -sP 192.168.80.0/24
伍、控制台命令:netstat
[root@localhost~]#netstat -natp #查看正在运行的使用TCP协议的网络状态信息
[root@localhost~]#netstat -naup #查看正在运行的使用UDP协议的网络状态信息
1、netstat常用选项
常用选项 | 介绍 |
---|---|
-a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
-n | 以数字的形式显示相关的主机地址、端口等信息 |
-t | 查看TCP协议相关的信息 |
-u | 显示UDP协议相关的信息 |
-p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限) |
-r | 显示路由表信息 |
-l | 显示处于监听状态的网络连接及端口信息 |
查看本机端口或本机服务是否打开方式(以SSH安全终端,端口协议号为22举例)
以上是关于Linux系统安全与应用的主要内容,如果未能解决你的问题,请参考以下文章
Linux的系统的安全如何保障?保护Linux系统安全的九个常用方法
2018-2019-1 20165320 《信息安全系统设计基础》 缓冲区溢出漏洞实验
2017-2018-1 《信息安全系统设计基础》实验五 通信协议设计
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段