linux防火墙iptables,iptables防火墙配置

各位老铁们好,相信很多人对linux防火墙iptables都不是特别的了解,因此呢,今天就来为大家分享下关于linux防火墙iptables以及iptables防火墙配置的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

LinuxIPTables:如何添加防火墙规则

本文介绍了如何使用“iptables-A”命令添加iptables防火墙规则。

“-A”用于追加。如果它让你更容易记住“-A”作为添加规则(而不是附加规则),那就没问题了。但是,请记住,“-A”在链的末尾添加了规则。

同样,记住-A在末尾添加规则非常重要。通常,最后一条规则是丢弃所有数据包。如果您已经有一个丢弃所有数据包的规则,并且如果您尝试在命令行中使用“-A”来创建新规则,您最终会在当前的“丢弃所有数据包”规则之后添加新规则,这将使您的新规则几乎毫无用处。

一旦您掌握了iptables,并且当您在生产中实现它时,您应该使用shell脚本,您可以在其中使用-A命令添加所有规则。在那个shell脚本中,你的最后一行应该总是“丢弃所有数据包”规则。当您想要添加任何新规则时,请修改该shell脚本并将您的新规则添加到“丢弃所有数据包”规则之上。

句法:

iptables-Achainfirewall-rule

-A链-指定应附加规则的链。例如,对传入数据包使用INPUT链,对传出数据包使用OUTPUT。

firewall-rule–各种参数构成防火墙规则。

如果您不知道链是什么意思,最好先阅读iptables基础知识。

防火墙规则参数

以下参数可用于所有类型的防火墙规则。

-p用于协议

指示规则的协议。

可能的值为tcp、udp、icmp

使用“all”允许所有协议。当您不指定-p时,默认情况下将使用“所有”协议。使用“all”并始终指定协议并不是一个好习惯。

使用名称(例如:tcp)或编号(例如:6表示tcp)作为协议。

/etc/protocols文件包含所有允许的协议名称和编号。

你也可以使用--protocol

-s是源

指示数据包的来源。

这可以是IP地址、网络地址或主机名

例如:-s192.168.1.101表示具体的ip地址

对于网络掩码,使用/mask。例如:“-s192.168.1.0/24”表示该网络的网络掩码为255.255.255.0。这匹配192.168.1.x网络。

当您不指定来源时,它将匹配所有来源。

您还可以使用–src或–source

-d是目的地

指示数据包的目的地。

这与“-s”相同(除了它代表目标主机、IP地址或网络)

您还可以使用–dst或–destination

-j是目标

j代表“跳转到目标”

这指定了匹配此防火墙规则的数据包需要发生什么。

可能的值为ACCEPT、DROP、QUEUE、RETURN

您还可以指定其他用户定义的链作为目标值。

-i用于接口

i代表“输入接口”

您可能会忽略这一点并假设“-i”用于接口。请注意-i和-o都用于接口。但是,-i用于输入接口,-o用于输出接口。

指示传入数据包通过INPUT、FORWARD和PREROUTING链进入的接口。

例如:-ieth0表示此规则应考虑通过接口eth0传入的数据包。

如果您不指定-i选项,则系统上所有可用的接口都将被考虑用于输入数据包。

您也可以使用–in-interface

-o用于输出接口

o代表“输出接口”

指示通过INPUT、FORWARD和PREROUTING链发送传出数据包的接口。

如果您不指定-o选项,则系统上所有可用的接口都将被视为输出数据包。

你也可以使用--out-interface

防火墙参数的附加选项

上面的一些防火墙参数依次具有可以与它们一起传递的自己的选项。以下是一些最常见的选项。

要使用这些参数选项,您应该在防火墙规则中指定相应的参数。例如,要使用“–sport”选项,您应该在防火墙规则中指定“-ptcp”(或“-pudp”)参数。

注意:所有这些选项前面都有两个破折号。例如,sport前面有两个连字符。

–sport用于源端口(用于-ptcp或-pudp)

默认情况下,所有源端口都匹配。

您可以指定端口号或名称。例如,要在防火墙规则中使用SSH端口,请使用“–sport22”或“–sportssh”。

/etc/services文件包含所有允许的端口名称和编号。

在规则中使用端口号比使用端口名更好(为了性能)。

要匹配端口范围,请使用冒号。例如,22:100匹配从22到100的端口号。

您也可以使用–source-port

