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 ...
随机推荐
- repo学习总结
转载:https://blog.csdn.net/salmon_zhang/article/details/79180075 1. repo简介 repo是Google开发的用于管理Android版本 ...
- Codeforces Round #741 (Div. 2)部分题题解
我果然还是太菜了,就写了两道题....真是水死了.... A The Miracle and the Sleeper 简化题意:给定\(l,r\),求\(a\)%\(b\)的最大值,其中\(r> ...
- 自定义容器tomcat应用
看不懂可以先去看:https://www.cnblogs.com/leihongnu/p/14506704.html 1.将103服务器上的mytomcat镜像打包为mytomcat.gz(花时间比较 ...
- CentOS服务器的网络配置与部署
1.系统安装与软件安装 1.1选择CentOs7.9release版本用作所研发系统部署服务器,官网以及所选择镜像为地址为:http://ftp.sjtu.edu.cn/centos/7.9.2009 ...
- LiteFlow 2.6.4版本发行注记,里程碑版本!
一 这个版本做的很折腾.期间几个issue推翻重做了好几次. 但我最终还是带来了LiteFlow 2.6.4这个重要版本. 虽然版本是小版本号升级,但是带来的更新可一点也不少.并完全向下兼容. 如果你 ...
- 大爽Python入门教程 0-2 什么是IDE?python选什么IDE好?
大爽Python入门公开课教案 点击查看教程总目录 一 感受IDE 什么是IDE? 在这里,我并不想直接给出一个回答, 因为这个回答对初学者来说,可能有些抽象. 我想先带大家感受下IDE. 1 比较不 ...
- Hadoop整体概述
目录 前言 core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml 一.HDFS HDFS的设计理念 HDFS的缺点 1.NameNode ...
- [atAGC052F]Tree Vertices XOR
结论 注意到如果$x$周围有偶数个1,对$x$操作显然不会改变$a_{x}$,因此不妨强制操作的点周围要有奇数个1,不难发现此时恰好会改变该点,即令$a_{x}=a_{x}\oplus 1$ 称$\{ ...
- [luogu6466]分散层叠算法
做法1 对于每一个询问,直接暴力在每一个序列中二分查询 时间复杂度为$o(nk)-o(k\log n)$ 做法2 将所有序列合并后排序,并对每一个元素预处理出每个序列中第一个大于等于其的元素(位置), ...
- 听说你想把对象存储当 HDFS 用,我们这里有个方案...
传统的大数据集群往往采用本地中心化的计算和存储集群.比如在谷歌早期的[三驾马车]中,使用 GFS 进行海量网页数据存储,用 BigTable 作为数据库并为上层提供各种数据发现的能力,同时用 MapR ...