a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

博客專欄

EEPW首頁 > 博客 > iptables入門指南

iptables入門指南

發布人:電子禪石 時間:2023-04-19 來源:工程師 發布文章

11 iptables防火墻簡介

  Netfileter/iptables (以下簡稱iptables)是nuix/linux 系統自帶的優秀且完全免費的基于包過濾的防火墻工具、它的功能十分強大、使用非常靈活、可以對流入、流出及流經服務器的數據包進行精細的控制。特別是它可以在一臺非常低配置下跑的非常好。提供400臺機器的辦公上網共享服務絲毫不遜色數萬RMB企業級專業路由器防火墻

   Iptables 是linux2.4及2.6內核中集成的服務、其功能與安全性比老一輩ipvfwadm、ipchanins強大的多、一般認為iptables工作在OSI七層的、二、三層、四層。


1、2 iptables 名詞和術語

  不少剛接觸到iptables的初學者會被iptables防火墻的相關名詞搞的很暈、不知道其所云的具體意思、本章不會像某些書籍一樣長篇大論、而是以最基本的能讓大家容易理解。

 

1、2、1 什么是容器

容器就是裝東西的。如(箱、包、壇、)、容器就是用來包裝或轉載物品的存寄器、在iptables里的呢、就是用來描述這種包含或者說術語的關系、喜愛按我就來說說這些包含關系

 

1、2、2 什么是Netfileter/iptables  

   Netfileter是表(tables)的容器,(還不知道啥意思的,請網上看)。這樣解釋大家肯定還暈、舉例、如果吧Netfileter看成某小區的一棟大樓、那么表(tables)就是樓里的其中的一套房子。這套房子表(tables) 就屬于這棟樓“Netfileter”。比如、你們家所在的小區所在樓當成netfileter

 

1、2、3 什么是表(tables)

   表(tables)是鏈的容器、及所有的鏈(chains)都是屬于表(tables),如上,如果把Netfileter看成某個小區的一棟樓、那么表(tables)就是樓里的某一套房子、比如你們家住的房子。當然了、表(tables)可能不止一個!

 

1、2、4 什么是鏈(chains)?

  鏈(chains)是規則(Policys)的容器、鏈屬于表,接上、如果表(tables)當做一套房子、那么鏈(chains)那么可以說是房子里的家具(桌子、柜子等)。每一套房子都可能會有桌子柜子等、

 

1、2、5 什么是規則(Policy)

  規則(policy)就比較容易理解了、柜子(policy)屬于鏈(chains)。就是iptables一系列過濾信息和具體操作方法、可以理解為購買什么家具、并且如何擺放、設計的更符合要求等、

 

1、2、6 整理個表格如下

 

描述完了基本術語我們畫個形象的表格幫我們理解記憶下:

Netfileter/iptables

表(tables)

鏈(chains)

規則(policy)

小區的一棟樓

樓里的房子

房子里的柜子

增加、擺放的規則

 

1、3 iptables工作流程

  前面的介紹已經提到。Iptables 是采取數據包過濾機制工作的,所以它會對請求的數據包的包頭數據進行分析、并根據我們預先設定的規則進行匹配來決定是否可以進入、流出、流經主機。下面我們以 iptables 進入主機進行過濾的流程圖為例子

 

提示:

     防火墻規則的執行順序認為從前到后依次執行、遇到匹配的規則就不在繼續向下檢查、

如果遇到不匹配的規則則會繼續向下進行。

 重點: 匹配上了拒接規則也是匹配。因此不在繼續向下進行、這一點大家要注意、

例如:同時執行了以下規則

[root@Nagios2 ~]# iptables -A INPUT -p tcp --dport 3306 -j DROP

[root@Nagios2 ~]# iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

 此時通過命令 telnet 192.168.132.194 3306 檢查3306是不通的。原因就是telnet請求以匹配上了拒接規則、因此不會在找下面的允許規則、如果需要telnet 192.168.132.194 3306 連通、可以把ACCEPT規則中的-A 改為-I 即為 iptables –I INPUT –p tcp –dport 3306 –j ACCEPT 把允許規則防御INPUT鏈的第一行生效

 

