iptables详解(2)表中规则管理(增删改查)
我们定义了四张表:raw表、mangle表、nat表、filter表,不同的表有不同的功能
filter表用来过滤,允许哪些ip、端口访问,禁止哪些ip、端口访问,表中会有很多链
①禁止ip地址访问我们主机------>发往本机的经过PREROUTING,但是PREROUTING不在filter表中,因此PREROUTING没有过滤能力,只能定义在INPUT链
②转发到另一个地方 则需要在FORWARD链或者OUTPUT链中定义
一、基本操作
1、查看
iptables -t表名 -nvL –line-number
iptables --line -t filter -nvxL INPUT
-t 加表名-L加链名
-L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数 -L加上链名
-n 不对ip地址进行反查,直接显示ip地址,加上这个参数显示速度会快很多
-v 输出详细信息,verbose显示详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
–line-number 显示规则的序列号,这个参数在删除或修改规则时会用到
-x精确计算
参数解释:
root@ROUTER:~# iptables --line -nvL INPUT
Chain INPUT (policy ACCEPT 6177 packets, 579K bytes)
num pkts bytes target prot opt in out source destination
1 14778 1394K wan_input_chain all -- * * 0.0.0.0/0 0.0.0.0/0
2 14778 1394K lan_input_chain all -- * * 0.0.0.0/0 0.0.0.0/0
policy 表示链的默认策略,默认是ACCEPT,该策略收到了6177个包,iptables -nvxL 可以将省略的k信息显示出来

2、添加
添加规则有两个参数:-A和-I。其中-A是添加到规则的末尾;-I可以插入到指定位置,没有指定位置的话默认插入到规则的首部。
1 Append
在指定表的指定链的指定尾部添加一条规则,-A表示在对应链的末尾添加规则,省略-t选项,表示默认操作filter表
命令语法:iptables -t 表名 -A 链名 匹配条件 -j 动作
示例:iptables -t filter -A INPUT -s 192.168.1.146 -j DROP
2 Insert
在指定链的指定首部添加一条规则,-I默认是表示在对应链的开头添加规则,加上序号后则表示为在当前的序号位置添加一条规则,则底下的规则会往下移一位
命令语法:iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作
示例:iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT
示例操作:
步骤①加入append
iptables -A INPUT -s 192.168.23.242 -j DROP
步骤② 插入insert
iptables -I INPUT 2 -s 192.168.23.242 -j ACCEPT

3、删除
1 具体匹配规则删除
命令语法:iptables -t 表名 -D 链名 匹配条件 -j 动作
示例:iptables -t filter -D INPUT -s 192.168.1.146 -j DROP
2 按--line按删除规则,-D表示删除对应链中的规则
命令语法:iptables -t 表名 -D 链名 规则序号
示例:iptables -t filter -D INPUT 3
3 清空指定表和链中的所有规则
命令语法:iptables -t 表名 -F 链名
示例:iptables -t filter -F INPUT
4 清空表中的所有规则
命令语法:iptables -t 表名 -F
示例:iptables -t filter -F 或者
iptables –flush
示例操作:
步骤① 删除匹配条件的规则
iptables -D INPUT -s 192.168.23.242 -j ACCEPT
步骤② 按照 --line 的行号去删除(省去写一大串规则的时间)
iptables -D INPUT 3

4、修改
1 修改指定表中指定链的指定规则,-R要指定对应的链和规则对应的序号和原本匹配的条件
命令语法:iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作
示例:iptables -t filter -R INPUT 3 -s 192.168.1.146 -j ACCEPT
注意:如果省略-s 等条件则当前的规则的源地址会变成0.0.0.0/0
也可先删掉当前规则,再在同样的位置再 添加同不一样的规则
2 修改指定表的指定链的默认策略(默认动作),并非修改规则
命令语法:iptables -t 表名 -P 链名 动作
示例:iptables -t filter -P FORWARD ACCEPT
示例操作
步骤① 修改规则
iptables -R INPUT 3 -j ACCEPT

注意 如果要进行更改规则一定要指定-s 源地址 ,如果有多个匹配规则 则都需要指定
因为在前面的-R 没有指定对应的地址,所以当前的修改地址都变成0.0.0.0/0
DROP动作直接是卡住没有响应,然后REJECT则会给出Destination Port Unreachable的回应
②修改默认规则
每张表的每条链中都有自己的默认策略,当报文没有被链中任何规则匹配,或者链中没有任何规则,则当前按照默认动作处理报文
iptables -t filter -P FORWARD DROP
-t 加表名 -P加链名

