Linux iptables 防火墙常见的基本问题整理及答案

这篇文章记录了Linux  iptables 防火墙常见的基本问题和答案,有助于你更好更快掌握 和 工作面试问及的iptables 问题。


1.您听说过Linux中的iptables和防火墙吗?是否知道它们是什么以及用途是什么?



答: 我使用iptables已经很长时间了,我知道iptables和防火墙。iptables是主要用C编程语言编写的应用程序,并根据GNU通用公共许可证发行。为系统管理的观点而写,如果iptables 1.4.21是最新的稳定版本。iptables可以被视为UNIX之类的操作系统的防火墙,可以更准确地称为iptables / netfilter。管理员通过控制台/ GUI前端工具与iptables进行交互,以将防火墙规则添加并定义到预定义的表中。Netfilter是内置在内核中的模块,用于执行过滤工作。

Firewalld是RHEL / CentOS 7中过滤规则的最新实现(可能在我可能不知道的其他发行版中实现)。它已经替换了iptables接口并连接到netfilter。


2.您是否为iptables或Linux命令行使用过基于GUI的前端工具?

答: 尽管我同时使用了基于GUI的iptables前端工具(例如Shorewall)和GUI中的Webmin以及通过控制台直接访问iptables。而且我必须承认,通过Linux控制台直接访问iptables可以以更高的灵活性和更好地了解后台发生的事情(如果没有其他方面)的形式为用户提供强大的功能。GUI适用于新手管理员,而控制台适用于经验丰富的人。


3. iptables和firewalld之间的基本区别是什么?


答: iptables和Firewalld具有相同的目的(数据包过滤),但方法不同。iptables每次更改时都会刷新整个规则集,这与Firewalld不同。通常,iptables配置的位置位于“ / etc / sysconfig / iptables ”,而Firewalld配置位于“ / etc / firewalld / ”,它是一组XML文件。与iptables的配置相比,配置基于XML的Firewalld更容易,但是使用包过滤应用程序(即iptables和Firewalld)都可以实现相同的任务。Firewalld在其内部运行iptables以及它自己的基于XML的命令行界面和配置文件。




4.如果有机会,您是否会在所有服务器上用防火墙替换iptables?


答: 我对iptables很熟悉,并且可以正常工作,如果没有什么需要动态的firewalld,似乎没有理由将我的所有配置从iptables迁移到firewalld。在大多数情况下,到目前为止,我从未见过iptables造成问题。信息技术的一般规则也说“如果不损坏,为什么要修理”。但是,这是我个人的想法,如果本组织打算用Firewalld替换iptables,我将不介意实施firewalld。




5.您似乎对iptables充满信心,而且即使我们在服务器上使用iptables也有加分。

iptables中使用哪些表?简要描述iptables中使用的表及其支持的链。


  1. Nat Table

  2. Mangle Table

  3. Filter Table

  4. Raw Table

Nat Table:    主要用于网络地址转换。伪装的数据包将按照表中的规则更改其IP地址。流中的数据包仅遍历Nat表一次。即,如果伪装了来自一包封包的封包,则它们在流中的其余包将不再遍历此表。建议不要在此表中进行过滤。NAT表支持的链为PREROUTING链,POSTROUTING链和OUTPUT链。


Mangle Table: 顾名思义,此表用于处理数据包。用于特殊包装更改。它可用于更改不同数据包及其标头的内容。摇篮桌不能用于伪装。支持的链是PREROUTING链,OUTPUT链,正向链,INPUT链,POSTROUTING链。


Filter Table: 过滤器表是iptables中使用的默认表。它用于过滤数据包。如果未定义任何规则,则将“过滤器表”作为默认表,并根据该表进行过滤。支持的链是输入链,输出链,前进链。


Raw Table :当我们要配置之前被豁免的软件包时,原始表开始起作用。它支持PREROUTING链和OUTPUT链。


6.简要介绍一下iptables中的目标值(可以在target中指定)以及它们的作用!



答: 以下是我们可以在iptables的target中指定的目标值:


接受:接受数据包


队列:Paas打包到用户空间(应用程序和驱动程序所在的地方)


DROP:丢包


返回:将控制权返回到调用链,并停止执行链中当前数据包的下一组规则。



7.让我们转向iptables的技术方面,通过技术我的意思是实用的。

您将如何检查在CentOS中安装iptables所需的iptables rpm?



答: iptables rpm包含在标准CentOS安装中,我们不需要单独安装它。我们可以将rpm检查为:

#rpm -qa iptablesiptables-1.4.21-13.el7.x86_64

如果您需要安装它,可以做一些yum。

#yum install iptables-services




8.如何检查并确保iptables服务是否正在运行?

答: 要检查iptables的状态,可以在终端上运行以下命令。

# service iptables status			[On CentOS 6/5]
# systemctl status iptables			[On CentOS 7]

如果未运行,则可以执行以下命令。

---------------- On CentOS 6/5 ---------------- 
# chkconfig --level 35 iptables on
# service iptables start

---------------- On CentOS 7 ---------------- 
# systemctl enable iptables 
# systemctl start iptables

我们还可以检查iptables模块是否已加载,如下所示:

# lsmod | grep ip_tables
9.您将如何查看iptables中定义的当前规则?

答: iptables中的当前规则可以简单地查看:

# iptables -L

输出

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
10.您将如何刷新所有iptables规则或特定链?

答: 要刷新特定的iptables链,可以使用以下命令。

 # iptables --flush OUTPUT

刷新所有iptables规则。

# iptables --flush
11.在iptables中添加一条规则,以接受来自受信任IP地址(例如192.168.0.7)的数据包

答: 只需运行以下命令即可实现上述方案。

# iptables -A INPUT -s 192.168.0.7 -j ACCEPT

我们可能在源代码中包含标准斜杠或子网掩码,如下所示:

# iptables -A INPUT -s 192.168.0.7/24 -j ACCEPT 
# iptables -A INPUT -s 192.168.0.7/255.255.255.0 -j ACCEPT
12.如何在iptables中向ACCEPT,REJECT,DENY和DROP ssh服务添加规则。

答: 希望ssh在端口22上运行,这也是ssh的默认端口,我们可以将规则添加到iptables中,如下所示:

要接受的SSH服务(22端口)的TCP数据包。

# iptables -A INPUT -s -p tcp --dport 22 -j ACCEPT

要拒绝对SSH服务(22端口)的TCP数据包。

# iptables -A INPUT -s -p tcp --dport 22 -j REJECT

要DENY的SSH服务(22端口)的TCP数据包。

 # iptables -A INPUT -s -p tcp --dport 22 -j DENY

为了DROP TCP的SSH服务(22端口)的数据包。

 # iptables -A INPUT -s -p tcp --dport 22 -j DROP
13.让我给你一个场景。假设有一台机器的本地IP地址为192.168.0.6。您需要阻止端口21、22、23和80与计算机的连接。你会怎么做?

我需要使用的是带有iptables的“ multiport ”选项,后面是要阻止的端口号,上述情况可以一条命令即可实现。


# iptables -A INPUT -s 192.168.0.6 -p tcp -m multiport --dport 21,22,23,80 -j DROP

可以使用以下命令检查书面规则。

# iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
DROP       tcp  --  192.168.0.6          anywhere             multiport dports ssh,telnet,http,webcache

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination




标签: 网络安全

作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇:Linux 系统 16 个网络监控工具
下一篇:如何在Linux中安装Mautic Marketing Automation工具

发表评论

阿里云2021年 618 年中钜惠活动