再來一個流程的圖例:此里來自于交換機中acl過濾。如iptables 流程幾乎一模一樣。

入站數據包流程圖:

出站數據包:

 

小提示:對于交換機的acl數據包過濾。除了順序匹配外,還有深度匹配。即讀完所有的再去匹配。匹配最精確的規則。

 

 

14 iptables 的表(tables) 和鏈(chains

   描述完iptables術語后、相信大家對iptables的表和鏈有了初步的了解了、默認情況下。Iptables,根據功能和表的定義劃分、最常用的有三個表,分別是filter,nat mangle.其中每個表又有各自包含不同的操作鏈(chains

小提示:如果你執行man iptables 可以發現還有raw表,不過我們不用理會它。平時我們幾乎用不到。

西面的表格展示了表和鏈的對應關系。

特殊提示這里。我們畫個思維輔導圖輔助記憶

142 iptables filter表介紹

Filter

和主機自身相關、負責防火墻(過濾本機流入、流出數據包)。

iptables默認使用的表、這個表定義了三個鏈(chains)說明如下


INPUT

負責過濾所有目標地址是主機(防火墻)地址的數據包、通俗的講、就是過濾進入主機的數據包。


FORWARD

負責轉發流經主機但不進入本機的數據包、起轉發作用、和NAT表關系很大、后面會詳細介紹


OUTPUT

處理所有原地址是本機地址的數據包、通俗的講就是處理從主機發出去的數據包。

對于filter表的控制是我們實現本機防火墻功能的重要手段。

143 iptabls nat表介紹

 

NAT

是網絡地址轉換的意思。即負責來源與目的IP地址和port的轉換、和主機本身無關。一般用于局域網多人共享上網或者內網IP映射外網IP及不同端口轉換服務等功能。Nat表的功能很重要、這個表定義了三個鏈(chains


OUTPUT

主機發出去的數據包有關、在數據包路由之前改變主機產生的數據包的目的地址等。


PREROUTING

在數據包剛到達防火墻時、進行路由判斷之前執行的規則、改變包的目的地址(DNAT功能)、端口等(通俗比喻,就是收信時、根據規則重寫收件人的地址、這看上去不地道啊、)把公司IP映射到局域網的機器上、此鏈多用于把外部IP地址端口的服務、映射為內部IP地址及端口


POSTROUTING

在數據包離開防火墻時進行路由判斷之后執行的規則、改變包的源地址(SNAT)、端口等(通俗比喻、就是寄信時寫好發件人的地址、要讓人家回信是能夠有地址可回)刺鏈多用于局域網共享上網,把所有局域網的地址、轉換為公網地址上

 

 

 

144 iptables mangle表介紹

 

Mangle

主要負責修改數據包中特殊的路由標記,如TTLTOSMARK等、這個表定義了5個鏈(chains


INPUT

filter表的INPUT


FORWARD

filter表的FORWARD


OUTPUT

fileter表的OUTPUT


PREROUTING

nat表的PREROUTING


POSTOUTING

nat表的POSTOUTING

 

  由于這個表與特殊路由標記有關、一般在生產運維工作中、我們很少用到這個mangle表。我們就不做詳細介紹了、

 

 

 

 

 

15 iptables 的表與鏈的工作流程

 

2、iptables 命令規則

 

21 iptables命令幫助信息。

 

 

復制代碼
[root@Nagios2 ~]# iptables -h   
iptables v1.4.7Usage: iptables -[AD] chain rule-specification [options]
       iptables -I chain [rulenum] rule-specification [options]  
       iptables -R chain rulenum rule-specification [options]
       iptables -D chain rulenum [options]    ###刪除規則
       iptables -[LS] [chain [rulenum]] [options]
       iptables -[FZ] [chain] [options]
       iptables -[NX] chain
       iptables -E old-chain-name new-chain-name
       iptables -P chain target [options]   #(其中-p等同于 –policy規則)
       iptables -h (print this help information)

Commands:
Either long or short options are allowed.
提示:這款請注意。長格式短格式命令都可用、為了打字我們習慣于端格式 
 --append  -A chain            Append to chain  
 --delete  -D chain            Delete matching rule from chain  
 --delete  -D chain rulenum
                                Delete rule rulenum (1 = first) from chain  
 --insert  -I chain [rulenum]   Insert in chain as rulenum (default 1=first)  
 --replace -R chain rulenum     Replace rule rulenum (1 = first) in chain  
 --list    -L [chain [rulenum]] List the rules in a chain or all chains  -
 -list-rules -S [chain [rulenum]]  Print the rules in a chain or all chains  
 --flush   -F [chain]          Delete all rules in  chain or all chains  
 --zero    -Z [chain [rulenum]] Zero counters in chain or all chains  
 --new     -N chain            Create a new user-defined chain  
 --delete-chain   -X [chain]          Delete a user-defined chain  
 --policy  -P chain target
                                Change policy on chain to target  --rename-chain            -E old-chain new-chain
                                Change chain name, (moving any references)
Options:
[!] --proto     -p proto        protocol: by number or name, eg. `tcp'
[!] --source    -s address[/mask][...] source specification
[!] --destination -d address[/mask][...] destination specification
[!] --in-interface -i input name[+]  network interface name ([+] for wildcard) 
    --jump -j target                   target for rule (may load target extension)  
    --goto      -g chain
                              jump to chain with no return
  --match       -m match
                                extended match (may load extension)  --numeric     -n              numeric output of addresses and ports
[!] --out-interface -o output name[+]
                                network interface name ([+] for wildcard)  
   --table       -t table        table to manipulate (default: `filter')
  --verbose     -v              verbose mode  
  --line-numbers                print line numbers when listing  
  --exact       -x              expand numbers (display exact values)
[!] --fragment  -f              match second or further fragments only  
   --modprobe=<command>          try to insert modules using this command  
   --set-counters PKTS BYTES     set the counter during insert/append
[!] --version   -V              print package version.
[root@Nagios2 ~]#
復制代碼

2實踐iptables 命令規則22啟動并查看iptables

[root@Nagios2 ~]# /etc/init.d/iptables start
iptables: Applying firewall rules: [  OK  ]
[root@Nagios2 ~]#

查看iptables 的所有鏈和規則

 

復制代碼
Iptables –L –n 或者 iptables –L –n –t filter 或者 iptables –L –n –x –v 
中文說明:
-L :列出一個或所有鏈的規則
-v:顯示詳細信息、包括每條規則匹配包數量和匹配字節數
-x:在v的基礎上、進制自動單位換算(K,M)
-n: 只顯示IP地址和端口號碼。不顯示域名和服務名稱
-t : 接表名、如果不加-t,默認就是 –t filter
復制代碼

 

 

復制代碼
[root@Nagios2 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
復制代碼

默認是filter的,沒有加 –t 默認查看的就是如果想要查看NAT的表

 

復制代碼
[root@Nagios2 ~]# iptables -L -n -t nat   
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@Nagios2 ~]#
復制代碼

 

22清除默認規則

為了從頭學起,我們需要首先清除掉所有的默認規則、具體的命令為

 

 

Iptables –F  ###清除所有規則Iptables –X  ####刪除用戶自定義的鏈Iptables –Z   ####鏈的計數器清零

 

提示:默認情況下,我們清除規則是對filter表的操作、如果是nat表、我們需要iptables –t nat –F

實例演示2:
[root@Nagios2 ~]# iptables -F[root@Nagios2 ~]# iptables –flush

223 iptables 規則語法

1)禁止ssh默認的22端口

 

 

 

復制代碼
[root@Nagios2 ~]# iptables -A INPUT -p tcp --dport 22 -j DROP[root@Nagios2 ~]# iptables  -t  filter  -A INPUT -p tcp --dport 22 -j DROP 提示:1、iptables 默認用的就是filter表 。因此,以上兩條命令等價。2、其中INPUT DROP 等關鍵詞要大寫的3、行為參數--jump  -j target 
提示: target 的常見的處理方法有ACCEPT(接受),DROP(丟棄),
     REJECT(拒接)其中、一般不使用REJECT行為、REJECT會帶來安全隱患、
     在這里我們只需要記住ACCEPT(接受)、DROP(丟棄)即可、
復制代碼

擴展:刪除設定的規則

iptables –D INPUT –p tcp –dport 22 –j DROP

刪除規則法二:

首先顯示規則號

復制代碼
[root@Nagios2 ~]# iptables -L -n --line-numbersChain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21 Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
[root@Nagios2 ~]#[root@Nagios2 ~]# iptables -D INPUT 1
復制代碼

刪除規則三:

執行iptables –F 清除所有的規則,臨時生效。重啟防火墻或重啟計算機失效

刪除規則法四:

重啟防火墻/etc/init.d/iptables restart

2) 禁止10.0.0.0/24 網段連入

 

iptables -A INPUT –i eth0 -s 10.0.0.0/24 -j DROP
iptables  -t filter  -A INPUT –i eth0 -s 10.0.0.0/24 -j DROP

iptables 默認的標記是filter表。因此上兩條命令等價。

3) 測試 【! 非】

1、源地址不是192.168.132.201 的禁止連接

 

復制代碼
iptables –A INPUT –I eth1 –s ! 192.168.132.201 –j DROP 
iptables –A INPUT –I eth1 –s ! 192.168.132.201 –j ACCEPT

[root@Nagios2 ~]# iptables -I INPUT -p icmp --icmp-type 8 -i eth0 -s ! 192.168.132.1 -j DROP小提示:1) 這里-i eht0表示數據包的進入接口為eth0、類似的參數還有-o匹配數據流出的網絡接口
例如:-o eth1 表示數據包的進入接口為eth1.
記憶方法:-in-interface –i [!] input name [+]
                    Network interface name ([+] for wildcard)-out-interface –o [!] ouput name[+]
                     Network interface name ([+] for wildcard)
復制代碼

 

2、源地址不是192.168.132.0/24 的禁止連接

 

iptables -A INPUT -s ! 192.168.132.0/24 -j DROP
等價于
Iptables –t filter –I INPUT –i eht0 –s ! 192.168.132.0/24 –j DROP

 

3、封掉3306端口

iptables –A INPUT –p tcp –dport 3306 –j DROP

 

4、匹配指定協議

復制代碼
Iptables –A INPUT –p tcp

Iptables –A INPUT –p udp

小提示:-p 參數可以匹配協議名或者協議號。--proto –p [!] porto

The specified protocol can be one of tcp,udp ,icmp.or all
復制代碼

 

5、匹配協議外的所有協議

Iptables –A INPUT –p ! tcp

 

6、匹配主機

Iptables –A INPUT –s 192.168.132.10Iptables –A INPUT –s ! 192.168.132.10

 

7、匹配網段

 

8、匹配端口之外的端口

Iptables –A INPUT –p tcp –dport !22  -j DROP

 

9、匹配端口范圍

Iptables –A INPUT –p tcp –sport 22:80    ###源端口的22 和80端口就是來訪主機的端口iptables -A INPUT -p tcp -m multiport --dport 21,22,23,24 -j ACCEPT  ###目的端口。就是本地端口Iptables –I INPUT –p tcp –dport 3306:8809 –j ACCEPT

 

10、匹配ICMP端口和ICMP類型

復制代碼
Iptables –A INPUT –p icmp –icmp-type 8例如:iptables –A INPUT –p imcp –icmp-type 8 –j DROP

Iptables –A INPUT –p icmp –m icmp –icmp-type any –j ACCEPT

Iptables –A FORWARD –s 192.168.132.0/24 –p icmp –m icmp –icmp-type any –j ACCEPT
復制代碼

 

11、匹配指定的網絡接口

Iptables –A INPUT –i eth0   ###進入端口的數據包Iptables –A INPUT –o eth1  ###出入的端口數據包

 

12、安全保護

復制代碼
Syn-flood protection;

[root@Nagios4 ~]# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPTFurtive port scanner :

[root@Nagios4 ~]# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPTPing of death:

[root@Nagios4 ~]# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
復制代碼

 

 

22生產環境常用服務的iptables 規則實踐

特別提示:以下規則是以默認規則為拒接規則設計

1) 僅允許內部合法的IP訪問服務器

