Linux之iptables命令用法解讀
一、netfilter/iptables
netfilter:Linux內(nèi)核中的一個(gè)軟件框架,用于處理網(wǎng)絡(luò)數(shù)據(jù)包,提供的功能包括:網(wǎng)絡(luò)地址轉(zhuǎn)換NAT,數(shù)據(jù)包內(nèi)容修改、過(guò)濾、轉(zhuǎn)發(fā)等防火墻的功能iptables:運(yùn)行在用戶空間的應(yīng)用軟件,命令行工具,通過(guò)其設(shè)置規(guī)則,來(lái)控制netfilter模塊,從而實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的管理,從而實(shí)現(xiàn)防火墻的配置。
二者組成Linux下的包過(guò)濾防火墻。
二、四表五鏈
1、規(guī)則表
filter表:過(guò)濾數(shù)據(jù)包nat表:網(wǎng)絡(luò)地址轉(zhuǎn)換mangle表:管理mangle包raw表:關(guān)閉在nat表啟用的連接追蹤機(jī)制
2、規(guī)則鏈
PREROUTING:對(duì)數(shù)據(jù)包作路由選擇前應(yīng)用此鏈中的規(guī)則INPUT:進(jìn)來(lái)的數(shù)據(jù)包FORWARD:轉(zhuǎn)發(fā)數(shù)據(jù)包OUTPUT:出去的數(shù)據(jù)包POSTROUTING:路由選擇后

三、規(guī)則配置
1、命令格式
iptables [-t table] command chain parameter target
table:指定操作的表,默認(rèn)filter表
command:操作的命令
- -A:在指定鏈尾添加一條新的規(guī)則(append)
- -D:刪除指定鏈中的一條規(guī)則,可以根據(jù)序號(hào)或內(nèi)容進(jìn)行刪除(delete)
- -I:在指定鏈插入一條新的規(guī)則,默認(rèn)在第一行(insert)
- -L:列出所有規(guī)則(list)
- -R:修改、替換指定鏈的某一條規(guī)則,可以根據(jù)序號(hào)和內(nèi)容進(jìn)行替換(replace)
- -N:新建一條自定義規(guī)則鏈(new-chain)
- -X:刪除自定義的規(guī)則鏈
- -E:重命名自定義鏈
- -F:清空(flush)
…
chain:規(guī)則鏈(INPUT、OUTPUT、FORWARD…)
parameter:匹配規(guī)則
- -s:匹配報(bào)文的源地址,可以同時(shí)指定多個(gè),每個(gè)用逗號(hào)進(jìn)行隔開(kāi)
- -d:匹配報(bào)文的目標(biāo)地址,可以同時(shí)指定多個(gè),每個(gè)用逗號(hào)進(jìn)行隔開(kāi)
- -p:匹配報(bào)文的協(xié)議類型,如tcp、udp、icmp、sctp、udplite、esp等
- -i:匹配報(bào)文從哪個(gè)網(wǎng)卡接口流入
- -o:匹配報(bào)文將要從哪個(gè)網(wǎng)卡接口流出
…
- –sport:匹配源端口,可以用冒號(hào)指定一個(gè)連續(xù)的端口范圍
- –dport:匹配目的端口,可以用冒號(hào)指定一個(gè)連續(xù)的端口范圍
- -m multiport --sports/dports:匹配多個(gè)離散的端口號(hào),用逗號(hào)隔開(kāi)
示例: iptables -t filter -I OUTPUT -s 192.168.1.111 -p tcp -m tcp --dports 22:25 -j DROP
target:處理數(shù)據(jù)包的方式
-j ACCEPT:允許數(shù)據(jù)包通過(guò)-j DROP:丟棄數(shù)據(jù)包,不給回應(yīng)信息-j REJECT:拒絕數(shù)據(jù)包通過(guò),必要時(shí)會(huì)給數(shù)據(jù)發(fā)送端一個(gè)響應(yīng)信息
…
四、常用規(guī)則示例
1、規(guī)則保存
service iptables save
若不保存,待服務(wù)器重啟時(shí)會(huì)恢復(fù)原先狀態(tài)。
2、查看規(guī)則(帶編號(hào))
iptables -L -n --line-number
3、刪除OUTPUT第一條規(guī)則
iptables -D OUTPUT 1
4、拒絕進(jìn)入防火墻的所有ICMP協(xié)議數(shù)據(jù)包
iptables -I INPUT -P icmp -j REJECT
5、限制udp53端口只進(jìn)不出
iptables -I OUTPUT -p udp --dport 53 -j REJECT
6、獲取域名服務(wù)端口號(hào)
grep domain /etc/services
五、注意點(diǎn)
1、規(guī)則順序
若報(bào)文已被前面的規(guī)則匹配,則會(huì)直接執(zhí)行對(duì)應(yīng)的操作,即使后續(xù)規(guī)則也能匹配,但不會(huì)再執(zhí)行。
2、匹配條件
若一條規(guī)則中有多個(gè)匹配條件,則需同時(shí)滿足所有匹配條件,報(bào)文才能被匹配,即"與"的關(guān)系。
3、將更容易被匹配的規(guī)則放在前面
在沒(méi)有順序要求的情況下,不同類別的規(guī)則,被匹配次數(shù)多、匹配頻率高的規(guī)則應(yīng)放在前面。
4、當(dāng)IPTABLES所在主機(jī)作為網(wǎng)絡(luò)防火 墻時(shí),在配置規(guī)則時(shí),應(yīng)著重考慮方向性,雙向都要考慮,從外到內(nèi),從內(nèi)到外。
5、在配置IPTABLES白名單時(shí),往往會(huì)將鏈的默認(rèn)策略設(shè)置為ACCEPT,通過(guò)在鏈的最后設(shè)置REJECT規(guī)則實(shí)現(xiàn)白名單機(jī)制,而不是將鏈的默認(rèn)策略設(shè)置為DROP,如果將鏈的默認(rèn)策略設(shè)置為DROP,當(dāng)鏈中的規(guī)則被清空時(shí),管理員的請(qǐng)求也將會(huì)被DROP掉。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux systemctl命令用法及使用說(shuō)明
systemctl是Linux中用于管理系統(tǒng)服務(wù)的工具,提供了啟動(dòng)、停止、重啟和查看服務(wù)狀態(tài)等功能,通過(guò)systemctl命令,用戶可以方便地管理各種服務(wù)2026-03-03
Linux靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)實(shí)例詳解
這篇文章主要介紹了 Linux靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
單臺(tái)服務(wù)器中利用Apache的VirtualHost如何搭建多個(gè)Web站點(diǎn)詳解
這篇文章主要給大家介紹了關(guān)于在單臺(tái)服務(wù)器中利用Apache的VirtualHost如何搭建多個(gè)Web站點(diǎn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
Linux 安裝二進(jìn)制MySQL 及 破解MySQL密碼的方法
這篇文章主要介紹了Linux 安裝二進(jìn)制MySQL 及 破解MySQL密碼的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
詳解CentOS7 安裝 MariaDB 10.2.4的方法
這篇文章主要介紹了CentOS7 安裝 MariaDB 10.2.4的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
詳解 MAC/Linux Vi配置環(huán)境變量及Java環(huán)境變量配置
這篇文章主要介紹了詳解 MAC/Linux Vi配置環(huán)境變量及Java環(huán)境變量配置的相關(guān)資料,需要的朋友可以參考下2017-06-06

