这篇文章记录了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中使用的表及其支持的链。
- Nat Table
- Mangle Table
- Filter Table
- 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
微信扫描下方的二维码阅读本文