SELinux、SELinux运行模式、破解Linux系统密码

Top

NSD ENGINEER DAY05

  1. 路漫漫其修远兮,吾将上下而求索
  2. DNS服务器
  3. 常用的网络工具
  4. 日志管理
  5. 系统安全保护
  6. 破解root密码思路
  7. 构建Web服务
  8. 构建FTP服务
  9. 防火墙的策略管理
  10. 防火墙默认区域的修改
  11. 防火墙public区域添加规则
  12. 防火墙public区域添加规则(永久)
  13. 防火墙单独拒绝PC2所有的访问
  14. 三台虚拟机,卸载防火墙软件
  15. 服务管理:程序的运行
  16. 管理运行级别
  17. 真机传递数据到虚拟机
  18. 补充内容
  19. 案例1:启用SELinux保护
  20. 案例2:使用systemctl工具

1 路漫漫其修远兮,吾将上下而求索

2 DNS服务器

作用:负责域名解析的服务器,将域名解析为IP地址

/etc/resolv.conf : 指定DNS服务器地址配置文件

3 常用的网络工具

ip命令(Linux最基础的命令)最小化安装也可以用此命令

1.查看IP地址

  1. [root@server ~]# ip address show  #可以缩写
  2. [root@server ~]# ip a s

dde9e69aedbf460eb20e0d491c903ede.png

2.临时添加IP地址  #用于实验测试用

  1. [root@server ~]# ip address add 192.168.10.1/24 dev eth0  #支持简写
  2. [root@server ~]# ip a a 192.168.20.1/24 dev eth0
  3. [root@server ~]# ip a s  # 再用此命令查看

4460b12c39b146e094d871e53a8e2e81.png

3.删除临时IP地址

  1. [root@server ~]# ip address del 192.168.10.1/24 dev eth0
  2. [root@server ~]# ip a s

943ebf0020ca4c00a5920c0a49fb556a.png

ping 命令,测网络连接

-c 指定ping包的个数

  1. [root@server ~]# ping -c 2 192.168.88.240
  2. [root@server ~]# ping -c 3 192.168.88.2
  3. [root@server ~]# ping -c 4 192.168.88.3

6f033c2957b34a4386e6468afd833824.png

4 日志管理

5bde355e8fe34856a4936417426e9027.png

•常见的日志文件  #vim命令查看

/var/log/messages 记录内核消息、各种服务的公共消息  #排错看

/var/log/dmesg 记录系统启动过程的各种消息

/var/log/cron 记录与cron计划任务相关的消息

/var/log/maillog 记录邮件收发相关的消息

/var/log/secure 记录与访问限制相关的安全消息

9c966dd5353245829ae032a1304601cf.png

•通用分析工具

–tail、tailf、less、grep等文本浏览/检索命令

–awk、sed等格式化过滤工具

tailf:实时跟踪文件内容

[root@server /]# echo 123456 > /opt/1.txt

[root@server /]# tailf /opt/1.txt  #实时跟踪

•users(最粗略)、who(输出简练)、w(最详细) 命令

–查看已登录的用户信息,详细度不同

b69c1331031e48afb1adc3a1af8d05f0.png

•last、lastb 命令

–查看最近登录成功/失败的用户信息

  1. [root@server /]# users
  2. [root@server /]# who
  3. pts:图形命令行终端
  4. [root@server /]# last #登录成功的用户
  5. [root@server /]# lastb #登录失败的用户

•Linux内核定义的事件紧急程度(了解)

–分为 0~7 共8种优先级别

–其数值越小,表示对应事件越紧急/重

  1. 0 EMERG(紧急) 会导致主机系统不可用的情况
  2. 1 ALERT(警告) 必须马上采取措施解决的问题
  3. 2 CRIT(严重) 比较严重的情况
  4. 3 ERR(错误) 运行出现错误
  5. 4 WARNING(提醒) 可能会影响系统功能的事件
  6. 5 NOTICE(注意) 不会影响系统但值得注意
  7. 6 INFO(信息) 一般信息
  8. 7 DEBUG(调试) 程序或系统调试信息等

