当前位置: 首页 > 科技观察

13Linux防火墙'iptables'面试问答

时间:2023-03-12 22:59:44 科技观察

NishitaAgarwal,Tecmint用户,将分享她刚面试过的一家公司(印度浦那的一家私人公司)的面试经历。她在面试中被问到很多不同的问题,但她是iptables专家,所以她想把这些关于iptables的问题和相应的答案分享给以后可能面试的人。所有的问题和相应的答案都是根据NishitaAgarwal的记忆改写的。“嗨,朋友们!我叫NishitaAgarwal。我获得了理学学士学位,我的专业是UNIX及其变体(BSD、Linux)。它们一直让我着迷。我有1年的存储经验,我正在寻找职业转变并将在印度浦那的一家公司工作。”下面是我面试时被问到的问题合集,我记下了我记得的关于iptables的问题和答案,希望对你以后的面试有帮助。1.你听说过Linux下的iptables和Firewalld吗?你知道它们是什么以及它们的用途吗?回答:我知道iptables和Firewalld,我已经使用iptables一段时间了。iptables主要是用C编写的,并在GNUGPL许可下发布。它是从从系统管理员的角度来看,最新的稳定版本是iptables1.4.21。iptables在类UNIX系统中通常用作防火墙,更准确地说,它可以称为iptables/netfilter。管理员通过终端/GUI与iptables交互用于向预定义表添加和定义防火墙规则的工具。Netfilter是内核中执行过滤任务的模块。Firewalld是RHEL/CentOS7(可能还有其他发行版,但我不知道)中过滤规则的最新实现).它取代了iptables接口,并与netfilter连接。2.您是否使用过iptables的任何GUI或命令行工具?答:虽然两种GUI工具我都用过,比如Shorewall结合Webmin;和直接通过终端访问iptables,我必须承认,通过Linux终端直接访问iptables为用户提供了更高级的灵活性,并且在幕后更好地理解。GUI适合初级管理员,而终端适合有经验的管理员。3.那么iptables和firewalld的基本区别是什么?回答:iptables和firewalld都有相同的目的(过滤),但它们以不同的方式实现。iptables与firewalld不同,它会在每次发生更改时刷新整个规则集。通常iptables配置文件位于'/etc/sysconfig/iptables',而firewalld配置文件位于'/etc/firewalld/'。firewalld配置文件是一组XML文件。firewalld基于XML的配置比iptables更容易,但两者都可以完成相同的任务。例如,firewalld可以使用带有自己的命令行界面的iptables以及基于XML的配置文件。4.如果有机会,您会在所有服务器上用firewalld替换iptables吗?回答:我熟悉iptables,它工作正常。如果不需要firewalld的动态特性,那么就没有理由将所有配置从iptables移动到firewalld。通常,到目前为止,我还没有看到iptables造成太大的麻烦。IT技术的一般规则也说“为什么要修复未损坏的东西?”。以上是我自己的想法,但如果组织愿意用firewalld替换iptables,我不介意。5.你似乎对iptables很有信心。巧合的是,我们的服务器也在使用iptables。iptables使用的表是什么?请简要描述iptables使用的表及其支持的链。答:谢谢您的赞赏。至于你的问题,iptables使用的表有四种,分别是:Nat表Mangle表Filter表Raw表Nat表:Nat表主要用于网络地址转换。根据表中的每条规则修改网络包的IP地址。流中的数据包只遍历Nat表一次。例如,如果通过某个接口的数据包被修饰(修改了IP地址),则流中的其余数据包将不会遍历此表。一般不推荐在该表中进行过滤,NAT表支持的链称为PREROUTING链、POSTROUTING链和OUTPUT链。Mangle表:顾名思义,该表用于纠正网络数据包。它用于修改特定的包。它能够修改不同包的标题和内容。Mangle表不能用于地址伪装。支持的链包括PREROUTING链、OUTPUT链、Forward链、Input链和POSTROUTING链。过滤表:过滤表是iptables中默认使用的表,用于过滤网络数据包。如果未定义规则,则Filter表用作默认表并基于它进行过滤。支持的链有INPUT链、OUTPUT链和FORWARD链。原始表:当我们要配置以前豁免的包时使用原始表。它支持PREROUTING链和OUTPUT链。6.简单说一下iptables中的目标值是什么(可以指定为目标)以及它们有什么用处(应用程序和驱动程序所在的地方)DROP:丢弃数据包RETURN:将控制权返回给调用链并停止执行当前链下数据包的下一个调用规则7.说说iptables的技术面,我的意思是在实际使用中,在CentOS安装iptables时如何检测需要的iptables的rpm?答:CentOS默认已经安装了iptables,我们不需要单独安装。但是你可以这样查看rpm:#rpm-qaiptablesiptables-1.4.21-13.el7.x86_64如果需要安装,可以使用yum安装。#yum安装iptables-services8。如何检测并确保iptables服务正在运行?答:您可以在终端中运行以下命令来检查iptables的状态。#servicestatusiptables[OnCentOS6/5]#systemctlstatusiptables[OnCentOS7]如果iptables没有运行,可以使用下面的语句----------------在CentOS6/5下----------------#chkconfig--level35iptableson#serviceiptablesstart----------------onCentOS7Next--------------#systemctlenableiptables#systemctlstartiptables我们还可以检查iptables模块是否加载:#lsmod|grepip_tables9。HowdoyoucheckthecurrentdefinitioniniptablesWhatabouttherules?答案:当前的规则可以简单的用下面的命令查看:#iptables-L示例输出ChainINPUT(policyACCEPT)targetprotoptsourcedestinationACCEPTall--anywhereanywherestateRELATED,ESTABLISHEDACCEPTicmp--anywhereanywhereACCEPTall--anywhereanywhereACCEPTtcp--anywhereanywherestateNEWtcpdpt:sshREJECTall--anywhereanywherereject-withicmp-host-prohibitedChainFORWARD(policyACCEPT)targetprotoptsourcedestinationREJECTall--anywhereanywherereject-withicmp-host-prohibitedChainOUTPUT(policyACCEPT)targetprotoptsourcedestination10。你如何刷新所有iptables规则或特定链?答:您可以使用以下命令刷新特定链。#iptables--flushOUTPUT要刷新所有规则,您可以使用:#iptables--flush11。请在iptables中添加一条规则,以接受来自受信任IP地址(例如192.168.0.7)的所有数据包。回答:上面的场景可以通过运行下面的命令来完成。#iptables-AINPUT-s192.168.0.7-jACCEPT我们还可以在源IP中使用标准斜杠和子网掩码:#iptables-AINPUT-s192.168.0.7/24-jACCEPT#iptables-AINPUT-s192.168.0.7/255.255.255.0-j接受12。如何在iptables中为ACCEPT、REJECT、DENY和DROPssh服务添加规则?答:希望ssh运行在22端口,这也是ssh的默认端口,我们可以在iptables中添加规则ACCEPTsshtcppackets(onport22)。#iptables-AINPUT-s-ptcp--dport22-jACCEPTREJECTssh服务的tcp包(端口22)。#iptables-AINPUT-s-ptcp--dport22-jREJECTDENYssh服务(端口22)tcp包。#iptables-AINPUT-s-ptcp--dport22-jDENYDROPssh服务的tcp包(端口22)。#iptables-AINPUT-s-ptcp--dport22-jDROP13。再给你一个场景,假设有一台计算机,本地IP地址为192.168.0.6。您需要阻止端口21、22、23和80上的连接,您会怎么做?回答:此时,我需要做的就是使用iptables中的“多端口”选项,并在其后加上要阻止的端口号。上面的场景可以用下面语句解决:#iptables-AINPUT-s192.168.0.6-ptcp-mmultiport--dport22,23,80,8080-jDROP可以用下面语句查看写入规则。#iptables-LChainINPUT(policyACCEPT)targetprotoptsourcedestinationACCEPTall--anywhereanywherestateRELATED,ESTABLISHEDACCEPTicmp--anywhereanywhereACCEPTall--anywhereanywhereACCEPTtcp--anywhereanywherestateNEWtcpdpt:sshREJECTall--anywhereanywherereject-withicmp-host-prohibitedDROPtcp--192.168.0.6anywheremultiportdportsssh,telnet,http,webcacheChainFORWARD(policyACCEPT)targetprotoptsourcedestinationREJECTall--anywhereanywherereject-withicmp-host-prohibitedChainOUTPUT(policyACCEPT)targetprotoptsourcedestination面试官:好吧,我就问这么多。你是一位有价值的员工,我们不会想念你的。我会把你的名字推荐给HR。如果您有任何问题,请问我。作为一名应聘者,我不想通过不断询问公司未来的项目和其他事情来打断愉快的谈话。且不说HR轮会不会更难,总之,我得到了机会。我还要感谢Avishek和Ravi(我的朋友)抽出时间帮助我组织采访。朋友!如果您有过类似的采访经历,并希望与数百万Tecmint读者分享您的采访经历,请将您的问题和答案发送至admin@tecmint.com。谢谢!保持联系。如果我能更好地回答我上面的问题,请记得让我知道。