day13 iptables防火墙
day13 iptables防火墙
一、防火墙的概述
1、什么是防火墙
防止恶意流量访问的软件就叫做防火墙。
2、防火墙的种类
软件防火墙:firewalld、iptables
硬件防火墙:F5
firewalld和iptables的区别?
firewalld更简单
firewalld底层操作的还是iptables。
iptables更底层
ptables底层操作是系统内核流量的走向。
四表五链
系统安全框架。
二、Iptables基本介绍
1、什么是iptables
iptables:防火墙软件
2、iptables防火墙应用场景
1.主机安全
2.内部共享上网
3.端口或IP转发
3、iptables防火墙注意事项
1.匹配规则是从上往下一次执行的
2.只要匹配上规则,就不会在往下执行
3.如果都没有匹配到规则,就执行默认规则
4.默认规则最后执行,默认允许所有
5.经常使用的规则往前放
4、什么是包过滤防火墙
数据包。
过滤数据包的防火墙就是包过滤防火墙
5、什么是表
filter: 负责做过滤功能:INPUT、OUTPUT、FORWARD
nat: 负责网络地址转换:PREROUTING、INPUT、OUTPUT、POSTROUTING
mangle: 负责修改数据包内容:PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD
raw: 负责数据包跟踪:PREROUTING、OUTPUT
6、什么是链
1) PREROUTING: 主机外报文进入位置,允许的表mangle, nat(目标地址转换,把本机地址转换为真正
的目标机地址,通常指响应报文)
2) INPUT:报文进入本机用户空间位置,允许的表filter, mangle
3) OUTPUT:报文从本机用户空间出去的位置,允许filter, mangle, nat
4) FORWARD:报文经过路由并且发觉不是本机决定转发但还不知道从哪个网卡出去,允许filter, mangle
5) POSTROUTING:报文经过路由被转发出去,允许mangle,nat(源地址转换,把原始地址转换为转发主
机出口网卡地址)


