iptables开放指定端口

iptables开放指定端口,第1张

由于业务的需要, MySQL,Redis,mongodb等应用的端口需要我们手动 *** 作开启

下面以 MySQL 为例,开启 3306 端口的远程访问,其他端口类似。

添加如下一行配置:

注意:如果已经存在该端口的配置,修改 DROP 为 ACCEPT:

如果 *** 作比较频繁或者命令的方式比较繁琐,我这里提供一个简单的设置脚本,可以上传到服务器的对应目录,直接运行输入端口号即可

假设我们使用xshell通过test账号进行ssh登录

注意:如果需要通过公网访问,请与对应的云服务器提供商的控制台设置安全组放行(阿里云、腾讯云等)

【出处】 http://blog.51cto.com/wwdhks/1154032

【作者】张天成, zhangtiancheng@gmail.com

iptables *** 作的是2.4以上内核的netfilter,所以需要 linux的内核在2.4以上。其功能与安全性远远比其前辈 ipfwadm, ipchains强大,iptables大致是工作在OSI七层的二、三、四层,其前辈ipchains不能单独实现对tcp/udp port以及对mac地址的的定义与 *** 作,所以我想ipchains应该是仅仅工作在三层的。

我们先简单介绍一下netfilter的大致工作流程,也就是一个数据包(或者叫分组、packet,我个人习惯叫包)在到达linux的网络接口的时候 (网卡)如何处理这个包,然后再介绍一下如何用iptables改变或者说控制对这个数据包进行 *** 作。

netfilter内部分为三个表,分别是 filter,nat,mangle,每个表又有不同的 *** 作链(Chains)。

下面有一张图清晰的描绘了netfilter对包的处理流程(该图摘自网上,不知作者是谁,在此深表敬意!),一般情况下,我们用不到这个mangle表,在这里我们就不做介绍了。

当一个包来到Linux的网络接口的时候先执行PREROUTING *** 作,依次经过mangle、nat的PREROUTING链。从这个Chain的名字我们可以看出,这个Chain是在路由之前(pre-routing)要过的。为什么要在路由之前过呢?因为在这个链里面我们对包的 *** 作是DNAT,也就是改变目的地址和(或端口),通常用在端口转发(修改P

ort),或者NAT到内网的DMZ区(修改地址)。

环境配置如下:

我们怎么样能让Internet用户通过公网IP访问内部的web服务器呢? 在这个PREROUTING链上定义一个规则,把访问60.1.1.1:80的用户的目的地址改变一下,改变为10.1.1.2:80,这样就实现了internet用户对内网服务器的访问了。当然,这个端口是比较灵活的,我们可以定义任何一个端口的转发,不一定是80-->80。具 体的命令我们在下面的例子中介绍,这里我们只谈流程与概念上的实现方法。

好了,我们接着往下走,来到图中下方的那个菱形(FORWARD),转发!

默认情况下,当Linux收到了一个目的IP地址不是本地IP的包,Linux会把这个包丢弃。因为默认情况下,Linux的三层包转发功能是关闭的,如果要让我们的Linux实现转发,则需要打开这个转发功能,可以 改变它的一个系统参数,使用如下命令打开转发功能:

处理顺序上,依然是mangle优先、随后流经filter的FORWOARD链。我们 *** 作任何一个链都会影响到这个包的命运,在 下面的介绍中,我们就忽略掉mangle表,我们基本用不到 *** 作它,所以我们假设它是透明的。假设这个包被我们的规则放过去了,也就是ACCEPT了,它将进入POSTROUTING部分。

注意!这里我注意到一个细节问题,也就是上面的图中数据包过了FORWARD链之后直接进入了POSTROUITNG 链,我觉得这中间缺少一个环节,也就是ROUTING。对于转发的包来说,Linux同样需要在选路(路由)之后才能将它送出,这个图却没有标明这一点,我认为它是在过了ROUTING之后才进入的POSTROUITNG。当然了,这对于我们讨论iptables的过滤转发来说不是很重要,只是我觉得流程上有这个问题,还是要说明 一下。

POSTROUTING链是数据包要送出这台Linux的最后一个环节了,也是极其重要的一个环节。这个时候Linux已经完成了对这个包的路由(选路工作),已经找到了合适的接口送出这个包了,在这个链里面我们要进行重要的 *** 作,就是被Linux称为 SNAT的一个动作,修改源IP地址!

