2021年2月28日发(作者:chew)
Linux
網路安全講義
:Netfilter
機制與
iptables
工具
一、
iptables
簡介
1.
iptables
下載與技術資源總站
./
。
2.
使用
iptables
前先確認核心版
本
(#uname -r)
,
Kern
el
必須是
2.4
以上版本
<
p>
3.
演進歷程介紹
:
-
舊版
Linux
上使用
IP-Masquerade
的
IP
偽裝以便於達成該功能。
- kernel 2.0.x
時代,是使用
ipfwadm
p>
程式。
(
這個說法不算是完全正確
)- kernel 2.1.x/2.2.x
時代,則是使用
ipchains
程式,
port
forwardin
g
需要搭配
ipmasqadm
程式來
輔助才能夠達成。
- kernel 2.3.x/2.4.x
時代,使用
netfilter
過
濾機制,
是使用
iptables
程式。!注意!
(Kernel 2.4
使用
netfilter
project
的
firewall
機制,該環境允
許
使用者使用舊版
ipchains
設定
firewall
,不過要先掛入
ipchains
<
p>
模組。若是系統已經掛入
ipchains
模組,
要先執行
# ipchains
-F ipchains
–
X
;
rmmod ipchains
即可開始使用
iptables
了。
4.
目前
kernel 2.4.x <
/p>
配合使用
netfilter
核心過濾機
制
,
可以達到的功能相當強悍
,
netfilter
可提供的機制如下:
?
?
?
?
?
?
傳統
ipchains
<
p>
的任何功能
(
來源與目的封包過濾、導向、偽裝<
/p>
)
。
提供
Source NAT
與
Destination NAT
的功能。
可以針對特定使用者、群組、
PID
等限制網路連結的過濾存取。
可以設定封包在
Routing
Table
進出前時先預先處理。
可以針對外面自動建立、與現有連線有關這類連線過濾處理。
可以針對
Mac
卡號直接處理。
5.
使用
i
ptables
前先確認下列核心功能已設定正確:
CONFI
G_PACKET
、
CONFIG_NETFILTER
、
CONFIG_IP_NF_CONNTRACK
<
br>、
CONFIG_IP_NF_FTP
、
CONFIG_IP_NF_IPTABLES
、
CO
NFIG_IP_NF_MATCH_LIMIT
、
CONFI
G_IP_NF_MATCH_MAC
、
CONFIG_IP_
NF_MATCH_MARK
、
CONFIG_IP_NF_M
ATCH_MULTIPORT
、
CONFIG_IP_NF_
MATCH_TOS
、
CONFIG_IP_NF_MATCH
_TCPMSS
、
CONFIG_IP_NF_MATCH_S
TATE
、
CONFIG_IP_NF_MATCH_UNCL
EAN
、
CONFIG_IP_NF_MATCH_OWNER
、
CONFIG_IP_NF_FILTER
<
br>、
CONFIG_IP_NF_TARGET_REJECT
、
CONFIG_IP_NF_TARGET_MIRROR
、
CONFIG_IP_NF_NAT
、
CONFIG_IP_NF_TARGET_MASQUERADE
、
CONFIG_IP_NF_TARGET_REDIRECT
、
<
p>
CONFIG_IP_NF_TARGET_LOG
、
CONFIG_IP_NF_TARGET_TCPMSS
、
CONFIG_IP_NF_PAT_IPCHAINS
、
C
ONFIG_IP_NF_PAT_IPFWADM
。
二、基本原理
1.
iptables
預設的
Table
& Chains
組合
(User
可以
自訂
chains)
1
/
12
過濾表
(Table)
filter
nat
mangle
說明
過濾透通本機的封包
(
預設
)
轉譯封包位址資訊
修改或標註封包
2.
各種封包的處理流程
<
p>
(
一
)
Forward
Packet Processing
Input Packet
Processing
Output Packet Processing
3.
各種
封包的處理流程
(
二
)
規則鏈
(chains)
PREROUTING
INPUT
FORWARD
OUTPUT
執行時機
封包進入本機,在判斷路由前
通過路由表後,目的地為本機
通過路由表後,目的地不是本機
由本機主動建立的封包,在通過路由表前
POSTROUTING
通過路由表後,要發送出去前
4.
封包過濾流程
<
br>(
三
)
2
/
12
PREROUTING
FORWARD
POSTROUTING
Route Table
INPUT
OUTPUT
Local Process
5.
IP Packet Header
三、指令介紹
1.
iptables
指令包含以下四項元件
:
?
?
?
?
table
ACTION
<
命令
>
rule
specification - pattern
<
比對規則
>
extension
<
延伸選項
>
netfilter
處理判斷順序:
Tables
?
Chains
?
Rules
?
Policy
3
/
12
指定
action
處理方式
#iptables
–
t filter
–
A INPUT
–
i eth0
–
p tcp
–
s any/0 --sport 80
–
d 185.100.35.1
–
j ACCEPT
指定
table
(
預設為
filter table)
指定比對
rule
指定
rule
延伸選
項
語法
:#
iptables [-t TABLE] ACTION [PATTERN] [-j
TARGET]
[-t
]
:
如不指定預設為
filter ta
ble
,
可指定為
”
<
br>-
t nat”
或
”
<
p>
-
t mangle”
ACTION
:要操作的動作,若未指定哪個
Chain
,則為該
Table
中所有的
Chains
。常用的指令包含
ACTION
指令
-L CHAIN
-A CHAIN
-D CHAIN <>
-I CHAIN <>
-R CHAIN <>
-P CHAIN
--list CHAIN
--append CHAIN
--delete
CHAIN <>
--insert CHAIN <>
--replace CHAIN <>
--policy
CHAIN
長指令
說明
顯示
CHAIN
中的所有規則
對
CHAIN
新增一條規則
刪除
CHAIN
中的一條規則
在
CHAIN
中插入一條規則
替換
CHAIN
中的某一條規則
對
<
br>CHAIN
設定預設的
Policy
;只有
內建的
chains
可以指
定
policy
;
policy
不可指定為另一個
chain
-F
CHAIN
-N USER-CHAIN
-X USER-
CHAIN
-Eold-chainnew-chain
-h [icmp]
--flush CHAIN
--new-chain
USER-CHAIN
--delete-chain USER-CHAIN
--rename-chain old-chainnew-chain
清除
CHAIN
中所有規則
自訂一個
USER-
CHAIN
刪除自訂的
USER-CHAIN
更名自訂的
USER-CHAIN
Help [
列出
icmp
type
清單
]
PATTERN
p>
:設定比對條件的參數
(
下列「長、短參數
」擇一使用即可;參數值前面加
”!”
代表
”Not”)
短參數
長參數
--protocol
--source
--destination
--in-interface
--out-
interface
參數值
PRO
TOCOL
名稱
或號碼
(0=all)
說明
通訊協定為
PROTOCOL
者,
PROTOCOL: tcp, udp,
icmp, all
或者為
/etc/protocols
內所記錄的協定
指定
Source IP
Address
為
ADDRESS [port]
指定
Destination IP
Address
為
ADDRESS
[port]
指定封包進入的網路卡介面
(eth0,eth
1,ppp0…)
,
eth+
為
所有
eth
介面卡
-p
-s
-d
-i
-o
ADDRESS
port
ADDRESS port
INTERFACE[+]
INTERFACE[+]
封包輸出的網路卡介面
4
/
12
-m
-n
--match
--numeric
MATCH
指定進階的選項
以數字表示主機
p>
(IP)
,服務
(port)
資訊
搭配
-L
<
p>
使用可列出
rule
編號
詳細輸出
--line-
numbers
-v
-
-verbose
若
PROTOCOL
為
tcp(-p tcp)
,則另外可設定的參數
(
參數值前面加
”!”
代表
”Not”)
短參數
--sport
--dport
長參數
--source-port
--destination-
port
參數值
n:m
n:m
mask p
說明
指定來源
Port
為
n
到
m
的範圍
(
例如:
1023
以上
?
1023:
) 0~65535
<
p>
指定目的
Port
為
n<
/p>
到
m
的範圍
(<
/p>
例如
:
256
以
下
?
:256
)
0~65535
--tcp-flags
指定
TCP
協定中的旗號,可使用的旗號包含
:
SYN/ACK/FIN/RST/URG/PSH/ALL/NONE
mask:
以
”
,
”
分隔的檢查遮罩
p:
以
”
,
”
分隔的符合項目
<
br>例如:
「
-
–
<
br>tcp-flags SYN,ACK,FIN
SY
N
」表示符合設定
SYN
旗號,但未設
定
ACK,FIN
旗號的封包
tcp-flag
說明
:URG
:
緊急指標
建立
TCP
連線
ClientServer
SYN
??
SYN+ACK
ACK
?
中止
TC
P
連線
ClientServer
FIN+ACK
??
ACK
?
FIN+ACK
ACK
?
ACK
:
確認回報號碼
PSH
:
接收端盡快將此資料傳給應用程式
RST :
重置該連線
(
對不存在的埠號請求連線
)
SYN :
<
p>
將序號同步以產生連線
(TCP
開始傳送即產生一
個序號
syn=
起始序號
+1)
FIN :
發送端完成資料傳送
p>
表示
SYN
位元被開啟,而
ACK
與
FIN
位元被關閉的
封包,
這是發起連線的狀態
(
等於
p>
--tcp-flags SYN,RST
,ACK SYN)
--syn
若
PROTOCOL
為
udp(-p udp)
,則另外可設定的參數
(
參數值前面加
”!”
代表
”Not”)
短參數
--sport
--dport
長參數
--source-port
--destination-
port
參數值
n:m
n:m
說明
指定來源
Port
為
n
到
m
的範圍
指定目的
Port
為
n
到
m
的範圍
若
PROTOCOL
為
icmp
,另外可設定
(
參
數值前面加
”!”
代表
”Not”)<
/p>
長參數
--icmp-type
參數值
NAME
說明
ICMP
封包的類別名稱或代碼:
(
參閱
#iptables
–
p icmp -h)
例如:
echo
request(ping,8)
??
echo
reply(pong,0)
若
MATCH (-m)
被指定時,可另外設定的參數
<
p>
(
參數值前面加
”!”
代
表
”Not”)
MATCH
mac
參數
--mac-source
參數值
MAC ADDRESS
說明
網路卡位址
xx:xx:xx:xx:xx:xx
備註
需為乙太網卡
&
PREROUTING
,
FORWARD
<
br>,
INPUT chains
5
/
12
limit
--limit
--limit-burst
RATE
NUMBER
n,m
符合的最大平均值
符合的上限值
來源
Port
目的
Port
XX/[s,m,h]
multiport
--source-port
mark
owner
state
--destination-port
n,m
--port
--mark
--uid-owner
--gid-owner
--pid-owner
--sid-owner
--state
n,m
VALUE/MASK
UID
GID
PID
SID
STATE[,state..]
來源與目的
Port
相同
標記封包資訊
使用者識別碼
群組識別碼
行程識別碼
Session
識別碼
封包的狀態
:
NEW
INVALID
ESTABLISHED
RELATED
NEW
:新連線產生的封包或
和非雙向連線的關連封包
INVALID
:和已知的連線沒
有關係的封包
ESTABLISHE
D
:
雙向連線的
關連封包
RELATED
:和現有連線相關
的新連線封包
(
如
ftp-
data
,
icmp)
IP
表頭內的
TOS
欄
位
只能在
mangle
table
使用
只有
OUTPUT
chain
有用
tos
--tos
TOS
參閱
#iptables -m tos -h
例如:
iptables
–
A INPUT
–
p tcp
--sport 21
–
m
state --state ESTABLISHED
-j ACCEPT
<
p>
TARGET(
可指向自訂的
chain)
:不同的
Table
有不同的
Extension
Target
Target
LOG
REJECT
nat
SNAT
DNAT
MASQUERADE
REDIRECT
mangle
TTL
MARK
TOS
Basic Target
一覽表
Target
ACCEPT
DROP
RETURN
說明
讓封包通過
丟棄封包
不作比對直接返回
說明
紀錄該封包資訊
退回該封包
轉譯來源位址
轉譯目的位址
轉譯來源位址成為
NIC
的位址
轉送至本機某個
Port
修改
Time To Live
資訊
標記該封包
設定
Type Of
Service
資訊
Table
filter
6
/
12
-
-
-
-
-
-
-
-
Linux网路安全讲义Netfilter机制与iptable的相关文章
-
余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,
-
心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得
-
古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事
-
鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而
-
三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,
-
免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。
Linux网路安全讲义Netfilter机制与iptable随机文章