復制代碼
#setting access rules#one ,ip access rules,allow all the ips ofiptables -A INPUT -s 192.168.132.0/24 -p all -j ACCEPT

iptables -A INPUT -s 120.42.60.51/27 -p all -j ACCEPT

iptables -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT

iptables -A INPUT -s 172.16.20.0/24 -p all -j ACCEPT
復制代碼

 

1) 僅允許內部合法的ipip訪問監控服務nagios

復制代碼
#second.port access rules#nagiosiptables –A INPUT –s 192.168.132.0/24 –p tcp –dport 5666 –j ACCEPT

iptables –A INPUT –s 200.100.59.0/24 –p tcp –dport 5666 –j ACCEPT
復制代碼

 

2) 僅允許內部合法ip段訪問mysql數據庫和oracle數據庫

#dbiptables –A INPUT –s 192.168.10.0/24 –p tcp –dport 3306 –j ACCEPT

iptables –A INPUT –s 192.168.50.0/24 –p tcp –dport 1521 –j ACCEPT

 

3) 僅允許內部合法IP段訪問SSH遠程連接服務

#ssh difference form other servers here……iptables –A INPUT –p tcp –s 192.168.10.0/24 –dport 50718 –j ACCEPT

 

5) HTTP服務的不同限制

復制代碼
a、對外提供HTTP服務的業務,要允許http服務通過、并且不限制IP#httpiptables –A INPUT –p tcp –dport 80 –j ACCEPT