为什么修改源IP地址?最常见的就是我们内网多台机器需要共享一个或几个公网IP访问 Internet。因为我们的内网地址是私有的,假如就让Linux给路由出去,源地址也不变,这个包能访问到目的地,但却回不来。因为 Internet上的路由节点不会转发私有地址的数据包,也就是说,不用合法IP,我们的数据包有去无回。

有人会说:“既然是这样,我就不用私有IP了,我自己分配自己合法的地址不行吗?那样包就会回来了吧?”。答案是否定的,IP地址是ICANN来分配的,Internet上的路由器会把这个返回包送到合法的IP去,你同样收不到。而你这种行为有可能被定义为一种ip欺骗,很多设备会把这样的包在接入端就给滤掉了。

那么Linux如何做SNAT 呢?环境配置如下:

当内网节点10.1.1.12需要访问202.2.2.2的web服务器,发送数据包时先路由到10.1.1.1节点,随后(在10.1.1.1节点配置SNAT)将源IP改为60.1.1.1后送出。同时在ip_conntrack表里面做一个记录:内网的哪一个ip的哪个端口访问的这个web服务器,自己把它的源地址改成多少了,端口改成多少了,以便这个web服务器返回数据包的时候linux将它准确的送回给发送请求的这个pc.

大体的数据转发流程我们说完了,我们看看iptables使用什么样的参数来完成这些 *** 作。在描述这些具体的 *** 作之前,我还要说几个我对iptables的概念的理解(未必完全正确),这将有助于大家理解这些规则,以实现更精确的控制。

上文中我们提到过,对包的控制是由我们在不同的Chain(链)上面添加不同的规则来实现的。那么既然叫链,一定就是一条或者多条规则组成的了,这时就有一个问题了,如果多个规则对同一种包进行了定义,会发生什么事情呢?

在Chain中,所有的规则都是从上向下来执行的,也就是说,如果匹配了第一行,那么就按照第一行的规则执行,一行一行的往下找,直到找到 符合这个类型的包的规则为止。如果找了一遍没有找到符合这个包的规则怎么办呢?iptables里面有一个概念,就是Policy(策略),如果找了一遍找不到符合处理这个包的规则,就按照policy来办。iptables 使用-P来设置Chain的策略。

对链的 *** 作就那么几种:

比如我们要添加一个规则到filter表的FORWARD链:

在iptables中,默认的表名就是filter,所以这里可以省略-t filter直接写成:

iptables中的匹配参数: 我们在这里就介绍几种常用的参数,详细地用法可以man iptables看它的联机文档,你会有意外的收获。

环境信息:

或者使用如下命令

配置完成,在内网节点(192.168.234.72)发起的服务器节点(8.1.234.73)请求,会由外网节点修改源ip后转发出去。

在8.1.234.73上启动nginx服务,在192.168.234.72上通过curl访问效果如下:

可以将上述配置写到一个文件中,以便重复执行。

除此之外,也可以精确控制他的访问地址,比如我就允许10.1.1.99访问3.3.3.3这个ip

或者只允许他们访问80端口

更多的控制可以自己灵活去做,或者查阅iptables的联机文档。

环境信息:

确保服务监听的是ip是内网ip

或者使用如下命令

同样,可以将这部分配置放到一个文件中:

OK,至此配置完成,我们可以尝试在外网节点(8.1.234.73)上,通过网关节点(8.1.234.71)访问内网(192.168.234.72)提供的服务(80端口)。

在前面的配置中,内网节点将互通的外网节点做为网关,由网关节点修改目的地址,源地址保持不变。其实,还存在另外一种配置方式,同时修改源地址、目的地址。将内网地址中的默认路由配置删除

增加一个SNAT配置

这条命令不太好懂?其实很简单,如果使用这条命令,那么你的web server不需要再设置默认网关,就能收到这个请求,只要他和linux的lan ip地址是能互访的(也就是说web server和Linux的Lan ip在一个广播域)。我们在根据上面的netfilter流程图来分析这个包到底被我们怎么样了:

修改目的地址,于是这个包变成了8.1.234.73:1333-->192.168.234.72:80。

进入route box选路,找到合适路径,此时这个包依旧是8.1.234.73:1333-->192.168.234.72:80。

原来是一个SNAT,改你的源地址,于是这个包变成了192.168.234.71:xxxx(随机端口)-->192.168.234.72:80。

