iptables介绍和使用
一、简介
1)—> IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统,在redhat7.1 centos7.1以上都内置装有。
2)—> iptables 的最大优点是它可以配置有状态的防火墙,有四种有效状态,名称分别为 ESTABLISHED 、 INVALID 、 NEW 和 RELATED。
-状态 ESTABLISHED 指出该信息包属于已建立的连接,该连接一直用于发送和接收信息包并且完全有效。
-状态INVALID指出该信息包与任何已知的流或连接都不相关,联,它可能包含错误的数据或头。状态 NEW 意味着该信息包已经或将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联。最后,
-RELATED 表示该信息包正在启动新连接,以及它与已建立的连接相关联。
3)—> iptables 的另一个重要优点是,它使用户可以完全控制防火墙配置和信息包过滤。您可以定制自己的规则来满足您的特定需求,从而只允许您想要的网络流量进入系统。
4)—> Iptables 是用来设置、维护和检查Linux内核的IP包过滤规则的,同时iptables 是免费的,这对于那些想要节省费用的人来说十分理想,它可以代替昂贵的防火墙解决方案。
二 、iptables的结构和使用
--iptables表、链结构图
1)有四张表raw、mangle、nat、filter,都有独立的相应链表。
2)包过滤匹配流程(规则链内的匹配顺序)
-顺序比对,匹配即停止(LOG除外)
-若无任何匹配,则按该链的默认策略处理
3)iptables基本用法
-iptables [-t 表名] 选项 [链名(大写)] 条件 [-j 目标操作(大写)]
例:[root@pc88 ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT
A.注意事项/整体规律
-可以不指定表,默认为filter表
-可以不指定链,默认为对应表的所有链
-除非设置默认策略,否则必须指定匹配条件
-选项/链名用大写字母/目标操作用大写字母,其余都小写
B.常见目标操作:
ACCEPT:允许通过/放行
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志,然后传给下一条规则
C.常用的iptables命令选项
补充:iptables -X 清除预设表filter中使用者自定链中的规则(清除默认规则)
4)规则管理示例
-iptables的默认配置文件路径:/etc/sysconfig/iptables
-用iptables命令添加规则后要使用service iptables save命令后才能永久保存
-systemctl restart iptables.service 或 service iptables restart重启iptables服务
A.添加新规则
[root@pc88 ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT //允许接收tcp协议进来的数据包
(在表filter的INPUT链中追加规则)(-A末尾追加这条规则)
[root@pc88 ~]# iptables -I INPUT -p udp -j ACCEPT //允许接收udp协议进来的数据包
(没写表名时,默认是指filter)(在INPUT规则表中首行插入这条规则)
[root@pc88 ~]# iptables -I INPUT 2 -p icmp -j ACCEPT //允许接收icmp协议进来的数据包
(没写表名时,默认是指filter)(在INPUT规则表中第2行插入这条规则)
B.查看规则
[root@pc88 ~]# iptables -nL -t nat //查看nat 的全部规则表
[root@pc88 ~]# iptables -nL POSTROUTING -t nat //查看nat表中POSTROUTING链的规则表
[root@pc88 ~]# iptables -L POSTROUTING -t nat --line-numbers //以规则序号的方式查看
C.删除、清空规则
-D删除规则 -F清空规则
[root@pc88 ~]# iptables -D INPUT 1 -t filter
//删除表filter中INPUT链的第1条规则(-t filter没写时,默认为filter表)
[root@pc88 ~]# iptables -D POSTROUTING 2 -t nat
//删除表nat中POSTROUTING链中的第2条规则
-F清空规则(分别清空四个表,第一个默认为filter表)
[root@pc88 ~]# iptables -F
[root@pc88 ~]# iptables -t nat -F
[root@pc88 ~]# iptables -t mangle -F
[root@pc88 ~]# iptables -t raw -F
D.设置默认规则
当用户添加的规则都不匹配时,为匹配默认规则
所有链的始默认规则均为ACCEPT(接收状态)
通过-P选项可重置默认规则,常用两种状态ACCEPT或DROP
[root@pc88 ~]# iptables -t nat -P POSTROUTING DROP
//将nat表中POSTROUTING链默认规则设置为DROP(弃包状态)
[root@pc88 ~]# iptables -t filter -P INPUT ACCEPT
//将filter表中INPUT链默认规则设置为ACCEPT(接收状态)
E.常见的防火墙设置类型:主机型和网络型
根据防火墙保护的对象不同,防火墙可以分为主机型防火墙与网络型防火墙,如图所示。
主机型防火墙,主要保护的是服务器本机(过滤威胁本机的数据包)。
网络防火墙,主要保护的是防火墙后面的其他服务器,如web服务器、FTP服务器等。
F.常见的扩展条件类型
前提条件:有对应的防火墙模块支持
基本用法:
-m 扩展模块 --扩展条件 条件值
示列:-m mac --mac-source 00:0D:33:88:BC:66
实用案例1
功能:拒绝某主机的访问,锁定该主机的MAC地址,这样不管变成什么IP都无法访问本机
[root@pc88 ~]# iptables -A INPUT -m mac --mac-source 00:0D:33:88:BC:66 -j DROP
实用案例2
功能:一条规则开放多个端口
[root@pc88 ~]# iptables -A INPUT -p tcp -m multiport --dports 21:23,25,80,110,16500:16800 -j ACCEPT
//先指定大的协议如tcp,然后再指定扩展协议
//21:23指21到23间的所有端口,16500:16800同理,不连续的用,分开
实用案例3
功能:根据IP范围指定可以访问本机相关端口的IP段(例如SSH远程登陆本机)
-先写允许访问的IP段,然后再写禁止IP段
[root@pc88 ~]# iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.8.20-192.168.8.60 -j ACCEPT
//先写允许20-60间的主机可以通过22端口远程访问本机
[root@pc88 ~]# iptables -A INPUT -p tcp --dport 22 -s 92.168.4.0/24 -j DROP
//当进来的IP不符合第一条规则时,会开始中匹配第二条,就在第二条上执行禁止4.0/24网段的访问。相当于只允许第一条的人访问。
实用案例4
功能:通过iptables实现局域网内不同网段间的两台主机的互联网共享.
假如A主机IP192.168.0.5/192.168.2.5(双网卡)可以上网,B主机IP192.168.2.100不能上网
-首先确保A和B要能相互ping通,A主机能上网
-然后把B主机的IP网关设置成192.168.2.5,DNS设置成和主机A的DNS一样
-开始添加修改主机A的iptables规则
[root@pca ~]# echo 0 > /proc/sys/net/ipv4/ip_forward
//echo ‘net.ipv4.ip_forward=1’ >> /etc/sysctl.conf
//修改/etc/sysctl.conf配置文件,可以实现永久有效规则
//首先开启主机A的路由转发功能
[root@pca ~]# iptables -t nat -A POSTROUTING -s 192.168.2.100 -p tcp --dport 80 -j SNAT --to-source 192.168.0.5
//将主机B访问主机A的80端口上的数据转发到主机A另一个能访问外网的网卡上ip是192.168.0.5 ,其中-p tcp --dport 80 可以不写,就变成访问A的所有端口数据都转到ip为192.168.0.5的网卡上,借由这个网卡再加上路由功能转的开启,从而实现连接外网。
实用案例5
功能:实现A可以ping能B,B无法ping通A(只是回应拒绝访问)
[root@pca ~]# iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
//在主机A上添加上面规则
实用案例6
功能:实现禁止路由访问代理服务器后面的服务器主机
-在代理服务器开启路由转发的前提下
[root@server ~]# iptables -I FORWARD -s 192.168.2.200 -p tcp --dport 80 -j DROP
//192.168.2.200是要访问server的客户机,当客户机通过server访问80转发端口时丢弃数据包
实用案例7
[root@pc88 ~]#iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
//如上例,添加一条入站规则:对进来的包的状态进行检测。已经建立tcp连接的包以及该连接相关的包允许通过!
//ESTABLISHED:已建立的链接状态。RELATED:该数据包与本机发出的数据包有关。
实用案例8
//防止骇客使用洪水攻击
[root@pc88 ~]#iptables -A INPUT -m limit --limit 3/hour
//说明 用来比对某段时间内封包的平均流量,上面的例子是用来比对:每小时平均流量是
否超过一次 3 个封包。 除了每小时平均次外,也可以每秒钟、每分钟或每天平均一次,
默认值为每小时平均一次,参数如后: /second、 /minute、/day。 除了进行封数量的
比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水
攻击法,导致服务被阻断
————————————————
版权声明:本文为CSDN博主「璐程风」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cbuy888/article/details/80383770
iptables介绍和使用相关推荐
- firewalld、netfilter、 netfilter5表5链、iptables介绍
1. Linux网络相关 ifconfig查看网卡ip(如果没有这个命令请使用yum install net-tools安装) ifdown ens33 //关闭网卡ens33(在使用远程终端连接时不 ...
- 防火墙iptables介绍
防火墙: netfilter/iptables是集成在Linux2.4.X版本内核中的包过滤防火墙系统.该架构可以实现数据包过滤,网络地址转换以及数据包管理功能.linux中防火墙分为两部分:netf ...
- linux中iptables入门教程--设置静态防火墙
1.iptables介绍 iptables是复杂的,它集成到linux内核中.用户通过iptables,可以对进出你的计算机的数据包进行过滤.通过iptables命令设置你的规则,来把守你的计算机网络 ...
- Linux 防火墙工具--iptables
iptables介绍 iptables是基于内核的防火墙,功能非常强大,iptables内置了"三表五链" 三张表 1.filter 定义允许或者不允许的 2.nat ...
- iptables--静态防火墙实例教程
iptables--静态防火墙实例教程 follow me 介绍: 这篇文章是本人原创,向读者展示了如何一步一步建立静态防火墙来保护您的计算机,同时在每一步中,我力图向读者讲述清楚原理.在这篇教程之后 ...
- iptables(上)
iptables介绍 iptables 是通过分析数据包的包头信息,根据包头中的信息是否匹配到一定的规则,在对这些数据进行放行.拒绝或者丢弃等动作 包头信息: 源地址 目标地址 源端口 目标端口 源m ...
- linux中有fd set函数吗,LINUX下FD_SET介绍
刚刚了解了linux下select系统调用,函数原型是 #include #include int select(int maxfdpl, fd_set *readset, fd_set *write ...
- linux防火墙策略文件夹,Linux防火墙iptables的策略
iptables策略 iptables -L #查看现有防火墙所有策略 iptables -F #清除现有防火墙策略 只允许特定流量通过,禁用其他流量 1.允许SSH流量(重要) iptables - ...
- iptables防火墙火墙服务
一.iptables介绍 二.安装服务并开启服务 yum install iptables-services.x86_64 systemctl stop firewalld systemctl dis ...
最新文章
- CentOS搭建本地光盘YUM源
- 查看mysql,apache,php,nginx编译参数
- Java 基本功之(一)入门知识点
- 吴恩达机器学习(第六章)——正则化
- juqery 获取radio选中的值
- LeetCode_每日一题今日份_167.两数之和II-输入有序数组
- tensorflow 调试_如何开始调试TensorFlow
- geetest文件夹什么意思_手机文件夹是英文不敢删?只要找出这5个文件夹,能腾出大量内存...
- UVA - 208 Firetruck
- html5小游戏需求分析,2015年HTML5就业需求走势总结分析
- clickhouse代理Chproxy
- SaltStack系列(二)之常用模块介绍
- mysql php 类 缓存_记录一个实用的PHP缓存类
- oracle12c如何完全卸载_如何卸载oracle12c
- 执行maven install 报如下错是什么原因呢?
- c语言while循环作用,c语言中while循环的用法
- php7 yar扩展,php扩展之Yar使用
- php laravel model,如何使用 Laravel Eloquent Model
- 片上总线Wishbone 学习(三)Wishbone互联的类型
- 只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句
热门文章
- android listview数据错乱,AndroidListview 滑动过程中图片显示重复错乱解决方案
- 批量验证ssh账号密码登录shell脚本
- 图表示学习和异质信息网络
- win7配色方案_自制的基于rime的简体拼音输入方案,尽可能接近搜狗拼音
- 1.html基础标签
- 高考计算机机房固态硬盘风险,【单选题】(2016年高考)下列有关固态硬盘的叙述中,正确的是()...
- 用Python打印斜三角形图案
- 如何知道页面浏览时长?
- wordpress主机搬家
- 无监督DWI图像去噪:Patch2Self