iptable手冊(cè)


一基礎(chǔ)

步驟一:關(guān)閉firewalld锋恬,啟動(dòng)iptables服務(wù)

1)關(guān)閉firewalld服務(wù)器

[root@proxy ~]# systemctl stop firewalld.service

[root@proxy ~]# systemctl disable firewalld.service

2)安裝iptables-services并啟動(dòng)服務(wù)

[root@proxy ~]# yum -y install iptables-services  #裝包配置可永久保存

[root@proxy ~]# systemctl start iptables.service

步驟二:熟悉iptables框架

1)iptables的4個(gè)表(區(qū)分大小寫(xiě))

iptables默認(rèn)有4個(gè)表搭盾,nat表(地址轉(zhuǎn)換表)角骤、filter表(數(shù)據(jù)過(guò)濾表)正卧、raw表(狀態(tài)跟蹤表)叹坦、mangle表(包標(biāo)記表)检碗。

2)iptables的5個(gè)鏈(區(qū)分大小寫(xiě))

INPUT鏈(入站規(guī)則)

OUTPUT鏈(出站規(guī)則)

FORWARD鏈(轉(zhuǎn)發(fā)規(guī)則)

PREROUTING鏈(路由前規(guī)則)

POSTROUTING鏈(路由后規(guī)則)

步驟三:iptables命令的基本使用方法

1)iptabels語(yǔ)法格式

[root@proxy ~]# iptables ?[-t表名] ?選項(xiàng) ?[鏈名] ?[條件] ?[-j 目標(biāo)操作]

[root@proxy ~]# iptables ?-t ?filter ?-I ?INPUT -p ?icmp ?-j ?REJECT

[root@proxy ~]# iptables -t filter -I ?INPUT ??-p ?icmp ?-j ?ACCEPT

[root@proxy ~]# iptables ?-I ?INPUT ?-p ?icmp ?-j ?REJECT

//注意事項(xiàng)與規(guī)律:

//可以不指定表,默認(rèn)為filter表

//可以不指定鏈金拒,默認(rèn)為對(duì)應(yīng)表的所有鏈

//如果沒(méi)有找到匹配條件兽肤,則執(zhí)行防火墻默認(rèn)規(guī)則

//選項(xiàng)/鏈名/目標(biāo)操作用大寫(xiě)字母,其余都小寫(xiě)

##########################################################

//目標(biāo)操作:

// ACCEPT:允許通過(guò)/放行

// DROP:直接丟棄殖蚕,不給出任何回應(yīng)

// REJECT:拒絕通過(guò),必要時(shí)會(huì)給出提示

// LOG:記錄日志沉迹,然后傳給下一條規(guī)則

iptables命令的常用選項(xiàng)如表-1所示睦疫。

2)iptables命令的使用案例

創(chuàng)建規(guī)則的案例:

[root@proxy ~]# iptables ?-t ?filter ?-A ?INPUT ?-p tcp ?-j ?ACCEPT

//追加規(guī)則至filter表中的INPUT鏈的末尾,允許任何人使用TCP協(xié)議訪問(wèn)本機(jī)

[root@proxy ~]# iptables ?-I ?INPUT ?-p ?udp ?-j ?ACCEPT

//插入規(guī)則至filter表中的INPUT鏈的開(kāi)頭鞭呕,允許任何人使用UDP協(xié)議訪問(wèn)本機(jī)

[root@proxy ~]# iptables ?-I ?INPUT 2 ?-p ?icmp ?-j ?ACCEPT

//插入規(guī)則至filter表中的INPUT鏈的第2行蛤育,允許任何人使用ICMP協(xié)議訪問(wèn)本機(jī)

查看iptables防火墻規(guī)則:

[root@proxy ~]# iptables ?-nL ?INPUT ???????????????????//僅查看INPUT鏈的規(guī)則

target ????prot opt source ??????????????destination

ACCEPT ????udp ?-- ?0.0.0.0/0 ???????????0.0.0.0/0

ACCEPT ????icmp -- ?0.0.0.0/0 ???????????0.0.0.0/0

ACCEPT ????tcp ?-- ?0.0.0.0/0 ???????????0.0.0.0/0

[root@proxy ~]# iptables ?-L ?INPUT ?--line-numbers ???????//查看規(guī)則,顯示行號(hào)

num ?target ????prot opt source ????????destination

1 ???ACCEPT ????udp ??-- ?anywhere ????anywhere

2 ???ACCEPT ????icmp -- ??anywhere ????anywhere

3 ???ACCEPT ????tcp ?-- ??anywhere ????anywhere

刪除規(guī)則葫松,清空所有規(guī)則:

[root@proxy ~]# iptables ?-D ?INPUT ?3

//刪除filter表中INPUT鏈的第3條規(guī)則

