防火墙 iptables的使用

目录

什么是防火墙

原理

代理

防火墙的工具

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  防火墙工具

[root@localhost~] # iptables --version
iptables v1.4.21

Linux防火墙是由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 -n,iptables -nL,iptables -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看链的所有规则或者某个链的规则/某个具体规则后面跟编号

[root@localhost/] # iptables -A INPUT  -s 192.168.17.25 -j REJECT 

跳转

DROP 跳转    (属于已读不回)

REJECT  拒绝     (有回应告诉你,拒绝)

ACCEPT   允许

LOG    日志

SNAT   源地址转换

DNAT   目的地址转换

查iptables  的规则

iptables -vnL [ -t 表名]

[root@localhost/] # iptables -vnL  #[-t 表名]   不加默认filter

如果查看不是  filter 表需要指明表

iptables  -vnL  -t  nat

[root@localhost/] # iptables -vnL -t nat

给规则加上序号:iptables -vnL  --line-num

[root@localhost/] # iptables -vnL --line-num

添加规则   A  I

iptables -A    INPUT   -s 192.168.17.0/24  -j  ACCEPT 或DROP 或REJECT

A 在末尾追加

[root@localhost/] # 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

[root@localhost/] # iptables -F  #清空所有规则
[root@localhost/] # 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

[root@localhost/] # iptables -R INPUT 1 -s 192.168.17.25 -j REJECT

修改默认规则(默认是允许通过 黑名单) P

iptables  -P  INPUT   DROP  #拒绝所有连接iptables  -P  INPUT   ACCEPT  #允许所有连接

设置黑名单

[root@localhost~] # 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 

保存防火墙规则

[root@localhost/etc/rc.d] # iptables-save > iptables_rules  #保存规则
[root@localhost/etc/rc.d] # iptables-restore  < iptables_rules   #重新导入规则

iptables-save  > 保存规则的文件   //保存规则

iptables-restore < 保存的规则文件  //重新导入规则

全局配置

[root@localhost/etc/rc.d] # chmod +x rc.local #写完需要加x赋权

[root@localhost/etc/rc.d] # cd /etc/rc.d
[root@localhost/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)表示目标不可达

[root@localhost~] # iptables -A INPUT -p icmp --icmp-type 8 -j DROP
[root@localhost~] # 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, FORWARD,INPUT 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 字符串

[root@localhost ~]#echo "www.bilibili.com" > /var/www/html/index.html
#自建网页
[root@localhost ~]#echo "www.baidu.com" > /var/www/html/index1.html
#自建网页[root@localhost ~]#iptables -A OUTPUT -p tcp --sport 80 -m string --algo bm --from 62 --string "bilibili" -j REJECT 
#注意  请求的包不带字符,回复的包带字符  所以要 output

time模块

根据将报文到达的时间与指定的时间范围进行匹配

[root@localhost ~]#date
#中国标准时间
2022年 08月 14日 星期日 22:26:07 CST
[root@localhost ~]#date -u
#美国标准时间
2022年 08月 14日 星期日 14:26:09 UTC[root@localhost ~]#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.
[root@localhost ~]#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时匹配
模拟攻击
[root@localhost3 ~]# gcc flood_connect.c -o flood
#编译安装 黑客文件
[root@localhost3 ~]# ./flood 192.168.17.55    
#运行黑客脚本[root@localhost 7-1]#ss [root@localhost1 ~]#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新用户不可以访问  就用老的可以访问    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

校园外卖小程序源码系统 附带完整的搭建教程

随着大学生消费水平的提高&#xff0c;对于外卖服务的需求也在不断增加。很多学生都面临着课业繁重、时间紧张等问题&#xff0c;无法亲自到餐厅就餐。因此&#xff0c;开发一款适合校园外卖市场的应用软件&#xff0c;将为广大学生提供极大的便利。 以下是部分代码示例&#…

vector例题:hdu4841圆桌问题

解题代码来源于一本书&#xff1a;《算法竞赛&#xff1a;入门到进阶》 圆桌上围坐着2n个人。其中n个人是好人&#xff0c;另外n个人是坏人。如果从第一个人开始数数&#xff0c;数到第m个人&#xff0c;则立即处死该人&#xff1b;然后从被处死的人之后开始数数&#xff0c;再…

Python Numpy学习(1)

python: np.pad() 函数的用法 np.einsum(爱因斯坦求和约定) python编程之np.isnan()的用法 Python_Numpy库中各种矩阵基本运算 numpy基本加减和取行操作 numpy的加减乘除运算 NumPy 算术函数 TypeError: can’t convert cuda:0 device type tensor to numpy. Use Tenso…

了解linux网络时间服务器

本章主要介绍网络时间服务器。 使用chrony配置时间服务器 配置chrony客户端向服务器同步时间 20.1 时间同步的必要性 些服务对时间要求非常严格&#xff0c;例如&#xff0c;图20-1所示的由三台服务器搭建的ceph集群。 这三台服务器的时间必须保持一致&#xff0c;如果不一致…

【征稿倒计时十天】第三届高性能计算与通信工程国际学术会议(HPCCE 2023)

【有ISSN、ISBN号&#xff01;&#xff01;往届均已完成EI检索】 第三届高性能计算与通信工程国际学术会议(HPCCE 2023) 2023 3rd International Conference on High Performance Computing and Communication Engineering (HPCCE 2023) 2023年12月22-24日 | 中国哈尔滨 第三…

base64 转