5 系统安全保护

SELinux概述

•Security-Enhanced Linux

–美国NSA国家安全局主导开发,一套增强Linux系统安全的强制访问控制体系

–集成到Linux内核(2.6及以上)中运行

–基于SELinux体系针对用户、进程、目录和文件提供了预设的保护策略,以及管理工具

•SELinux的运行模式

–enforcing(强制)、permissive(宽松)

–disabled(彻底禁用)

任何模式变成disabled模式,都要经历重启系统

•切换运行模式

–临时切换:setenforce 1或0

–固定配置:/etc/selinux/config 文件

虚拟机A

  1. [root@server /]# getenforce #查看当前运行模式
  2. Enforcing
  3. [root@server /]# setenforce 0 #修改当前运行模式
  4. [root@server /]# getenforce
  5. Permissive
  6. [root@server /]# vim /etc/selinux/config
  7. SELINUX=permissive #需改配置

虚拟机B:同上

虚拟机C:同上

171ce37d69264bb1bbaebce1a79f2a44.png

6 破解root密码思路

前提:必须是服务器的管理者,涉及重启服务器

破解思路:救援模式进行破解

1)重启系统,进入 救援模式

  1. [root@A ~]# reboot

开启虚拟机A,在此界面按e键

b1c3137669aa480e825e099e9adc8ddc.png

在linux开头的该行,将此行的ro修改为rw 然后空格输入 rd.break

c096630d25fa49cf840c0443ff72590a.png

按 ctrl x 启动,会看到switch_root:/#

2)切换到硬盘操作系统环境

  1. # chroot /sysroot #切换环境,切换到硬盘操作系统的环境

3)重新设置root的密码

  1. sh-4.2# echo 1 | passwd --stdin root

4)如果SELinux是强制模式,才需要SELinux失忆,其他模式不需要让SELinux进行失忆

  1. sh-4.2# touch /.autorelabel #让SELinux失忆  #两种方式任选其一
  2. 或者可以修改SELinux运行模式,修改成宽松模式即可
  3. sh-4.2# vim /etc/selinux/config #查看SELinux开机的运行模式

5)强制重启系统完成修复

  1. sh-4.2# reboot -f #-f强制重启系统 才能

密码防护(了解)

1.设置救援模式密码

[root@A ~]# grub2-setpassword

Enter password: #输入密码,密码不显示

Confirm password: #重新输入密码,密码不显示

[root@A ~]# cat /boot/grub2/user.cfg #存放grub密码的文件

7 构建Web服务

Web服务:提供一个页面内容的服务

提供Web服务的软件:httpd、Nginx、tomcat

http协议:超文本传输协议

daemon(守护神)

英 [ˈdiːmən] 美 [ˈdiːmən]

n.(古希腊神话中的)半神半人精灵

虚拟机A:

1.安装软件包

  1. [root@server ~]# yum -y install httpd

2.运行提供Web服务程序

  1. ]# /usr/sbin/httpd #绝对路径运行程序
  2. ]# pgrep -l httpd #查看进程信息

4.书写一个页面文件

  1. ]# vim /var/www/html/index.html
  2. haha阳光明媚

5.本机浏览器访问测试

  1. ]# curl 192.168.88.240
  2. haha阳光明媚

d4678125f9e64bc5acc6dac39113abbc.png

8 构建FTP服务

FTP协议:文本传输协议

实现FTP服务功能的软件:vsftpd

默认共享数据的主目录:/var/ftp/

虚拟机A

1.安装软件包

  1. [root@server ~]# yum -y install vsftpd
  2. [root@server ~]# vim /etc/vsftpd/vsftpd.conf
  3. anonymous_enable=YES #开启无需密码验证功能

2.运行程序

  1. [root@server ~]# /usr/sbin/vsftpd
  2. [root@server ~]# pgrep -l vsftpd #查看进程信息
  3. [root@server ~]# touch /var/ftp/dcc.txt