[root@proxy ~]# iptables ?-nL ?INPUT ???????????????//查看規(guī)則瓦糕,確認(rèn)是否刪除

[root@proxy ~]# iptables ?-F

//清空f(shuō)ilter表中所有鏈的防火墻規(guī)則

[root@proxy ~]# iptables ?-t ?nat ?-F

//清空nat表中所有鏈的防火墻規(guī)則

[root@proxy ~]# iptables ?-t ?mangle ?-F

//清空mangle表中所有鏈的防火墻規(guī)則

[root@proxy ~]# iptables ?-t ?raw ?-F

//清空raw表中所有鏈的防火墻規(guī)則

設(shè)置防火墻默認(rèn)規(guī)則:

[root@proxy ~]# iptables ?-t ?filter ?-P ?INPUT ?DROP

[root@proxy ~]# iptables ?-nL

Chain INPUT (policy DROP)

… …

二filter過(guò)濾和轉(zhuǎn)發(fā)控制

步驟一:iptables防火墻規(guī)則的條件

iptables防火墻可以根據(jù)很多很靈活的規(guī)則進(jìn)行過(guò)濾行為,具體常用的過(guò)濾條件如表-2所示腋么。

1)主機(jī)型防火墻案例

[root@proxy ~]# iptables -I INPUT -p tcp --dport 80 -j REJECT

[root@proxy ~]# iptables -I INPUT -s 192.168.2.100 -j REJECT

[root@proxy ~]# iptables -I INPUT -d 192.168.2.5 -p tcp --dport 80 -j REJECT

[root@proxy ~]# iptables -I INPUT -i eth0 -p tcp --dport 80 -j REJECT

[root@proxy ~]# iptables ?-A ?INPUT ?-s 192.168.4.100 ?-j ?DROP

//丟棄192.168.4.100發(fā)給本機(jī)的所有數(shù)據(jù)包

[root@proxy ~]# iptables ?-A ?INPUT -s ?192.168.2.0/24 ?-j ?DROP

//丟棄192.168.2.0/24網(wǎng)絡(luò)中所有主機(jī)發(fā)送給本機(jī)的所有數(shù)據(jù)包

[root@proxy ~]# iptables -A ?INPUT -s ?114.212.33.12 ?-p tcp --dport 22 -j ?REJECT

//拒絕114.212.33.12使用tcp協(xié)議遠(yuǎn)程連接本機(jī)ssh(22端口)

步驟二:開(kāi)啟Linux的路由轉(zhuǎn)發(fā)功能

1)Linux內(nèi)核默認(rèn)支持軟路由功能咕娄,通過(guò)修改內(nèi)核參數(shù)即可開(kāi)啟或關(guān)閉路由轉(zhuǎn)發(fā)功能。

[root@proxy ~]# echo 0 > /proc/sys/net/ipv4/ip_forward ???????????//關(guān)閉路由轉(zhuǎn)發(fā)

[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward ???????????//開(kāi)啟路由轉(zhuǎn)發(fā)

//注意以上操作僅當(dāng)前有效珊擂,計(jì)算機(jī)重啟后無(wú)效

[root@proxy ~]# echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

//修改/etc/sysctl.conf配置文件圣勒,可以實(shí)現(xiàn)永久有效規(guī)則

步驟三:網(wǎng)絡(luò)型防火墻案例

1)網(wǎng)絡(luò)型防火墻案例

部署如表-3所示的網(wǎng)絡(luò)拓?fù)浞驯洌欢ㄒ裵roxy主機(jī)的路由轉(zhuǎn)發(fā)功能打開(kāi)。

添加網(wǎng)關(guān)的命令

[root@client ~]# nmcli connection modify eth0 ipv4.gateway 192.168.4.5

[root@client ~]# nmcli connection up eth0

[root@web1 ~]# nmcli connection modify eth1 ipv4.gateway 192.168.2.5

[root@web1 ~]# nmcli connection up eth1

確認(rèn)不同網(wǎng)絡(luò)的聯(lián)通性

[root@client ~]# ping 192.168.2.100

[root@web1 ~]# ping 192.168.4.100

在web1主機(jī)上啟動(dòng)http服務(wù)

[root@web1 ~]# yum -y install httpd

[root@web1 ~]# echo "test page" > /var/www/html/index.html

[root@web1 ~]# systemctl restart httpd

沒(méi)有防火墻的情況下client訪問(wèn)web服務(wù)

[root@client ~]# curl http://192.168.2.100 ???????????????????//成功

設(shè)置proxy主機(jī)的防火墻規(guī)則圣贸,保護(hù)防火墻后面的Web服務(wù)器

[root@proxy ~]# iptables -I FORWARD -s 192.168.4.100 -p tcp --dport 80 -j DROP

設(shè)置完防火墻規(guī)則后挚歧,再次使用client客戶端訪問(wèn)測(cè)試效果