看了上面的两个例子,不知道大家是否清楚了iptables的转发流程,希望对大家有所帮助。

下面来讲前面提到的ESTABLISHED,RELATED规则是怎么回事,到底有什么用处。

我们知道,网络的访问是双向的,也就是说一个Client与Server之间完成数据交换需要双方的发包与收包。在netfilter中,有几种状态,也就是New, Established,Related,Invalid。

当一个客户端,在本文例一中,内网的一台机器访问外网,我们设置了规则允许他出去,但是没有设置允许回来的规则啊,怎么完成访问呢?这就是netfilter的 状态机制 ,当一个Lan用户通过这个Linux访问外网的时候,它发送了一个请求包,这个包的状态是New(配置了内网IP的转发规则,放行)。当外网回包的时候他的状态就是Established,所以,Linux知道,哦,这个包是我的内网的一台机器发出去的应答包,他就放行了。

而外网试图对内发起一个新的连接的时候,他的状态是New,所以Linux压根不去理会它。这就是我们为什么要加这一句的原因。

还有那个Related,他是一个关联状态,什么会用到呢?sftp、ftp都会用到,因为他们的传输机制决定了,它不像http访问那样,Client_IP: port-->Server:80然后server:80-->Client_IP:port,ftp使用tcp21建立连接,使用20端口发送数据,其中又有两种方式,一种主动active mode,一种被动passive mode。主动模式下,client使用port命令告诉server我用哪一个端口接受数据,然后server主动发起对这个端口的请求。被动模式下,server使用port命令告诉客户端,它用那个端口监听,然后客户端发起对他的数据传输,所以这对于一个防火墙来说就是比较麻烦的事情,因为有可能会有New状态的数据包,但是它又是合理的请求,这个时候就用到这个Related状态了,他就是一种关联,在linux中,有个叫 ftp_conntrack的模块,它能识别port命令,然后对相应的端口进行放行。

对了,还有几个在实际中比较实用(也比较受用:-))的命令参数,写出来供大家参考

问题一:win7防火墙怎么设定开放端口 控制面板\系统和安全\Windows 防火墙, 点击左边的高级设置,里面应当是你想要的

然后再在高级设置里面新建规则啊

问题二:怎么设置防火墙允许端口 控制面板-〉防火墙-〉例外-〉添加端口

问题三:如何在防火墙上设置禁止端口 只要厂没允许打开的都是默认为禁止,你不用刻意去禁止,只要你不开放端口就行,放火墙有时会提示什么应用程序访问网络并通过什么端口,只要你不点允许就好了,端口就不会被打开

要不然你可以用TCP-IP筛选端口:

1、右键点击“网上邻居”,选择“属性”,然后双击“本地连接”(如果是拨号上网用户,选择“我的连接”图标),d出“本地连接状态”对话框。

2、点击[属性]按钮,d出“本地连接属性”,选择“此连接使用下列项目”中的“Internet协议(TCP/IP)”,然后点击[属性]按钮。

3、在d出的“Internet协议(TCP/IP)”对话框中点击[高级]按钮。在d出的“高级TCP/IP设置”中,选择“选项”标签,选中“TCP/IP筛选”,然后点击[属性]按钮。

4、在d出的“TCP/IP筛选”对话框里选择“启用TCP/IP筛选”的复选框,然后把左边“TCP端口”上的“只允许”选上

问题四:windows防火墙怎么打开端口 依次点击“开始”―“控制面板”―“windows防火墙”

先点击“打开或关闭windows防火墙”将windows防火墙打开

点击“高级设置”

设置入站规则(入站规则:别人电脑访问自己电脑;出站规则:自己电脑访问别人电脑),点击“新建规则”

点选“端口”,单击 “下一步”

选择相应的协议,如添加8080端口,我们选择TCP,在我写本地端口处输入8080

选择“允许连接”,点击“下一步”

勾选“域”,“专用”,“公司”,点击“下一步”

输入端口名称,点“完成”即可

问题五:Win10系统防火墙中怎样开放端口 *** 作步骤:

1、WIN+X调出系统配置菜单,选择控制面板;

2、选择windows 防火墙;

3、点击左侧的“高级设置”选项;

4、设置入站规则(入站规则:别人电脑访问自己电脑;出站规则:自己电脑访问别人电脑),点击“新建规则”,点选“端口”,单击 “下一步”;

5、选择相应的协议,如添加8080端口,我们选择TCP,在我写本地端口处输入8080;

