iptables操作手册
iptables命令参数
iptables命令参数iptables命令是Linux系统中用于设置防火墙规则的工具,它允许用户通过在内核中的网络数据包传输路径上添加或删除规则来过滤、修改和重定向网络数据包。
iptables命令有许多参数可以用来指定具体的操作和规则。
下面是一些常用的iptables命令参数:1. -A或--append:添加规则到规则链的末尾。
例如,`iptables -A INPUT -s 192.168.0.1 -j DROP`将会添加一个规则,禁止来自IP地址为192.168.0.1的主机的所有入站连接。
2. -I或--insert:在规则链内指定的位置插入规则。
例如,`iptables -I INPUT3 -s 192.168.0.1 -j DROP`将会在INPUT链的第3个位置插入一个规则,禁止来自IP地址为192.168.0.1的主机的所有入站连接。
3. -D或--delete:从规则链中删除规则。
例如,`iptables -D INPUT -s 192.168.0.1 -j DROP`将会删除INPUT链中所有来自IP地址为192.168.0.1的主机的入站连接的规则。
4. -P或--policy:设置默认策略。
例如,`iptables -P INPUT ACCEPT`将会将INPUT链的默认策略设置为接受所有入站连接。
5. -s或--source:指定源IP地址或地址段。
例如,`iptables -A INPUT -s 192.168.0.0/24 -j DROP`将会添加一个规则,禁止来自192.168.0.0/24网段的主机的所有入站连接。
6. -d或--destination:指定目标IP地址或地址段。
例如,`iptables -AOUTPUT -d 192.168.0.1 -j DROP`将会添加一个规则,禁止所有出站连接到IP地址为192.168.0.1的主机。
7. -p或--protocol:指定要过滤的传输层协议,如TCP、UDP或ICMP。
iptables的用法
iptables的用法iptables是Linux系统中防火墙工具,用于配置、管理和过滤网络流量。
它可以用于设置各种规则,以控制网络传输,过滤入站和出站流量,并允许或拒绝特定的网络连接。
以下是iptables的常见用法:1. 查看当前的iptables规则:```iptables -L```2. 清除当前的iptables规则:```iptables -F```3. 允许特定IP地址的访问:```iptables -A INPUT -s <IP_ADDRESS> -j ACCEPT```4. 禁止特定IP地址的访问:```iptables -A INPUT -s <IP_ADDRESS> -j DROP```5. 允许特定端口的访问:```iptables -A INPUT -p tcp --dport <PORT_NUMBER> -j ACCEPT```6. 允许特定协议的访问:```iptables -A INPUT -p <PROTOCOL> -j ACCEPT```7. 配置端口转发:```iptables -t nat -A PREROUTING -p tcp --dport <SOURCE_PORT> -j DNAT --to-destination<DESTINATION_IP>:<DESTINATION_PORT>```8. 配置端口映射:```iptables -t nat -A POSTROUTING -p tcp -d <DESTINATION_IP> --dport<DESTINATION_PORT> -j SNAT --to-source <SOURCE_IP>```以上只是iptables的一些常见用法,它还提供了更多高级功能和选项,可以根据具体需求进行配置和使用。
iptables查看或添加规则
iptables查看或添加规则iptables是一个用于Linux系统的防火墙工具,可以用于查看和管理网络数据包的流量。
它可以防止未经授权的访问,保护计算机和网络的安全。
一、查看iptables规则使用以下命令可以查看当前系统的iptables规则:```iptables -L```这个命令会列出当前系统中所有的iptables规则,包括输入、输出和转发规则。
每个规则包含了源IP地址、目标IP地址、协议类型、端口号等信息。
这些规则是按照优先级顺序排列的,从上到下依次检查,直到找到与数据包匹配的规则。
如果想查看某个特定链的规则,可以使用以下命令:```iptables -L <chain_name>```其中,<chain_name>是链的名称,比如INPUT、OUTPUT或FORWARD。
二、添加iptables规则使用以下命令可以添加iptables规则:```iptables -A <chain_name> -p <protocol> --dport <port> -j <target>```其中,<chain_name>是要添加规则的链的名称,比如INPUT、OUTPUT或FORWARD;<protocol>是要过滤的协议类型,比如tcp、udp;<port>是要过滤的端口号;<target>是规则匹配时要执行的操作,比如ACCEPT、DROP。
例如,要添加一个允许所有TCP流量通过80端口的规则,可以使用以下命令:```iptables -A INPUT -p tcp --dport 80 -j ACCEPT```这个命令将在INPUT链中添加一个规则,允许所有TCP流量通过80端口。
三、保存iptables规则为了避免系统重启后iptables规则丢失,需要将当前的规则保存到文件中。
Linux下iptables超详细教程和使用示例
Linux下iptables超详细教程和使⽤⽰例iptables的结构:iptables由上⽽下,由Tables,Chains,Rules组成。
⼀、iptables的表tables与链chainsiptables有Filter, NAT, Mangle, Raw四种内建表:1. Filter表Filter是iptables的默认表,它有以下三种内建链(chains):INPUT链 – 处理来⾃外部的数据。
OUTPUT链 – 处理向外发送的数据。
FORWARD链 – 将数据转发到本机的其他⽹卡设备上。
2. NAT表NAT表有三种内建链:PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。
它会转换数据包中的⽬标IP地址(destination ip address),通常⽤于DNAT(destination NAT)。
POSTROUTING链 – 处理即将离开本机的数据包。
它会转换数据包中的源IP地址(source ip address),通常⽤于SNAT(source NAT)。
OUTPUT链 – 处理本机产⽣的数据包。
3. Mangle表Mangle表⽤于指定如何处理数据包。
它能改变TCP头中的QoS位。
Mangle表具有5个内建链(chains):PREROUTINGOUTPUTFORWARDINPUTPOSTROUTING4. Raw表Raw表⽤于处理异常,它具有2个内建链:PREROUTING chainOUTPUT chain5.⼩结⼆、IPTABLES 规则(Rules)规则的关键知识点:Rules包括⼀个条件和⼀个⽬标(target)如果满⾜条件,就执⾏⽬标(target)中的规则或者特定值。
如果不满⾜条件,就判断下⼀条Rules。
⽬标值(Target Values)在target⾥指定的特殊值:ACCEPT – 允许防⽕墙接收数据包DROP – 防⽕墙丢弃包QUEUE – 防⽕墙将数据包移交到⽤户空间RETURN – 防⽕墙停⽌执⾏当前链中的后续Rules,并返回到调⽤链(the calling chain)中。
iptables masquerade规则
iptables masquerade规则iptables是一款在Linux系统上使用的防火墙工具,它能够控制网络流量,保护网络安全。
其中,masquerading(伪装)规则是一种特殊的规则,用于在网络地址转换(Network Address Translation,NAT)中隐藏主机的真实IP地址,使其看起来像是来自防火墙本身。
在本文中,将详细介绍iptables masquerade规则的设置方法和使用场景。
1. masquerade规则的基本概念masquerade规则的作用是将内部网络的私有IP地址转换为防火墙的公共IP地址,使内部网络能够访问外部网络,同时外部网络无法直接访问内部网络的主机。
这种转换过程隐藏了内部网络的真实IP地址,增强了网络安全性。
2. 设置masquerade规则的步骤设置iptables masquerade规则的步骤如下:步骤一:进入iptables的配置界面在Linux终端输入以下命令,进入iptables的配置界面:```sudo iptables -t nat -A POSTROUTING -o 外部网络接口 -j MASQUERADE```其中,`外部网络接口`是指连接外部网络的网络接口,比如eth0。
步骤二:保存iptables配置为了使设置的masquerade规则能够在系统重启后生效,需要将iptables配置保存。
在终端输入以下命令保存iptables配置:```sudo iptables-save > /etc/sysconfig/iptables```3. masquerade规则的使用场景(1) 在内部网络共享Internet连接当一个网络中的多台主机需要共享同一个Internet连接时,可以使用masquerade规则。
通过将内部网络IP地址转换为防火墙的公共IP 地址,可以实现多台主机共享同一个Internet连接,提高网络利用率。
iptables命令、规则、参数详解
iptables命令、规则、参数详解表 (table)包含4个表:4个表的优先级由高到低:raw-->mangle-->nat-->filterraw---RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。
一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了.filter---这个规则表是预设规则表,拥有INPUT、FORWARD 和OUTPUT 三个规则链,这个规则表顾名思义是用来进行封包过滤的理动作net----此规则表拥有prerouting和postrouting两个规则链,主要功能为进行一对一、一对多、多对多等网址转译工作(SNATDNAT)mangle--此规则表拥有prerouting、FORWARD、postrouting 三个规则链,除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(ITL、TOS)或者是设定MARK(将封包作记号,以进行后续的过滤)这时就必须将这些工作定义在mangles规则表中常用命令:-A 追加规则-->iptables -A INPUT-D 删除规则-->iptables -D INPUT 1(编号)-R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)-I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位-L 查看规则-->iptables -L INPUT 列出规则链中的所有规则-N 新的规则-->iptables -N allowed 定义新的规则通用参数:-p 协议例:iptables -A INPUT -p tcp-s源地址例:iptables -A INPUT -s 192.168.1.1-d目的地址例:iptables -A INPUT -d 192.168.12.1-sport源端口例:iptables -A INPUT -p tcp --sport 22-dport目的端口例:iptables -A INPUT -p tcp --dport 22-i指定入口网卡例:iptables -A INPUT -i eth0-o指定出口网卡例:iptables -A FORWARD -o eth0-j 指定要进行的处理动作常用的ACTION:DROP:丢弃REJECT:明示拒绝ACCEPT:接受SNAT基于原地址的转换source--指定原地址比如我们现在要将所有192.168.10.0网段的IP在经过的时候全都转换成172.16.100.1这个假设出来的外网地址:iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.16.100.1(外网有效ip)这样,只要是来自本地网络的试图通过网卡访问网络的,都会被统统转换成172.16.100.1这个IP.MASQUERADE(动态伪装)--家用带宽获取的外网ip,就是用到了动态伪装iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADEDNAT目标地址转换destination-指定目标地址iptables -t nat -A PREROUTING -d 192.168.10.18 -p tcp --dport 80 -j DNAT --to-destination 172.16.100.210.18访问80端口转换到100.2上MASQUERADE:源地址伪装REDIRECT:重定向:主要用于实现端口重定向MARK:打防火墙标记的RETURN:返回在自定义链执行完毕后使用返回,来返回原规则链。
iptables命令详解附实例
-d:匹配目的地址,可以是 IP、NET、DOMAIN,也可以空
例如:
-d 202.106.0.20 匹配去往 202.106.0.20 的数据包
-d 202.106.0.0/16 匹配去往 202.106.0.0/16 网络的数据包
例如:
iptables -t filter -A INPUT -j DROP
在 filter 表的 INPUT 链里追加一条规则(作为最后一条规则)
匹配所有访问本机 IP 的数据包,匹配到的丢弃
-I 链名 [规则号码]
INSERT,插入一条规则
例如:
iptables -I INPUT -j DROP
注意:
当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理
-F [链名]
FLUSH,清空规则
例如:
iptables -F INPUT
清空 filter 表 INPUT 链中的所有规则
iptables -t nat -F PREROUTING
清空 nat 表 PREROUTING 链中的所有规则
注意:
1、-F 仅仅是清空链中规则,并不影响 -P 设置的默认规则
2、-P 设置了 DROP 后,使用 -F 一定要小心!!!
3、如果不写链名,默认清空某表里所有链里的所有规则
-[vxn]L
-L 列出规则
·流入、流出接口(-i、-o)
·来源、目的地址(-s、-d)
·协议类型 (-p)
·来源、目的端口(--sport、--dport)
如何使用iptables命令在Linux中配置防火墙和网络转发
如何使用iptables命令在Linux中配置防火墙和网络转发由于网络安全的重要性日益凸显,配置防火墙和网络转发成为Linux系统管理员必备的技能之一。
在Linux系统中,iptables命令提供了灵活的方式来配置防火墙规则和网络转发设置。
本文将介绍如何使用iptables命令来完成这些任务。
一、什么是iptables命令iptables是Linux操作系统中一个非常强大的防火墙工具,它可以通过管理网络数据包的流动来控制网络访问权限。
iptables命令可以根据预先定义的规则集过滤网络数据包,拒绝无效或危险的连接,从而保护系统的安全性。
二、基本概念与术语在开始使用iptables命令之前,我们需要了解一些基本的概念和术语。
1. 表(Table):iptables命令使用表来组织和管理规则。
常用的表有:filter、nat和mangle等。
2. 链(Chain):每个表都包含多个链,链是规则的组合。
常用的链有:INPUT、FORWARD和OUTPUT等。
3. 规则(Rule):规则是iptables命令的基本单位,它定义了针对网络数据包的动作和匹配条件。
4. 动作(Action):动作定义了对匹配到的数据包的处理方式,常见的动作有:ACCEPT、DROP和REJECT等。
5. 匹配条件(Match):匹配条件定义了规则在应用到数据包时需要满足的条件。
常见的匹配条件有:source、destination和protocol等。
三、配置防火墙规则配置防火墙规则是保护系统安全的第一步。
使用iptables命令可以轻松地添加、修改和删除防火墙规则。
1. 查看当前防火墙规则首先,我们需要查看当前的防火墙规则,可以使用以下命令:```iptables -L```该命令将列出当前的防火墙规则,包括表、链、规则和动作等信息。
2. 添加规则要添加一个防火墙规则,可以使用以下命令:```iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT```该命令将允许来自192.168.0.0/24网段的TCP连接访问本地的SSH 服务。
iptables配置语句
iptables配置语句1. 配置iptables防火墙的命令如下:```iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT```这条命令的作用是允许来自192.168.1.0/24网段的主机通过SSH 连接到本机的22端口。
2. 另一个常见的配置是限制特定IP地址的访问:```iptables -A INPUT -s 192.168.1.100 -j DROP```这条命令会阻止IP地址为192.168.1.100的主机访问本机的任何服务。
3. 如果想要允许特定IP地址范围的访问,可以使用以下命令:```iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT```这条命令允许来自192.168.1.100到192.168.1.200之间的主机访问本机。
4. 如果想要禁止特定端口的访问,可以使用以下命令:```iptables -A INPUT -p tcp --dport 80 -j DROP```这条命令会阻止任何主机访问本机的80端口,即禁止HTTP访问。
5. 另一种常见的配置是允许本机访问外部服务:```iptables -A OUTPUT -d 8.8.8.8 -p udp --dport 53 -j ACCEPT```这条命令允许本机访问Google Public DNS服务器的53端口,用于DNS解析。
6. 如果想要配置端口转发,可以使用以下命令:```iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080```这条命令会将来自80端口的TCP流量重定向到本机的8080端口。
7. 如果想要配置防火墙日志,可以使用以下命令:```iptables -A INPUT -j LOG --log-prefix "Firewall: "```这条命令会将所有进入本机的流量打上前缀为"Firewall: "的日志。
iptables放行某端口规则
iptables放行某端口规则一、引言iptables是Linux系统中的一个重要的网络防火墙工具,它可以对网络数据包进行过滤、转发和修改等操作。
本文将介绍如何使用iptables放行某端口。
二、iptables基础知识1. iptables命令格式iptables命令的基本格式为:iptables [-t 表名] 命令 [链名] [规则参数]其中,-t表示表名,命令表示需要执行的操作,链名表示需要操作的链,规则参数表示具体的规则设置。
2. iptables表和链iptables中有4个表:filter、nat、mangle和raw。
每个表都有自己的默认链(INPUT、OUTPUT、FORWARD),也可以创建自定义链。
filter表主要用于过滤数据包;nat表主要用于网络地址转换;mangle 表主要用于修改数据包头部信息;raw表主要用于处理特殊类型的数据包。
3. iptables规则每个iptables规则由以下几个部分组成:匹配条件:指定需要匹配哪些数据包;动作:对匹配到的数据包执行何种动作;计数器:记录匹配到该规则的数据包数量。
4. iptables动作iptables支持多种动作,常见的有ACCEPT(接收)、DROP(丢弃)、REJECT(拒绝)等。
三、放行某端口规则实现步骤1. 确认iptables是否已安装在终端中输入以下命令,如果输出类似于“iptables: command not found”的信息,则说明iptables未安装。
```iptables -V```2. 创建新链为了方便管理,我们可以创建一个新的链来存放放行某端口的规则。
在终端中输入以下命令:```iptables -N NEWCHAIN其中,NEWCHAIN为新建的链名。
3. 添加规则在新建的链中添加放行某端口的规则。
假设需要放行80端口,则可以使用以下命令:```iptables -A NEWCHAIN -p tcp --dport 80 -j ACCEPT```其中,-A表示在指定链末尾添加规则;-p表示协议类型(tcp/udp);--dport表示目标端口;-j表示动作(接收)。
Linux下iptables使用规则详解
Linux下防火墙iptables使用详解iptables规则书写规则的语法格式为:iptables [-t table] command chains [creteria] -j action-t table就是表名,filter/nat/mangle三个表中的一个,默认是filter表command告诉程序如何做,比如:插入一个规则,还是删除等chains 链,有五个,PREROUTING POSTROUTING INPUT OUTPUT FORW ARDaction 处理动作,有ACCEPT DENY DROP REJECT SNAT DNA T一、Tables(表)选项-t用来指定用哪个表,它可以是下面的任何一个,默认的是filter表iptables有Filter, NAT, Mangle, Raw四种内建表:1. Filter表Filter是iptables的默认表,它有以下三种内建链(chains):INPUT链–处理来自外部的数据。
OUTPUT链–处理向外发送的数据。
FORWARD链–将数据转发到本机的其他网卡设备上。
2. NAT表NAT表有三种内建链:PREROUTING链–处理刚到达本机并在路由转发前的数据包。
它会转换数据包中的目标IP地址(d estination ip address),通常用于DNAT(destination NAT)。
POSTROUTING链–处理即将离开本机的数据包。
它会转换数据包中的源IP地址(source ip add ress),通常用于SNAT(source NAT)。
OUTPUT链–处理本机产生的数据包。
3. Mangle表Mangle表用于指定如何处理数据包。
它能改变TCP头中的QoS位。
Mangle表具有5个内建链(cha ins):PREROUTING 、OUTPUT、FORWARD、INPUT、POSTROUTING4. Raw表Raw表用于处理异常,它具有2个内建链:PREROUTING chainOUTPUT chain二、COMMANDS(命令)command指定iptables对我们提交的规则要做什么样的操作。
如何使用iptables命令在Linux中配置和管理端口转发
如何使用iptables命令在Linux中配置和管理端口转发配置和管理端口转发是在Linux系统中使用iptables命令的一个重要任务。
iptables是Linux系统中用于管理网络数据包的防火墙的工具,它也可以用于实现端口转发功能。
本文将介绍如何使用iptables命令在Linux中配置和管理端口转发。
一、端口转发的概念端口转发是一种网络技术,在网络通信中起到重要作用。
当一台计算机收到某个端口的请求时,将该请求转发到另一台计算机的另一个端口上。
通过端口转发,可以将来自外部网络对某个端口的请求转发到内部网络上的另一台计算机。
这样,可以实现内部网络和外部网络之间的通信。
二、iptables命令简介iptables是Linux系统中用于管理网络数据包的防火墙工具。
它可以用于控制网络数据包的传输,实现网络安全和访问控制等功能。
iptables命令的基本语法如下:```iptables [选项] [链名] [规则内容]```其中,选项指定iptables的一些操作参数,链名指定要操作的链,规则内容指定要添加、删除或修改的规则。
三、配置和管理端口转发的步骤在Linux中配置和管理端口转发的过程中,可以按照以下步骤进行操作:1. 首先,需要确保系统中已经安装了iptables工具。
可以使用以下命令检查iptables是否已安装:```iptables --version```2. 确认iptables服务是否已启动。
可以使用以下命令查看iptables服务的状态:```systemctl status iptables```如果iptables服务未启动,可以使用以下命令启动iptables服务:```systemctl start iptables```3. 设置端口转发规则。
可以使用以下命令添加端口转发规则:```iptables -t nat -A PREROUTING -p 协议 -i 输入接口 -d 目标地址 --dport 源端口 -j DNAT --to-destination 目标地址:目标端口```其中,协议指定要转发的协议,输入接口指定数据包进入的接口,目标地址指定转发的目标地址,源端口指定要转发的源端口,目标端口指定转发的目标端口。
Linux命令高级技巧使用iptables命令进行网络流量控制
Linux命令高级技巧使用iptables命令进行网络流量控制iptables是Linux系统中最常用的网络过滤工具之一。
它允许系统管理员通过定义规则来控制网络流量的进出。
使用iptables命令可以有效地防止恶意攻击、保护网络安全和进行流量控制。
本文将介绍一些高级技巧,以帮助读者更好地使用iptables命令进行网络流量控制。
一、iptables概述及基本用法iptables是一款由Linux内核提供的,用于配置Linux内核的防火墙的工具。
它可以允许或拒绝数据包通过系统,同时也可以修改数据包的各种属性。
iptables具有很好的灵活性,在网络安全和流量控制中扮演着重要的角色。
基本的iptables命令用法如下:1. 开启或关闭iptables服务systemctl start iptables # 开启iptables服务systemctl stop iptables # 关闭iptables服务2. 清空已有规则iptables -F # 清空过滤规则iptables -X # 清空用户自定义链3. 默认规则设置iptables -P INPUT DROP # 设置INPUT链的默认规则为拒绝iptables -P OUTPUT ACCEPT # 设置OUTPUT链的默认规则为允许二、高级技巧之网络流量控制1. 限制特定IP地址访问iptables -A INPUT -s 192.168.1.2 -j DROP # 拒绝指定IP地址访问2. 限制特定端口的访问iptables -A INPUT -p tcp --dport 22 -j DROP # 拒绝SSH端口访问3. 允许指定IP地址访问特定端口iptables -A INPUT -s 192.168.1.2 -p tcp --dport 80 -j ACCEPT # 允许指定IP地址访问HTTP端口4. 放行特定MAC地址的流量iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT # 允许指定MAC地址的流量通过5. 源地址伪装iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE # 对指定网段的源地址进行伪装6. 限制请求频率iptables -I INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT # 限制HTTP请求频率7. 根据连接状态控制流量iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # 允许已建立或相关的连接通过8. 防止SYN Flood攻击iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 10 -j DROP # 拒绝连接数超过10个的SYN请求9. 使用IP集合进行流量控制iptables -A INPUT -m set --match-set allowed_ips src -j ACCEPT # 允许IP集合中的地址通过10. 使用日志功能iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH:" # 对SSH连接进行日志记录三、总结本文介绍了Linux系统中使用iptables命令进行网络流量控制的高级技巧。
linux配置防火墙详细步骤(iptables命令使用方法)
linux配置防⽕墙详细步骤(iptables命令使⽤⽅法)通过本教程操作,请确认您能使⽤linux本机。
如果您使⽤的是ssh远程,⽽⼜不能直接操作本机,那么建议您慎重,慎重,再慎重!通过iptables我们可以为我们的Linux服务器配置有动态的防⽕墙,能够指定并记住为发送或接收信息包所建⽴的连接的状态,是⼀套⽤来设置、维护和检查Linux内核的IP包过滤规则的命令包。
iptables定义规则的⽅式⽐较复杂,本⽂对Linux防⽕墙Iptables规则写法进⾏详细介绍:⑴、Iptables规则写法的基本格式是: Iptables [-ttable] COMMAND chain CRETIRIA -j ACTION⑵、Iptables规则相关参数说明: -t table:3个filter nat mangle :定义如何对规则进⾏管理 chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的; CRETIRIA:指定匹配标准; -j ACTION:指定如何进⾏处理;⑶、Iptables规则其他写法及说明: Iptables -L -n -v #查看定义规则的详细信息 Iptables是Linux服务器上防⽕墙配置必备的设置⼯具,是我们在做好服务器安全及部署⼤型⽹络时,常会⽤到的重要⼯具,很好的掌握iptables,可以让我们对Linux服务器整个⽹络的结构有⼀个⽐较透彻的了解,更能够很好的掌握Linux服务器的安全配置技巧。
我们来配置⼀个filter表的防⽕墙.(1)查看本机关于IPTABLES的设置情况复制代码代码如下:[root@tp ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destination</p> <p>Chain FORWARD (policy ACCEPT)target prot opt source destination</p> <p>Chain OUTPUT (policy ACCEPT)target prot opt source destination</p> <p>Chain RH-Firewall-1-INPUT (0 references)target prot opt source destinationACCEPT all -- 0.0.0.0/0 0.0.0.0/0ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0ACCEPTah--0.0.0.0/00.0.0.0/0ACCEPTudp--0.0.0.0/0224.0.0.251udpdpt:5353ACCEPTtcp--0.0.0.0/00.0.0.0/0stateNEWtcpdpt:80ACCEPTtcp--0.0.0.0/00.0.0.0/0stateNEWtcpdpt:25REJECTall--0.0.0.0/00.0.0.0/0reject-withicmp-host-prohibited可以看出我在安装linux时,选择了有防⽕墙,并且开放了22,80,25端⼝.如果你在安装linux时没有选择启动防⽕墙,是这样的复制代码代码如下:[root@tp ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destination </p> <p>Chain FORWARD (policy ACCEPT)target prot opt source destination </p> <p>Chain OUTPUT (policy ACCEPT)target prot opt source destination什么规则都没有.(2)清除原有规则.不管你在安装linux时是否启动了防⽕墙,如果你想配置属于⾃⼰的防⽕墙,那就清除现在filter的所有规则.复制代码代码如下:[root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则[root@tp ~]# iptables -X 清除预设表filter中使⽤者⾃定链中的规则我们在来看⼀下复制代码代码如下:[root@tp ~]# iptables -L -nChain INPUT (policy ACCEPT)target prot opt source destination </p> <p>Chain FORWARD (policy ACCEPT)target prot opt source destination </p> <p>Chain OUTPUT (policy ACCEPT)target prot opt source destination什么都没有了吧,和我们在安装linux时没有启动防⽕墙是⼀样的.(提前说⼀句,这些配置就像⽤命令配置IP⼀样,重起就会失去作⽤),怎么保存.复制代码代码如下:[root@tp ~]# /etc/rc.d/init.d/iptables save复制代码代码如下:[root@tp ~]# service iptables restart现在IPTABLES配置表⾥什么配置都没有了,那我们开始我们的配置吧(3)设定预设规则复制代码代码如下:[root@tp ~]# iptables -P INPUT DROP[root@tp ~]# iptables -P OUTPUT ACCEPT[root@tp ~]# iptables -P FORWARD DROP上⾯的意思是,当超出了IPTABLES⾥filter表⾥的两个链规则(INPUT,FORWARD)时,不在这两个规则⾥的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流⼊数据包⽽对于OUTPUT链,也就是流出的包我们不⽤做太多限制,⽽是采取ACCEPT,也就是说,不在着个规则⾥的包怎么办呢,那就是通过.可以看出INPUT,FORWARD两个链采⽤的是允许什么包通过,⽽OUTPUT链采⽤的是不允许什么包通过.这样设置还是挺合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,⽽且要写的规则就会增加.但如果你只想要有限的⼏个规则是,如只做WEB服务器.还是推荐三个链都是DROP.注:如果你是远程SSH登陆的话,当你输⼊第⼀个命令回车的时候就应该掉了.因为你没有设置任何规则.怎么办,去本机操作呗!(4)添加规则.⾸先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链为了能采⽤远程SSH登陆,我们要开启22端⼝.复制代码代码如下:[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT(注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这⼀部,好多⼈都是望了写这⼀部规则导致,始终⽆法SSH.在远程⼀下,是不是好了.其他的端⼝也⼀样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加⼀条链:复制代码代码如下:[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT如果做了WEB服务器,开启80端⼝.复制代码代码如下:[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT如果做了邮件服务器,开启25,110端⼝.复制代码代码如下:[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT如果做了FTP服务器,开启21端⼝复制代码代码如下:[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT如果做了DNS服务器,开启53端⼝复制代码代码如下:[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT如果你还做了其他的服务器,需要开启哪个端⼝,照写就⾏了.上⾯主要写的都是INPUT链,凡是不在上⾯的规则⾥的,都DROP允许icmp包通过,也就是允许ping,复制代码代码如下:[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话) [root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)允许loopback!(不然会导致DNS⽆法正常关闭等问题)IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)下⾯写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.减少不安全的端⼝连接复制代码代码如下:[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP有些些特洛伊⽊马会扫描端⼝31337到31340(即⿊客语⾔中的 elite 端⼝)上的服务。
高级技巧使用iptables进行网络流量控制与限速
高级技巧使用iptables进行网络流量控制与限速高级技巧:使用iptables进行网络流量控制与限速近年来,随着互联网的迅猛发展,网络流量的控制与限速变得越来越重要。
为了满足不同用户的需求,并保持网络的稳定性,管理员们需要掌握一些高级技巧来进行网络流量的控制与限速。
本文将介绍一种常见而有效的方法,即使用iptables。
一、iptables简介iptables是一个在Linux操作系统中用于管理网络流量的工具。
它允许管理员设置规则来过滤、控制和限制传入和传出的网络流量。
通过定义规则,可以实现网络流量的分类、转发、丢弃等操作,从而帮助管理员控制网络的负载和带宽分配。
二、设置基本的流量控制规则首先,我们需要了解如何设置基本的流量控制规则。
以下是一个示例,展示了如何使用iptables来限制每台主机的上传和下载速度。
1. 设置上传速度限制要限制某台主机的上传速度,可以使用以下命令:iptables -A OUTPUT -m limit --limit 100kb/s -j ACCEPT该命令将限制上传速度为每秒不超过100KB。
2. 设置下载速度限制要限制某台主机的下载速度,可以使用以下命令:iptables -A INPUT -m limit --limit 1mb/s -j ACCEPT该命令将限制下载速度为每秒不超过1MB。
三、设置高级的流量控制规则除了基本的限速功能,iptables还提供了一些高级的流量控制功能,使管理员能够更加精细地控制网络流量。
以下是一些常见的高级技巧。
1. 使用QoS(Quality of Service)进行流量控制QoS是一种网络流量管理机制,通过对不同类型的流量分配不同的优先级,以保证网络的服务质量。
使用iptables,我们可以配置QoS来实现流量的分类和优先级控制。
2. 使用连接跟踪进行应用层的流量控制iptables提供了连接跟踪机制,可以识别并跟踪不同的连接。
iptables之四表五链及相关命令使用
iptables之四表五链及相关命令使⽤打开配置⽂件sudo vim /etc/sysconfig/iptables按下a,进⼊编辑加⼊这⼀⾏-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT按下esc 退出编辑模式,输⼊ :wq 保存并退出重启防⽕墙sudo service iptables restariptables只是Linux防⽕墙的管理⼯具⽽已,位于/sbin/iptables。
真正实现防⽕墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。
iptables包含4个表,5个链。
其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度。
4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。
表的处理优先级:raw>mangle>nat>filter。
filter:⼀般的过滤功能nat:⽤于nat功能(端⼝映射,地址映射等)mangle:⽤于对特定数据包的修改raw:有限级最⾼,设置raw时⼀般是为了不再让iptables做数据包的链接跟踪处理,提⾼性能5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。
PREROUTING:数据包进⼊路由表之前INPUT:通过路由表后⽬的地为本机FORWARDING:通过路由表后,⽬的地不为本机OUTPUT:由本机产⽣,向外转发POSTROUTIONG:发送到⽹卡接⼝之前。
规则表:1.filter表——三个链:INPUT、FORWARD、OUTPUT作⽤:过滤数据包内核模块:iptables_filter.2.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT作⽤:⽤于⽹络地址转换(IP、端⼝)内核模块:iptable_nat3.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD作⽤:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么⿇烦,咱们设置策略时⼏乎都不会⽤到它)4.Raw表——两个链:OUTPUT、PREROUTING作⽤:决定数据包是否被状态跟踪机制处理内核模块:iptable_raw(这个是REHL4没有的,不过不⽤怕,⽤的不多)规则链:1.INPUT——进来的数据包应⽤此规则链中的策略2.OUTPUT——外出的数据包应⽤此规则链中的策略3.FORWARD——转发数据包时应⽤此规则链中的策略4.PREROUTING——对数据包作路由选择前应⽤此链中的规则(记住!所有的数据包进来的时侯都先由这个链处理)5.POSTROUTING——对数据包作路由选择后应⽤此链中的规则(所有的数据包出来的时侯都先由这个链处理)规则表之间的优先顺序:Raw——mangle——nat——filter规则链之间的优先顺序(分三种情况):第⼀种情况:⼊站数据流向从外界到达防⽕墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进⾏路由选择(判断该数据包应该发往何处),如果数据包的⽬标主机是防⽕墙本机(⽐如说Internet⽤户访问防⽕墙主机中的web服务器的数据包),那么内核将其传给INPUT链进⾏处理(决定是否允许通过等),通过以后再交给系统上层的应⽤程序(⽐如Apache服务器)进⾏响应。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1iptables与firewalld的关系
RHEL7.0以后,使用firewalld服务取代了iptables服务,但是依然可以使用iptables服务,只是默认不开启了,iptables和firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具,是操作系统上的一种服务,将定义好的规则交给内核中的netfilter(网络过滤器)来读取,从而实现防火墙的功能,firewalld和iptables除了可以可以在inbond和outbond方向做策略限制以外,还能实现snat和dnat功能。
注意:firewalld和iptables同时只能运行一种服务,否则会出现不可预知的情况
2iptables安装
RHEL7.0以后,iptables默认不开启,需要安装iptables服务
安装完成后
3实验场景
3.1源地址转换
需求:
源地址1(172.16.202.15)需要访问公网目的地址(192.168.111.245),源地址2(172.16.202.16)不需要访问公网。
内网两台服务器,分别为源地址1(172.16.202.15)和源地址2(172.16.202.16),公网出口处有一台centos 7.1的双网卡服务器,一个接口接内网(172.16.202.14),一个接口接外网(192.168.111.63)。
源地址1上首先需要保证和iptables服务器能够互通,并且有去往192.168.111.245的路由,路由下一跳需要指向iptables内网接口(172.16.202.14),由iptables服务器做源nat,把源地址(172.16.202.15)nat成公网接口地址(192.168.111.63),从而可以访问目的地址(192.168.111.245)。
一、首先在源地址1服务器上配置去往192.168.111.245的路由
ip route add 192.168.111.245 via 172.16.202.14 //临时添加路由,重启网卡或者系统后,路由会丢失,建议做路由固化路由固化:在/etc/sysconfig/network-scripts目录下,新建一个route配置文件,vi route-eth0,新增一条路由,192.168.111.245/32 via 172.16.202.14,重启网卡即可生效
二、iptables服务器上,配置snat策略
iptables -t nat -A POSTROUTING -s 172.16.202.15/32 -d 192.168.111.245/32 -j SNAT --to 192.168.111.63
注释:
-t table table to manipulate (default: `filter') //
这个选项指定命令要操作的匹配包的表。
如果内核被配置为自动加载模块,这时若模块没有加载,系统将尝试为该表加载适合的模块。
这些表如下:filter,这是默认的表,包含了内建的链INPUT (处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理本地生成的包)。
nat //这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。
-A chain //在所选择的链末添加规则POSTROUTING //先路由再做nat
-s //源IP地址
-d //目的IP地址
-j SNAT //做源地址转换
--to //转换后的IP地址
此时,从源地址1服务器上去ping 192.168.111.245,结果如下:
提示destination host prohibited,说明路由可达,但是在中间
路径上被防火墙阻止了,源地址1本地服务器上,因为是出接口方向流量,所以默认情况下,不会被阻止,所以只能在iptables服务器上,被防火墙默认规则阻止了,所以只需要在iptables服务器上放开防火墙限制即可
三、iptables服务器上放开防火墙规则
前面提到过,iptables上默认的filter表中,分为三个规则链:INPUT,OUTPUT和FORWARD,其中INPUT负责处理入方向的包,OUTPUT负责处理本地生成出方向的包,FORWARD负责经过经过的数据包,从网络拓扑上可以看出来,源地址1(172.168.202.15)去访问目的地址(192.168.111.245),是经过iptables服务器,所以调用的iptables服务器的FORWARD表,所以只需要在iptables 服务器上FORWARD表中,增加一条规则即可
iptables -I FORWARD -j ACCEPT
如果不确定是调用的哪个规则链,也可以在INPUT和OUTPUT 方向都加上规则链,iptables -I INPUT -j ACCEPT,iptables -I OUTPUT -j ACCEPT
注意:以上二三两个步骤添加的nat规则和防火墙规则,都是临时的,重启iptables服务或重启系统后,nat规则和防火墙规则会丢失,可以使用命令保存:service iptables save,也可以手动修改配置文件,配置文件如下vi /etc/sysconfig/iptables:
四、打开ip_forward
出于安全考虑,Linux系统默认是禁止数据包转发的。
所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据包,这个功能需要手动打开。
修改配置文件:vi /etc/sysctl.conf,增加一条:net.ipv4.ip_forward = 1
然后输入sysctl –p,使配置生效
注意:有些centos7.X的版本和centos6.x的版本开启路由转发的配置文件不一样,如果修改/etc/sysctl.conf不生效的话,需要修改下面这个配置文件,同样是在结尾增加一条:net.ipv4.ip_forward = 1
结果验证:
源地址1服务器(172.16.202.15)可以通目的地址(192.168.111.245),源地址2服务器(172.16.202.16)不能通目的地址
源地址1服务器:
源地址2服务器:
如果源地址2服务器(172.16.202.16)也需要和目的地址服务器(192.168.111.245)通信,只需要在iptables服务器上添加一条nat规则即可
iptables -t nat -A POSTROUTING -s 172.16.202.16/32 -d 192.168.111.245/32 -j SNAT --to 192.168.111.63
3.2目的地址转换
需求:
当clientA访问iptables服务器192.168.111.63的666端口时,目的nat 到serverA上,当当clientA访问iptables服务器192.168.111.63的777端口时,目的nat到serverB上(为了演示nat的效果,在server A和server B 上都开启web服务,访问666和777端口时,分别跳转到serverA的80和serverB的80端口上)
一、打开ip.forward功能
打开ip.forward功能请参照3.1章节
二、在iptables的filter表中的Forward链中添加规则:iptables -I
FORWARD -j ACCEPT //参照3.1章节
三、配置DNAT
iptables -t nat -A PREROUTING -p tcp -d 192.168.111.63 --dport 666 -j DNAT --to-destination 172.16.202.15:80 iptables -t nat -A PREROUTING -p tcp -d 192.168.111.63 --dport 777 -j DNAT --to-destination 172.16.202.16:80 注释:
当访问192.168.111.63:666端口时,做DNAT,跳转到172.16.202.15:80端口上
当访问192.168.111.63:777端口时,做DNAT,跳转到172.16.202.16:80端口上
四、ServerA和ServerB分别开启web服务,并且需要关闭iptables或
firewalld服务,或者在在iptables的filter表中的Input链中添加规则:
iptables -I INPUT -j ACCEPT
结果验证:
当访问192.168.111.63:666端口时,跳转到服务器A的80端口上
当访问192.168.111.63:777端口时,跳转到服务器B的80端口上。