DROP(丢弃) 和 REJECT(拒绝) 有什么不同的呢?REJECT的时候会显示Destination Port Unreachable 但是DROP则会直接卡在那边不动
5、保存规则-----永久生效
在默认的情况下我们对防火墙所做的修改都是临时的,当服务器重启或者iptables服务重启后,所有的规则操作都会消失。
① CentOS6, RedHat
# 保存iptables规则
service iptables save
# 重启iptables服务
service iptables stop
service iptables start/restart
查看当前规则:
cat /etc/sysconfig/iptables
② Centos7
不使用init风格的脚本启动服务,使用unit文件,yum源安装iptables和iptables-services
#配置好yum源以后安装iptables-service
# yum install -y iptables-services
#停止firewalld
# systemctl stop firewalld
#禁止firewalld自动启动
# systemctl disable firewalld
#启动iptables
# systemctl start iptables
#将iptables设置为开机自动启动,以后即可通过iptables-service控制iptables服务
# systemctl enable iptables
上述配置只需要一次,以后即可在centos7中愉快地使用service iptables save命令保存iptables规则
============通用方法=============
iptables-save 可以把之前修改的命令输出到屏幕但是并不能保存命令
所以要使用 iptables-save > /etc/sysconfig/iptables 将修改的规则重定向到这个文件中
iptables详解(2)表中规则管理(增删改查)的更多相关文章
- 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器
一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...
- 详解数据库引擎与SQL语句增删改查(非常详细,带例)
数据库系统(DBMS): 专门负责数据管理的工具.增加数据.创建索引.建立索引之间的关联关系.更新索引...... 连接器:PHP要访问MySQL,可以通过API访问,也可以通过PHP的驱动,而那个驱 ...
- mysql--对行(表中数据)的增删改查
一.插入数据(增加)insert 1.插入数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); #指定字段来插入数据,插 ...
- Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查
一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...
- mysql对库,表及记录的增删改查
破解密码 #1.关闭mysqlnet stop mysqlmysql还在运行时需要输入命令关闭,也可以手动去服务关闭 #2.重新启动mysqld --skip-grant-tables跳过权限 #3m ...
- 第三百零七节,Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- 五 Django框架,models.py模块,数据库操作——表类容的增删改查
Django框架,models.py模块,数据库操作——表类容的增删改查 增加数据 create()方法,增加数据 save()方法,写入数据 第一种方式 表类名称(字段=值) 需要save()方法, ...
- 详解node + mongoDb(mongoDb安装、运行,在node中连接、增删改查)
一.序言 好久没写博客了,这次主要聊聊 node 和 mongoDb . 先说明一下技术栈 node + express + mongoose + mongoDb.这篇博客,主要讲述 mongoDb ...
- Oracle学习总结_day01_day02_表的创建_增删改查_约束
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 更新: SELECT * FROM (SELECT R ...
- 数据库中简单的增删改查(CRUD)
一切都是基于数据,而对数据的管理都离不开数据库.最近学到数据库的简单操作,所以写下这篇文章,总结一下学习到的知识.浅陋之处,多多见谅. 补充一下:一直弄不清SQL Server,Mysql ,以及Or ...
随机推荐
- 清除 sql server 记住密码
引用:https://www.cnblogs.com/zengbin/p/4307013.html SQL Server 2005 Management Studio %AppData%\Micros ...
- C/C++文件操作经验总结
最近在做一个从groundtruth_rect.txt中读取按行存储的矩形元素(x, y, w, h),文本存储的格式如下: 310,102,39,50 308,100,39,50 306,99,39 ...
- ATT&CK框架学习
ATT&CK模型 ATT&CK是分析攻击者行为(即TTPs)的威胁分析框架.ATT&CK框架核心就是以矩阵形式展现的TTPs,即Tactics, Techniques and ...
- redis的key设置每天凌晨过期的思路
设置key凌晨过期的思路 设置key的值的时候,计算下当前时间到第二天凌晨的时间差,设置key的过期时间. 利用定时任务,每天凌晨将需要过期的key删除. 应用场景 按天为维度,限制用户对资源的访问次 ...
- 【转帖】【PCI-E通道是个什么东西?他是干啥的?】
[PCI-E通道是个什么东西?他是干啥的?] https://zhuanlan.zhihu.com/p/62426408 前言: 经常接触台式机的同学肯定绕不开PCI-E这个名词,因为这是台式机里最重 ...
- Python28之文件1
因为懂你,所以永恒 一.文件处理的重要性: 程序处理的数据都是在提取到内存,然后由CPU进行处理,而当断电或系统异常关机时,程序所处理的结果在内存中不会被保存.像永久的保存处理结果,对于windows ...
- 使用pyinstaller编译python文件
1.安装pyinstaller pip install pyinstaller 2.编译 pyinstaller yourprogram.py 具体操作 1.编译 d: cd python pyi ...
- 二十三、uevnet机制和U盘自动挂载
一.uevent机制 在分析之前,我们首先要知道uevent作用是什么.在此我们先来看一个uevent机制的框架图: 该图片来自:Linux设备模型(3)_Uevent 通过图片我们可以确定ueven ...
- Python开发【第一章】:简介和入门
Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承. ...
- vagrant root 登录虚拟机
这个问题本来觉得是个特别简单的问题,昨天弄的时候折腾了半晚上.所以打算记录下过程,主要也被网上的各种信息误导了. 1 先看下我这vagrant配置信息 Vagrant.configure(" ...