
Linux 交换空间与网络安全加固 新手超全实操博客Linux 交换空间管理计算机存储器的层次结构 新手核心理解计算机存储器遵循速度越快、单价越高、容量越小的规律为了兼顾性能与性价比各类存储器分层协作、互补短板构成塔式存储架构。CPU 寄存器CPU 内部微型存储区域速度最快仅用于临时存放运算数据、结果及CPU运行核心信息是计算机最顶层存储单元。CPU 高速缓存CPU Cache由SRAM芯片组成集成在CPU芯片内部容量小、速度极致接近CPU主频。层级分为1级、2级、3级缓存位于存储体系第二层专门缓存CPU高频访问数据减少内存调取延迟。主存储器内存日常所说的运行内存负责存放系统运行的指令和数据支持CPU随机直接存取。速度远慢于缓存但容量大幅提升是程序运行的核心载体。辅助存储器磁盘、U盘、固态硬盘等外置持久化存储速度最慢但容量极大、断电数据不丢失用于长期保存数据。 主存储器核心参数说明1. 存取时间单位为纳秒(ns)主流SDRAM内存芯片存取时间为5~10ns是衡量内存速度的核心指标。2. 内存带宽计算公式带宽频率*位宽81B8bit单位换算核心公式实操举例DDR4 3600MHz、64位系统单通道3600MHz * 64bit / 828800MB/S双通道3600MHz * 64bit * 2 / 857600MB/S双通道翻倍提升带宽计算机存储器的工作原理 核心逻辑CPU读取数据遵循从快到慢、逐级缓存的原则优先读取高速存储设备数据缺失后逐级向下调取并缓存数据提升下次访问速度。完整读取流程CPU运行程序优先从寄存器读取数据命中则直接使用未命中则向下查找。寄存器无数据时读取CPU高速缓存命中直接使用未命中继续向下查找。缓存无数据时读取主内存命中后使用数据并缓存至高速缓存未命中则读取磁盘等辅助存储器。从辅助存储器调取的数据会同步缓存至内存保障后续快速访问。物理内存 新手必懂基础Linux系统会将物理内存划分为固定4KiB大小的内存块page页所有内存读写均以页为单位。所有进程不直接操作物理内存而是拥有独立的虚拟地址空间。CPU内置的MMU内存管理单元负责将进程的虚拟地址自动映射为物理地址实现内存高效管理。MMU核心作用管理虚拟/物理内存映射、管控内存访问权限、解决内存碎片化问题。 思考为什么CPU不直接访问物理地址虚拟内存容量 物理内存 交换空间突破物理内存硬件容量限制扩展程序运行空间。虚拟地址空间是连续的MMU可将连续的虚拟地址映射为零散的物理地址彻底解决进程频繁启停导致的内存碎片化问题保障程序稳定运行。Swap 交换空间 通俗定义Swap交换空间是Linux内核管控的一块磁盘虚拟内存区域功能和Windows的pagefile.sys虚拟内存完全一致用于缓解物理内存不足的问题。Swap三大核心功能内存过载兜底物理内存占用过高时内核自动将进程闲置的内存页写入Swap释放物理内存给活跃进程使用。内存数据置换程序需要访问磁盘数据时可将内存中闲置数据写入Swap置换出所需数据避免频繁读写磁盘。加速重复访问常用的磁盘数据缓存至Swap后二次访问无需读取原始磁盘小幅提升访问速度。⚠️ 新手重要提醒Swap仅为临时兜底方案磁盘读写速度远慢于物理内存频繁使用Swap会导致服务器卡顿、程序响应迟缓解决内存不足的根本方式是扩容物理内存。查看内存与Swap状态 常用命令free-m参数以MiB为单位展示默认KiB可读性更高# 查看内存、交换空间整体使用情况[rootcentos7 ~]# freetotal usedfreeshared buff/cache available Mem:40261563304603528844121361668523485576Swap:406322804063228字段详细释义新手必看【Mem 物理内存字段】total整机物理内存总容量used已占用内存包含程序运行、缓存、缓冲区占用free完全空闲、未被任何程序占用的纯净内存shared多进程共享的内存空间buff/cache磁盘数据缓存、文件缓冲区占用内存可释放给新程序使用available系统可分配给新进程的最大可用内存生产环境核心参考值【Swap 交换空间字段】total交换空间总容量used当前已使用的交换空间大小free当前空闲的交换空间大小Swap 空间大小规范官方参考标准 配置原则根据物理内存大小适配笔记本/台式机开启休眠功能时需增大Swap容量适配内存数据保存物理内存(RAM)常规交换空间大小开启休眠(HIBERNATE)所需交换空间2GiB及以下2倍物理内存3倍物理内存2GiB ~ 8GiB等于物理内存2倍物理内存8GiB ~ 64GiB最小4GiB1.5倍物理内存64GiB以上最小4GiB不建议开启休眠功能手把手创建 Swap 交换空间 实操步骤分区创建 → 格式化Swap文件系统 → 激活Swap# 1、给磁盘新建GPT分区表以/dev/sdb磁盘为例[rootcentos7 ~]# parted /dev/sdb mklabel gpt# 2、以MiB为单位新建2G大小的swap专用分区[rootcentos7 ~]# parted /dev/sdb unit MiB mkpart swap01 linux-swap 1 2049# 3、查看磁盘分区创建结果确认swap分区存在[rootcentos7 ~]# parted /dev/sdb unit MiB print# 4、格式化分区为swap文件系统核心命令[rootcentos7 ~]# mkswap /dev/sdb1Setting up swapspace version1, size2097148KiB no label,UUID2bf4e179-3648-4412-9495-3b278df4acd6激活 Swap 空间 优先级配置 优先级说明多Swap场景下优先级数值越大越优先使用默认优先级-3可手动自定义# 1、临时激活新建的swap分区[rootcentos7 ~]# swapon /dev/sdb1# 2、查看所有已激活的swap设备、大小、优先级[rootcentos7 ~]# swapon -sFilename Type Size Used Priority /dev/dm-1 partition40632280-2/dev/sdb1 partition20971480-3# 3、自定义swap优先级示例设置优先级为4高于默认分区[rootcentos7 ~]# swapon -p 4 /dev/sdb1取消 Swap 激活临时关闭# 取消指定swap分区激活[rootcentos7 ~]# swapoff /dev/sdb1# 再次查看swap列表确认分区已关闭[rootcentos7 ~]# swapon -sFilename Type Size Used Priority /dev/dm-1 partition40632280-2持久化 Swap 配置开机自动生效 核心修改/etc/fstab实现开机自启避免重启后Swap配置失效# 1、编辑开机自动挂载配置文件[rootcentos7 ~]# vim /etc/fstab# 2、文件末尾添加如下配置UUID替换为自己的swap分区UUID设置优先级4UUID2bf4e179-3648-4412-9495-3b278df4acd6 swap swappri400# 3、加载fstab中所有swap配置立即生效[rootcentos7 ~]# swapon -a# 4、验证配置生效[rootcentos7 ~]# swapon -sFilename Type Size Used Priority /dev/dm-1 partition40632280-2/dev/sdb1 partition20971480-3# 5、关闭所有fstab中的swap设备[rootcentos7 ~]# swapoff -aLinux 网络安全加固防火墙介绍 通俗定义防火墙部署在主机/网络边缘按照预设规则过滤进出数据包默认关闭所有访问权限仅放行规则内流量是服务器最基础的安全防护屏障。核心部署策略默认拒绝、按需放行。防火墙三大分类1. 按保护范围划分主机防火墙仅保护当前单台服务器针对性防护本机端口、服务访问网络防火墙保护整个局域网管控局域网所有设备的进出流量2. 按实现方式划分硬件防火墙专用安全硬件设备华为、华三、天融信性能强、稳定性高企业核心组网使用软件防火墙服务器系统级软件iptables、firewalld无需额外硬件轻量化、易配置通用服务器首选3. 按网络协议层级划分网络层防火墙包过滤工作在OSI四层基于IP、端口、协议过滤数据包透明传输、速度快无法检测应用层恶意数据应用层防火墙WAF/代理工作在OSI七层检测HTTP/HTTPS应用层数据可拦截病毒、恶意请求、SQL注入防护更全面但处理速度较慢Netfilter 内核子系统 核心底层Linux所有软件防火墙的内核底层依赖工作在内核态负责拦截、修改、丢弃、转发数据包所有防火墙规则最终都由Netfilter执行。用户空间工具手动配置使用iptables管控IPv4数据包过滤、转发、伪装ip6tables管控IPv6数据包功能同iptablesarptables防护ARP欺骗、恶意ARP攻击保护局域网设备ebtables数据链路层过滤多用于网桥、VLAN场景# 查看系统所有防火墙工具[rootcentos7 ~]# ls -1 /sbin/*tables-rwxr-xr-x1root root5987211月62016/sbin/arptables -rwxr-xr-x.1root root70164月112018/sbin/ebtables lrwxrwxrwx.1root root138月115:45 /sbin/ip6tables -xtables-multi lrwxrwxrwx.1root root138月115:45 /sbin/iptables -xtables-multiNftables 子系统 升级替代方案Nftables是Netfilter的增强升级版兼容原有架构解决了传统多工具冗余、冲突问题。核心优势数据包处理速度更快性能损耗更低规则更新无需全局重载效率更高统一单工具管理所有协议消除多工具争用冲突静态防火墙 vs 动态防火墙静态防火墙iptables修改任意一条规则必须全局重载所有规则会短暂中断网络连接适合固定不变的静态规则场景。动态防火墙firewalld仅更新修改的规则无需全局重载不中断现有网络连接灵活性更高是CentOS7默认防火墙。Firewalld 防火墙详解 版本适配CentOS7及以上系统默认防火墙底层默认调用Nftables动态加载规则兼容iptables规则。⚠️ 新手避坑firewalld和iptables不建议同时启用规则冲突易导致网络异常建议固定使用一种防火墙工具。Firewalld 九大区域Zone 核心设计将所有网络流量按区域分类每个区域对应一套独立过滤规则简化多网卡、多网段管控复杂度。trusted 信任区放行所有进出流量完全无限制仅内网可信设备使用public 公共区默认仅放行ssh、dhcpv6-client服务其余流量全部拒绝外网网卡默认区域external 外部区放行ssh服务默认开启IPv4地址伪装适合网关出口网卡home 家庭区放行ssh、mdn3、samba-client、dhcpv6-client适配家庭局域网internal 内部区规则同home区用于企业内网环境work 工作区放行ssh、dhcpv6-client服务适配办公网络dmz 隔离区非军事区仅放行ssh服务用于部署对外公开服务器隔离内网block 限制区拒绝所有入站流量返回拒绝响应drop 丢弃区直接丢弃所有入站流量无任何响应隐蔽性最高数据包区域匹配优先级优先匹配源地址绑定的区域无绑定源地址时匹配网卡绑定的区域均不匹配时使用系统默认public区域规则⚠️ 关键注意lo回环网卡默认绑定trusted区域保障本机服务互通未匹配放行规则的流量默认全部拒绝。Firewalld 规则优先级从高到低排序新手必须牢记富规则优先级最高自定义万能规则端口转发、地址伪装规则端口、服务放行规则端口、服务拒绝规则默认区域兜底规则优先级最低Firewalld 三种配置方式命令行工具 firewall-cmd推荐生产环境首选图形工具 firewall-config桌面版系统使用直接编辑配置文件不推荐易出错配置文件目录说明/usr/lib/firewalld/系统默认自带配置、服务模板、区域模板禁止修改/etc/firewalld/管理员自定义配置目录永久规则均保存在此# 查看系统默认区域配置文件[rootcentos7 ~]# cd /usr/lib/firewalld/[rootcentos7 ~]# lshelpers icmptypes ipsets services zones# 查看所有默认区域模板[rootcentos7 firewalld]# ls zones/block.xml drop.xml home.xml public.xml work.xml dmz.xml external.xml internal.xml trusted.xml# 查看trusted信任区配置全部放行[rootcentos7 firewalld]# cat zones/trusted.xml?xmlversion1.0encodingutf-8?zonetargetACCEPTshortTrusted/shortdescriptionAll network connections are accepted./description/zonefirewall-cmd 核心命令实操两大核心状态新手必懂runtime运行时默认状态规则立即生效重启/重载后失效permanent永久加--permanent参数规则写入配置文件不立即生效需reload重载✅ 最佳实操规范一条永久规则 一条临时生效规则兼顾即时生效与持久化区域Zone管理命令# 1、查看系统所有可用区域[rootcentos7 ~]# firewall-cmd --get-zonesblock dmz drop external home internal public trusted work# 2、查看当前正在使用的活跃区域绑定网卡/源地址[rootcentos7 ~]# firewall-cmd --get-active-zonespublic interfaces: ens32# 3、查看系统默认区域[rootcentos7 ~]# firewall-cmd --get-default-zonepublic# 4、修改默认区域为trusted[rootcentos7 ~]# firewall-cmd --set-default-zonetrusted# 5、恢复默认区域为public[rootcentos7 ~]# firewall-cmd --set-default-zonepublic# 6、查看默认区域所有规则[rootcentos7 ~]# firewall-cmd --list-all# 7、查看指定区域规则示例home区[rootcentos7 ~]# firewall-cmd --list-all --zonehome源地址Source管理作用指定固定IP/网段流量专属匹配某个区域规则# 1、将10.1.1.0/24网段流量绑定到home区域[rootcentos7 ~]# firewall-cmd --add-source10.1.1.0/24 --zonehome# 2、查看home区域绑定的源地址[rootcentos7 ~]# firewall-cmd --list-sources --zonehome# 3、查询网段所属区域[rootcentos7 ~]# firewall-cmd --get-zone-of-source10.1.1.0/24# 4、修改网段绑定到public区域[rootcentos7 ~]# firewall-cmd --change-source10.1.1.0/24 --zonepublic# 5、删除网段区域绑定[rootcentos7 ~]# firewall-cmd --remove-source10.1.1.0/24 --zonepublic服务Service放行管理 预定义服务系统内置http、https、ssh等常用服务规则直接放行即可无需手动配置端口# 提前安装nginx服务用于测试[rootcentos7 ~]# yum install -y nginx[rootcentos7 ~]# systemctl start nginx# 1、放行http网页服务临时生效[rootcentos7 ~]# firewall-cmd --add-servicehttp# 2、查看已放行服务列表[rootcentos7 ~]# firewall-cmd --list-services# 3、查询服务是否放行[rootcentos7 ~]# firewall-cmd --query-servicehttp# 4、删除放行的http服务[rootcentos7 ~]# firewall-cmd --remove-servicehttp端口Port放行管理 适用场景非系统预定义服务手动放行自定义端口# 1、放行5900/tcp端口临时生效[rootcentos7 ~]# firewall-cmd --add-port5900/tcp# 2、查看所有放行端口[rootcentos7 ~]# firewall-cmd --list-ports# 3、查询端口是否放行[rootcentos7 ~]# firewall-cmd --query-port5900/tcp# 4、关闭端口放行[rootcentos7 ~]# firewall-cmd --remove-port5900/tcp地址伪装MasqueradeSNAT实操 功能实现局域网主机共享公网IP上网SNAT源地址转换网关服务器必备配置网络拓扑网关server10.1.1.10、10.1.8.10可访问公网客户端client10.1.1.11网关指向10.1.1.10# 服务端网卡配置[rootserver ~]# nmcli connection delete 有线连接\ 1[rootserver ~]# nmcli connection add type ethernet ifname ens35 con-name ens35 ipv4.method manual ipv4.addresses 10.1.1.10/24[rootserver ~]# nmcli connection up ens35# 客户端网卡配置[rootclient ~]# nmcli connection modify ens33 ipv4.addresses 10.1.1.11/24 ipv4.gateway 10.1.1.10[rootclient ~]# nmcli connection up ens33# 1、查询是否开启地址伪装[rootserver ~]# firewall-cmd --query-masqueradeno# 2、开启IPv4地址伪装允许内网共享上网[rootserver ~]# firewall-cmd --add-masquerade# 3、验证开启成功[rootserver ~]# firewall-cmd --query-masqueradeyes# 4、客户端测试公网连通性[rootclient ~]# mtr 1.1.1.1# 5、关闭地址伪装[rootserver ~]# firewall-cmd --remove-masquerade端口转发Forward-portDNAT实操 功能将本机端口流量转发至内网其他服务器端口DNAT目的地址转换外网访问内网服务核心配置⚠️ 前置条件必须开启对应区域的masquerade地址伪装# 1、开启地址伪装前置必备[rootcentos7 ~]# firewall-cmd --add-masquerade# 2、本机8000端口转发至本机80端口[rootcentos7 ~]# firewall-cmd --add-forward-portport8000:prototcp:toport80# 3、本机1022端口转发至内网10.1.1.11的22端口[rootcentos7 ~]# firewall-cmd --add-forward-portport1022:prototcp:toport22:toaddr10.1.1.11# 4、查看所有端口转发规则[rootcentos7 ~]# firewall-cmd --list-forward-ports# 5、查询指定转发规则是否存在[rootcentos7 ~]# firewall-cmd --query-forward-portport8000:prototcp:toport80# 6、删除端口转发规则[rootcentos7 ~]# firewall-cmd --remove-forward-portport8000:prototcp:toport80:toaddr[rootcentos7 ~]# firewall-cmd --remove-forward-portport1022:prototcp:toport22:toaddr10.1.8.80ICMP协议管控ping防护1、icmp-block-inversion 全局ICMP翻转控制# 默认no放行所有ICMP可单独禁用指定ping# 设置yes禁止所有ICMP可单独放行指定IP ping# 开启ICMP全局禁止[rootcentos7 ~]# firewall-cmd --add-icmp-block-inversion --permanent[rootcentos7 ~]# firewall-cmd --complete-reload# 恢复默认配置[rootcentos7 ~]# firewall-cmd --remove-icmp-block-inversion --permanent[rootcentos7 ~]# firewall-cmd --complete-reload2、icmp-blocks 精准禁用ping# 1、禁止所有主机ping本机禁用echo-request请求[rootcentos7 ~]# firewall-cmd --add-icmp-block echo-request --permanent[rootcentos7 ~]# firewall-cmd --complete-reload# 2、查看禁用的ICMP类型[rootcentos7 ~]# firewall-cmd --list-icmp-blocks# 3、取消ping禁用[rootcentos7 ~]# firewall-cmd --remove-icmp-block echo-request --permanent[rootcentos7 ~]# firewall-cmd --complete-reload富规则Rich Rule万能自定义规则 核心优势优先级最高支持IP网段、速率限制、日志审计、黑白名单等复杂自定义规则弥补基础规则的不足富规则通用语法rule[source][destination]服务/端口/协议[log日志][audit审计][accept/reject/drop动作]富规则实操案例# 案例1禁止所有IPv4主机ping本机[rootcentos7 ~]# firewall-cmd --add-rich-rulerule familyipv4 protocol valueicmp drop# 案例2仅允许10.1.8.10主机ping本机[rootcentos7 ~]# firewall-cmd --add-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request accept# 案例3限流规则10.1.8.0/24网段访问http服务每秒最多3次日志审计[rootcentos7 ~]# firewall-cmd --add-rich-rule rule familyipv4 source address10.1.8.0/24 destination not address172.16.0.0/24 service namehttp log prefix http-error levelerror limit value2/s audit limit value1/s accept limit value3/s# 查看所有富规则[rootcentos7 ~]# firewall-cmd --list-rich-rules# 删除指定富规则[rootcentos7 ~]# firewall-cmd --remove-rich-rulerule familyipv4 protocol valueicmp drop直接规则Direct Rule 适配场景兼容iptables语法优先级高于所有firewalld规则用于补充特殊底层管控需求新手慎用。# 案例拉黑192.168.0.0/24网段限制最大连接数[rootcentos7 ~]# firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist[rootcentos7 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist[rootcentos7 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix blacklisted [rootcentos7 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP[rootcentos7 ~]# firewall-cmd --reload# 查看所有直接规则[rootcentos7 ~]# firewall-cmd --direct --get-all-rules# 清理直接规则[rootcentos7 ~]# firewall-cmd --permanent --direct --remove-rules ipv4 raw blacklist[rootcentos7 ~]# firewall-cmd --permanent --direct --remove-rules ipv4 raw PREROUTING[rootcentos7 ~]# firewall-cmd --direct --remove-chain ipv4 raw blacklist[rootcentos7 ~]# firewall-cmd --reload高级功能panic紧急防护模式 应急场景服务器遭遇暴力攻击、流量攻击时一键开启丢弃所有进出网络流量紧急止损# 开启紧急防护模式[rootcentos7 ~]# firewall-cmd --panic-on# 查询当前模式状态[rootcentos7 ~]# firewall-cmd --query-panic# 关闭紧急防护模式恢复网络[rootcentos7 ~]# firewall-cmd --panic-off规则持久化与调试技巧# 1、将当前运行时规则永久保存到配置文件[rootcentos7 ~]# firewall-cmd --runtime-to-permanent# 2、临时生效规则超时自动失效调试专用单位秒[rootcentos7 ~]# firewall-cmd --add-servicehttp --timeout10综合实操案例案例1禁止指定主机ping本机# 重置ICMP默认配置[rootcentos7 ~]# firewall-cmd --permanent --remove-icmp-block-inversion[rootcentos7 ~]# firewall-cmd --permanent --remove-icmp-blockecho-request# 添加禁止10.1.8.10 ping规则[rootcentos7 ~]# firewall-cmd --permanent --add-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request reject# 彻底重载规则生效[rootcentos7 ~]# firewall-cmd --complete-reload案例2仅允许指定主机ping本机# 全局禁止所有ping[rootcentos7 ~]# firewall-cmd --permanent --add-icmp-block-inversion# 放行指定主机ping权限[rootcentos7 ~]# firewall-cmd --permanent --add-rich-rulerule familyipv4 source address10.1.8.10 icmp-type nameecho-request accept# 重载规则生效[rootcentos7 ~]# firewall-cmd --complete-reload