–dport用于目标端口(用于-ptcp或-pudp)

一切都与–sport相同,除了这是针对目标端口。

您也可以使用–destination-port

–tcp-flags用于TCP标志(用于-ptcp)

这可以包含以逗号分隔的多个值。

可能的值有:SYN、ACK、FIN、RST、URG、PSH。您也可以使用ALL或NONE

–icmp-type用于ICMP类型(用于-picmp)

当您使用icmp协议“-picmp”时,您还可以使用“-icmp-type”参数指定ICMP类型。

例如:“-icmp-type0”用于“EchoReply”,“-icmp-type8”用于“Echo”。

允许传入SSH连接的示例防火墙规则

现在您了解了防火墙规则的各种参数(及其选项),让我们构建一个示例防火墙规则。

在这个例子中,让我们只允许传入的SSH连接到服务器。所有其他连接都将被阻止(包括ping)。

警告:使用防火墙规则可能会导致您的系统无法访问。如果您不知道自己在做什么,您可能会将自己(和其他所有人)锁定在系统之外。因此,仅在没有人使用的测试系统上进行所有学习,并且如果您被锁定,您可以访问控制台以重新启动iptables。

1.删除现有规则

如果您已经有一些iptables规则,请在删除现有规则之前进行备份。

删除所有现有规则并允许防火墙接受所有内容。使用我们之前讨论过的iptablesflush清理所有现有规则并从头开始。

测试以确保您能够从外部ssh和ping此服务器。

完成此示例后,您将只能通过SSH连接到此服务器。您将无法从外部ping此服务器。

2.只允许SSH

仅允许与此服务器的传入SSH连接。您可以从任何地方通过ssh连接到此服务器。

iptables-AINPUT-ieth0-ptcp--dport22-jACCEPT

上面的iptables命令有以下4个组件。

“-AINPUT”——这表明我们正在向INPUT链追加(或添加)一条新规则。因此,此规则适用于传入流量。

“-ieth0”–将根据此规则检查通过接口eth0的传入数据包。

“-ptcp–dport22”–此规则适用于TCP数据包。这有一个名为“-dport22”的tcp选项,它表示服务器上此规则的目标端口是22(即ssh)。

“-jACCEPT”——跳转到接受,它只是接受数据包。

简单来说,上述规则可以表述为:所有通过eth0forssh传入的数据包都将被接受。

3.丢弃所有其他数据包

一旦您指定了接受数据包的自定义规则,您还应该有一个默认规则来丢弃任何其他数据包。

这应该是您在INPUT链中的最后一条规则。

要丢弃所有传入的数据包,请执行以下操作。

iptables-AINPUT-jDROP4.查看SSH规则和测试

要查看当前的iptables防火墙规则,请使用“iptables-L”命令。

#iptables-LChainINPUT(policyACCEPT)targetprotoptsourcedestinationACCEPTtcp--anywhereanywheretcpdpt:sshDROPall--anywhereanywhere

从上面的输出中可以看出,它依次具有以下两条规则。

接受所有传入的ssh连接

丢弃所有其他数据包。

与其从命令行添加防火墙规则,不如创建一个包含规则的shell脚本,如下所示。

#viiptables.shiptables-AINPUT-ieth0-ptcp--dport22-jACCEPTiptables-AINPUT-jDROP#sh-xiptables.sh+iptables-AINPUT-ieth0-ptcp--dport22-jACCEPT+iptables-AINPUT-jDROP#iptables-LINPUTChainINPUT(policyACCEPT)targetprotoptsourcedestinationACCEPTtcp--anywhereanywheretcpdpt:sshDROPall--anywhereanywhere

与iptablesappend/add命令类似,iptables可用的其他命令很少。

作者:Tiamo_T。

linux中iptables防火墙怎么设置

Linux系统内核内建了netfilter防火墙机制。Netfilter(数据包过滤机制),所谓的数据包过滤,就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决该连接为放行或阻挡的机制。Netfilter提供了iptables这个程序来作为防火墙数据包过滤的命令。Netfilter是内建的,效率非常高。

我们可以通过iptables命令来设置netfilter的过滤机制。

iptables里有3张表:

> Filter(过滤器),进入Linux本机的数据包有关,是默认的表。

> NAT(地址转换),与Linux本机无关,主要与Linux主机后的局域网内计算机相关。

