php网站开发工程师认证证书北京到安阳拼车群
php网站开发工程师认证证书,北京到安阳拼车群,网站做反向解析,wordpress 上传到七牛一、iptables防火墙
1、语法格式
iptables -t 表名 [选项] 链名 [条件1] [条件2]... -j [策略]
表名nat 包过滤filter 地址转换
链名PREROUTING 路由前#xff0c;改目的 IPINPUT 入站FORWORD 专门处理经过本机转发的流量#xff08;即不是发给本机#xff0c;也不是从本…一、iptables防火墙1、语法格式iptables -t表名[选项]链名[条件1][条件2]... -j[策略]表名nat包过滤 filter 地址转换 链名 PREROUTING 路由前改目的 IP INPUT入站 FORWORD 专门处理经过本机转发的流量即不是发给本机也不是从本机发出的流量 OUTPUT出站POSTROUTING路由后改源 IP #[选项] -A 追加规则到最后 -I插入规则到指定为止-I [链名] 行号 -nL 查看规则 -F清空规则 -D 删除某行规则-D[链名]行号 -P指定防火墙的默认规则 #[条件] -s 源IP -d 目标IP -p 传输协议 -p tcp/udp --sport 源端口 -p tcp/udp --dport目标端口 -i 入站网口 -o 出站网口 -m multiport --dport 80,443 多端口匹配 -m iprange --src-range192.168.4.21-192.168.4.28IP范围匹配 -m mac --mac-source 00:0c:29:c0:55:3f 匹配来源mac地址 -m state --state ESTABLISHED,RELATED匹配数据包链接状态 #[通用策略] -j ACCEPT 放行 -j REJECT拒绝 -j DROP 丢弃#[nat表策略]-j SNAT --to-source IP地址源地址修改 -j MASQUERADE 动态原地址转换 -j DSNAT --to-destination IP地址目标地址修改 -j REDIRECT --to-ports 将请求其他主机的数据包转发给本机的指定端口2、放行/拒绝IP及端口1、iptables -t filter -A INPUT -s192.168.1.100 -p tcp --dport22-j DROP拒绝 源地址 是192.168.1.100的ip 访问本机 22端口2、iptables -t filter -A OUTPUT -d8.8.8.8 -p udp --dport53-j DROP阻止 本机访问 目标ip为8.8.8.8 的58端口3、iptables -t filter -A FORWARD -s192.168.1.0/24 -j ACCEPT允许来自192.168.1.0网段的包可以转发4、iptables -t filter -A OUTPUT -p icmp --icmp-type echo-request -j DROP限制本机ping外部5、iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 允许所有与本机已建立连接相关的入站流量以及被动触发的相关联新连接的入站流量通过防火墙。3、nat转发#要开启路由转发功能sed-is/^net.ipv4.ip_forward0/net.ipv4.ip_forward1//etc/sysctl.confsysctl -p1、内部--外部 iptables -t nat -A POSTROUTING -s192.168.1.0/24 -o eth0 -j MASQUERADE将源IP是192.168.1.0/24内网网段的、从 eth0 网卡出站的所有流量动态替换源 IP 为 eth0 网卡当前的实际 IP让内网主机通过该 Linux 服务器访问外网 / 上级网络且无需手动指定转换后的固定 IP。 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 10.20.30.40 将内网192.168.1.0/24 网段的所有出站流量永久、固定地将源 IP 替换为服务器的10.20.30.40让内网主机通过该固定 IP 访问上级网络 / 外网同时让外网 / 上级网络的响应包能通过10.20.30.40 正确回传给服务器再由服务器转发给对应内网主机。2、外部--内部 iptables -t nat -A PREROUTING -p tcp --dport80-j DNAT --to-destination192.168.1.10:8080端口转发DNAT将外部访问本机80端口的流量转发到内网192.168.1.10:8080 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 重定向外部HTTP流量将外部访问本机80端口的流量重定向到本机8080端口4、简介iptables有多种功能每一种功能都用一张表来实现 最常用的功能是防火墙和NAT 从RHEL7开始默认的防火墙为firewalld但是它的底层仍然调用iptables[rootlocalhost ~]# yum install -y iptablesiptables的表和链。我们只关心nat表和filter表。filter表是默认的表它实现防火墙也就是包过滤的功能。nat表实现网络地址转换。保存规则并开机自启[rootlocalhost ~]# service iptables saveiptables: Saving firewall rules to /etc/sysconfig/iptables:[OK][rootlocalhost ~]# systemctl enable iptablesCreated symlink /etc/systemd/system/multi-user.target.wants/iptables.service → /usr/lib/systemd/system/iptables.service.防火墙filter表 配置iptables时不指定表就是使用filter表 配置时不指定规则链则配置所有链 可以向规则链中加入很多规则数据包进入该链时从上向下匹配一旦匹配就停止开始应用规则。如果全都不匹配则应用默认规则 命令选项、链名、目标操作使用大写字母其他小写5、mangle表修改数据包的TTL值将本机发出数据包的TTL设置为100 iptables -t mangle -A OUTPUT -j TTL --ttl-set 100 # 注释 # -t mangle指定mangle表 # -A OUTPUT在OUTPUT链追加规则 # -j TTL调用TTL目标模块 # --ttl-set 100将TTL值设置为100 # 验证 iptables -t mangle -L OUTPUT -v -n ping example.com tcpdump -i eth0 icmp # 捕获 ICMP 响应查看 TTL 值是否为 100 TTLTime To Live是 IP 数据包的一个字段表示数据包在网络中允许经过的最大路由跳数。 某些网络会检查 TTL 值以限制设备接入通过增加 TTL 值使数据包看起来来合法终端从而被放行。 注意TTL 修改的合法性某些网络可能禁止修改 TTL需遵守当地政策 标记数据包以供路由使用为特定流量打标记 iptables -t mangle -A PREROUTING -s192.168.1.100 -j MARK --set-mark1# 注释# -t mangle指定mangle表# -A PREROUTING在PREROUTING链追加规则# -s 192.168.1.100匹配源IP为192.168.1.100# -j MARK调用MARK目标模块# --set-mark 1为数据包打上标记1可用于后续策略路由ip route add ...二、nftables1、语法格式格式nft add rule 表名 链名 条件1 条件2 ... 策略 常用命令 nftaddtablefamily表名# 创建表如 ip、inet、arpnftaddchain表名链名{type表类型hook挂钩(链类型)priority优先级\;}# 创建链nft list ruleset# 查看所有规则nft delete rule表名链名handle编号# 删除规则nft flush ruleset# 清空所有规则但保留表和链的定义仅删除规则条目条件规则 ip saddr IP # 判断来源IP地址 ip daddr IP # 判断目标IP地址 ip protocol 协议 # 判断传输协议如 tcp、udp tcp sport 端口 # 判断来源端口 tcp dport 端口 # 判断目标端口 iifname 接口 # 判断入站接口 oifname 接口 # 判断出站接口 ... 策略动作 accept# 放行drop# 丢弃reject# 拒绝snat toIP# 源地址修改dnat toIP:端口# 目标地址修改2、filter表阻止特定IP访问本机阻止192.168.1.100访问本机 nft add table ip filter nft add chain ip filter input { type filter hook input priority 0 \; } nft add rule ip filter input ip saddr 192.168.1.100 drop # 注释 # add table ip filter创建名为 filter 的表适用于IPv4 # add chain ...在 filter 表中创建 input 链挂钩到 input 阶段 # add rule ...追加规则匹配源IP为192.168.1.100并丢弃 禁止本机访问特定网站阻止本机访问外部IP为8.8.8.8的流量 nftaddtableipfilter nftaddchainipfilter output{typefilter hook output priority0\;}nftaddruleipfilter outputipdaddr8.8.8.8ipprotocol udp udp dport53drop# 注释# add chain ...创建 output 链挂钩到 output 阶段# add rule ...匹配目标IP为8.8.8.8并丢弃允许SSH访问允许外部访问本机SSH服务 nft add table ip filter nft add chain ip filter input { type filter hook input priority 0 \; } nft add rule ip filter input ip protocol tcp tcp dport 22 accept # 注释 # add chain ...创建 input 链 # add rule ...匹配TCP 22端口允许通过 允许内网访问外网允许192.168.1.0网段的流量转发到外部 nftaddtableipfilter nftaddchainipfilter forward{typefilter hook forward priority0\;}nftaddruleipfilter forwardipsaddr192.168.1.0/24 accept# 注释# add chain ...创建 forward 链# add rule ...匹配192.168.1.0/24网段允许转发限制本机ping外部禁止本机发送ICMP请求ping nftaddtableipfilter nftaddchainipfilter output{typefilter hook output priority0\;}nftaddruleipfilter outputipprotocol icmp icmptypeecho-request drop# 注释# add chain ...创建 output 链# add rule ...匹配ICMP echo-request丢弃数据包3、nat表实现内网IP伪装SNAT将内网流量伪装为本机外网IP nft add table ip nat nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; } nft add rule ip nat postrouting ip saddr 192.168.1.0/24 oifname eth0 masquerade # 注释 # add table ip nat创建 nat 表 # add chain ...创建 postrouting 链挂钩到 postrouting 阶段 # add rule ...匹配192.168.1.0/24网段流量从 eth0 接口发出时伪装地址 端口转发DNAT将外部访问本机80端口的流量转发到内网192.168.1.10:8080 nftaddtableipnat nftaddchainipnat prerouting{typenat hook prerouting priority0\;}nftaddruleipnat preroutingipprotocol tcp tcp dport80dnat to192.168.1.10:8080# 注释# add chain ...创建 prerouting 链挂钩到 prerouting 阶段# add rule ...匹配TCP 80端口流量转发到192.168.1.10:8080重定向外部HTTP流量将外部访问80端口的流量重定向到8080端口 nft add table ip nat nft add chain ip nat prerouting { type nat hook prerouting priority 0 \; } nft add rule ip nat prerouting ip protocol tcp tcp dport 80 redirect to :8080 # 注释 # add chain ...创建 prerouting 链 # add rule ...匹配TCP 80端口流量重定向到本机8080端口 伪装内网流量将内网流量伪装为本机IP nftaddtableipnat nftaddchainipnat postrouting{typenat hook postrouting priority100\;}nftaddruleipnat postroutingipsaddr192.168.1.0/24 masquerade# 注释# add chain ...创建 postrouting 链# add rule ...匹配192.168.1.0/24网段伪装为本机IP4、mangle表修改数据包的TTL值将本机发出数据包的TTL设置为100 nft add table ip mangle nft add chain ip mangle output { type filter hook output priority -150 \; } nft add rule ip mangle output ip ttl set 100 # 注释 # add chain ...创建 output 链优先级-150mangle 表默认优先级 # add rule ...将发出数据包的TTL设置为100 标记数据包以供路由使用为特定流量打标记 nftaddtableipmangle nftaddchainipmangle prerouting{typefilter hook prerouting priority -150\;}nftaddruleipmangle preroutingipsaddr192.168.1.100 meta markset1# 注释# add chain ...创建 prerouting 链# add rule ...匹配源IP为192.168.1.100打上标记15、raw表跳过特定流量的连接跟踪对来自192.168.1.100的数据包跳过连接跟踪 nft add table ip raw nft add chain ip raw prerouting { type filter hook prerouting priority -300 \; } nft add rule ip raw prerouting ip saddr 192.168.1.100 ct state untracked # 注释 # add chain ...创建 prerouting 链优先级-300raw 表默认优先级 # add rule ...匹配192.168.1.100设置为不跟踪状态 跳过本机发出流量的跟踪对本机发出的UDP流量跳过连接跟踪 nftaddtableipraw nftaddchainipraw output{typefilter hook output priority -300\;}nftaddruleipraw outputipprotocol udp ct state untracked# 注释# add chain ...创建 output 链# add rule ...匹配UDP流量设置为不跟踪状态三、firewalld1、简介Firewalld 是 CentOS 7 及之后版本中引入的动态防火墙管理工具基于 Linux 内核的 Netfilter 框架。它通过高层次的抽象如区域和服务的概念简化了防火墙规则的管理适合动态环境下的使用。Firewalld 默认使用 nftables 作为后端自 RHEL 8 开始但在早期版本如 RHEL 7中使用 iptables。 #1. 核心组件 - 区域Zones - 定义网络环境的信任级别如 public、internal、trusted 等。 - 每个区域包含一组规则用于处理特定来源的流量。 - 数据包根据来源接口或 IP 地址被分配到对应区域。 - 服务Services - 预定义的规则模板如 ssh、http封装了端口和协议。 - 用户可自定义服务简化规则配置。 - 规则Rules - 包括直接规则Direct Rules和富规则Rich Rules。 - 直接规则接近 iptables/nftables 的底层语法富规则支持更复杂的逻辑如时间限制。 - 后端Backend - Firewalld 通过后端与内核交互默认支持 nftables也可切换为 iptables。 #2. 数据包处理流程 1. 数据包进入系统。 2. 根据接口或源地址匹配到某个区域如 public。 3. 在该区域内应用服务规则、端口规则或富规则。 4. 处理结果决定数据包的命运接受、丢弃等。 #3. 运行模式 - 运行时模式Runtime临时生效重启后丢失。 - 永久模式Permanent保存到配置文件重启后生效。2、设置区域查看当前活跃的区域firewall-cmd --get-zones# 显示所有区域firewall-cmd --get-active-zones# 显示已激活区域# 注释# 显示当前网络接口绑定的区域例如# public# interfaces: eth0# 适用场景检查系统当前的区域配置。将接口绑定到指定区域firewall-cmd --zoneinternal --add-interfaceeth0 --permanent firewall-cmd --reload firewall-cmd --get-active-zones# 注释# --add-interface将 eth0 接口绑定到 internal 区域。# --permanent永久生效重启后保留。# 适用场景为特定网络接口分配信任级别。创建自定义区域firewall-cmd --new-zonemyzone --permanent firewall-cmd --reload firewall-cmd --get-zones# 注释# --new-zone创建名为 myzone 的新区域。# --reload重新加载配置使新区域生效。# 适用场景为特定网络环境定义专用区域。3、管理服务允许区域内的 SSH 服务** firewall-cmd --zonepublic --add-servicessh --permanent firewall-cmd --reload # 验证 firewall-cmd --zonepublic --list-services firewall-cmd --zonepublic --list-all # 注释 # --add-service允许 public 区域内的 SSH 服务默认 TCP 22 端口。 # 运行时模式临时生效--permanent 保存配置。 # 适用场景快速开放常用服务端口。 移除区域中的 HTTP 服务** firewall-cmd --zonepublic --remove-servicehttp --permanent firewall-cmd --reload# 注释# --remove-service禁止 public 区域内的 HTTP 服务默认 TCP 80 端口。# 适用场景临时或永久关闭某个服务。自定义服务并应用** firewall-cmd --new-servicemyservice --permanent firewall-cmd --servicemyservice --add-port5000/tcp --permanent firewall-cmd --zonepublic --add-servicemyservice --permanent firewall-cmd --reload # 验证 firewall-cmd --servicemyservice --get-ports --permanent firewall-cmd --zonepublic --list-services firewall-cmd --zonepublic --list-all # 注释 # --new-service创建名为 myservice 的新服务。 # --add-port为服务添加 TCP 5000 端口。 # 应用到 public 区域并重载配置。 # 适用场景为非标准应用定义专用服务。 允许 ICMPPing请求** firewall-cmd --zonepublic --add-icmp-blockecho-request --permanent firewall-cmd --reload firewall-cmd --zonepublic --remove-icmp-blockecho-request --permanent# 验证firewall-cmd --zonepublic --query-icmp-blockecho-request firewall-cmd --reload firewall-cmd --zonepublic --list-all# 注释# --add-icmp-block --remove-icmp-block移除 ICMP echo-request 的阻止允许 Ping。# 适用场景调试网络连通性。4、管理端口开放特定端口** firewall-cmd --zonepublic --add-port8080/tcp --permanent firewall-cmd --reload # 验证 firewall-cmd --zonepublic --list-ports firewall-cmd --zonepublic --list-all # 注释 # --add-port允许 public 区域内的 TCP 8080 端口。 # 适用场景开放自定义应用端口如 Web 服务器。 关闭特定端口** firewall-cmd --zonepublic --remove-port8080/tcp --permanent firewall-cmd --reload# 注释# --remove-port禁止 public 区域内的 TCP 8080 端口。# 适用场景临时或永久关闭不再需要的端口。5、富规则限制特定 IP 访问 SSH** firewall-cmd --zonepublic --add-rich-rulerulefamilyipv4sourceaddress192.168.1.100servicenamesshdrop --permanent firewall-cmd --reload # 验证 firewall-cmd --zonepublic --list-rich-rules firewall-cmd --zonepublic --list-all # 注释 # --add-rich-rule丢弃来自 192.168.1.100 的 SSH 请求。 # familyipv4 指定 IPv4service 指定服务drop 为动作。 # 适用场景基于源 IP 进行访问控制。 放行特定IP访问http firewall-cmd --zonepublic --add-rich-rulerulefamilyipv4sourceaddress192.168.1.0/24servicenamehttpaccept --permanent firewall-cmd --reload 阻止特定 IP 访问所有服务** firewall-cmd --zonepublic --add-rich-rulerule familyipv4 source address192.168.1.200 drop--permanent firewall-cmd --reload# 注释# 丢弃来自 192.168.1.200 的所有流量。# 适用场景适用于遭受DDoS攻击时的临时封禁6、nat功能实现 IP 伪装MASQUERADE** firewall-cmd --zonepublic --add-masquerade --permanent firewall-cmd --reload # 验证 firewall-cmd --zonepublic --query-masquerade # 仅查询masquerade的开启状态 firewall-cmd --zonepublic --list-all # 注释 # --add-masquerade启用 external 区域的 IP 伪装类似 iptables 的 MASQUERADE。 # 适用场景内网通过外网接口访问外部网络。 端口转发DNAT** firewall-cmd --zonepublic --add-forward-portport80:prototcp:toport8080:toaddr192.168.1.10 --permanent firewall-cmd --reload# 验证firewall-cmd --zonepublic --list-forward-ports# 注释# --add-forward-port将 public 区域的 TCP 80 端口转发到 192.168.1.10 的 8080 端口。# 适用场景将外部请求转发到内网服务器。7、查看保存firewall-cmd --zonepublic --list-all firewall-cmd --runtime-to-permanent# 注释# --list-all查看 public 区域的当前配置服务、端口等。# --runtime-to-permanent将运行时配置保存为永久配置。# 适用场景确认规则并持久化配置。8、自动放行端口脚本[roots1 ~]# vim firewalld.sh#!/bin/bashb$(ss -ntulp|wc-l)whiletruedoc$(ss -ntulp|wc-l)if[$c-ne$b];thenforiin$(ss -ntulp|awk{print $5}|awk-F:NR1{print $NF})doa$(ss -ntulp|grep$i|awkNR1{print $1})if[$atcp];thenfirewall-cmd --zonepublic --add-port$i/tcp --permanent/dev/nullelsefirewall-cmd --zonepublic --add-port$i/udp --permanent/dev/nullfidoneelseexitfidoneb( s s − n t u l p ∣ w c − l ) w h i l e t r u e d o c (ss -ntulp | wc -l) while true do c(ss−ntulp∣wc−l)whiletruedoc(ss -ntulp | wc -l)if [ $c -ne $b ];thenfor i in $(ss -ntulp | awk ‘{print $5}’ | awk -F: NR1{printKaTeX parse error: Expected EOF, got } at position 3: NF}̲) do a…(ss -ntulp | grep $i | awk ‘NR1{print $1}’)if [a t c p ] ; t h e n f i r e w a l l − c m d − − z o n e p u b l i c − − a d d − p o r t a tcp ];then firewall-cmd --zonepublic --add-portatcp];thenfirewall−cmd−−zonepublic−−add−porti/tcp --permanent /dev/nullelsefirewall-cmd --zonepublic --add-port$i/udp --permanent /dev/nullfidoneelseexitfidone