防火墙 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;将为广大学生提供极大的便利。 以下是部分代码示例&#…

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日 | 中国哈尔滨 第三…

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

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

数据结构与算法-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…

低代码(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 …

天线是什么

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

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…

西工大计算机学院计算机系统基础实验一(函数编写15~17)

还是那句话&#xff0c;稳住心态&#xff0c;稳住心态&#xff0c;稳住心态。心里别慌&#xff0c;心里别慌&#xff0c;心里别慌。 第15题&#xff0c;howManyBits&#xff0c;返回用二进制补码形式表示x所需的最小二进制位数。比如howManyBits(12) 5&#xff0c;12可以被表…

初学vue3与ts:vue3选项式api获取当前路由地址

vue2的获取方法 this.$route.pathvue3选项式api获取方法 import { useRouter } from vue-router; const router useRouter(); console.log(router) console.log(router.currentRoute.value.path)

测开速成考点

用户登录界面需要做哪些测试&#xff1f; ⑴功能&#xff1a;  正确的用户名&#xff0c;正确的密码&#xff0c;点击提交按钮&#xff0c;验证能否正确登录 是否跳转正确页面。  错误的用户名 或 密码&#xff0c;点击提交&#xff0c;提示相应的错误信息。  记住用户名…

Word文件设置了只读模式,为什么还能编辑?

Word文档设置了只读模式&#xff0c;为什么还可以编辑呢&#xff1f;&#xff0c;不过当我们进行保存的时候会发现&#xff0c;word提示需要重命名并选择新路径才能够保存&#xff0c;是因为什么呢&#xff1f;今天我们学习一下如何解决问题。 这种操作&#xff0c;即使可以编辑…

Python-文件详解

一个计算机包括&#xff1a;CPU、存储器、输入设备、输出设备 存储器分为内存和硬盘 文件路径&#xff1a;一层一层文件目录组成的字符串 文件路径可以视为文件在硬盘中的身份标识&#xff0c;因为每一个文件的1路径唯一 文件之间使用/反斜杠和\正斜杠都一样 内存和硬盘的区别…

AI文本生成工具-免费AI文本生成软件

在当今数字时代&#xff0c;人工智能技术的快速发展不仅改变了我们的生活方式&#xff0c;还在创作领域崭露头角。其中&#xff0c;AI文本生成技术的迅猛发展引起了广泛关注。本文将深入探讨AI文本生成的方法、工具以及一些关键技巧&#xff0c;帮助读者更好地了解并利用这一前…

Run Micro-ROS on almost any stm32

Run Micro-ROS on almost any stm32 - Tech blog (guillaumebeuzeboc.github.io) Run Micro-ROS on almost any stm32 19 Sep 2021 c, cmake, stm32, micro-ros, clion 如果用的不是STM32F4&#xff0c;需要自己去生成micro_ros_stm32cubemx_utils库 Micro-ROS brings the…

UNIX 文件权限设置的相关函数

函数 umask umask 函数为进程设置文件模式创建屏蔽字&#xff0c;并返回之前的值。这个函数没有出错返回&#xff0c;它不会出错. #include <sys/stat.h> mode_t umask(mode_t cmask); // 返回值&#xff1a;为文件模式创建屏蔽字 其中&#xff0c;参数 cmask 是由 文…

qt 5.15.2 主窗体菜单工具栏树控件功能

qt 5.15.2 主窗体菜单工具栏树控件功能 显示主窗体效果&#xff1a; mainwindow.h文件内容&#xff1a; #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QFileDialog> #include <QString> #include <QMessageBox>#inc…

m1通过源码编译xgboost4j的jar

1、下载源码 git clone --recursive https://github.com/dmlc/xgboost cd xgboost 编译xgboost的动态链接库dylib&#xff0c;m1源码编译xgboost的动态链接库dylib文件 2、编译XGBoost的jar文件&#xff1a; A、如果没有安装maven可以通过以下命令进行安装&#xff0c;如果安…