6、选择“允许连接”,点击“下一步”;

7、勾选“域”,“专用”,“公司”,点击“下一步”;

8、输入端口名称,点“完成”即可。

9、具体效果如下,已经在防火墙里开放单独端口。

通过上面的 *** 作,我们就可以为一些特殊软件在端口需要进行开放端口!而不会因此被限制了!

问题六:怎样打开防火墙屏蔽的端口? BT下载加速之 “穿墙术”:BT下载现已成为更多宽带用户重要的下载手段之一,但为什么许多有公网IP的用户在用BT下载时速度还那么慢呢?10K左右,还比不上FTP下载。其实,一个重要的原因是用户的机器上安装了防火墙,防火墙阻挡了来自外网的连接,别的种子不能主动地连接到你的机器上,当然下载速度不会快起来的。在安装有防火墙的机器要想BT下载速度加快的话,就要使BT下载软件穿透防火墙的阻隔,来一个红杏出墙。下面就给大家介绍一下怎样使BT练就有“穿墙术”。

下面在各种常见防火墙中的设置均是以风播1.0.0.7为例。风播使用的默认监听端口是6699,我们要设置防火墙对6699的端口不进行拦截。当然在软件中我们是可以自己指定其监听端口的。

一、如果是XP自带防火墙

桌面右下解图标(两个小电视状)上点击右键,选择“更改windows防火墙设置”,打开例外选项,查看funpaleyr有没有被勾选注意啦:请去掉常规选项里“不允许例外”的勾选

问题七:liunx怎么在防火墙上开放端口 ptables -A INPUT -i eth0 -p TCP --dport 59001 -j ACCEPT

-----

视实际情况

一、查看哪些端口被打开 netstat -anp

二、关闭端口号:iptables -A INPUT -p tcp --drop 端口号-j DROP

iptables -A OUTPUT -p tcp --dport 端口号-j DROP

三、打开端口号:iptables -A INPUT -ptcp --dport 端口号-j ACCEPT

四、以下是linux打开端口命令的使用方法。

nc -lp 23 &(打开23端口,即telnet)

netstat -an | grep 23 (查看是否打开23端口)

五、linux打开端口命令每一个打开的端口,都需要有相应的监听程序才可以

问题八:linux防火墙怎么设置单独开放一个端口 iptables -A INPUT -i eth0 -p TCP --dport 59001 -j ACCEPT

贰----

视实际情况

问题九:windows服务器怎么查看防火墙开启端口 Windows2008R2系统防火墙在,控制面板里面去找(还可以到服务器管理器里面找)

点击进入08防火墙设置选项卡,注意一下【高级设置】里面去设置

如图,在防火墙设置右上方,有【创建规则】

入站规则

进入规则向导页面,如图选择【端口】类型

本案例以开放webmail自定义端口为例,选择特定端口如8008

*** 作设置

然后在 *** 作设置里面,选择【允许连接】

安全域选择

接下来就是重点了,需要允许应用到的规则域区域。建议全部选择,

然后是规则的名称,可以任意取名。建议加上备注,比如XX服务器XX应用

检查配置(出站和入站的区别就是端口的指向)

设置好之后,如图点击入站规则里面查看。可以看到刚刚的配置设置

出站规则

出站规则设置方法是一样的,注意一下。协议类型,有TCP. UDP 你可以选择所有及 ALL类型

测试端口

设置好服务器防火墙端口开放之后,再内网的还需要在路由器上设置映射。可以通过站长工具在线测试,如图

问题十:防火墙应对网站服务器开放哪些端口 不知道你的防火墙是型号的。 血到教训告诉你。一个80端口足可以黑了你的站。SQL注入也是通过WEB的80端口进行的。他一旦上传了木马。盗取了admin 权限。FTP的权限。就可以对你的服务器进行提权。。

所以要问你硬件防火墙。还有策略是怎么做的。

例如我公司用的netscreen 我用的VIP做的策略。。映射端口80 。同时的策略是禁止外网写入到服务器的。因为公司没有留言。BBS等互动的。所以可以这么做。 如果FTP。我会用到VPN客户端进行。这样就没问题了。

我同学的CISCO 用了其他的策略。限定访问的数据和端口。

――――――――――――――――

如果能够帮助你,麻烦采纳

你的采纳是我答题的动力

――谢谢你给我的支持!!!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11446689.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存