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(源地址转换,把原始地址转换为转发主
机出口网卡地址)
![](C:\Users\Lenovo\Pictures\Camera Roll\ipatables.png)
![](C:\Users\Lenovo\Pictures\Camera Roll\iptables链的流程.png)
总结:表的作用各有不同,链的位置各有不同,表中的链就是将表的功能放到链的具体位置去执行。
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 ...
随机推荐
- cm2 逆向分析
目录 cm2 逆向分析 前言 查壳 逆向分析 encrypt函数 POC代码 cm2 逆向分析 前言 这是逆向实战之CTF比赛篇的第3篇,在这里我就不再讲的特别小白了,有些简单操作可能会略过. 查壳 ...
- spring-cloud-square源码速读(retrofit + okhttp篇)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos spring-cloud-square系列文章 五分钟 ...
- SpringBoot2.x请求注解简单介绍(4)
1.新建项目,项目中实战讲解注解作用 2.pom.xml依赖配置 <properties> <project.build.sourceEncoding>UTF-8</pr ...
- SpringCould | Nacos与Feign
服务注册Nacos 介绍 概念 一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos: Dynamic Naming and Configuration Service Nac ...
- python nose测试框架全面介绍十四 --- nose中的只跑上次失败用例
玩过一段时间nose的朋友,一定会发现nose中有一个--failed的功能,官方解释为: --failed Run the tests that failed in the last test ru ...
- k8s endpoints controller分析
k8s endpoints controller分析 endpoints controller简介 endpoints controller是kube-controller-manager组件中众多控 ...
- vue.js3 学习笔记 (一)——mixin 混入
vue 2 中采用选项式API.如:data.methods.watch.computed以及生命周期钩子函数等等. mixin 混入,提供了一种非常灵活的方式,来分发 vue 组件中的可复用功能,一 ...
- Python基础(range)
arr = [1,2,3,4,5,6,7,8,9] for i in range(0,len(arr),2): print(arr[i],end=' | ') brr = arr[0:len(arr) ...
- Django笔记&教程 总目录
本篇博客只有目录,正文内容在目录章节链接的博客里 除目录本身外,没有链接的章节,说明内容还没开始编辑 本项目笔记仍在不断创作中,还有些内容会根据自身所学不断更新完善 本项目主要为markdwon文档, ...
- Django笔记&教程 3-2 模板语法介绍
Django 自学笔记兼学习教程第3章第2节--模板语法介绍 点击查看教程总目录 参考:https://docs.djangoproject.com/en/2.2/topics/templates/# ...