[root@client ~]# curl http://192.168.2.100 ???????????????????//失敗

步驟四:禁ping的相關(guān)策略

1)默認(rèn)直接禁ping的問(wèn)題?

[root@proxy ~]# iptables -I INPUT -p icmp -j DROP

//設(shè)置完上面的規(guī)則后吁峻,其他主機(jī)確實(shí)無(wú)法ping本機(jī)滑负,但本機(jī)也無(wú)法ping其他主機(jī)

//當(dāng)本機(jī)ping其他主機(jī),其他主機(jī)回應(yīng)也是使用icmp用含,對(duì)方的回應(yīng)被丟棄

2)禁止其他主機(jī)ping本機(jī)矮慕,允許本機(jī)ping其他主機(jī)

[root@proxy ~]# iptables ?-A ?INPUT ?-p icmp ?\

> --icmp-type echo-request ?-j ?DROP

//僅禁止入站的ping請(qǐng)求,不拒絕入站的ping回應(yīng)包

注意:關(guān)于ICMP的類型耕餐,可以參考help幫助凡傅,參考命令如下:

[root@proxy ~]# iptables -p icmp --help


三防火墻擴(kuò)展規(guī)則

iptables在基本過(guò)濾條件的基礎(chǔ)上還擴(kuò)展了很多其他條件,在使用時(shí)需要使用-m參數(shù)來(lái)啟動(dòng)這些擴(kuò)展功能肠缔,語(yǔ)法如下:

iptables選項(xiàng) 鏈名稱 -m 擴(kuò)展模塊 --具體擴(kuò)展條件 -j 動(dòng)作

-m ?multiport --dports ?20:22,25,80,110,143,16501:16800-m time

-m mac ?--mac-source ?52:54:00:00:00:0b

-m mutiport --dports ?20:22,25,80,110,143,16501:16800

步驟一:根據(jù)MAC地址過(guò)濾

1)根據(jù)IP過(guò)濾的規(guī)則夏跷,當(dāng)對(duì)方修改IP后,防火墻會(huì)失效

[root@proxy ~]# iptables -F

[root@proxy ~]# iptables -I INPUT -s 192.168.4.100 -p tcp --dport 22 -j DROP

//設(shè)置規(guī)則禁止192.168.4.100使用ssh遠(yuǎn)程本機(jī)

但是明未,當(dāng)client主機(jī)修改IP地址后槽华,該規(guī)則就會(huì)失效,注意因?yàn)樾薷牧薎P趟妥,對(duì)client主機(jī)的遠(yuǎn)程連接會(huì)斷開(kāi)猫态,需要使用virt-manager開(kāi)啟虛擬機(jī)操作:

[root@client ~]# ifconfig eth0 ?192.168.4.101

[root@client ~]# ssh 192.168.4.5 ???????????????????//依然成功

根據(jù)MAC地址過(guò)濾,可以防止這種情況的發(fā)生

[root@client ~]# ip link show eth0 ???????????????????//查看client的MAC地址

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000

link/ether 52:54:00:00:00:0b brd ff:ff:ff:ff:ff:ff

[root@proxy ~]# iptables ?-A ?INPUT ?-p tcp --dport 22\

> -m ??mac --mac-source ?52:54:00:00:00:0b ?-j ?DROP

//拒絕52:54:00:00:00:0b這臺(tái)主機(jī)遠(yuǎn)程本機(jī)

步驟二:基于多端口設(shè)置過(guò)濾規(guī)則

1)一次需要過(guò)濾或放行很多端口時(shí)會(huì)比較方便

[root@proxy ~]# iptables ?-A ?INPUT ?-p tcp ??\

> -m ?multiport --dports ?20:22,25,80,110,143,16501:16800 ?-j ?ACCEPT

//一次性開(kāi)啟20,21,22,25,80,110,143,16501到16800所有的端口

提示披摄,多端口還可以限制多個(gè)源端口亲雪,但因?yàn)樵炊丝诓还潭ǎ话悴粫?huì)使用疚膊,限制多個(gè)源端口的參數(shù)是--sports.

步驟三:根據(jù)IP地址范圍設(shè)置規(guī)則

1)允許從 192.168.4.10-192.168.4.20 登錄

[root@proxy ~]# iptables ?-A ?INPUT ?-p tcp ?--dport ?22 ?\

> -m ?iprange ?--src-range ?192.168.4.10-192.168.4.20 ??-j ?ACCEPT

注意义辕,這里也可以限制多個(gè)目標(biāo)IP的范圍,參數(shù)是--dst-range,用法與--src-range一致寓盗。

2)禁止從 192.168.4.0/24 網(wǎng)段其他的主機(jī)登錄

[root@proxy ~]# iptables -A INPUT -p tcp --dport 22 ?-s 192.168.4.0/24 ?-j ?DROP

