iptables简单使用

author author     2023-03-09     810

关键词:

iptables网络防火墙
一、简介
防火墙:可以是硬件也可以是软件: 规则(匹配标准,处理办法)
netfilter: 是一种框架,工作在内核中,通过iptables命令(用户空间) 来规则交给netfilter(内核空间)。作用实现规则
iptables: 数据报文过滤,NAT、mangle等规则生成的工具;过滤IP报文首部与TCP报文首部。作用是制定规则
iptables不是服务,但有服务脚本;服务脚本的主要作用在于管理保存的规则,装载及移除iptables/netfilter相关的内核模块;iptables_nat, iptables_filter, iptables_mangle, iptables_raw, ip_nat, ip_conntrack service iptables start 开启服务
在启动iptables报iptables: No config file错误时
#iptables -P OUPUT ACCEPT
#service iptables save
#service iptables restart

#lsmod |grep ip 查看模块是否加载
二、iptables表与链简介
Netfilter/iptables是表的容器;表是链的容器,即所有的链都属于其对应的表; 链是规则的容器;规则一条条过滤的语句。容器的意思是包含或者说属于的关系。
1、规则:匹配标准IP: SIP, DIP(源地址,目的地址) TCP: SPORT, DPORT, (源端口,目的端口) UDP: SPORT, DPORT (源端口,目的端口) ICMP:icmp-type(icmp类型)
2、iptables链(PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING五个链)
1)、PREROUTING: 用于修改目的地址(DNAT)
2)、INPUT: 匹配目的 IP 是本机的数据包
3)、FORWARD: 匹配穿过本机的数据包(转发数据包)
4)、OUTPUT:匹配目的 IP 是外部主机的数据
5)、POSTROUTING: 用于修改源地址 (SNAT)
3、iptables表(filter、nat、mangle与raw四个表)
1)、filter表(过滤):有 INPUT、OUTPUT、FORWARD三个链 用于过滤的时候
2)、nat表(地址转换): 有PREROUTING、OUTPUT、POSTROUTING三个链 用于做 NAT 的时候
3)、mangle表(拆开报文、修改、重新封装): PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING五个链
4)、raw表(关闭nat表连接追踪机制):只能放在PREROUTING、OUTPUT两个链上
链相关知识:可以使用自定链,但只在被调用时才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制;用可以删除自定义的空链,默认链无法删除
每个规则都有两个内置的计数器:一个用来记录被匹配的报文个数;另一个用来记录被匹配的报文大小之和
各表的优先级,从上到下(由高到底)如下图 例如input链中 先处理mangle表再处理filter表
技术图片
三、操作命令
语法:iptables [-t要操作的表] < 操作命令> [要操作的链] [规则号码] [匹配条件] [-j 匹配到以后处理动作]
1)、操作命令(-A、-I、D、-R、-P、-F)
A、管理规则
-A 链名:附加一条规则,添加在链的尾部
-I 链名 号码: 插入一条规则,插入为对应链上的第几条;
-D链名 号码: 删除指定链中的第几条规则;
-R链名 号码: 替换指定链的规则;
B、管理链:
-F 链名:flush,清空指定规则链,如果省略链,则可以实现删除对应表中的所有链
-P 链名: 设定指定链的默认策略;
-N:自定义一个新的空链
-X: 删除一个自定义的空链
-Z:置零指定链中所有规则的计数器;
-E: 重命名自定义的链;
C、查看类:
-L: 显示指定表中的规则;
-n: 以数字格式显示主机地址和端口号;
-v: 显示链及规则的详细信息
-vv: 更详细信息 -x: 显示计数器的精确值 --line-numbers: 显示规则号码
2)、匹配条件:
A、通用匹配
-s, --src: 指定源地址
-d, --dst:指定目标地址
-p tcp|udp|icmp:指定协议
-i INTERFACE: 指定数据报文流入的接口 可用于定义标准的链:PREROUTING,INPUT,FORWARD
-o INTERFACE: 指定数据报文流出的接口 可用于标准定义的链:OUTPUT,POSTROUTING,FORWARD
B、扩展匹配
a、隐含扩展:不用特别指明由哪个模块进行的扩展,因为此时使用-p tcp|udp|icmp
①、-p tcp隐含扩展
--sport PORT[-PORT]: 源端口
--dport PORT[-PORT]: 目标端口
--tcp-flags mask comp: 只检查mask指定的标志位,是逗号分隔的标志位列表;comp:此列表中出现的标记位必须为1,comp中没出现,而mask中出现的,必须为0;
--tcp-flags SYN,FIN,ACK,RST SYN = --syn 三次握手第一次
--tcp-flags –syn 三次握手第一次
②、-p icmp 隐含扩展
--icmp-type 0|8: 0: echo-reply 响应报文(回来的ping响应) 或 8: echo-request 请求报文(出去的ping)
③、-p udp 隐含扩展
--sport:源端口
--dport:目标端口
b、显式扩展:必须指明由哪个模块进行的扩展,在iptables中使用-m选项可完成此功能
语法: -m EXTESTION --sep-opt
①、state 状态 结合ip_conntrack追踪会话的状态
NEW: 新连接请求
ESTABLISHED:已建立的连接
INVALID:非法连接
RELATED:相关联的
-m state --state NEW,ESTABLISHED -j ACCEPT
要对FTP使用iptables要首先要装载ip_conntrack_ftp和ip_nat_ftp模块
例: iptables -A INPUT -d 192.168.100.7 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
②、multiport: 离散的多端口匹配扩展
--source-ports 源端口
--destination-ports 目标端口
--ports 端口
例:-m multiport --destination-ports 21,22,80 -j ACCEPT
③、-m iprange :多个IP地址匹配
--src-range 源地址
--dst-range 目标地址
例: iptables -A INPUT -p tcp -m iprange --src-range 192.168.100.3-192.168.100.100 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
④ 、-m connlimit: 根据每客户端IP(也可以是地址块)做并发连接数数量匹配
--connlimit-above n 连接的数量大于n
--connlimit-mask prefix_length prefix_length为掩码(0-32) ,默认是32,即一个IP地址 , 限制网段
例: iptables -A INPUT -d 192.168.100.7 -p tcp --dport 80 -m connlimit --connlimit-above 2 -j DROP
⑤、-m limit:基于收发报文的速率做检查
--limit rate[/second|/minute|/hour|/day] 速率限制,默认是3/hour
--limit-burst number 空闲时峰值,默认是5
例: iptables -I INPUT -d 10.0.3.11 -p icmp --icmp-type 8 -m limit --limit-burst 3 --limit 20/minute -j ACCEPT
⑥、-m string 字符串匹配,能够检测报文应用层中的字符串,屏蔽非法字符
--algo bm|kmp 指定匹配算法,有bm和kpm两种
--string "STRING" 指定所要匹配的字符串
⑦、-m time 根据报文到达的时间与指定的时间范围进行匹配
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 时间格式为:2019-03-13T12:24:30
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss] 时间格式为 12:24:30
--timestop hh:mm[:ss]
--monthdays day[,day...] 1-31
--weekdays day[,day...] Mon, Tue, Wed, Thu, Fri, Sat, Sun 或者1-7
--utc 设置--datestart, --datestop, --timestart and --timestop为UTC时间
--localtz 设置--datestart, --datestop, --timestart and --timestop为内核时间
注意时区差异,CST比UTC时间快8小时
3)、常用动作(target):
ACCEPT:放行
DROP:丢弃
REJECT:拒绝(明确告诉对方)
DNAT:目标地址转换
SNAT:源地址转换
REDIRECT:端口重定向
MASQUERADE:地址伪装
LOG:日志
MARK:打标记(打个戳)
保存规则:
#service iptables save 保存的位置 /etc/sysconfig/iptables
#iptables-save > /etc/sysconfig/iptables.2019031301 手动保存位置
#iptables-restore < /etc/sysconfig/iptables.2019031301 手动生效
所有条件都可取反:!,-s ! 192.168.100.6 源地址不是192.168.100.6 都被匹配

