如何在Linux安装防火墙,你可能不会见到这么详细的教程。( 二 )


-j Drop
这指定了iptable应该如何处理数据包 。
简而言之,上面的命令在输入链中添加了一条规则,即如果任何数据包到达其源地址为192.168.1.3,则丢弃该数据包,这意味着不允许数据包到达计算机 。
执行上述命令后,可以使用以下命令查看更改:-
sudo iptables -L
这个输出量将是:-

如何在Linux安装防火墙,你可能不会见到这么详细的教程。

文章插图
2.执行接受规则:
如果要向网络的特定端口添加规则,则可以使用以下命令 。
语法:
sudo iptables -A/-I chain_name -s source_ip -p protocol_name --dport port_number -j Action_to_take
-p协议名称:-
此选项用于匹配遵循协议名称的数据包 。
-p protocol_name:
只有当您给出-p protocol_name选项时,才能使用此选项 。它指定查找到端口“port_number”的数据包 。
例子:
假设我们希望保持SSH端口打开(在本指南中假设默认SSH端口是22),在上述情况下,我们阻止了192.168.1.3网络 。也就是说,我们只想允许那些来自192.168.1.3的数据包,而这些包想进入端口22 。
我们该怎么办:
让我们试试下面的命令:
sudo iptables -A INPUT -s 192.168.1.3 -p tcp --dport 22 -j ACCEPT
上面的命令表示查找来自IP地址192.168.1.3的数据包,该数据包具有TCP协议,并且谁想在我的计算机的端口22上传递一些东西 。如果你找到了这些包,然后接受它们 。
这个输出量命令是:-
如何在Linux安装防火墙,你可能不会见到这么详细的教程。

文章插图
但是,上面的命令有一个问题 。它实际上不允许数据包 。你能猜到是什么吗?
提示:-它与访问规则的方式有关 。
请记住,正如我们前面所讨论的,您在iptables中设置的规则是从上到下检查的 。无论何时将数据包处理到顶级规则之一,都不会使用较低的规则进行检查 。
好吧!答案是:
在我们的例子中,数据包是用最上面的规则检查的,该规则规定,iptable必须丢弃192.168.1.3中的任何数据包 。因此,一旦通过这个规则访问了数据包,它就不会进入允许分组到端口22的下一个规则 。因此失败了 。
又能做些什么呢?
最简单的答案是,将规则添加到链的顶部 。你要做的就是把-A选项改为-I选项 。
这样做的命令是:-
sudo iptables -I INPUT -s 192.168.1.3 -p tcp --dport 22 -j ACCEPT
现在使用-L命令检查iptable配置 。产出如下:
如何在Linux安装防火墙,你可能不会见到这么详细的教程。

文章插图
因此,来自192.168.1.3的任何数据包都会首先检查是否到达端口22,如果不是,则检查
在链中的下一个规则中运行 。否则它可以通过防火墙 。
现在您已经了解了如何阻止和接受传入的通信量,下面让我们看看如何删除规则:
3.从iptable中删除一条规则:
语法:
sudo iptables -D chain_name rule_number
例子:
如果我们要删除接受到端口22的通信并在前一节中添加的规则,那么:-
sudo iptables -D INPUT 1
记住规则号从1开始
这个输出量 :
如何在Linux安装防火墙,你可能不会见到这么详细的教程。

文章插图
4.保存配置:
如果要在不是服务器的个人计算机上实现此部分,则此部分是不必要的,但如果您正在服务器上实现防火墙,那么您的服务器很可能会损坏,并且你可能会丢失你所有的数据 。所以,保存配置总是更好的 。
有很多方法可以做到这一点,但我发现的最简单的方法是Iptable-持久性包裹 。您可以从Ubuntu的默认存储库下载该包:
sudo apt-get update
sudo apt-get install iptables-persistent
安装完成后,可以使用以下命令保存配置:-
sudo invoke-rc.d iptables-persistent save
本教程到此结束 。
让我们简要介绍到目前为止学到的所有命令:-
1.列出国际表的现行规则:sudo iptables -L
2.若要更改默认策略,请执行以下操作:sudo iptables -P Chain_name Action_to_be_taken
例子:
sudo iptables -P FORWARD DROP
3.清除/冲洗所有规则sudo iptables -F
4.在链尾附加一条规则:sudo iptables -A
5.在链的开头附加一条规则:sudo iptables -I
6.执行一项接受规则:sudo iptables -A/-I chain_name -s source_ip -j action_to_take
例子:
iptables -A INPUT -s 192.168.1.3 -j ACCEPT
7.执行一项中止规则:sudo iptables -A/-I chain_name -s source_ip -j action_to_take
例子:-
iptables -A INPUT -s 192.168.1.3 -j DROP
8.关于具体港口/议定书的执行规则:sudo iptables -A/-I chain_name -s source_ip -p protocol_name --dport port_number -j Action_to_take


推荐阅读