启动引导
运行级别
- 0 关机
- 1 救援模式,单用户模式,没有网络
- 2 不完全命令模式,没有NFS
- 3 完全命令模式
- 4 保留未使用
- 5 图形
- 6 重启
```shell
查看运行级别
runlevel N 5 # 上一个运行级别,本次运行级别
使用运行级别
init N
默认运行级别
/etc/inittab # 老版本 systemctl get-default # 查看默认级别 systemctl set-default # 设置默认级别
<a name="sc39M"></a>
## 启动引导器GRUB
- GRand Unified Bootloader GNU组织的一个启动引导程序
- 计算机启动运行的第一个软件
- centos7开始使用GRUB2.0作为默认引导器
- GRUB2
- 配置文件 /boot/grub2/grub.cfg
- 上面的配置文件可以用命令生成 grub2-mkconfig -o /boot/grub2/grub.cfg
- 根据 /etc/default/grub配置文件
- 和 /etc/grub.d/ 下的脚本文件来生成
![image.png](https://cdn.nlark.com/yuque/0/2022/png/1491874/1654182988134-a450f943-af63-480b-9991-58e769f52a85.png#clientId=u060d0c06-90de-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=296&id=u056257dd&margin=%5Bobject%20Object%5D&name=image.png&originHeight=592&originWidth=1420&originalType=binary&ratio=1&rotation=0&showTitle=false&size=517973&status=done&style=none&taskId=uebe28822-5b98-44b7-a67f-f41ecfe8756&title=&width=710)
<a name="PoleY"></a>
## GRUB加密
- 明文加密
- 密文加密
<a name="zOlJi"></a>
## 光盘修复
- 见下文
<a name="NLhrL"></a>
## PPT
[启动引导与修复.pptx](https://www.yuque.com/attachments/yuque/0/2022/pptx/1491874/1654185456456-d84176e1-3d43-49be-b2ac-14839f6f1ffd.pptx?_lake_card=%7B%22src%22%3A%22https%3A%2F%2Fwww.yuque.com%2Fattachments%2Fyuque%2F0%2F2022%2Fpptx%2F1491874%2F1654185456456-d84176e1-3d43-49be-b2ac-14839f6f1ffd.pptx%22%2C%22name%22%3A%22%E5%90%AF%E5%8A%A8%E5%BC%95%E5%AF%BC%E4%B8%8E%E4%BF%AE%E5%A4%8D.pptx%22%2C%22size%22%3A217531%2C%22type%22%3A%22%22%2C%22ext%22%3A%22pptx%22%2C%22source%22%3A%22%22%2C%22status%22%3A%22done%22%2C%22mode%22%3A%22title%22%2C%22download%22%3Afalse%2C%22taskId%22%3A%22u6b3d5988-58b2-4991-8792-92365ec6d20%22%2C%22taskType%22%3A%22upload%22%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22ZSue4%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22file%22%7D)
<a name="C2EQy"></a>
# 进程管理
<a name="dBo4R"></a>
## 基础
```shell
# 查看进程当前状态
ps aux # 静态展示当前状态
ps -ef # 动态展示当前状态
# 动态查看进程
top
? 帮助模式
P 按CPU占有率排序
T 按消耗CPU时间排序
M 按内存使用占比排序
# 查看进程树
pstree
# 杀死进程
kill
# kill -l 查看所有信号
# kill -1 PID 重新读取配置文件重启
# kill -9 PID 立即强制杀死PID
killall
# 根据进程名杀死进程
# killall 进程名
# killall -9 httpd
pkill
# 根据进程名杀死进程,也可以根据终端名杀死终端
# pkill -9 httpd
# w 查看终端
# pkill -9 -t ttyN|pts/N
# 查看系统资源
## 查看开机引导相关信息
dmesg
## 查看系统整体状态
vmstat [interval count ]
进程前后台
# 查看后台任务,只能查看当前终端放入的后台任务
jobs
# -l 查看任务序号和对应的进程PID
# 放入后台继续进行
nohup CMD &
# 放入后台暂停执行
Ctrl + Z
# 切换前后台
fg INDEX # 唤起到前台
bg INDEX # 后台任务继续进行,看到后台暂停的任务可以使用此命令让其继续执行
进程状态
PPT
Systemd管理
基础
- PID为1的进程 systemd
- 是其他所有用户进程的父进程
命令
# 主命令
systemctl
# 当前主机信息
hostnamectl
# 本地化命令
localectl
# 时间命令
timedatectl
# 登录用户命令
loginctl
# 日志管理
journalctl
# 配置文件 /etc/systemd/journald.conf
# -k 显示内核日志
# --since="" 指定日志时间
# -n 20 最后20行
# -f 实时日志
# --disk-usage磁盘占用
# -p 日志级别|对应的数字
emerg 0
alert 1
crit 2
err 3
warning 4
notice 5
info 6
debug 7
# unit
systemctl list-units --all
# 查看状态
systemctl status sshd
# 查看服务的systemd的配置文件
systemctl cat httpd
Unit
服务交给systemd管理
- 编写配置文件/etc/systemd/system/NAME.service
- systemd重载
- systemctl daemon-reload
- 使用管理命令
- systemctl start NAME[.service]
PPT
systemd服务管理.pptx定时任务
命令
```shell一次性
对应的服务
atd对应的管理命令
at [选项] 时间 输入命令 Ctrl+D保存退出
- systemctl start NAME[.service]
黑白名单,里面填写用户名,该用户就会被黑白管控,白名单优先级更高
/etc/at.allow /etc/at.deny
查询任务队列
atq
删除任务
atrm
周期性
对应的服务
crond
对应的管理命令
crontab
# -l 这里查看的只能是通过这个命令编辑进来的,直接编辑/etc/crontab文件的查不到
# -e 编辑
# -u 用户名 编辑其他用户的任务,只有root可用
# 日期和周尽量不要同时出现,同时出现时是或的关系
# 命令要绝对路径
周期任务配置文件,这里比crontab命令多了一个指定命令执行用户的身份,更安全
/etc/crontab 分 时 日 月 周 USERNAME CMD
anacron
# 在关机期间的定时任务如果有错过的,anacron会在开机后自动扫描
# anacron 配置文件 /etc/anacrontab
# 其实会扫描 /etc/cron[.daily|weekly...]目录下的配置文件
# 所以也可以直接在对应的目录下写任务,让anncron确保要执行
用户的黑白名单
/etc/cron.allow /etc/cron.deny
<a name="bQOHY"></a>
## PPT
[系统定时任务.pptx](https://www.yuque.com/attachments/yuque/0/2022/pptx/1491874/1654225252740-c45a7986-fb6b-4fd5-9bf4-53368f950d46.pptx?_lake_card=%7B%22src%22%3A%22https%3A%2F%2Fwww.yuque.com%2Fattachments%2Fyuque%2F0%2F2022%2Fpptx%2F1491874%2F1654225252740-c45a7986-fb6b-4fd5-9bf4-53368f950d46.pptx%22%2C%22name%22%3A%22%E7%B3%BB%E7%BB%9F%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1.pptx%22%2C%22size%22%3A56037%2C%22type%22%3A%22%22%2C%22ext%22%3A%22pptx%22%2C%22source%22%3A%22%22%2C%22status%22%3A%22done%22%2C%22mode%22%3A%22title%22%2C%22download%22%3Afalse%2C%22taskId%22%3A%22u3f9bd566-3e3c-40a7-bf1c-3d7d62c0c15%22%2C%22taskType%22%3A%22upload%22%2C%22__spacing%22%3A%22both%22%2C%22id%22%3A%22uc4dde9fe%22%2C%22margin%22%3A%7B%22top%22%3Atrue%2C%22bottom%22%3Atrue%7D%2C%22card%22%3A%22file%22%7D)
<a name="WLA1F"></a>
# 日志管理
<a name="ljURd"></a>
## 系统日志服务rsyslog
- 系统日志基本都放在/var/log下
- 常见日志
![image.png](https://cdn.nlark.com/yuque/0/2022/png/1491874/1654229017716-ca913fb6-c2c4-47ea-aa96-a3dec1ea729d.png#clientId=ucdfa891f-d252-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=295&id=u9a6ad69a&margin=%5Bobject%20Object%5D&name=image.png&originHeight=590&originWidth=1604&originalType=binary&ratio=1&rotation=0&showTitle=false&size=1016172&status=done&style=none&taskId=u18d4b086-2bec-43ae-8348-9d4fc7ee876&title=&width=802)
```shell
# rsyslog配置文件
/etc/rsyslog.conf
服务名[链接符号][日志级别] 日志位置
# 链接符号
. 包含后面的级别及更高的级别
.= 只要后面的级别
.! 不要后面的级别,其他的都要
# 日志级别
见下图
# 日志位置
/var/log 绝对路径
-/var/log -表示先写到内存,定时存盘,适用大的日志文件
@IP:514 UDP传输
@@IP:514 TCP传输
~ 忽略,不保存
root,user1 发送给用户,需要对方在线
日志等级
日志轮转服务logrotate
- 主配置文件 /etc/logrotate.conf
- 子配置文件 /etc/logrotate.d/*
# 强制执行一次rotate
logrotate -f /etc/logrotate.conf
PPT
网络基础管理
时间同步管理
# centos6
ntpdate 域名|IP
# 对应配置文件
/etc/ntp.conf
# centos7
timedatectl
chronyc sources
时区管理
# centos6
/etc/sysconfig/clock
# centos7
timedatectl
timedatectl set-timezone Asia/Shanghai
语言管理
# centos6
/etc/sysconfig/i18n
# centos7
localectl
localectl set-locale LANG=zh_CN.UTF-8
主机名管理
# centos6
/etc/sysconfig/network
/etc/rc.sysinit
# centos7
hostnamectl
hostnamectl set-hostname www
/etc/hostname
网络配置
# centos6
ifconfig
# centos7
nmcli
c
d
nmtui
ip
# 网络服务
# centos6
network
# centos7
NetworkManager
常见网络服务端口
cat /etc/services
网关和路由
# 查看路由表
route -n
## 添加
route add default gw IP
## 删除
route del default gw IP
# 永久设置
/etc/rc.local
# 测试到达目标的路由跳点
traceroute
tracert(windows命令)
常用命令
# 测试DNS命令
nslookup
# 默认DNS配置
/etc/resolv.conf
# 网络探测
nmap
-sP IP/MASK # 查看某网段内有哪些主机是存活的
-sT IP # 查看某主机上开放了哪些TCP端口
PPT
信息安全
SELinux
基础
- SecurityEnhancedLinux 安全增强的Linux
- 是一个内核模块,负责安全的子系统
- 最大限度减小系统中进程可访问的资源(最小权限原则)
- 三种工作模式
相关命令
getenforce
setenforce
seinfo -r # 查看role
seinfo -u # 查看user
sestatus
semanage user -l # 用户
semanage login -l # 系统用户映射
semanage boolean # 布尔值
semanage fcontext # 文件上下文
semanage port -l # 端口
ls -Z
id -Z
ps -eZ
排错
- 日志
- /var/log/messages
- /var/log/secure
- /var/log/audit/audit.log
- 辅助工具
- sealert
- yum provides sealert # 查询是哪个包提供了这个工具
- ausearch
- whatis ausearch # audit日志的查询工具
- sealert
常见错误TOP3
- 上下文、标签
- 布尔值
- 新规则与旧程序的矛盾
手册
SELinux.pptxtcp_wrappers
早期小型的防火墙,目前已经不被推荐使用了
- 工作在四层的,针对有状态的TCP连接的特定服务进行安全控制
- 可以通过/etc/hosts.allow白名单和 /etc/hosts.deny黑名单配置文件对IP进行限制
- 工作原理
-
iptables
分类
主机型
- 配合本机其他服务一起,保护服务器主机
- 主要是通过四表五链之关系中的filter表实现
网络型
四表(相同功能规则的集合称为表)
- filter过滤表,内核模块iptables_filter
- nat 网络地址转换表NetworkAddressTranslation,内核模块iptables_nat
- mangle 拆包、修改、重封包维护表,内核模块iptables_mangle
- raw 原始表,关闭nat表上启用的连接追踪机制,内核模块iptables_raw
- 五链(各个关卡上有很多规则,多条规则一一匹配类似链条)
- PREROUTING
- INPUT
- FORWARD
- OUTPUT
- POSTROUTING
- 关系
条件动作定规则
服务安装和使用
yum install -y iptables-services
systemctl status iptables
systemctl start iptables
systemctl enable iptables
# 相关命令,链名和动作都要大写
iptables -nvL # 数字形式查看所有规则
iptables --line-number # 显示行号
iptables [-t 表名] -<A/I/D/R> 链名 [规则行号] [-i/o 网卡名 -p 协议 -s 源IP/子网 -d 目标IP/子网 --sport 源端口 --dport 目标端口 ] -j 动作
iptables -t # 指定表
filter
nat
mangle
raw
# 删除规则一键三连
iptables -F # 清空所有规则,注意默认是DROP还是ACCEPT,否则也容易失联
iptables -X # 清空自定义链
iptables -Z # 清空规则序号
iptables -P INPUT DROP # 设置链的默认动作,非常危险,会禁用22远程连接
# 按标记位设置规则,如下设置就会禁止新的连接,老连接还可以继续传输
iptables -I INPUT -p tcp --tcp-flags SYN,ACK,ACK SYN -j DROP
# 使用多端口模块,自己指定多个模块
iptables -I INPUT -p tcp -m multiport -dports 80,443,8080 -j DROP
# 使用自定义ip范围模块
iptables -I INPUT -p tcp -m iprange --src-range 192.168.1.10-192.168.1.60 -j DROP
# 允许已经建立连接的或相关的连接通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 保存规则到文件(默认保存到/etc/sysconfig/iptables)
service iptables save
# 主要操作nat表
# 操作POSTROUTING链
# -o ens192 指定输出的网卡名称
# -j SNAT 指定该网络包需要SNAT
# MASQUERADE 指定该网络包需要地址伪装(主要适用于IP地址非固定的情况,会自动查询可以通的地址)
# DNAT 指定该网络包需要DNAT
# --to-source 指定SNAT时需要修改的包的源地址
# --to-destination 指定DNAT时需要修改的包的目的地址
# SNAT 相当于正向代理
iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -o ens192 -j SNAT --to-source 192.168.200.20
iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -o ens192 -j MASQUERADE #这里不用指明IP,会自动伪装
# 外网访问192.168.200.20:22 我就转发到192.168.100.10:22,相当于反向代理
iptables -t nat -I PREROUTING -i ens66 -d 192.168.200.20 --dport 22 -j DNAT --to-destination 192.168.100.10:22
# 外网访问192.168.200.20:33333 我就转发到192.168.100.10:22,相当于反向代理
iptables -t nat -I PREROUTING -i ens66 -d 192.168.200.20 --dport 33333 -j DNAT --to-destination 192.168.100.10:22
手册
firewalld
基础
- 相较于iptables,firewalld支持动态更新技术并加入了zone(预先配置的策略模板)的概念
- 用户可以快速的在zone之间切换,动态更新,不用iptables 的reload
- 默认的很多策略在 /usr/lib/firewalld/zones下,默认是public模版
- zone配置文件使用xml配置
- 三种配置方法
常用命令
# 查看帮助
firewall-cmd --help
# 查看状态
firewall-cmd --state
# 查看默认区域
firewall-cmd --get-default-zone
# 查看目前活动区域
firewall-cmd --get-active-zones
# 重载配置文件
firewall-cmd --reload