3.本机访问测试

  1. [root@server ~]# curl ftp://192.168.88.240
  2. -rw-r--r-- 1 0 0 0 May 16 06:42 dcc.txt
  3. drwxr-xr-x 2 0 0 6 Oct 13 2020 pub

7de73039582d4d739a8276f40cca38cd.png

b0d548d5820e4a10badb063f0b94a688.png

9 防火墙的策略管理

作用:隔离,严格过滤入站,放行出站

•系统服务:firewalld ----》iptables(底层防火墙)

•管理工具:firewall-cmd、firewall-config(图形)

•根据所在的网络场所区分,预设区域

  • public:仅允许访问本机的ssh、dhcp、ping服务
  • trusted:允许任何访问
  • block:拒绝任何来访请求,明确拒绝客户端
  • drop:丢弃任何来访的数据包,不给任何回应

•防火墙判定原则:

1.查看客户端请求中来源IP地址,查看自己所有区域中规则,那个区域中有该源IP地址规则,则进入该区域

2.进入默认区域(默认情况下为public)

10 防火墙默认区域的修改

虚拟机A

  1. ]# firewall-cmd --get-default-zone #查看默认区域

a7925a9e0be94a86811eb740bf902448.png

虚拟机B

  1. ]# curl 192.168.88.240 #失败
  2. ]# curl ftp://192.168.88.240 #失败
  3. ]# ping -c2 192.168.88.240 #成功

961fc9468fce4fb9a0ca7f9d3c6e06d5.png

虚拟机A:修改默认区域

  1. ]# firewall-cmd --set-default-zone=trusted

a0f567da7204460e89bc63b31b03190c.png

虚拟机B

  1. ]# curl 192.168.88.240 #成功
  2. ]# curl ftp://192.168.88.240 #成功

d77efe2811a24a4aa4f6c4a97293f703.png

11 防火墙public区域添加规则

虚拟机A:添加允许的协议

     1.]# firewall-cmd --set-default-zone=public

     2. ]# firewall-cmd --zone=public --add-service=http

      3.]# firewall-cmd --zone=public --list-all

9e181a36b78c4f7d8aed2b8aa039c914.png

虚拟机B

  1. ]# curl http://192.168.88.240 #成功
  2. ]# curl ftp://192.168.88.240 #失败

f7b980570cf14bed99afd3a4097d3f4f.png

虚拟机A:添加允许的协议

  1. ]# firewall-cmd --zone=public --add-service=ftp
  2. ]# firewall-cmd --zone=public --list-all

f8ef217d50da483388ff62ed703f6209.png

虚拟机B

  1. ]# curl http://192.168.88.240 #成功
  2. ]# curl ftp://192.168.88.240 #成功

c2b64fc976c74ba2a15dea43052bee64.png

12 防火墙public区域添加规则(永久)

  1. -永久(--permanent 破门能它)
  2. ]# firewall-cmd --reload #加载防火墙永久策略
  3. ]# firewall-cmd --zone=public --list-all
  4. ]# firewall-cmd --permanent --zone=public --add-service=http #永久添加http协议
  5. ]# firewall-cmd --permanent --zone=public --add-service=ftp #永久添加ftp协议
  6. ]# firewall-cmd --reload #加载防火墙永久策略
  7. ]# firewall-cmd --zone=public --list-all

1fd3dcc8ec344905ac48118a2cd1193e.png

de6a1d264e88435481e5832132048740.png

 54f518b408454098a3c13953da939adf.png

13 防火墙单独拒绝PC2所有的访问

  1. 虚拟机A:
  2. [root@server ~]# firewall-cmd --zone=block --add-source=192.168.88.2
  3. 虚拟机A:删除策略
  4. [root@server ~]# firewall-cmd --zone=block --remove-source=192.168.88.2

14 三台虚拟机,卸载防火墙软件

  1. [root@server ~]# yum -y remove firewalld

15 服务管理:程序的运行

手动方式:

/usr/sbin/httpd #绝对路径运行

killall httpd #手动杀死

systemd方式:

用户--->systemd--->找到相应的进程或程序

用户--systemctl--->systemd--服务启动配置文件--->找到相应的进程或程序

服务启动配置文件目录:/lib/systemd/system/

  1. systemctl restart 服务名 #重起服务
  2. systemctl start 服务名 #开启服务
  3. systemctl stop 服务名 #停止服务
  4. systemctl status 服务名 #查看服务当前的状态
  5. systemctl enable 服务名 #设置服务开机自启动
  6. systemctl disable 服务名 #设置服务禁止开机自启动
  7. systemctl is-enabled 服务名 #查看服务是否开机自启

3c2983d1f7b74fbcb9bd83bf1dad2bc8.jpg

 实验一:(未来常用的方式)

  1. ]# yum -y install httpd
  2. ]# killall httpd #杀死手动启动的httpd
  3. ]# systemctl restart httpd #重启httpd服务
  4. ]# systemctl status httpd #查看服务httpd状态
  5. ]# systemctl enable httpd #设置httpd开机自启动(没有屏幕输出说明已经是开机自启了)
  6. Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
  7. ]# systemctl is-enabled httpd #查看httpd是否是开机自启动
  8. ]# systemctl disable httpd #关闭httpd开机自启动
  9. Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
  10. ]# systemctl is-enabled httpd #查看httpd是否是开机自启动

52363a72c7274c66a45d862ff02d8a07.jpg 3147820a479e44bf9eed04d0cf658fa7.jpg

16 管理运行级别

5与6系列:运行级别 300服务

0:关机 0个服务 相当于poweroff

1:单用户模式(基本功能的实现,破解Linux密码) 50个服务

2:多用户字符界面(不支持网络) 80个服务

3:多用户字符界面(支持网络)服务器默认运行级别 100个服务

4:未定义 0个服务

5:图形界面 300个服务

6:重启 0个服务 相当于reboot

切换运行级别:init 数字

7与8系列:运行模式(运行级别)

字符模式:multi-user.target

图形模式:graphical.target

当前直接切换到字符模式

  1. ]# systemctl isolate multi-user.target #相当于原来的init 3

当前直接切换到图形模式

  1. ]# systemctl isolate graphical.target #相当于原来的init 5

查看每次开机默认进入模式

  1. [root@server /]# systemctl get-default

设置永久策略,每次开机自动进入字符模式

  1. [root@server /]# systemctl set-default multi-user.target
  2. [root@server /]# reboot

设置永久策略,每次开机自动进入图形模式

  1. [root@server /]# systemctl set-default graphical.target
  2. [root@server /]# reboot

17 真机传递数据到虚拟机

真机为Linux:真机上操作

  1. ]#ls /linux-soft/s1
  2. ]#scp /linux-soft/s1/tools.tar.gz root@192.168.88.240:/root

真机为windows:windterm软件,效果如图-1、图-2、图-3所示。

18 补充内容

杀死一个用户开启的所有进程

命令格式:pkill -9 -u 用户名 -t 终端

[root@pc2 ~]# who #查看正在登录的用户

[root@pc2 ~]# pkill -9 -u root -t pts/1

19 案例1:启用SELinux保护

19.1 问题

本例要求为虚拟机 svr1、ps2 配置SELinux:

  1. 确保 SELinux 处于宽松模式
  2. 在每次重新开机后,此设置必须仍然有效

19.2 方案

SELinux,Security-Enhanced Linux:是由美国NSA国家安全局提供的一套基于内核的增强的强制安全保护机制,针对用户、进程、文档标记安全属性并实现保护性限制。

SELinux安全体系直接集成在Linux内核中,包括三种运行模式:

  • disabled:彻底禁用,内核在启动时不加载SELinux安全体系
  • enforcing:强制启用,内核加载SELinux安全体系,并强制执行保护策略
  • permissive:宽松模式,内核加载SELinux安全体系,只记录不执行

执行getenforce可以查看当前所处的模式。