iptables系列:如何配置ubuntu14.04中的iptables防火墙

IPTables基本命令在向大家介绍复杂防火墙规则之前,还是先上一些简单的料,让大家对IPTables最为基本的命令有一些简单了解。首先要说明的是IPTables命令必需以root权限运行,这意味着你需要使用root身份登录或者能够有权限使用s... 查看详情

iptables系列:如何配置ubuntu14.04中的iptables防火墙

IPTables基本命令在向大家介绍复杂防火墙规则之前,还是先上一些简单的料,让大家对IPTables最为基本的命令有一些简单了解。首先要说明的是IPTables命令必需以root权限运行,这意味着你需要使用root身份登录或者能够有权限使用s... 查看详情

iptables简单设置

1.清空所有iptables规则iptables-F2.接收目标端口为22的数据包iptables-AINPUT-ieth0-ptcp--dport22-jACCEPT3.拒绝所有其他数据包iptables-AINPUT-jDROP清除所有规则,并保存(centos)iptables-Fserviceiptablessave查看cat/etc/sysconfig/iptablesiptables- 查看详情

centos7iptables

...理者更加清晰的控制访问策略,但是对于大部分习惯使用iptables的用户来说,使用原有的iptables来控制更加顺手。在使用iptables之前需要安装iptables服务。yum install iptables-services在没有安装iptabl 查看详情