b、對內部提供http服務的業務、一般用特殊端口、并且限制合法IP連接或者VPN連接

iptables –A INPUT –s 192.168.132.0 –p tcp –m multiport –dport 8080,8081,8082,8888 –j ACCEPT
復制代碼

 

6snmp的限制

iptables –A INPUT –s 192.168.132.0/24 –p UDP –dport 161 –j ACCEPT

iptables –A INPUT –s 192.168.155.0/24 –p UDP –dport 161 –j ACCEPT

iptables –A INPUT –s 192.168.166.0/24 –p UDP –dport 161 –j ACCEPT

 

7、 rsync 服務的限制策略

復制代碼
# rsynciptables –A INPUT –s 192.168.132.0/24 –p tcp –m tcp –dport 873 –j ACCEPT

iptables –A INPUT –s 192.168.12.0/24 –p tcp –m tcp –dport 873 –j ACCEPT

iptables –A INPUT –s 192.168.1.0/24 –p tcp –m tcp –dport 873 –j ACCEPT
復制代碼

 

8、 nfs 服務的限制

iptables –A INPUT –s 192.168.10.0/24 –t TCP –m multiport –dport 111,892,2049 –j ACCEPT

iptables –A INPUT –s 192.168.100.0/24 –t TCP –m multiport –dport 111,892,2049 –j ACCEPT

 

9ftp服務的限制

iptables –A INPUT –p tcp –dport 21 –j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

 

提示:上面內容表示對已經建立連接的數據包、或者發出去的數據包允許通過。

復制代碼
說明 iptables –A INPUT –m state –state 狀態 –j ACCEPT

下面幾種1) INVLID   #####不可用的。數據包不能被識別。比如說內存溢出。ICMP錯誤2) ESTABLISHED  ###這個包已經建立了連接、3) NEW  ####這個包已經開始新連接了。然后也是有雙向的。但是還看不見4) RELATED   ####這個包開始了一個新連接。并且和已經存在的連接已經有關聯。
復制代碼

 

10) icmp 協議的限制

iptables –A INPUT –p icmp –icmp-type any –j ACCEPT

iptables –A INPUT –p icmp –s 192.168.10.0/24 –m icmp –icmp-type any –j ACCEPT

iptables –A INPUT –p icmp –icmp-type 8 –j ACCEPT

 

提示:如果不想開。就不執行此行

 

EOF 完結 !!! 下一篇 iptables 當做防火墻


*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞: iptables

技術專區

關閉