SSH服务
概念
SSH(Secure Shell)安全外壳协议,替代不安全的 Telnet、rlogin,基于加密传输,用于远程登录服务器、远程文件传输。
默认端口:22,采用非对称加密,账号密码、传输数据全程加密,防抓包窃听。
两大核心组件
服务端 sshd:安装在被连接的服务器,监听 22 端口,接收客户端连接
客户端 ssh:本地电脑工具,主动发起远程连接
SSH连接远程终端
systemctl status shhd.service #检测SSH服务状态 systemctl start shhd.service
netstat -antlp|grep :22 #确认22端口状态开启
vim /etc/hosts #在双方电脑端编写入对方的IP以及主机名称以便可以连接
此时用ping命令测试
此时SSH登录需要输入密码。
免密访问
ssh-keygen #生成秘钥对 ssh-copy-id 主机名 #拷贝公钥到远程主机 ssh 登陆用户@远程主机名 #此时登录不需要密码
SSH常用参数
-p指定 SSH 端口
默认 22,修改端口后必须加
ssh -p 2222 root@192.168.1.10
-l指定登录用户
等价于user@ip
ssh -l root 192.168.1.10
-i指定私钥文件
多密钥场景手动指定私钥
ssh -i ~/.ssh/id_rsa_bak root@192.168.1.10
-o 指定连接参数
# 跳过主机密钥确认(测试临时用) ssh -o StrictHostKeyChecking=no root@192.168.1.10 # 不保存主机信息到known_hosts ssh -o UserKnownHostsFile=/dev/null root@192.168.1.10 # 关闭密码提示,只走密钥,失败直接退出 ssh -o PasswordAuthentication=no root@192.168.1.10 # 超时时间,5秒连不上断开 ssh -o ConnectTimeout=5 root@192.168.1.10
SSH配置文件
/etc/sysconfig/sshd.config
配置参数
Port 2222 #设定端口2222 PermitRootLogin yes|no 是否禁止超级用户登陆 PasswordAuthentication yes|no 是否开启原始密码认证方式 AllowUsers lee 用户白名单 DenyUsers lee 用户黑名单
远程文件同步
scp
概念
scp = secure copy,安全复制命令。
底层基于 SSH 协议,复用 SSH 的加密通道完成文件传输,数据全程加密,解决传统 rcp 明文传输、容易被抓包窃取的安全问题。
依赖服务:远程主机必须正常运行sshd(SSH 服务)。
作用
在本地主机 ↔ 远程 Linux 服务器、两台远程服务器之间安全复制文件 / 文件夹。必须是绝对路径。
特点
传输加密:账号、文件内容加密传输,安全性远高于 ftp、rcp;
复用 SSH 认证:支持密码登录、密钥私钥登录;
端口跟随 SSH:SSH 改端口后,scp 需用大写
-P指定端口;支持递归传输目录(
-r参数);不支持断点续传、增量同步,大文件同步不如 rsync。
参数
-p:保留原文件的修改时间,访问时间和访问权限
-r: 递归复制整个目录。
示例
复制本机的file文件,以fox用户的身份传送到192.168.234.129的DIR目录中
# scp file wxh@192.168.234.129:DIR
注:此处DIR必须为绝对路径
以fox身份复制远程主机192.168.234.129的PATH到本机的DIR目录中
# scp fox@192.168.234.129:PATH DIR
注:PATH必须是绝对路径
rsync
概念
rsync = remote sync,远程同步工具,底层同样基于 SSH 传输,是 scp 的升级版。
核心特点:增量同步—— 只传输文件发生变化的部分,相同内容不重复传输,支持断点、保留权限、删除多余文件、限速、压缩。
适用:大量文件、大文件、定时备份、服务器同步。
依赖:两端无需同时装 rsync 服务,默认走 ssh 通道。
和 scp 核心区别
scp:全量覆盖,每次完整传文件,无增量,不支持断点;
rsync:对比文件校验值,只传差异块,速度更快。
参数
rsync -r #同步目录 -p #同步权限 -o #同步文件所有人 -g #同步文件所有组 -l #同步链接 -D #同步设备文件 -t #同步文件时间戳
系统日志
systemd-journald服务
systemd-journald是systemd 配套的日志管理服务,CentOS7、Ubuntu16.04 及以上系统默认启用。
作用:统一收集内核、系统服务、用户程序输出的日志,以二进制格式存储,配套查询工具journalctl。
默认存放路径:/run/log
journalctl命令
journalctl //日志分析命令 journalctl -n 5 //查看最近生成的5条日志 journalctl -p err //查看系统报错 journalctl --since --until //查看某个时间段生成的日志 journalctl -o verbose //查看日志能够使用的条件参数
日志持久化
systemd日志保存在/run/log/journal中,这意味着系统重启时会被清除,那如果将日志保存在/var/log/journal目录,启动后就可以利用历史数据,形成永久日志
mkdir /var/log/journal chown root.systemd-journal /var/log/journal/ chmod 2755 /var/log/journal/ systemctl restart systemd-journald
rsyslog服务
定义
rsyslog是 Linux 系统中增强版 syslog 日志服务程序,全称 rocket-fast system for log processing,是标准 syslog 的高性能实现。
作用:统一接收系统、内核、各类应用产生的日志,做格式化处理,落地保存为文本日志;同时支持日志转发、过滤、存储、数据库写入,是传统/var/log目录日志的生成来源。
和 systemd-journald 的关系
systemd-journald:systemd 自带日志收集器,第一手接收内核、服务、程序所有日志,二进制缓存;rsyslog:日志处理转发服务,默认监听 journald 输出,把二进制日志转成可读文本,存入/var/log/westos.lo
二者共存,分工不同:journald 负责采集,rsyslog 负责持久化、分发、归档。
核心功能
本地日志存储
将日志分类写入 /var/log/westos.log 下文本文件:messages、secure、cron、maillog 等,可直接 cat/tail 查看。
日志过滤与分类
根据设施(facility)+ 级别(severity) 匹配规则,区分系统日志、登录安全日志、定时任务日志分开存放。
远程日志转发
支持将本机日志发送到远端日志服务器(内网统一日志平台),支持 TCP/UDP 传输。
多输出目标
日志可存文件、输出到数据库(MySQL/PostgreSQL)、管道程序、远程主机。
高性能高并发
相比老旧 syslog,支持多线程、队列缓存,大量日志不丢失
日志类型与级别
日志类型 Facility(来源分类)
用来区分这条日志是哪个模块 / 程序产生,rsyslog 配置依靠它分流日志。
| 类型 | 含义 | 典型产生日志 |
|---|---|---|
| kern | 内核日志 | 硬件报错、驱动、内核崩溃、dmesg 内容 |
| user | 用户层普通程序 | 普通用户执行程序输出 |
| 邮件服务 | sendmail、postfix 收发邮件日志 | |
| daemon | 系统后台守护进程 | 各类服务通用(nginx、vsftpd 等无专属分类时用) |
| auth / authpriv | 认证安全日志 | ssh 登录、sudo、密码验证、登录失败authpriv 更私密,存/var/log/secure |
| syslog | syslog 服务自身 | rsyslog、journald 自身报错 |
| lpr | 打印服务日志 | 打印机相关 |
| news | 新闻组服务 | 极少使用 |
| uucp | 老式 UNIX 通信服务 | 基本淘汰 |
| cron | 定时任务 | crontab 任务执行、报错,存/var/log/cron |
| local0~local7 | 自定义本地日志 | 业务程序自定义使用,例:nginx=local7、tomcat=local0 |
日志级别 Severity(严重程度,数字越小越严重)
共 8 级,0 最严重,7 仅调试信息。
| 级别数字 | 名称 | 说明 | 使用场景 |
|---|---|---|---|
| 0 | emerg | 系统崩溃紧急 | 主机宕机、内核 panic,所有人需要立刻处理 |
| 1 | alert | 必须马上修复 | 磁盘满、数据库挂掉、关键服务异常 |
| 2 | crit | 严重错误 | 硬件故障、程序核心功能崩溃 |
| 3 | err | 普通错误 | 程序运行报错、连接失败、文件找不到 |
| 4 | warn | 警告 | 不影响运行,但存在隐患(内存不足、连接超时) |
| 5 | notice | 正常重要事件 | 服务启停、用户登录、定时任务执行 |
| 6 | info | 普通运行信息 | 正常访问、服务启动成功、日常流程记录 |
| 7 | debug | 调试详细日志 | 开发排错,生产环境一般关闭,日志量极大 |
远程日志同步
日志发送方
vim /etc/rsyslog.conf #修改文件内容如下 *.* @@日志接收方ip
日志接收端
vim /etc/rsyslog.conf #修改文件内容如下: $ModLoad imudp //加载日志接收功能模块 $UDPServerRun 514 //加载日志接收接口
修改后重启日志接收端并查看端口。
systemctl restart rsyslog.service netstat -antulp|grep :514
测试
发送端发送日志
接收端动态接收
tail -f /var/log/messages
问题
无法接受对方日志
解决:检查了防火墙的开关后重启服务,发现可以接收
系统延时任务
at命令
概念
at用于设置一次性延时任务,任务只会执行一次,区别于 cron 循环定时。
原理:atd 服务后台运行,扫描任务队列,到达指定时间自动执行。
依赖服务
服务名:atd
# 查看状态 systemctl status atd # 开机自启、启动 systemctl start atd systemctl enable atd
服务没启动,at 任务不会运行。
时间格式
绝对时间
# 今天14:30执行 at 14:30 # 2026-07-25 10:00 at 10:00 2026-07-25 # 下午4点 at 16pm
相对延时(最常用)
# 5分钟后执行 at now +5 minutes # 2小时后 at now +2 hours # 3天后 at now +3 days # 半小时后 at now +30 min
管理定期任务
crontab
基础概念
服务:
crond后台守护进程,每分钟扫描定时任务表,到达时间自动执行脚本 / 命令;作用:循环重复执行任务(分钟 / 小时 / 日 / 周 / 月),和
at一次性任务区分;任务文件分类
用户级:
crontab -e编辑,存在/var/spool/cron/用户名系统级:
/etc/crontab、/etc/cron.d/、cron.hourly/daily/weekly/monthly
服务管理5
systemctl status crond systemctl start crond systemctl enable crond systemctl restart crond
定时语法
格式:
* * * * * command #分 时 日 月 周 执行命令
| 字段 | 取值范围 |
|---|---|
| 分 minute | 0–59 |
| 时 hour | 0–23 |
| 日 day | 1–31 |
| 月 month | 1–12 |
| 周 week | 0–7(0 和 7 都代表周日) |
特殊符号
*所有取值;,多个不连续时间:1,3,5;-连续区间:8-12;/间隔:*/10每 10 单位执行一次。
cron权限设定
在系统中默认所有用户可以设定 cron
#用户黑名单 /etc/cron.deny #用户白名单 /etc/cron.allow
NFS服务
概念
NFS(Network File System)网络文件系统,实现 Linux 服务器之间目录共享,客户端可像访问本地磁盘一样读写远端共享目录。
底层依赖 RPC 远程过程调用协议,CentOS7+ 使用nfs-utils服务套件。
核心角色
NFS 服务端:存放共享目录,对外发布共享
NFS 客户端:挂载服务端共享目录到本地使用
服务部署
服务端客户端都安装NFS并启动服务,关闭防火墙
yum install -y nfs-utils systemctl start nfs systemctl stop firewalld
服务端配置
# vim /etc/exports /nfs *(sync,ro) #对所有人以只读的方式共享目录 # exportfs -rv #重载nfs服务配置
客户端配置
查看NFS服务器的共享资源:
showmount -e 192.168.234.129
挂载目录
#将server0中路径为/mnt/nfsdata的目录挂载到server2的/nfs目录 mount server0:/mnt/nfsdata /nfs/
发现server2无法进行写入文件,检查exports文件并修改只读权限后发现仍无法写入,此时发现server0中该目录权限存在问题
在server0中给予权限
server2中发现可以写入
问题
server2中无法查询到server0的共享目录
解决:关闭防火墙后重新加载
autofs服务
概念
作用:按需自动挂载 NFS、本地光盘、samba 等共享;闲置超时自动卸载。
本质:监控指定挂载父目录,触发 IO 访问时执行挂载操作。
依赖:搭配 NFS、rpcbind 使用,常用于 NFS 自动挂载。
配置
客户端配置:
# yum install autofs -y #安装autofs软件包 # systemctl start autofs #启动autofs服务 # vim /etc/auto.master /autofs /etc/auto.nfs #指定自动挂载点的父目录:/autofs # vim /etc/auto.nfs demo -ro 192.168.234.129:/nfs 最终挂载点 只读挂载 需要挂载的共享目录 \# systemctl restart autofs #重启autofs服务
iscsi服务
基础概念
iSCSI(Internet Small Computer System Interface)
基于 TCP/IP 网络传输 SCSI 指令,把远端服务器磁盘 / 分区,映射成本地块设备。
简单理解:通过网线共享硬盘,客户端识别为/dev/sdb这种裸磁盘,可分区、格式化、挂载。
角色区分
服务端(target):提供磁盘存储,共享块设备,软件包
targetcli客户端(initiator):连接远端磁盘,本地识别硬盘,软件包
iscsi-initiator-utils
端口:默认 3260
和 NFS 核心区别
NFS:文件共享,传输文件层级,只能直接挂载使用;
iSCSI:块设备共享,共享整块硬盘,客户端需要分区格式化,性能更适合数据库、存储集群。
服务配置
安装服务端软件
# yum install -y targetcli
启动服务:
# systemctl start target # systemctl enable target
•配置数据输出
# targetcli /> ls /> /backstores/block create demo /dev/vdb1 /> /iscsi create iqn.2019-10.com.example:storage1 /> /iscsi/iqn.2019-10.com.example:storage1/tpg1/luns create /backstores/block/demo /> /iscsi/iqn.2019-10.com.example:storage1/tpg1/acls create iqn.2019-10.com.example:demokey /> /iscsi/iqn.2019-10.com.example:storage1/tpg1/portals create 172.25.0.1 /> exit
安装客户端软件
#yum install -y iscsi-initiator-utils.x86_64
修改名称与服务端相同
# vim /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2019-10.com.example:demokey
启动服务
#systemctl start iscsid
发现设备并登录
#iscsiadm -m discovery -t st -p 192.168.234.129 #iscsiadm -m node -l
配置开机自动挂载时需要添加网络设备参数
# vim /etc/fstab UUID=设备uuid /demo xfs _netdev 0 0
删除iscsi设备
#umount /demo #删除 /etc/fstab文件中的自动挂载 iscsiadm -m node -u iscsiadm -m node -o delete
系统引导
系统引导流程
•开机
•UEFI/BIOS 唤醒机器
•选择第一启动设备
•GRUB2 执行
•内核加载,初始ramdisk加载
•内核运行
•/usr/lib/systemd/systemd 启动
▫/sbin/init -> /lib/systemd/systemd -> /usr/lib/systemd/system
systemd 管理所有进程
在/boot/grub2/grub.cfg中可以看到使用的系统
引导文件grub.cfg被破坏后补救
当开启虚拟机时出现以下界面表示虚拟机引导文件被破坏
此时可以手动引导进行补救:
通过引导破坏前的完好的克隆机可知其引导文件所在分区为 /dev/sda1,查看破坏前的完整grub.cfg文件进行手动引导
输入
set root='hd0,msdos1' linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root initrd16 /initramfs-3.10.0-1160.el7.x86_64.img #完成后重启 boot
重启后恢复正常
此时文件在/mnt/目录里,手动将其恢复到/boot/grub2/目录中
引导文件所在根目录被破坏补救
在虚拟机开机页面点击以下按钮
在加载页面快速按下Fn+F2按键进入
调整/boot/下的优先级,将CD-ROM Drive调整至最优先,保存退出
出现以下界面,选择Troubleshooting
选择Rescue a CentOS system
继续“countine”
输入
chroot /mnt/sysimage yum repolist
此时查看网卡发现网卡关闭
输入
nmcli c reload nmcli c up ens33#启用网卡
此时发现无法ping通外网
vim /etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/resolv.conf
此时发现联通
yum makecache #重建缓存 yum install -y kernel#重装kernel yum install -y grub2-pc#重装grub2
此时grub2是空的,需要重新引导
grub2 install /dev/sda #修复grub2引导扇区的代码以及/boot/下的一些引导文件
此时缺少grub.cfg文件,输入
grub2-mkconfig -o /boot/grub2/grub.cfg
此时回到以下界面并将Hard Drive调整至优先
系统正常引导
问题
此时登陆系统发现ens33网卡无法正常启动
vim /etc/sysconfig/network-scripts/ifcfg-ens33
将刚才的修改设置为初始
输入
systemctl restart NetworkManager#彻底重启网络管理服务 nmcli c up ens33 #启动网卡
systemd - System Manager
基础定位
systemd 是 Linux 现代系统的 PID=1 一号进程,取代传统/sbin/init(SysVinit)。
内核挂载真实根文件系统后,执行的第一个用户态程序:/usr/lib/systemd/systemd
核心目标:
并行启动服务、统一管理服务 / 挂载 / 网络 / 日志 / 挂载点、实现依赖管理、自动重启守护进程。
发行版:CentOS7+、RHEL7+、Ubuntu16.04+、Debian9+、OpenSUSE 主流全部使用 systemd
核心概念:Unit(单元)
systemd 所有资源抽象为Unit,后缀区分类型,文件一般存放路径:
系统单元:
/usr/lib/systemd/system/管理员自定义单元:
/etc/systemd/system/
常用 Unit 类型
| 后缀 | 类型 | 作用 |
|---|---|---|
.service | 服务单元 | 管理后台程序(nginx、sshd) |
.target | 目标单元 | 启动组,相当于运行级别 |
.mount | 挂载单元 | 文件系统挂载(替代 fstab 一部分) |
.socket | Socket 单元 | 套接字激活(按需启动服务) |
.timer | 定时器单元 | 替代 cron 定时任务 |
.path | 路径监控 | 文件变化触发程序 |
.device | 设备单元 | 内核识别硬件设备 |
.swap | 交换分区单元 | 管理 swap |
管理system单元
systemctl [--all] 查询所有单元的状态以验证系统启动情况 systemctl --type=service 仅查询服务单元的状态 systemctl is-active sshd; systemctl is-enabled sshd systemctl list-unit-files [--type=service] 查看所有单元的启用和禁用设置
服务状态
systemctl status sshd[.service] loaded: 单元配置文件已处理 active (running): 运行一个或多个持续进程 active (exited): 成功完成一次性配置 active (waiting): 正在运行但等待某个事件 inactive: 未运行 enabled: 将在开机时启动 disabled: 不会在开机时启动
启动和停止服务
systemctl status sshd.service [check out PID] systemctl stop sshd.service systemctl start sshd.service [check out PID] systemctl restart sshd.service [check out PID] systemctl reload sshd.service [now, check out PID]
管理开机自启服务
systemctl enable sshd.service systemctl disable sshd.service
屏蔽服务
有时系统服务会冲突
network and NetworkManager iptables and firewalld
此时可以屏蔽某项服务
systemctl mask firewalld
注意:禁用的服务不会在启动时或由其他单元文件自动启动,但可以手动启动。被屏蔽的服务既不能手动启动也不能自动启动。
防火墙
firewalld(用户空间防火墙服务)
概念:Zone(区域)
把网卡 / 网络划分不同信任等级:
trusted(全部允许) → home → internal → public(默认) → drop → block一张网卡绑定一个 zone,不同 zone 使用不同防火墙策略。
特性
Service:预定义服务(http、ssh,对应端口)
临时规则(runtime):立即生效,重启 / 重载丢失
永久规则(permanent):写入配置文件,必须
--reload加载动态规则更新:reload 时不切断已经建立的连接(最大优势)
3.参数
| 区域 | 默认策略 | 使用场景 |
|---|---|---|
| trusted | 全部允许 | 内网信任网络 |
| home/internal | 允许常用服务 | 家庭 / 内部局域网 |
| public | 默认,仅允许少量服务 | 外网、公网网卡(默认 zone) |
| block | 所有入站拒绝,返回拒绝信息 | 不信任网络 |
| drop | 所有入站丢弃,不回应 | 最严格,直接丢包 |
iptables
定义
iptables:运行在用户空间的命令工具,用来向 Linux 内核Netfilter框架下发数据包过滤规则,实现防火墙、地址转换功能。
Netfilter:内核层面的防火墙框架,提供 5 个钩子点位,真正处理数据包。
Iptables 工作原理分类
Iptables 工作流程
规则自上而下依次匹配,匹配成功后执行对应动作,不再向下继续匹配;
数据包遍历所有规则仍未匹配,则执行链默认策略。
分类
主机防火墙:防护本机收发报文,依托 filter 表 INPUT 链;
网络防火墙:管控内网转发报文,依托 nat 表。
四张表功能
raw 表:数据包连接跟踪前预处理;
mangle 表:修改数据包 IP 头部信息;
nat 表:实现源 / 目标网络地址转换;
filter 表:数据包过滤,决定放行或丢弃,使用最广泛。
iptables 概念 楼房类比 释义 表(tables) 一栋楼房 根据功能划分不同大楼,每栋楼只做一类工作(filter、nat、mangle、raw) 链(chains) 楼房里的房间 数据包流转的不同阶段,每个房间对应一个数据包必经点位(INPUT、OUTPUT、PREROUTING 等) 规则(rule) 房间内的柜子 一条一条匹配条件:源 IP、端口、协议等 动作 / 策略(target/policy) 柜子上摆放 / 收纳规则 匹配成功后执行操作:ACCEPT、DROP、REJECT、SNAT 等;全部柜子不匹配就执行房间默认收纳规则####
五条链
| 链名称 | 核心作用 | 流量场景 | 典型用途 |
|---|---|---|---|
| INPUT | 处理、管控进入本机的数据包 | 目标地址为本机的流量 | 主机防火墙核心链,过滤外部访问本机的流量,禁止未授权访问本机服务(filter 表主打) |
| OUTPUT | 处理、管控本机向外发出的数据包 | 本机主动对外发送的流量 | 限制本机出站流量,拦截恶意程序、异常配置向外发送不安全报文 |
| FORWARD | 处理经过本机转发的数据包 | 流量不经过本机应用,仅通过本机跨网络转发 | 用于路由器、网关设备,控制不同网络之间的转发流量,实现内网流量管控 |
| PREROUTING | 路由决策之前处理入站数据包 | 所有刚进入网卡的外网流量 | 主要用于DNAT 目标地址转换,将外网请求转发至内网指定设备/服务 |
| POSTROUTING | 路由决策之后处理出站数据包 | 所有即将离开网卡的转发、出站流量 | 主要用于SNAT 源地址转换,内网主机共享公网IP上网,统一修改流量源地址 |
工作顺序:
PREROUTING :首先处理进入本机的数据包,用于目标地址转换( DNAT )。
INPUT :如果数据包的目标是本机,数据包会进入 INPUT 链,决定是否允许本机接受该数据包。 FORWARD :如果数据包不属于本机(即目标是其他网络),数据包会进入 FORWARD 链,决定是否 允许转发。
POSTROUTING :在数据包离开本机之前,源地址转换( SNAT )会在此链中进行。
OUTPUT :如果数据包是从本机发出的,数据包会经过 OUTPUT 链,决定是否允许本机向外发送该 数据包
| 表名称 | 核心作用 | 典型应用场景 | 内置常用链 |
|---|---|---|---|
| raw 表 | 在连接跟踪生效前处理数据包,设置连接跟踪标记,支持跳过连接跟踪 | 流量优化,特定流量关闭连接跟踪,降低系统开销 | PREROUTING、OUTPUT |
| mangle 表 | 修改数据包 IP 头部字段,为数据包打标记 | 修改 TTL、TOS;流量标记、QoS、负载均衡等高级网络管控 | PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING |
| nat 表 | 修改数据包源地址、目标地址,实现地址转换 | SNAT、DNAT、端口转发;内网主机共享公网 IP 访问外网 | PREROUTING、POSTROUTING、OUTPUT |
| filter 表 | 数据包过滤,判定报文是否允许通行 | 防火墙访问控制,放行、拒绝、丢弃数据包,日常最常用 | INPUT、FORWARD、OUTPUT |
iptables 缺点
无法防御内网发起的攻击;
系统漏洞可能被攻击者利用,绕过防火墙策略;
难以识别、拦截内嵌在数据中的病毒。
格式
iptables -t 表名 动作 [链名] [-p 匹配条件] [-j 控制类型] -j:控制类型, 通过前面匹配到之后是丢弃还是保留数据包的处理方式: ACCEPT允许, REJECT拒绝, DROP丢弃。 不会给用户返回任何的拒绝消息,不推荐使用。
参数
-L: 列出一个链或所有链中的规则信息 -n: 以数字形式显示地址、端口等信息 # 端口: --sport --源端口 --dport --目标端口 -v: 以更详细的方式显示规则信息 --line-numbers: 查看规则时,显示规则的序号(方便之处,通过需要删除规则-D INPUT 1 -F: 清空所有的规则(-X是清理自定义的链,用的少;-Z清零规则序号) -D: 删除链内指定序号(或内容)的一条规则 -P: 为指定的链设置默认规则 -A: 在链的末尾追加一条规则 -I: 在链的开头(或指定序号)插入一条规则 -t: 指定表名
Apache服务
概念
1. 基本定义
Apache(全称Apache HTTP Server),一款开源、跨平台的Web 网页服务器软件,由 Apache 软件基金会维护。
作用:接收客户端浏览器发起的 HTTP/HTTPS 请求,向客户端返回网页、图片、文档等资源,实现网站访问。
2. 核心功能
处理HTTP / HTTPS请求,提供静态网页访问;
支持虚拟主机:一台服务器搭建多个独立网站;
支持模块扩展(模块化架构),可加载模块实现 PHP、重定向、访问控制、加密等功能;
具备访问权限控制、日志记录、防盗链、URL 重写等能力。
3. 关键特点
模块化设计:核心程序简洁,按需加载模块,功能灵活扩展;
跨平台:支持 Linux、Windows 等操作系统;
开源免费、稳定可靠,兼容性强;
采用多进程 / 多线程模型处理客户端请求。
4. 作用
监听端口:默认 HTTP 80 端口,HTTPS 443 端口;
网站根目录:存放网页程序的目录(Linux 默认常见
/var/www/html);主配置文件:
httpd.conf(RHEL/CentOS)、apache2.conf(Debian/Ubuntu);虚拟主机:基于域名 / IP 区分多个站点;
访问日志 & 错误日志:记录用户访问行为、程序报错,方便运维排查。
5. 工作流程
客户端浏览器 → TCP 连接(80 端口) → Apache 服务接收 HTTP 请求
→ 查找对应网页资源 → 返回资源给浏览器 → 断开连接
Apache服务配置
安装httpd # yum install httpd httpd-manual -y 开启服务 # systemctl start httpd # systemctl enable httpd # firewall-cmd --permanent --add-service=http # firewall-cmd --reload 默认发布目录: # cd /var/www/html # vim index.html #新建默认发布页面
Apache参数
| 参数 | 作用说明 |
|---|---|
ServerRoot "/etc/httpd" | Apache 程序根目录,存放配置、模块 |
Listen 80 | 监听端口,默认 80;可写Listen 192.168.1.100:80绑定指定网卡 |
ServerAdmin root@localhost | 网站管理员邮箱,出错页面展示 |
ServerName www.test.com:80 | 服务器主机名,虚拟主机必备 |
DocumentRoot "/var/www/html" | 网站根目录,网页文件存放位置 |
DirectoryIndex index.html index.php | 默认首页文件,按顺序查找 |
Timeout 60 | 请求超时时间,单位秒 |
KeepAlive On/Off | 是否开启长连接;On 支持一次 TCP 连接多次请求 |
MaxKeepAliveRequests 100 | 单条长连接最大请求数量 |
KeepAliveTimeout 5 | 长连接空闲超时 |
目录权限段 <Directory>
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
日志参数
ErrorLog "logs/error_log" LogLevel warn CustomLog "logs/access_log" combined
ErrorLog:错误日志CustomLog:访问日志combined:标准日志格式(含来源 IP、浏览器、状态码)