一个简单的防火墙(iptables)实例

#!/bin/bash##forcentos7iptablestable##yuminstalliptables-services-y###规则的排列是有顺序的##清除默认规则iptables-Fiptables-Xiptables-Z#设置策略iptables-PINPUTDROP#iptables-PINPUTACCEPTiptables-POUTPUTACCEPTiptables-PFORW 查看详情

iptables基础知识

iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙。如果你是第一次接触iptables,你会觉得它很复杂,但是一旦你理解iptables的工作原理... 查看详情

iptables简单命令与应用

配置文件目录bash> vim /etc/sysconfig/iptablesWEB服务器,开启80端口.bash> iptables -A INPUT -p tcp --dport 80 -j ACCEPT邮件服务器,开启一组端口.bash> iptables 查看详情

shopenvpn服务器的简单iptables脚本(代码片段)

查看详情

firewalld使用简介

...80端口,由于centos7版本以后默认使用firewalld后,网上关于iptables的设置方法已经不管用了,想着反正iptable也不会用,索性直接搬官方文档,学习firewalld了,好像比iptables要简单点了。 官方文档地址:https://access.redhat.com/document... 查看详情

运维自动化之ansible的简单使用

实验主机:Master:192.168.60.36Slave1:192.168.60.46Slave2:192.168.60.56测试环境做实验、基于gnome环境安装的centos7、且关闭了iptables、selinux(iptables-F;setenforce0)rpm包安装:EPEL源yuminstallansiblerpm-ql配置文件:/etc/ansible/ansible.cf 查看详情

iptable防火墙,怎样使用参数

...考技术A第一步:屏蔽最常见的攻击缺省情况下,CentOS的iptables的设置是允许任何数据通过的。首先要清空iptables中的所有的规则:复制代码代码如下:iptables-F然后我们加上阻止简单扫描和攻击的规则复制代码代码如下:iptables-AINPUT-... 查看详情

iptable防火墙,怎样使用参数

...考技术A第一步:屏蔽最常见的攻击缺省情况下,CentOS的iptables的设置是允许任何数据通过的。首先要清空iptables中的所有的规则:复制代码代码如下:iptables-F然后我们加上阻止简单扫描和攻击的规则复制代码代码如下:iptables-AINPUT-... 查看详情

iptables详解:iptables匹配条件总结之二(常用扩展模块)

前文已经总结了iptables中的基本匹配条件,以及简单的扩展匹配条件,此处,我们来认识一些新的扩展模块。  iprange扩展模块之前我们已经总结过,在不使用任何扩展模块的情况下,使用-s选项或者-d选项即可匹配报文的... 查看详情

在添加新规则之前,iptables 是不是需要刷新?

】在添加新规则之前,iptables是不是需要刷新?【英文标题】:Isaflushrequiredforiptablesbeforeaddingnewrules?在添加新规则之前,iptables是否需要刷新?【发布时间】:2015-03-1519:24:26【问题描述】:我对网络很陌生,我正在尝试使用iptables... 查看详情

debian配置iptables

前言iptables在Linux发行版本如Centos、Debian、Ubuntu、Redhat等的配置内容基本一致,但是配置方式有所不同。由于工作日常用的是Centos6.x,它的配置较简单。下面对Debian上配置iptables做一个说明。配置过程环境要求一台Debian6.x/7.x及以... 查看详情

简单的提高iptables连接追踪条目上限

[[email protected]~]#cat/etc/sysctl.confnet.nf_conntrack_max=524288net.netfilter.nf_conntrack_max=524288[[email protected]~]#[[email protected]~]#cat/etc/modprobe.d/netfilter.confoption 查看详情

linux/unix-shell值iptables基础知识

参考技术A原文参考:iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙。如果你是第一次接触iptables,你会觉得它很复杂,但是一旦你理... 查看详情

centos7-firewalld简单上手

...entOS7服务器上默认可用的防火墙管理工具。基本上,它是iptables的封装,有图形配置工具firewall-config和命令行工具firewall-cmd。使用iptables服务,每次改动都要求刷新旧规则,并且从/etc/sysconfig/iptables读取新规则,然而firewalld只应用... 查看详情