> Mangle(破坏者),这个表格主要是与特殊的数据包的路由标志有关(通常不用涉及到这个表的修改,对这个表的修改破坏性很大,慎改之)。

每张表里都还有多条链:

Filter:INPUT, OUTPUT, FORWARD

NAT:PREROUTING, POSTROUTING, OUTPUT

Mangle:PREROUTING, OUTPUT, INPUT, FORWARD

iptables命令的使用

基本格式:iptables [-t table]-CMD chain CRETIRIA-j ACTION

-t table:3张表中的其中一种filter, nat, mangle,如果没有指定,默认是filter。

CMD:操作命令。查看、添加、替换、删除等。

chain:链。指定是对表中的哪条链进行操作,如filter表中的INPUT链。

CRETIRIA:匹配模式。对要过滤的数据包进行描述

ACTION:操作。接受、拒绝、丢弃等。

查看

格式:iptables [-t table]-L [-nv]

修改

添加

格式:iptables [-t table]-A chain CRETIRIA-j ACTION

将新规则加入到表table(默认filter)的chain链的最后位置

插入

格式:iptables [-t table]-I chain pos CRETIRIA-j ACTION

将新规则插入到table表(默认filter)chain链的pos位置。原来之后的规则都往后推一位。pos的有效范围为:1~ num+1

替换

格式:iptables [-t table]-R chain pos CRETIRIA-j ACTION

用新规则替换table表(默认filter)chain链的pos位置的规则。pos的有效范围为:1~ num

删除

格式:iptables [-t table]-D chain pos

删除table表(默认filter)chain链的pos位置的规则。pos的有效范围为:1~ num

包匹配(CRETIRIA)

上面没有介绍CRETIRIA的规则,在这小节里详细介绍。包匹配就是用于描述需要过滤的数据包包头特殊的字段。

指定网口:

-i:数据包所进入的那个网络接口,例如 eth0、lo等,需与INPUT链配合

-o:数据包所传出的那么网络接口,需与OUTPUT链配合

指定协议:

-p:tcp, udp, icmp或all

指定IP网络:

-s:来源网络。可以是IP或网络

IP: 192.168.0.100

网络: 192.168.0.0/24或 192.168.0.0/255.255.255.0均可

可以在前加!表示取反

-d:目标网格。同-s

指定端口:

--sport:指定来源端口。可以是单个端口,还可以是连续的端口,例如:1024:65535。

--dport:指定目标端口。同--sport

注意:要指定了tcp或udp协议才会有效。

指定MAC地址:

-m mac--mac-source aa:bb:cc:dd:ee:ff

指定状态:

-m state--state STATUS

STATUS可以是:

> INVALID,无效包

> ESTABLISHED,已经连接成功的连接状态

> NEW,想要新立连接的数据包

> RELATED,这个数据包与主机发送出去的数据包有关,(最常用)

例如:只要已建立连接或与已发出请求相关的数据包就予以通过,不合法数据包就丢弃

-m state--state RELATED,ESTABLISHED

ICMP数据比对

ping操作发送的是ICMP包,如果不想被ping到,就可以拒绝。

--icmp-type TYPE

TYPE如下:

8 echo-request(请求)

0 echo-reply(响应)

注意:需要与-p icmp配合使用。

操作(ACTION)

DROP,丢弃

ACCEPT,接受

REJECT,拒绝

LOG,跟踪记录,将访问记录写入/var/log/messages

保存配置

将新设置的规则保存到文件

格式:iptables-save [-t table]

将当前的配置保存到/etc/sysconfig/iptables

其它

格式:iptables [-t table] [-FXZ]

-F:请除所有的已制订的规则

-X:除掉所有用户“自定义”的chain

-Z:将所有的统计值清0

linux防火墙关闭和开启命令

关闭防火墙:[root@centos6~]#serviceiptablesstop;开启防火墙:[root@centos6~]#serviceiptablesstart。重启防火墙:[root@centos6~]#serviceiptablesrestart;永久关闭防火墙:[root@centos6~]#chkconfigiptablesoff;永久关闭后重启:[root@centos6~]#chkconfigiptableson。防火墙是架设在不同信任级别的计算机网络之间的—种检测和控制设备是一个控制和监测的瓶颈点(chokepoint),不同级别网络间的所有数据都必须经过检查,实现边界防护(perimeterdefence)根据安全策略配置为允许、拒绝或代理数据的通过必要时,提供NAT、VPN功能。

阅读剩余
THE END