怎么开自己的网站,铁岭做网站的,wordpress akria,北京手工活外发加工网目录
什么是防火墙
原理
代理
防火墙的工具
4表5列
五链#xff1a;控制流量的时机
四个表#xff1a;如何控制流量
编辑 iptables 软件
格式
选项
跳转
查iptables 的规则
添加规则 A I
删除规则 清空规则
替换规则 R
修改默认规则#xff08;默…目录
什么是防火墙
原理
代理
防火墙的工具
4表5列
五链控制流量的时机
四个表如何控制流量
编辑 iptables 软件
格式
选项
跳转
查iptables 的规则
添加规则 A I
删除规则 清空规则
替换规则 R
修改默认规则默认是允许通过 黑名单 P
设置黑名单
设置白名单 通用匹配 没有 指明模块
端口匹配: --sport 源端口、--dport 目的端口 ICMP
192.168.17.55 可以ping通192.168.17.25
192.168.17.25不能ping通192.168.17.55
编辑 iprange
mac地址
格式
实例 string 字符串 time模块 connlimit
stat
故障案例启用了iptables state模块 用户访问有问题 查看日志 table full drop pket 什么是防火墙
防火墙是一种技术它通过有机结合各类用于安全管理与筛选的软件和硬件设备帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障以保护用户资料与信息安全性。防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题其中处理措施包括隔离与保护同时可对计算机网络安全当中的各项操作实施记录与检测以确保计算机网络运行的安全性保障用户资料与信息的完整性为用户提供更好、更安全的计算机网络使用体验 waf web网页 防火墙 原理
数据包
mac头部 ip头部 协议/端口 七层协议http真实数据 校验位 收包 拆包 检查没问题 装包
收包 拆包 检查有问题 隔离或者丢弃 4层原理 传输协议 端口号 开发者
7层原理 控制真实数据 http dns 四层防火墙 通过 协议 端口号 ip mac 控制流量
七层防火墙 可以控制真实数据 代理
正向代理 fq 代理的是客户端
作用 绕开防火墙限制 加快访问速度
反向代理代理的是服务器
作用负载均衡 负担分担 防火墙的工具
iptable firewalld nft 防火墙工具
[rootlocalhost~] # iptables --version
iptables v1.4.21Linux防火墙是由Netfilter组件提供的Netfilter工作在内核空间集成在linux内核中
Netfilter 是Linux 2.4.x之后新一代的Linux防火墙机制是linux内核的一个子系统
netfilter 中的五个勾子函数
4表5列
表中有链链中有规则
网卡------内核netfilter
五链控制流量的时机
input: 进入本机的流量
output出本机的流量
forward转发数据包流量
pre-routing 路由选择前
post-routing: 路由选择后 流量发给你的 需要你转发的
选择合理的 链 做规则
表的作用是 存放链
链决定了在什么地方控制流量
表中链 链中有规则
四个表如何控制流量
raw表确定是否对该数据包进行状态跟踪 跟踪
mangle表为数据包设置标记优先级 标记
nat表修改数据包中的源目标ip地址或端口 地址转换
filter表确定是否放行该数据包过滤 是否允许流量通过 iptables 软件
格式
iptables -t 指定表 子命令 指定链 规则 -j 跳转 iptablestableconmmandchain parameter target-t filter -A -D -I -R -L -F -Z -N -X -P INPUT FORWARD OUTPUT PREROUTING POSTROUTING -p -s -d -i -o --sport --dport ...... ....... -j ACCECT -j DROP -j REJECT 选项
管理选项用法示例-A在指定链末尾追加一条 iptables -A INPUT 操作-I 在指定链中插入一条新的未指定序号默认作为第一条 iptables -I INPUT 操作 -P指定默认规则 iptables -P OUTPUT ACCEPT (操作)-D 删除 iptables -t nat -D INPUT 2操作 -p服务名称 icmp tcp-R修改替换某一条规则 iptables -t nat -R INPUT 操作-L查看 iptables -t nat -L 查看-n所有字段以数字形式显示 比如任意ip地址是0.0.0.0而不是anywhere比如显示协议端口号而不是服务名 iptables -L -niptables -nLiptables -vnL查看-v查看时显示更详细信息常跟 -L 一起使用 查看--line -number规则带编号 iptables -t nat -L -n --line-number/iptables -t nat -L --line-number-F 清除链中的所有规则 iptables -F (操作) -N新加自定义链-X清空自定义链的规则不影响其他链 iptables -X-Z清空链的计数器 匹配到的数据包的大小和总和iptables -Z-S看链的所有规则或者某个链的规则/某个具体规则后面跟编号 [rootlocalhost/] # iptables -A INPUT -s 192.168.17.25 -j REJECT 跳转
DROP 跳转 属于已读不回
REJECT 拒绝 有回应告诉你拒绝
ACCEPT 允许
LOG 日志
SNAT 源地址转换
DNAT 目的地址转换 查iptables 的规则
iptables -vnL [ -t 表名]
[rootlocalhost/] # iptables -vnL #[-t 表名] 不加默认filter 如果查看不是 filter 表需要指明表
iptables -vnL -t nat
[rootlocalhost/] # iptables -vnL -t nat给规则加上序号iptables -vnL --line-num
[rootlocalhost/] # iptables -vnL --line-num 添加规则 A I
iptables -A INPUT -s 192.168.17.0/24 -j ACCEPT 或DROP 或REJECT
A 在末尾追加
[rootlocalhost/] # iptables -A INPUT -s 192.168.17.25 -j REJECT #禁止192.168.17.25访问我 -I 需要指明序号 -I INPUT 1 在 INPUT 链的规则第一条前添加我就变成第一条了
iptables -I INPUT 2 -s 192.168.17.0/24 -j ACCEPT
iptables -I INPUT 1 -s 192.168.17.0 -j ACCEPT #将该条命令变为第一条优先执行 删除规则
iptables -D 链 规则序号 iptables -t filter -D INPUT 1 //删除 filter 表中 INPUT 链 中的第2条规则 清空规则
iptables [-t 表名] -F
[rootlocalhost/] # iptables -F #清空所有规则
[rootlocalhost/] # iptables -vnL --line-num #查看规则
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)
num pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 4 packets, 424 bytes)
num pkts bytes target prot opt in out source destination 替换规则 R
iptables -R INPUT 1 -s 192.168.17.1 -j ACCEPT
[rootlocalhost/] # iptables -R INPUT 1 -s 192.168.17.25 -j REJECT 修改默认规则默认是允许通过 黑名单 P
iptables -P INPUT DROP #拒绝所有连接iptables -P INPUT ACCEPT #允许所有连接
设置黑名单
[rootlocalhost~] # iptables -t filter -A INPUT ! -s 192.168.17.25 -j ACCEPT 设置白名单
iptables -P INPUT DROP #拒绝所有连接
iptables -A INPUT -s 192.168.91.1 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT 保存防火墙规则
[rootlocalhost/etc/rc.d] # iptables-save iptables_rules #保存规则
[rootlocalhost/etc/rc.d] # iptables-restore iptables_rules #重新导入规则
iptables-save 保存规则的文件 //保存规则
iptables-restore 保存的规则文件 //重新导入规则
全局配置
[rootlocalhost/etc/rc.d] # chmod x rc.local #写完需要加x赋权 [rootlocalhost/etc/rc.d] # cd /etc/rc.d
[rootlocalhost/etc/rc.d] # ls
init.d rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc.local自定义链
类似函数 将类型
iptables -N web 自定义链
iptables -E web WEB 重命名
创建完之后将规则加入到一个ip上
删除自定义链
先清空自定义链 然后 iptables -x 自定义链名 通用匹配 没有 指明模块
模式匹配 -m 模块名 指定模块
不需要 -m时 -p的模块与-m重复 iptables 在使用-p选项指明了特定的协议时无需再用-m选项指明扩展模块的扩展机制不需要手动加载扩展模块
端口匹配: --sport 源端口、--dport 目的端口
[!] --source-port, --sport port[:port]匹配报文源端口,可为端口连续范围
[!] --destination-port,--dport port[:port]匹配报文目标端口,可为连续范围
[!] --tcp-flags mask compmask 需检查的标志位列表用,分隔 , 例如 SYN,ACK,FIN,RSTcomp 在mask列表中必须为1的标志位列表无指定则必须为0用,分隔tcp协议的扩展选项--tcp-flags SYN,ACK,FIN,RST SYN 表示要检查的标志位为SYN,ACK,FIN,RST四个其中SYN必须为1余下的必须为0第一次握手
--tcp-flags SYN,ACK,FIN,RST SYN,ACK 第二次握手
iptables -A INPUT -p tcp --sport 10000:30000 -j REJEC #10000到30000 全部被拒 ICMP
192.168.17.55 可以ping通192.168.17.25
192.168.17.25不能ping通192.168.17.55
类型匹配: --icmp-type ICMP类型
#可以是字符串、数字代码
Echo- Request (代码为8)表示请求
Echo- Reply (代码为0)表示回复 Dest ination-Unreachable (代码为3)表示目标不可达
[rootlocalhost~] # iptables -A INPUT -p icmp --icmp-type 8 -j DROP
[rootlocalhost~] # iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT iprange
指明连续的但一般不是整个网络ip地址范围
[!] --src-range from[-to] 源IP地址范围 [!] --dst-range from[-to] 目标IP地址范围
iptables -A INPUT -m iprange --src-range 192.168.17.25-192.168.91.28 -j REJECT
# 指定 源地址为192.168.91.25-192.168.17.28 3个地址无法访问 当前主机
mac地址
mac 模块可以指明源MAC地址,适用于PREROUTING, FORWARDINPUT chains
格式
-m mac [!] --mac-source XX:XX:XX:XX:XX:XX
实例
ip -a #查看mac地址
iptables -A INPUT -m mac --mac-source 00:0c:29:00:e6:dd -j REJECT
#指定mac不可访问 string 字符串
[rootlocalhost ~]#echo www.bilibili.com /var/www/html/index.html
#自建网页
[rootlocalhost ~]#echo www.baidu.com /var/www/html/index1.html
#自建网页[rootlocalhost ~]#iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string bilibili -j REJECT
#注意 请求的包不带字符回复的包带字符 所以要 output time模块
根据将报文到达的时间与指定的时间范围进行匹配
[rootlocalhost ~]#date
#中国标准时间
2022年 08月 14日 星期日 22:26:07 CST
[rootlocalhost ~]#date -u
#美国标准时间
2022年 08月 14日 星期日 14:26:09 UTC[rootlocalhost ~]#iptables -A INPUT -m time --timestart 14:00 --time 16:00 -j REJECT
#从14点到16点禁止访问本机
iptables v1.4.21: unknown option --time
Try iptables -h or iptables --help for more information.
[rootlocalhost ~]#rpm -ql iptables|grep time
/usr/lib64/xtables/libxt_time.so connlimit
根据每客户端IP做并发连接数数量匹配
可防止Dos(Denial of Service拒绝服务)攻击
--connlimit-upto N #连接的数量小于等于N时匹配
--connlimit-above N #连接的数量大于N时匹配
模拟攻击
[rootlocalhost3 ~]# gcc flood_connect.c -o flood
#编译安装 黑客文件
[rootlocalhost3 ~]# ./flood 192.168.17.55
#运行黑客脚本[rootlocalhost 7-1]#ss [rootlocalhost1 ~]#iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 2 -j REJECT
stat
故障案例启用了iptables state模块 用户访问有问题 查看日志 table full drop pket
后来研究发现 有一个内核选项的默认值 过低 netfilter/nf_conntrack_max 默认65536、
把这个值调大一点 ipatables -A INPUT -m state --state NEW #新发起 -j REJECT
ipatables -A INPUT -m state --state ESTABLISHED #已经连接 -j ACCEPT新用户不可以访问 就用老的可以访问