13 个关于 Linux iptables 防火墙的面试问题
Nishita Agarwal,一位Tecmint 访客,与我们分享了她刚刚在浦那一家私营托管公司接受面试的经历(问答) ,印度。她被问到了很多关于各种主题的问题,但她是 iptables 方面的专家,她想与其他可能会使用 iptables 的人分享这些问题及其答案(她给出的)。在不久的将来接受采访。
所有问题及其答案均根据Nishita Agarwal的记忆重写。
“大家好!我的名字是西塔·阿加瓦尔。我已攻读技术学士学位。我的专业领域是 UNIX,自从我听到 UNIX 的变体(BSD、Linux)以来,它就让我着迷。我有1年以上存储经验。我一直在寻找工作变动,最终在印度浦那的一家托管公司工作。 ”
这是我面试时被问到的问题的集合。根据我的记忆,我仅记录了与 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. 您是否使用过某种基于 GUI 的 iptables 或 Linux 命令行前端工具?
答案: 虽然我已经使用了基于 GUI 的 iptables 前端工具,例如 Shorewall 与 GUI 中的 Webmin 结合使用,并通过控制台直接访问 iptables。而且我必须承认通过 Linux 控制台直接访问 iptables 给用户带来了巨大的力量,其形式是更高的灵活性和更好地理解后台发生的事情(如果不是其他的话)。 GUI 适合新手管理员,而控制台则适合有经验的管理员。
3. iptables 和firewalld 之间的基本区别是什么?
答案: iptables 和 firewalld 具有相同的目的(数据包过滤),但采用不同的方法。与firewalld 不同,iptables 每次进行更改时都会刷新整个规则集。通常 iptables 配置的位置位于“/etc/sysconfig/iptables”,而firewalld 配置位于“/etc/firewalld/”,它是一组 XML 文件.与配置 iptables 相比,配置基于 XML 的 firewalld 更容易,但是使用数据包过滤应用程序(即 iptables 和 firewalld)可以完成相同的任务。 Firewalld 在其引擎盖下运行 iptables 以及它自己的命令行界面和基于 XML 的配置文件(如上所述)。
4. 如果有机会的话,您会在所有服务器上用firewalld 替换iptables 吗?
答案: 我熟悉 iptables 并且它正在工作,如果没有什么需要防火墙的动态方面,似乎没有理由将我的所有配置从 iptables 迁移到防火墙。在大多数情况下,到目前为止我从未见过 iptables 造成问题。此外,信息技术的一般规则是“如果没有损坏,为什么要修复”。然而,这是我个人的想法,如果组织打算用firewalld 取代 iptables,我绝不会介意实施firewalld。
5. 您似乎对 iptables 充满信心,而且优点是我们在我们的服务器上使用了 iptables。
iptables 中使用了哪些表?简要描述 iptables 中使用的表及其支持的链。
答案: 感谢您的认可。转到问题部分,iptables 中使用了四个表,即它们是:
- 纳特表
- 破碎桌
- 过滤表
- 原始表
Nat 表:Nat 表主要用于网络地址转换。伪装的数据包会根据表中的规则更改其 IP 地址。流中的数据包仅遍历 Nat Table 一次。即,如果来自数据包喷射的数据包被伪装,那么流中的其余数据包将不会再次遍历该表。建议不要在此表中进行过滤。 NAT Table 支持的链有 PREROUTING Chain、POSTROUTING Chain 和 OUTPUT Chain。
Mangle Table:顾名思义,该表用于损坏数据包。用于特殊包装变更。它可用于更改不同数据包及其标头的内容。 Mangle 表不能用于伪装。支持的链有 PREROUTING Chain、OUTPUT Chain、Forward Chain、INPUT Chain、POSTROUTING Chain。
过滤表:过滤表是 iptables 中使用的默认表。它用于过滤数据包。如果没有定义规则,则将 Filter Table 作为默认表,并在此表的基础上进行过滤。支持的链有INPUT链、OUTPUT链、FORWARD链。
原始表:当我们想要配置之前豁免的包时,原始表就会起作用。它支持PREROUTING链和OUTPUT链。
6. iptables 中的目标值(可以在 target 中指定)是什么以及它们的作用,简单点!
答案: 以下是我们可以在 iptables 的 target 中指定的目标值:
- ACCEPT:接受数据包
- QUEUE :Paas包到用户空间(应用程序和驱动程序所在的地方)
- DROP:丢弃数据包
- RETURN :将控制权返回给调用链并停止对链中当前数据包执行下一组规则。
7. 让我们转向 iptables 的技术方面,技术我的意思是实用。
您将如何检查在 CentOS 中安装 iptables 所需的 iptables rpm?
答案: iptables rpm 包含在标准 CentOS 安装中,我们不需要单独安装。我们可以检查转速:
rpm -qa iptables
iptables-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 服务的 tcp 数据包(端口 22)。
iptables -A INPUT -s -p tcp --dport 22 -j ACCEPT
拒绝 ssh 服务(端口 22)的 tcp 数据包。
iptables -A INPUT -s -p tcp --dport 22 -j REJECT
拒绝 ssh 服务(端口 22)的 tcp 数据包。
iptables -A INPUT -s -p tcp --dport 22 -j DENY
DROP ssh 服务(端口 22)的 tcp 数据包。
iptables -A INPUT -s -p tcp --dport 22 -j DROP
13. 让我给你一个场景。假设有一台机器,其本地 IP 地址是 192.168.0.6。您需要阻止端口 21、22、23 和 80 上与您的计算机的连接。你会怎么做?
答案: 好吧,我需要使用的是带有 iptables 的“多端口”选项,后跟要阻止的端口号,以上场景可以一次性实现,如下所示.
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
面试官:这就是我想问的。您是我们不想错过的有价值的员工。我会把你的名字推荐给HR。如果您有任何问题可以问我。
作为一名候选人,我不想终止对话,因此不断询问如果被选中我将处理的项目以及公司的其他空缺职位是什么。更何况HR轮并不难破解,我得到了机会。
另外,我还要感谢 Avishek 和 Ravi(我长期以来一直是他们的朋友)花时间记录我的采访。
朋友们!如果您接受过这样的采访,并且愿意向全球数百万 Howtoing 读者分享您的采访经历?然后将您的问题和答案发送至[email ,或者您可以使用以下表格提交您的面试经历。
谢谢你!保持联系。另外,请告诉我我是否可以比我所做的更正确地回答问题。