1. 程式人生 > >firewall和iptables對比介紹

firewall和iptables對比介紹

firewall

1、Introduction 

在具體介紹zone之前介紹幾個相關的名詞,因為如果不理解這幾個名詞zone就無從入手。
  • target:預設行為,有四個可選值:default、ACCEPT、%%REJECT%%、DROP,如果不設定預設為default

  • service:這個在前面學生已經給大家解釋過了,他表示一個服務

  • port:埠,使用port可以不通過service而直接對埠進行設定

  • interface:介面,可以理解為網絡卡

  • source:源地址,可以是ip地址也可以是ip地址段

  • icmp-block:icmp報文阻塞,可以按照icmp型別進行設定

  • masquerade:ip地址偽裝,也就是按照源網絡卡地址進行NAT轉發

  • forward-port:埠轉發

  • rule:自定義規則

檢視狀態:firewall-cmd –stat
重啟:service firewalld restart
iptables檢視狀態 service iptables status

2、系統配置目錄(建議不要改)

目錄中存放定義好的網路服務和埠引數,系統引數,不能修改。

對於一個接受到的請求具體使用哪個zone,firewalld是通過三種方法來判斷的:

  • 1、source,也就是源地址
  • 2、interface,接收請求的網絡卡
  • 3、etc/firewalld/firewalld.conf中配置的預設zone

3、使用者配置目錄

[root@xxx]# vim /etc/firewalld/
firewalld.conf lockdown-whitelist.xml
helpers/ services/
icmptypes/ zones/
ipsets/

4、命令列使用

#新增埠,允許訪問,永久有效
firewall-cmd --permanent --add-port=9527/tcp
firewall-cmd [--permanent] [--zone=zone] --list-sources
firewall-cmd [--permanent] [--zone=zone] --query-source=source[/mask]
firewall-cmd [--permanent] [--zone=zone] --add-source=source[/mask]
firewall-cmd [--zone=zone] --change-source=source[/mask]
firewall-cmd [--permanent] [--zone=zone] --remove-source=source[/mask]
#firewall-cmd 引數介紹
#--list-sources:用於列出指定zone的所有繫結的source地址
#--query-source:用於查詢指定zone是否跟指定source地址進行了繫結
#--add-source:用於將一個source地址繫結到指定的zone(只可繫結一次,第二次繫結到不同的zone會報錯)
#--change-source:用於改變source地址所繫結的zone,如果原來沒有繫結則進行繫結,這樣就跟--add-source的作用一樣了
#--remove-source:用於刪除source地址跟zone的繫結

檢視當前所有起作用的zonefirewall-cmd –get-active-zones要將在80埠接收到tcp請求轉發到8080埠可以使用下面的命令firewall-cmd –add-forward-port=port=80:proto=tcp:toport=8080

firewall-cmd [–permanent] [–zone=zone] –list-ports

5、修改配置檔案的方式新增埠

<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas.</description>
<rule family="ipv4">
<source address="122.10.70.234"/>
<port protocol="udp" port="514"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="123.60.255.14"/>
<port protocol="tcp" port="10050-10051"/>
<accept/>
</rule>
<rule family="ipv4">
<source address="192.249.87.114"/> 放通指定ip,指定埠、協議
<port protocol="tcp" port="80"/>
<accept/>
</rule>
<rule family="ipv4"> 放通任意ip訪問伺服器的9527埠
<port protocol="tcp" port="9527"/>
<accept/>
</rule>
</zone>

  • 1、新增需要的規則,開放通源ip為122.10.70.234,埠514,協議tcp;
  • 2、開放通源ip為123.60.255.14,埠10050-10051,協議tcp;/3、開放通源ip為任意,埠9527,協議tcp;
  • 3、在不改變狀態的條件下重新載入防火牆:firewall-cmd –reload
  • 4、設定某個ip 訪問某個服務firewall-cmd –permanent –zone=public –add-rich-rule=”rule family=”ipv4” source address=”192.168.0.4/24” service name=”http” accept”

iptables

iptables命令是Linux上常用的防火牆軟體,是netfilter專案的一部分。可以直接配置,也可以通過許多前端和圖形介面配置。

iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網絡卡名> -p 協議名 <-s 源IP/源子網> --sport 源埠 <-d 目標IP/目標子網> --dport 目標埠 -j 動作
--------------------------------
表名包括:
raw:高階功能,如:網址過濾。
mangle:資料包修改(QOS),用於實現服務質量。
net:地址轉換,用於閘道器路由器。
filter:包過濾,用於防火牆規則。
-------------------------------
規則鏈名包括:
INPUT鏈:處理輸入資料包。
OUTPUT鏈:處理輸出資料包。
PORWARD鏈:處理轉發資料包。
PREROUTING鏈:用於目標地址轉換(DNAT)。
POSTOUTING鏈:用於源地址轉換(SNAT)。
-------------------------------
動作包括:
accept:接收資料包。
DROP:丟棄資料包。
REDIRECT:重定向、對映、透明代理。
SNAT:源地址轉換。
DNAT:目標地址轉換。
MASQUERADE:IP偽裝(NAT),用於ADSL。
LOG:日誌記錄。
-------------------------------
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允許訪問22端k
iptables -A OUTPUT -j ACCEPT #允許所有本機向外的訪問
iptables -A INPUT -j reject #禁止其他未允許的規則訪問
iptables -L -n -v #檢視規則
-------------------------------
格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t table :3個filter nat mangle
COMMAND:定義如何對規則進行管理
chain:指定你接下來的規則到底是在哪個鏈上操作的,當定義策略的時候,是可以省略的
CRETIRIA:指定匹配標準
-j ACTION :指定如何進行處理
-P :設定預設策略的(設定預設門是關著的還是開著的)
預設策略一般只有兩種
iptables -P INPUT (DROP|ACCEPT) 預設是關的/預設是開的
比如:
iptables -P INPUT DROP 這就把預設規則給拒絕了。並且沒有定義哪個動作,所以關於外界連線的所有規則包括Xshell連線之類的,遠端連線都被拒絕了
-------------------------------