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的相关文章
-
最穷最落魄的经典句子只有在落魄时才懂,愿拉你一把的人何其少。只有在最穷时才懂,再好的感情也难敌现实,人不贪钱却都怕吃苦。2落难时总能看清一些人,一些人不值得!众志成
-
女神节祝福语简短温馨寄语1、八妇女节到此,发条短信祝福你,愿你青春不变,笑容甜甜。4成熟中有丝青涩,艳丽中有丝高贵,优雅中有丝自恋,纯洁中有丝邪念,浪漫中有丝童真,微
-
人生感悟正能量励志的句子1、生命必须穿过黑暗才能看到光明。人生中有许多错误,是因为我们不坚持,不努力,然后欺骗自己说一切都是命运。小不知道命运再好,都要经历风雨与黑
-
每日早上好的祝福语短句1、短信一条,祝福送到;短信一条,关怀送到;短信一条,添衣加帽;短信一条,烦恼丢掉;短信一条,开心笑笑;短信一条,幸福报道,祝你早上安好。春天
-
怎样处理好婆媳关系1、如何才能处理好婆媳关系1如何才能处理好婆媳关系不要随便向老公告状婆媳相处过程中,总有些磕磕碰碰,作媳妇的要学会多多包容,以宽容的心态去对待老人家
-
给领导发微信祝福语怎么说?给领导祝福语如下:很荣幸过去的一年里能在你的领导下工作和学习,祝你在新的一年里健康如意,马到成功。在新春里,我举起杯,任晶莹的思绪,悄悄地
Linux网路安全讲义Netfilter机制与iptable随机文章