Linux中國

關於Linux防火牆iptables的面試問答

所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。

「嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的Pune公司。」

下面是我在面試中被問到的問題的集合。我已經把我記憶中有關iptables的問題和它們的答案記錄了下來。希望這會對您未來的面試有所幫助。

1. 你聽說過Linux下面的iptables和Firewalld么?知不知道它們是什麼,是用來幹什麼的?

答案 : iptables和Firewalld我都知道,並且我已經使用iptables好一段時間了。iptables主要由C語言寫成,並且以GNU GPL許可證發布。它是從系統管理員的角度寫的,最新的穩定版是iptables 1.4.21。iptables通常被用作類UNIX系統中的防火牆,更準確的說,可以稱為iptables/netfilter。管理員通過終端/GUI工具與iptables打交道,來添加和定義防火牆規則到預定義的表中。Netfilter是內核中的一個模塊,它執行包過濾的任務。

Firewalld是RHEL/CentOS 7(也許還有其他發行版,但我不太清楚)中最新的過濾規則的實現。它已經取代了iptables介面,並與netfilter相連接。

2. 你用過一些iptables的GUI或命令行工具么?

答案 : 雖然我既用過GUI工具,比如與Webmin結合的Shorewall;以及直接通過終端訪問iptables,但我必須承認通過Linux終端直接訪問iptables能給予用戶更高級的靈活性、以及對其背後工作更好的理解的能力。GUI適合初級管理員,而終端適合有經驗的管理員。

3. 那麼iptables和firewalld的基本區別是什麼呢?

答案 : iptables和firewalld都有著同樣的目的(包過濾),但它們使用不同的方式。iptables與firewalld不同,在每次發生更改時都刷新整個規則集。通常iptables配置文件位於『/etc/sysconfig/iptables『,而firewalld的配置文件位於『/etc/firewalld/『。firewalld的配置文件是一組XML文件。以XML為基礎進行配置的firewalld比iptables的配置更加容易,但是兩者都可以完成同樣的任務。例如,firewalld可以在自己的命令行界面以及基於XML的配置文件下使用iptables。

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 鏈。

Filter表 : Filter表是iptables中使用的默認表,它用來過濾網路包。如果沒有定義任何規則,Filter表則被當作默認的表,並且基於它來過濾。支持的鏈有INPUT 鏈,OUTPUT 鏈,FORWARD 鏈。

Raw表 : Raw表在我們想要配置之前被豁免的包時被使用。它支持PREROUTING 鏈和OUTPUT 鏈。

6. 簡要談談什麼是iptables中的目標值(能被指定為目標),他們有什麼用

答案 : 下面是在iptables中可以指定為目標的值:

  • ACCEPT : 接受包
  • QUEUE : 將包傳遞到用戶空間 (應用程序和驅動所在的地方)
  • DROP : 丟棄包
  • RETURN : 將控制權交回調用的鏈並且為當前鏈中的包停止執行下一調用規則

7. 讓我們來談談iptables技術方面的東西,我的意思是說實際使用方面

你怎麼檢測在CentOS中安裝iptables時需要的iptables的rpm?

答案 : iptables已經被默認安裝在CentOS中,我們不需要單獨安裝它。但可以這樣檢測rpm:

# rpm -qa iptables

iptables-1.4.21-13.el7.x86_64

如果您需要安裝它,您可以用yum來安裝。

# yum install iptables-services

8. 怎樣檢測並且確保iptables服務正在運行?

答案 : 您可以在終端中運行下面的命令來檢測iptables的狀態。

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

如果iptables沒有在運行,可以使用下面的語句

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

---------------- 在CentOS 7下 ---------------- 
# systemctl enable iptables 
# systemctl start iptables 

我們還可以檢測iptables的模塊是否被載入:

# lsmod | grep ip_tables

9. 你怎麼檢查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 --flush OUTPUT

要刷新所有的規則,可以用:

# iptables --flush

11. 請在iptables中添加一條規則,接受所有從一個信任的IP地址(例如,192.168.0.7)過來的包。

答案 : 上面的場景可以通過運行下面的命令來完成。

# iptables -A INPUT -s 192.168.0.7 -j ACCEPT 

我們還可以在源IP中使用標準的斜線和子網掩碼:

# 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中添加規則來ACCEPT ssh的tcp包(在22號埠上)。

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

REJECT ssh服務(22號埠)的tcp包。

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

DENY ssh服務(22號埠)的tcp包。

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

DROP ssh服務(22號埠)的tcp包。

# iptables -A INPUT -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 22,23,80,8080 -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(我的朋友)花時間幫我整理我的面試。

朋友!如果您有過類似的面試,並且願意與數百萬Tecmint讀者一起分享您的面試經歷,請將您的問題和答案發送到admin@tecmint.com

謝謝!保持聯繫。如果我能更好的回答我上面的問題的話,請記得告訴我。

via: http://www.tecmint.com/linux-firewall-iptables-interview-questions-and-answers/

作者:Avishek Kumar 譯者:wwy-hust 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...
    Linux中國

    SSL/TLS 加密新紀元 – Lets Encrypt

    根據 Let's Encrypt 官方博客消息,Let's Encrypt 服務將在下周(11 月 16 日)正式對外開放。 Let's Encrypt 項目是由互聯網安全研究小組(ISRG,Internet Security Research Group)主導並開發的一個新型數字證書認證機構(CA,Certificate ...

    Linux 的 sort 命令的七個有趣實例(二)

    在上一篇文章里,我們已經探討了關於sort命令的多個例子,如果你錯過了這篇文章,可以點擊下面的鏈接進行閱讀。今天的這篇文章作為上一篇文章的繼續,將討論關於sort命令的剩餘用法,與上一篇一起作為Linux sort命令的完整指南。 Linux 的 sort命令的14個有用的範例(一) 在我們繼續深入之前,先創建一個文本文檔month.txt,並且將上一次給出的數據填進去。 $ echo -e "marndecnoctnsepnfebnaug" month.txt ...