总结:表的作用各有不同,链的位置各有不同,表中的链就是将表的功能放到链的具体位置去执行。
7、filter表
#过滤数据包,主要作用就是阻止和允许访问
1.INPUT链:过滤流入主机的数据包
2.OUTPUT链:过滤流出主机的数据包
3.FORWARD链:负责转发流经主机的数据包
8、Nat表
#用于网络地址转换,主要作用就是端口转发和ip转发
1.OUTPUT链:过滤流出主机的数据包
2.PREROUTING链:数据包到达防火墙时进行判断,改写数据包的地址或或端口(进)
3.POSTROUTING链:数据包到达防火墙时进行判断,改写数据包的地址或或端口(出)
9、什么是规则
防火墙规则右称之为防火墙策略,主要是描述执行什么防火墙功能的记录。
10、防火墙和链之间的关系
# 防火墙表与链之间的关系
filter: 负责做过滤功能:INPUT、OUTPUT、FORWARD
nat: 负责网络地址转换:PREROUTING、INPUT、OUTPUT、POSTROUTING
mangle: 负责修改数据包内容:PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD
raw: 负责数据包跟踪:PREROUTING、OUTPUT
链的流程:
[root@web01 ~]# iptables -vnL -t filter
filter: INPUT ------------------> FORWARD ---------------> OUTPUT
[root@web01 ~]# iptables -vnL -t nat
nat: PREROUTING ----------> INPUT ----------> OUTPUT -----------> POSTROUTING
[root@web01 ~]# iptables -vnL -t mangle
mangle: PREROUTING ---------> INPUT --------> FORWARD -------> OUTPUT --------> POSTROUTING
[root@web01 ~]# iptables -vnL -t raw
raw : PREROUTING ---------> OUTPUT
三、防火墙的增删改查(常用参数)
1、安装iptables
[root@web01 ~]# yum install iptables-services -y
2、启动iptables
[root@web01 ~]# systemctl restart iptables.service
3、常用参数
-t: 指定操作的表
-A, --append 追加一条规则到链中
-I, --insert 插入一条规则,插入到顶部
-D, --delete 删除链中的规则
-R, --replace 修改
-S, --list-rules 列出所有的规则
-Z, --zero 清空计数器( 包数量 、包大小)
-N, --new-chain 创建一个自定义 链
-X, --delete-chain 删除一个自定义链
-P, --policy 指定链的默认策略
--line-number : 防火墙规则的编号
-p : 指定对应的管理流量类型 # -p协议
TCP
UDP
ICMP : ping
ALL : 所有协议
-j : 指定动作,转发模式
ACCEPT : 允许通过
DROP : 不允许通过
-s 源地址
-d 目标地址
--sport 源端口
--dport 目标端口
-i : 进来的网卡
-o : 出去的网卡
-m : 指定模块
-j : 转发模式
# 动作
ACCEPT 将数据包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链。
REJECT 拦阻该数据包,并传送数据包通知对方。
DROP 丢弃包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
REDIRECT 将包重新导向到另一个端口,进行完此处理动作后,将会继续比对其它规则。
4、增删改查之查询
# 查
格式:iptables -t 表名 选项 链名称 条件 动作
参数:
-L, --list 列出当前的规则
-n, 禁止反向解析
-v, 显示数据包详情
-t: 指定操作的表(默认的表是:filter)
--line-number : 防火墙规则的编号
案例:
[root@web01 ~]# iptables -L
[root@web01 ~]# iptables -nL # 查看防火墙策略
[root@web01 ~]# iptables -vnL -t nat # 查看指定的表
[root@web01 ~]# iptables -vnL --line-number # 查出编号
5、增删改查之增加
# 增加
格式:iptables -t 表名 选项 链名称 条件 动作
增加参数:
-A, --append 追加一条规则到链中 # 追加:在后面增加
-I, --insert 插入一条规则,插入到顶部 # 插入:插入到前面
-p : 指定对应的管理流量类型 # -p协议
TCP
UDP
ICMP : ping
ALL : 所有协议
-j : 指定动作,转发模式
ACCEPT : 允许通过
DROP : 不允许通过
# 注意:链的匹配规则是从上到下的,一旦匹配上了就无法在往下进行匹配了。
# 追加
案例1:不允许访问本机
[root@web01 ~]# iptables -t filter -A INPUT -p ALL -j DROP # 使用-A参数
案例2:要求172.16.1.0可以访问web01,其他的请求全部拒绝
[root@web01 ~]# iptables -t filter -A INPUT -p ALL -s 172.16.1.0/20 -j ACCEPT
[root@web01 ~]# iptables -t filter -A INPUT -p ALL -j DROP
# 插入
案例3:要求在案例2的基础上,允许192.168.15.1可以访问?
在cmd输入ipconfig命令查看主机ip:192.168.15.1
[root@web01 ~]# iptables -t filter -I INPUT -p ALL -s 192.168.15.1 -j ACCEPT
案例4:只允许自己ping通自己,根据上边的题。
[root@web01 ~]# iptables -t filter -I INPUT -p ICMP -s 192.168.15.7 -j ACCEPT
6、增删改查之删除
参数:
-F, --flush 清空
iptables -F : 清除所有的防火墙规则
格式:
iptables -t [表] -D [链] [规则编号]
--line-number : 防火墙规则的编号
-D, --delete 删除链中的规则
[root@web01 ~]# iptables -vnL --line-numberr # 查询编号
[root@web01 ~]# iptables -t filter -D INPUT 1 # 指定编号删除规则
7、增删改查之修改
-R, --replace 修改
[root@web01 ~]# iptables -t filter -R INPUT 1 -p icmp -j DROP # 修改
8、例题
1、要求只有172.16.0.0网段的能够登录web01
[root@web01 ~]# iptables -t filter -I INPUT -p ALL -s 172.16.0.0/20 -j ACCEPT
[root@web01 ~]# iptables -t filter -A INPUT -p ALL -j DROP
2、访问web01的8080端口转发至80端口
[root@web01 ~]# iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
四、防火墙规则永久生效
[root@web01 ~]# service iptables save
五、iptables常用端口
multiport:连续匹配多个窗口
案例1:要求192.168.15.0/24网段的所有IP只能够访问22,80,443端口,其他的拒绝。
[root@web01 ~]# iptables -t filter -A INPUT -p tcp -s 192.168.15.0/24 -m multiport --dports 22,80,443 -j ACCEPT
[root@web01 ~]# iptables -t filter -A INPUT -p tcp -j DROP
案例2:要求192.168.15.0/24网段的所有IP只能够访问70-90端口,其他拒绝
[root@web01 ~]# iptables -t filter -A INPUT -p tcp -s 192.168.15.0/24 -m multiport --dports 70:90 -j ACCEPT
[root@web01 ~]# iptables -t filter -A INPUT -p tcp -j DROP
iprange模块:连续匹配多个IP
解释:连续匹配多个IP
参数:
--src-range from[-to]: 源地址范围
--dst-range from[-to] 目标地址范围
案例1:要求只有192.168.15.7到192.168.15.66能够通过22端口登录,其他的拒绝
iptables -t filter -A INPUT -p tcp -m iprange --src-range 192.168.15.7-192.168.15.66 -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP
string模块:按照内容进行匹配
解释:按照内容进行匹配
参数:
--string pattern # 指定要匹配的字符串
--algo {bm|kmp} # 配的查询算法
案例1:要求访问的内容中包含HelloWorld的内容不允许访问,其他的可以。
iptables -t filter -A OUTPUT -p tcp -m string --string "hello" --algo kmp -j DROP
time模块(UTC):根据时间来控制访问(UTC)
解释:根据时间来控制访问(UTC)# 比正常时间少8小时
参数:
--timestart hh:mm[:ss] # 开始时间
--timestop hh:mm[:ss] # 结束时间
--monthdays day[,day...] # 指定一个月的某一天
--weekdays day[,day...] # 指定周 还是 周天
案例1:要求上午的 08:00 到 上午的 10:22 不允许访问,其他时间可以。
iptables -t filter -A INPUT -p tcp -m time --timestart 00:00 --timestop 02:22 -j DROP
icmp模块:控制icmp协议
解释:控制icmp协议
参数:
--icmp-type {type[/code]|typename}
echo-request (8) 请求(我可以ping别人,别人休想ping我)
echo-reply (0) 回应(别人可以ping我,我休想ping别人)
案例1:禁止别人ping我,但我可以ping别人
iptables -t filter -I INPUT -p icmp --icmp-type "echo-request" -j DROP
connlimit模块:控制并发数
# 控制并发数
参数:
--connlimit-upto n # 如果现有连接数小于或等于 n 则 匹配
--connlimit-above n # 如果现有连接数大于n 则匹配
ACCEPT 将数据包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链。
REJECT 拦阻该数据包,并传送数据包通知对方。
DROP 丢弃包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
REDIRECT 将包重新导向到另一个端口,进行完此处理动作后,将会继续比对其它规则。
案例1:要求登录192.168.15.5的窗口最多有两个
iptables -t filter -A INPUT -p ALL --dport 22 -m connlimit --connlimit-above 2 -j REJECT
limit模块:限制速率
# 针对 报文速率 进行限制。 秒、分钟、小时、天。
--limit rate[/second|/minute|/hour|/day] # 报文数量
--limit-burst number # 报文数量(默认:5)
网速 * 1000 / 1500 = 数据包数量
2.允许10个数据报文快速通过,超过的数据报文 1/m
iptables -t filter -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT
iptables -t filter -A INPUT -p icmp -j DROP
3.限速:限制传输的带宽不可以超过500k(500 * 1000 / 1500 = 333 包)
案例1:要求每秒只能够传输500k大小数据
iptables -t filter -A INPUT -p tcp -m limit --limit 333/s -j ACCEPT
iptables -t filter -A INPUT -p tcp -j DROP
防火墙的案例
4.对所有的地址开放本机的tcp(80、22、8080-9090)端口的访问
iptables -t filter -A INPUT -p tcp -m multiport --dports 80,22,8080:9090 -j ACCEPT
5.允许对所有的地址开放本机的基于ICMP协议的数据包访问
iptables -t filter -A INPUT -p icmp - j ACCEPT
6.其他未被允许的端口禁止访问
iptables -t filter -A INPUT -p tcp -j DROP
day13 iptables防火墙的更多相关文章
- CentOS系统配置 iptables防火墙
阿里云CentOS系统配置iptables防火墙 虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FO ...
- 关闭SELinux和iptables防火墙
1.关闭SELinux: 编辑SELinux配置文件: [root@Redis selinux]# vim /etc/selinux/config 修改SELINUX配置项为disable SELIN ...
- CentOS 7.0,启用iptables防火墙
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...
- 编译内核实现iptables防火墙layer7应用层过滤 (三)
在前面的两篇文章中我们主要讲解了Linux防火墙iptables的原理及配置规则,想博友们也都知道iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以 ...
- [CentOs7]iptables防火墙安装与设置
摘要 CentOS 7.0默认使用的是firewall作为防火墙,如果改为iptables防火墙,如何操作? 关闭firewall: systemctl stop firewalld.service ...
- iptables防火墙作为基本需求的配置
企业中使用iptables防火墙:(一般不要在命令中输入规则) # Firewall configuration written by system-config-firewall# Manual c ...
- [moka同学摘录]iptables防火墙规则的添加、删除、修改、保存
文章来源:http://www.splaybow.com/post/iptables-rule-add-delete-modify-save.html 本文介绍iptables这个Linux下最强大的 ...
- linux 的iptables防火墙
.a文件就是*.o文件的集合, 是object文件的归档文件, 所以, 用nm -A ???.a看到的 symbolic符合名称都是 相应的, 包含的 .o文件.... linux 2.4内核中 ...
- 使用iptables防火墙限制web的访问PV
使用iptables防火墙限制web的访问PV #!/bin/bash while true;do awk '{print $1}' /tmp/test/access.log| grep -v &qu ...
随机推荐
- Linux修改bashrc
.bashrc是一个隐藏的文件,要打开并修改该文件需要: (1) 查看:ll -a 找到文件 .bashrc: (2) 打开:vi .bashrc (或者 vim .bashrc) 打开文件: (3) ...
- yum Multilib version problems
这两天在更新CentOS7系统时,出现了Multilib version problems错误,执行命令: # yum update 出现了的错误信息: .... ---> Package li ...
- seq2seq之双向解码
目录 背景介绍 双向解码 基本思路 数学描述 模型实现 训练方案 双向束搜索 代码参考 思考分析 文章小结 在文章<玩转Keras之seq2seq自动生成标题>中我们已经基本探讨过seq2 ...
- NCF 中如何将Function升级到FunctionRender
简介 历史的车轮在不断的向前推进,NCF也在不断的迭代更新,只为成为更好的NCF 如果你之前没有用过NCF可以跳过这个文档,直接去下载最新的NCF源码进行实践. NCF仓库地址:https://git ...
- 在随着layui官网下架后 layui镜像站起来了
layui:https://gitee.com/lh_yun/layui 介绍 layui镜像站 「本站仅为 layui 文档保留的镜像站点,与官方无关」 源码地址 在线 pdf 1.主页 https ...
- FZU_DS_2019_SequenceList
单选题 2-1 数组A[1..5,1..6]每个元素占5个单元,将其按行优先次序存储在起始地址为1000的连续的内存单元中,则元素A[5,5]的地址为: A.1120 B.1125 ...
- Ubuntu安装BCC
Ubuntu安装BCC 教程 官方文档 安装 这里官方文档中首先讲到的是二进制文件的安装,直接通过apt进行安装 sudo apt-get install bpfcc-tools linux-head ...
- 树莓派4b安装Ubuntu20.04
树莓派4b安装Ubuntu20.04 下载Ubuntu20.04镜像 下载地址 安装Raspberry Pi Imager 下载地址 烧录系统 打开Raspberry Pi Imager,选择自己刚刚 ...
- selenium的 元素定位、元素信息、交互
selenium的元素定位? 元素定位:自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,点击.输入等等.操作这些元素前首先 要找到它们,WebDriver提供很多定位元素的方法 方法: 1.fin ...
- Dubbo的反序列化安全问题——kryo和fst
目录 0 前言 1 Dubbo的协议设计 2 Dubbo中的kryo序列化协议触发点 3 Dubbo中的fst序列化协议触发点 3.1 fst复现 3. 2 思路梳理 4 总结 0 前言 本篇是Dub ...