在disabled模式与enforcing、permissive模式之间切换时,需要重新启动Linux系统;而在enforcing模式与permissive模式之间切换时,并不需要重启,可以直接执行setenforce 1|0操作。

19.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:调整当前的SELinux运行模式

1)查看当前模式

  1. [root@server0 ~]# getenforce
  2. Enforcing                                     //表示当前为强制模式

若上述操作显示的结果为Disabled,表示SELinux机制已被禁用,只能通过步骤修改固定配置后再重启;若显示的结果为Enforcing,表示已经处于强制启用模式。

2)切换为permissive强制启用模式

  1. [root@server0 ~]# setenforce 0                 //设置宽松模式
  2. [root@server0 ~]# getenforce                     //确认切换结果
  3. Permissive

如果在操作1)中显示的结果为Disabled,则无法使用setenforce命令:

  1. [root@desktop0 ~]# getenforce
  2. Disabled
  3. [root@desktop0 ~]# setenforce 1
  4. setenforce: SELinux is disabled

步骤二:为SELinux运行模式建立固定配置

1)修改配置文件/etc/selinux/config

  1. [root@server0 ~]# vim /etc/selinux/config
  2. SELINUX=permissive
  3. .. ..

2)重启验证结果

  1. [root@server0 ~]# reboot
  2. .. ..
  3. [root@server0 ~]# getenforce
  4. permissive

20 案例2:使用systemctl工具

20.1 问题

本例要求掌握systemctl控制工具的基本操作,完成下列任务:

  1. 重启 httpd、crond、bluetooth 服务,查看状态
  2. 禁止 bluetooth 服务开机自启,并停用此服务
  3. 设置默认级别为 multi-user.target 并确认

20.2 方案

systemd是一个更高效的系统&服务管理器,其相关特性如下:

  • 开机服务并行启动,各系统服务间的精确依赖
  • 服务目录:/lib/systemd/system/

systemctl是systemd的管理工具,将相关资源组织为unit配置单元进行管理。

不同的unit决定了一组相关的启动任务,service和target是最常用的配置单元:

  • service:后台独立服务
  • target:一套配置单元的组合,类似于传统“运行级别”

20.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:重启 httpd、crond、bluetooth 服务,查看状态

1)重启系统服务httpd、crond、bluetooth

  1. [root@svr7 ~]# systemctl restart httpd crond bluetooth

2)查看上述服务的状态

  1. [root@svr7 ~]# systemctl status httpd crond bluetooth
  2. * httpd.service - The Apache HTTP Server
  3. Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
  4. Active: active (running) since Fri 2017-01-06 18:18:20 CST; 18s ago
  5. .. ..
  6. * crond.service - Command Scheduler
  7. Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
  8. Active: active (running) since Fri 2017-01-06 18:18:19 CST; 19s ago
  9. .. ..
  10. * bluetooth.service - Bluetooth service
  11. Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
  12. Active: active (running) since Fri 2017-01-06 18:18:19 CST; 19s ago
  13. .. ..

步骤二:禁止 bluetooth 服务开机自启,并停用此服务

1)停用bluetooth服务

  1. [root@svr7 ~]# systemctl stop bluetooth

2)禁止bluetooth服务开机自启

  1. [root@svr7 ~]# systemctl disable bluetooth
  2. Removed symlink /etc/systemd/system/dbus-org.bluez.service.
  3. Removed symlink /etc/systemd/system/bluetooth.target.wants/bluetooth.service.
  4. [root@svr7 ~]# systemctl is-enabled Bluetooth             //检查结果
  5. disabled

步骤三:设置默认级别为 multi-user.target 并确认

1)查看默认运行级别

  1. [root@svr7 ~]# systemctl get-default
  2. graphical.target

2)将默认运行级别设置为multi-user.target

  1. [root@svr7 ~]# systemctl set-default multi-user.target
  2. Removed symlink /etc/systemd/system/default.target.
  3. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

3)确认配置结果

  1. [root@svr7 ~]# systemctl get-default
  2. multi-user.target

根据此处的设置,重启此虚拟机后图形桌面将不再可用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值