四配置SNAT實(shí)現(xiàn)共享上網(wǎng) 

步驟一:搭建內(nèi)外網(wǎng)案例環(huán)境

這里灌砖,我們?cè)O(shè)定192.168.2.0/24網(wǎng)絡(luò)為外部網(wǎng)絡(luò),192.168.4.0/24為內(nèi)部網(wǎng)絡(luò)傀蚌。

現(xiàn)在基显,在外部網(wǎng)絡(luò)中有一臺(tái)web服務(wù)器192.168.2.100,因?yàn)樵O(shè)置了網(wǎng)關(guān)善炫,client已經(jīng)可以訪問(wèn)此web服務(wù)器了撩幽。但,如果查看web1的日志就會(huì)發(fā)現(xiàn)箩艺,日志里記錄的是192.168.4.100在訪問(wèn)網(wǎng)頁(yè)摸航。

我們需要實(shí)現(xiàn)的效果是制跟,client可以訪問(wèn)web服務(wù)器,但要偽裝為192.168.2.5后再訪問(wèn)web服務(wù)器(模擬所有位于公司內(nèi)部的電腦都使用的是私有IP酱虎,希望訪問(wèn)外網(wǎng)雨膨,就需要偽裝為公司的外網(wǎng)IP后才可以)。

步驟二:設(shè)置防火墻規(guī)則读串,實(shí)現(xiàn)IP地址的偽裝(SNAT源地址轉(zhuǎn)換)

1)確保proxy主機(jī)開(kāi)啟了路由轉(zhuǎn)發(fā)功能

[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward ???????????//開(kāi)啟路由轉(zhuǎn)發(fā)

2)設(shè)置防火墻規(guī)則聊记,實(shí)現(xiàn)SNAT地址轉(zhuǎn)換

[root@proxy ~]# iptables ?-t ?nat ?-A POSTROUTING \

> -s ?192.168.4.0/24 -p tcp --dport 80 ?-j SNAT ?--to-source 192.168.2.5

3)登陸web主機(jī)查看日志

[root@proxy ~]# tail ?/var/log/httpd/access_log

.. ..

192.168.2.5 - - [12/Aug/2018:17:57:10 +0800] "GET / HTTP/1.1" 200 27 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

通過(guò)日志會(huì)發(fā)現(xiàn),客戶端是先偽裝為了192.168.2.5之后再訪問(wèn)的web服務(wù)器恢暖!

4)擴(kuò)展知識(shí)排监,對(duì)于proxy外網(wǎng)IP不固定的情況可以執(zhí)行下面的地址偽裝,動(dòng)態(tài)偽裝IP杰捂。

[root@proxy ~]# iptables ?-t ?nat ?-A POSTROUTING \

> -s ?192.168.4.0/24 -p tcp --dport 80 -j MASQUERADE

最后舆床,所有iptables規(guī)則都是臨時(shí)規(guī)則,如果需要永久保留規(guī)則需要執(zhí)行如下命令:

[root@proxy ~]# service ?iptables save




結(jié)束語(yǔ):

更多精彩內(nèi)容持續(xù)更新中嫁佳,關(guān)注我微信公眾號(hào)挨队,有你更精彩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蒿往,一起剝皮案震驚了整個(gè)濱河市盛垦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓤漏,老刑警劉巖腾夯,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蔬充,居然都是意外死亡蝶俱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門饥漫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)榨呆,“玉大人,你說(shuō)我怎么就攤上這事趾浅°堤幔” “怎么了馒稍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵皿哨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我纽谒,道長(zhǎng)证膨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任鼓黔,我火速辦了婚禮央勒,結(jié)果婚禮上不见,老公的妹妹穿的比我還像新娘。我一直安慰自己崔步,他們只是感情好稳吮,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著井濒,像睡著了一般灶似。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瑞你,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天酪惭,我揣著相機(jī)與錄音,去河邊找鬼者甲。 笑死春感,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的虏缸。 我是一名探鬼主播鲫懒,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寇钉!你這毒婦竟也來(lái)了刀疙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扫倡,失蹤者是張志新(化名)和其女友劉穎谦秧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體撵溃,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疚鲤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缘挑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片集歇。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖语淘,靈堂內(nèi)的尸體忽然破棺而出诲宇,到底是詐尸還是另有隱情,我是刑警寧澤惶翻,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布姑蓝,位于F島的核電站,受9級(jí)特大地震影響吕粗,放射性物質(zhì)發(fā)生泄漏纺荧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宙暇。 院中可真熱鬧输枯,春花似錦、人聲如沸占贫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)型奥。三九已至蜻拨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桩引,已是汗流浹背缎讼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坑匠,地道東北人血崭。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像厘灼,于是被迫代替她去往敵國(guó)和親夹纫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345