Linux運維:iptables面試題


Linux運維:Iptables防火牆面試題

Ago linux運維群: 93324526 筆者QQ:578843228


第1章 (一)基礎口試題

1.1 詳述 iptales 工作流程以及規則過濾順序?

1.防火牆是一層層過濾的。實際是按照配置規則的順序從上到下,從前到后進行過濾的。
2.如果匹配上了規則,即明確表明是阻止還是通過,此時數據包就不能向下匹配新規則了。
3.如果所有規則中沒有明確表明是阻止還是通過這個數據包,也就是沒有匹配上規則,向下進行匹配,直到匹配默認規則得到明確的阻止還是通過。
4.防火牆的默認規則是對應鏈的所有的規則執行完才會執行的,(最后執行的規則)

1.2 iptables 有幾個表以及每個表有幾個鏈?

   filter:INPUT,OUTPUT,FORWARD
   NAT   :POSTROUTING,PREROUTING,OUTPUT
   mangle:INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING
   raw   : PREROUTING, OUTPUT

1.3 iptables 的幾個表以及每個表對應鏈的作用,對應企業應用場景?

#####filter:

強調:主要和主機自身有關,真正負責主機防火牆功能的(過濾流入流出主機的數據包。)filter表iptables默認使用的表。這個表輕易了三個鏈(chains)
企業工作場景:主機防火牆
INPUT:負責過濾所有目標地址是本機地址的數據包,通俗的講,就是過濾進入主機的數據包
FORWARD:負責轉發流經主機的數據包。起轉發的作用,和nat關系很大,
OUTPUT:處理所有源地址是本機地址的數據包,通俗的講,就是處理從主機發出去的數據包

強調:對於filter表的控制是實現本機防火牆功能的重要手段,特別是對INPUT鏈的控制

#####nat表:

負責網絡地址轉換,即來源與目的ip地址的port的轉換,應用:和主機本身無關。一般用於局域網共享上網或特殊的端口轉換服務相關。
NAT功能一般企業工作場景
1.用於做企業路由(zebra)或網關(iptables),共享上網(postrouting)
2.做內部外部IP地址一對一映射(dmz),硬件防火牆映射IP到內部服務器,ftp服務(prerouting)
3.web,單個端口的映射。直接映射80端口(prerouting)
這個表定義了三個鏈(chains),nat功能就相當於網絡的acl控制。和網絡交換機類似
OUTPUT:和主機發出去的數據包有關,改變主機發出數據包的目標地址。
PREROUTING:在數據包到達防火牆時進行路由判斷之前執行的規則。作用時改變數據包的目的地址,目的端口等。
POSTROUTING:在數據包離開防火牆時進行路由判斷之后執行的規則,作用改變數據包的源地址,源端口等。。例如:筆記本和虛擬機都是192.168.1.0/24,就是出網的時候被我們企業路由器把源地址改成了公網地址了。生產應用:局域網共享上網。
另外兩個,raw和mangle在工作不常用,不做過多的解釋了

1.4 畫圖講解 iptables 包過濾經過不同表和鏈簡易流程圖並闡述。

1.5 請寫出查看 iptables 當前所有規則的命令。

iptables -nL [ --line-num ]
【】表示可選項

1.6 禁止來自 10.0.0.188 ip 地址訪問 80 端口的請求

iptables -I INPUT -p tcp -s 10.0.0.188 --dport 80 -j DROP

1.7 如何使在命令行執行的 iptables 規則永久生效?

1.          /etc/init.d/iptables save
2.          寫入配置文件/etc/sysconfig/iptables
            並重啟服務 /etc/init.d/iptables reload

1.8 實現把訪問 10.0.0.8:80 的請求轉到 172.16.1.17:80

iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.17:80

1.9 實現 172.16.1.0/24 段所有主機通過 10.0.0.8 外網 IP 共享上網。

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.8

1.10 描述 tcp 3 次握手及四次斷開過程?

1.10.1 三次握手

1.	由主機A發送建立TCP連接的請求報文,其中報文中包含seq序列號,是由發送端隨機生成的,並且還將報文中SYN字段置為1,表示需要建立TCP連接
2.	主機B會回復A發送的TCP連接請求報文,其中包含seq序列號,是由回復端隨機生成的,並且將回復報文的SYN字段置1,而會產生ACK字段,ACK字段數值是在A發過來的seq序列號基礎上加1進行回復,以便A收到信息時,知曉自已的TCP建立請求已得到了驗證
3.	A端收到B端發送的TCP建立驗證請求后,會使自已的序列號加1表示,並且再次回復ACK驗證請求,在B端發送過來的seq基礎上加1,進行回復

1.10.2 四次揮手