$img_base64 substr($res[photo],strrpos($res[photo],,));$img_decode base64_decode($img_base64);$namess time().rand(10000,99999);$cc file_put_contents(img/avatar/.$namess..png,$img_decode);$urlsDS . img . DS . avatar/ .$namess..png;

CSS新手入门笔记整理:CSS溢出声名overflow

通常一个盒子的内容是被限制在盒子边框之内的&#xff0c;但是有时也会溢出&#xff0c;即部 分或者全部内容跑到盒子边框之外。 语法 元素{overflow:取值&#xff1b;} 属性值 说明 visible 若内容溢出&#xff0c;则溢出内容可见&#xff08;默认值&#xff09; hid…

Redis的数据类型以及如何解决大Key问题

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、Redis的数据类型 二、Big Key 2.1 什么是Big Key&#xff1f; 2.2 Big Key产生的场景&#xff1f; 2.3 如何识别Big Key&am…

面试——Java中实现多态的三要素,实现多态的机制是什么?

1.实现多态的三要素&#xff1a; 继承、重写、弗雷德引用指向子类的对象 2.实现多态的机制&#xff1a; 靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象&#xff0c;而程序调用的方法在运行期才动态绑定&#xff0c;就是引用变量所指向的具体实例对象的方法…

数据结构与算法-D5-D7线性表之链表

结点类型描述 程序编写 节点定义 linklist.h linklist.c list_create 1、申请内存 2、赋值 3、返回头结点 list_tail_insert 1、建立一个新结点 2、找尾结点 3、尾部插入 list_show list_insert 链表在某一位置的插入 1、调用算法list_get 2、插入 1&#xff09;新节点 2&a…

MySQL常见的存储引擎(InnoDB、MyISAM)data目录下(.frm,.myi,.myd)

查看支持的存储引擎 SHOW ENGINES;show variables like %storage_engine%; 看你的mysql当前默认的存储引擎:data目录 如果一个表同时有这3个文件&#xff0c;则存储引擎是myisam&#xff1a; &#xff08;1&#xff09;*.frm--表定义&#xff0c;是描述表结构的文件。 &#…

低代码(Low Code):美味膳食还是垃圾食品?如何入门低代码?

文章目录 低代码&#xff1a;美味膳食还是垃圾食品&#xff1f;1. 什么是低代码开发&#xff1f;2. 低代码开发的优势2.1 提高效率2.2 降低门槛 3. 低代码开发的挑战3.1 安全性问题3.2 可扩展性和灵活性问题 4. 低代码开发是美味膳食还是垃圾食品&#xff1f;5. 低代码能否替代…

【Android】查看keystore的公钥和私钥

前言&#xff1a; 查看前准备好.keystore文件&#xff0c;安装并配置openssl、keytool。文件路径中不要有中文。 一、查看keystore的公钥&#xff1a; 1.从keystore中获取MD5证书 keytool -list -v -keystore gamekeyold.keystore 2.导出公钥文件 keytool -export -alias …

基于超声技术的气体流量测量仪设计

摘要 科学地解决能源三气的计量问题&#xff0c;一直是业界困扰的问题。进入二十一世纪以来&#xff0c;用于测量气体流量的超声波流量计以其无压损、无阻力、量程比宽、受流体限制少等优点受到业界的广泛关注。随着国内人民生活水平的提高&#xff0c;科技不断地进步&#xff…

slurm学习(1)

slurm 指定节点SLURM 使用基础教程slurm节点,分区,作业信息说明slurm作业提交系统常用命令slurm nodelist中国科大超算中心用户使用手册slurm&#xff1a;使用nodelist中的任何节点SLURM 使用参考Slurm执行的CPU管理步骤 (我想提高我的cpu利用率来着&#xff0c;可是没看明白这…

iOS常用第三方框架

1、网路请求 -- Moya 2、数据存储处理 -- SQLite.swift 3、数据解析、转换 -- SwiftyJSON、ObjectMapper 4、对NSUserDefaults的封装 -- SwiftyUserDefaults 5、图片加载、处理 -- SDWebImage 6、轮播图 -- FSPagerView 7、键盘管理 -- IQKeyboardManagerSwift 8、弹框提…

天线是什么

天线 电子元器件百科 文章目录 天线前言一、天线是什么二、天线的类别三、天线的应用实例四、天线的作用原理总结前言 不同种类和设计的天线用于不同的应用领域,如广播、电视、无线通信、雷达、卫星通信、导航系统等。常见的天线类型包括柱状天线、片状天线、螺旋天线、饼叶天…

JavaScript <关于AES/DES`代码+白话`讲解和对比>--案例(四)

前言: 有XX私信,说他对于aes和des的解密有点混淆;说实话,我当初也混淆.其实案例搞多了,就清楚了;但是,今天把它稍微梳理一下,整理出来,对你对我都是交代; 正文: AES&#xff08;Advanced Encryption Standard&#xff09;和 DES&#xff08;Data Encryption Standard&#xf…

Node.js快速搭建简单的HTTP服务器并发布公网远程访问

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

TCP传输的三次握手四次挥手策略

TCP传输的三次握手四次挥手策略如下&#xff1a; 第一次握手&#xff1a;客户端发送一个带有SYN标志的数据包给服务器&#xff0c;并记为SYN_Client。第二次握手&#xff1a;服务器收到SYN_Client后&#xff0c;向客户端发送一个带有SYN和ACK标志的数据包&#xff0c;记为SYN_…