1.	主機A發送斷開TCP連接請求的報文,其中報文中包含seq序列號,是由發送端隨機生成的,並且還將報文中FIN字段置為1,表示需要斷開TCP連接
2.	主機B會回復A發送的TCP斷開請求報文,其中包含seq序列號,是則回復端隨機生成的,而且會產生ACK字段,ACK字段數值,是在A發過來的seq序列號基礎上加1進行回復,以便A收到信息時,知曉自己的TCP斷開請求已得到了驗證
3.	主機B在回復完A的TCP斷開請求后,不會馬上就進行TCP連接的斷開,主機B會先確保斷開前,所有傳輸到A的數據是否已經傳輸完畢,一旦確認傳輸數據完畢就會將回復報文的FIN字段置1,並產生隨機seq序列號。
4.	主機A收到主機B的TCP斷開請求后,會回復主機B的斷開請求,包含隨機生成的seq字段和ack字段,ack字段會在主機B的TCP點開請求的seq基礎上加1,從而完成主機B請求的驗證回復。

1.11 詳細描述 HTTP 工作原理?

用戶訪問網站流程
三次握手
請求報文
響應報文
四次揮手

1.12 請描述 iptables 的常見生產應用場景。

主機防火牆(filter表的INPUT鏈)
局域網共享上網(nat表的POSTROUTING鏈),半個路由器,NAT功能
端口及IP(一對一)映射(nat表的PRETOUTING鏈),硬件防火牆的NAT功能。

1.13 請描述下面 iptables 命令的作用------>自定義鏈

iptables -N syn-flood
iptables -A INPUT -i eth0 -syn -j syn-flood
iptables -A syn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN
iptables -A syn-flood -j DROP
iptables -N syn-flood            # 自定義鏈
iptables -A INPUT -i eth0 -syn -j syn-flood                               # 
iptables -A syn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN   #
iptables -A syn-flood -j DROP

1.14 企業 WEB 應用較大並發場景如何優化 iptables?

1、調整內核sysctl.conf

net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

2、LB啟用防火牆,在web上開啟防火牆

3、購買硬件防火牆

第2章 (二)企業運維面試題:

2.1 寫一個防火牆配置腳本,只允許遠程主機訪問本機的 80 端口(奇虎 360 面試題)

iptables -A INPUT -p tcp --dport 80 -j ACCEPT         #允許80端口訪問
iptables -P INPUT DROP                           #默認拒絕所有服務、端口訪問

2.2 請描述如何配置一個 linux 上網網關?

iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.8

2.3 請描述如何配置一個專業的安全的 WEB 服務器主機防火牆?

#!/bin/bash
IPT=/sbin/iptables

#Remove any existing rules
$IPT -F
$IPT -X
$IPT -Z

#setting default firewall policy
$IPT --policy OUTPUT ACCEPT
$IPT --policy FORWARD DROP
$IPT -P INPUT DROP

#setting for loopback interface
$IPT -A INPUT -i lo -j ACCEPT

#setting access rules
#one,ip access rules,allow all the ips of 
$IPT -A INPUT -s 202.81.17.0/24 -p all -j ACCEPT
$IPT -A INPUT -s 202.81.18.0/24 -p all -j ACCEPT
$IPT -A INPUT -s 124.43.62.96/27 -p all -j ACCEPT
$IPT -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT
$IPT -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT

#icmp
$IPT -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

#others RELATED
$IPT -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT

/etc/init.d/iptables save
#iptables-save >/etc/sysconfig/iptables

2.4 企業實戰題 6:請用至少兩種方法實現!

寫一個腳本解決 DOS 攻擊生產案例
提示:根據 web 日志或者或者網絡連接數,監控當某個 I-P 並發連接數或者短時內 PV 達到
100,即調用防火牆命令封掉對應的 IP,監控頻率每隔 3 分鍾。防火牆命令為: iptables -A
INPUT -s 10.0.1.10 -j DROP。

2.5 /var/log/messages 日志出現 kernel: nf_conntrack: table full, dropping packet.請問是什么原因導致的?如何解決

1、調整內核sysctl.conf

net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

sysctl -p 生效

2.6 實現共享上網

要求:

  1. 實現PC-D可以經過linux網關B上網,上因特網瀏覽網頁等。
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.8
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE ç偽裝。
  1. 實現外部用戶A通過訪問Linux網關B:10.0.0.8 即可以訪問到內部 Server 172.16.1.51:80提供的web服務。
iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 800 -j DNAT --to-destination 172.16.1.61:80

請分別給出命令完整實現細節,(操作目標機Linux網關B)?

  1. 假如1,2都配好了,但是問題處在內網普通PC-D和內部server-C,沒有配置正確的網關,如何通過tcpdump來排查。
windows:ping 10.0.0.81
內網機器:tcpdump|grep -i icmp(兩台機器上分別監測)
  1. 如何保證內部普通PC-D能夠通過訪問10.0.0.8:80也訪問內部Server-C


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM