日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

防火墙iptables介绍

發(fā)布時(shí)間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 防火墙iptables介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

防火墻:

netfilter/iptables是集成在Linux2.4.X版本內(nèi)核中的包過濾防火墻系統(tǒng)。該架構(gòu)可以實(shí)現(xiàn)數(shù)據(jù)包過濾,網(wǎng)絡(luò)地址轉(zhuǎn)換以及數(shù)據(jù)包管理功能。linux中防火墻分為兩部分:netfilter和iptables。netfilter位于內(nèi)核空間,目前是Linux內(nèi)核的組成部分。netfilter可以對(duì)本機(jī)所有流入,流出。轉(zhuǎn)發(fā)的數(shù)據(jù)包進(jìn)行查看,修改,丟棄,拒絕等操作。netfilter位于內(nèi)核空間中,用戶無(wú)法接觸內(nèi)核和修改內(nèi)核,需要使用iptables或Firewalld等工具。

防火墻模塊位于/lib/modules/`uname -r `/kernel/net/netfilter目錄下,需要某個(gè)模塊可以通過modprobe加載該模塊。

iptables是組成Linux平臺(tái)下的包過濾防火墻,與大多數(shù)的Linux軟件一樣,這個(gè)包過濾防火墻是免費(fèi)的,它可以代替昂貴的商業(yè)防火墻解決方案,完成封包過濾、封包重定向和網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)等功能。在日常Linux運(yùn)維工作中,經(jīng)常會(huì)設(shè)置iptables防火墻規(guī)則,用來(lái)加固服務(wù)安全。

CENTOS7中在原有netfilter/iptables架構(gòu)基礎(chǔ)上添加了firewalld。iptables僅可以調(diào)整ipv4的防火墻規(guī)則。centos7中默認(rèn)是用Firewalld作為用戶的防火墻工具,當(dāng)用戶使用firewalld編寫ipv4防火墻規(guī)則時(shí),firewalld依然調(diào)用底成的iptables實(shí)現(xiàn)具體功能。

傳統(tǒng)iptables如何使用。

iptables的規(guī)則表和鏈
表(tables):提供特定的功能,iptables內(nèi)置了4個(gè)表,即

filter表(實(shí)現(xiàn)包過濾)
nat表(網(wǎng)絡(luò)地址轉(zhuǎn)換)
mangle表(修改數(shù)據(jù)標(biāo)記位規(guī)則表)
raw表(跟蹤數(shù)據(jù)表規(guī)則表)

鏈(chains):當(dāng)一個(gè)數(shù)據(jù)包到達(dá)一個(gè)鏈時(shí),iptables就會(huì)從鏈中第一條規(guī)則開始檢查,看該數(shù)據(jù)包是否滿足規(guī)則所定義的條件。如果滿足,系統(tǒng)就會(huì)根據(jù) 該條規(guī)則所定義的方法處理該數(shù)據(jù)包;否則iptables將繼續(xù)檢查下一條規(guī)則,如果該數(shù)據(jù)包不符合鏈中任一條規(guī)則,iptables就會(huì)根據(jù)該鏈預(yù)先定 義的默認(rèn)策略來(lái)處理數(shù)據(jù)包。

INPUT(入站數(shù)據(jù)過濾)
OUTPUT(出站數(shù)據(jù)過濾)
FORWARD(轉(zhuǎn)發(fā)數(shù)據(jù)過濾)
PREROUTING(路由前過濾)
POSTROUTING(路由后過濾)

?

-->PREROUTING-->路由決定----->FORWARD------------->POSTROUTING|                        ^|                        |INPUT--->LOCAL PRECESS-->OUTPUT

1)外部主機(jī)發(fā)送到數(shù)據(jù)包給防火墻本機(jī),數(shù)據(jù)經(jīng)過PREROUTING鏈和INPUT鏈

2)防火墻本機(jī)發(fā)送數(shù)據(jù)包到外部主機(jī),數(shù)據(jù)經(jīng)過OUTPUT和POSTROUTING

3)防火墻作為路由負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù),數(shù)據(jù)經(jīng)過PREROUTING,FORWARD,POSTROUTING.

?1)當(dāng)一個(gè)數(shù)據(jù)包進(jìn)入網(wǎng)卡時(shí),它首先進(jìn)入PREROUTING鏈,內(nèi)核根據(jù)數(shù)據(jù)包目的IP判斷是否需要轉(zhuǎn)送出去。
?2)如果數(shù)據(jù)包就是進(jìn)入本機(jī)的,它就會(huì)沿著圖向下移動(dòng),到達(dá)INPUT鏈。數(shù)據(jù)包到了INPUT鏈后,任何進(jìn)程都會(huì)收到它。本機(jī)上運(yùn)行的程序可以發(fā)送數(shù)據(jù)包,這些數(shù)據(jù)包會(huì)經(jīng)過OUTPUT鏈,然后到達(dá)POSTROUTING鏈輸出。
?3)如果數(shù)據(jù)包是要轉(zhuǎn)發(fā)出去的,且內(nèi)核允許轉(zhuǎn)發(fā),數(shù)據(jù)包就會(huì)如圖所示向右移動(dòng),經(jīng)過FORWARD鏈,然后到達(dá)POSTROUTING鏈輸出。

規(guī)則概念
規(guī)則(rules)其實(shí)就是網(wǎng)絡(luò)管理員預(yù)定義的條件,規(guī)則一般的定義為“如果數(shù)據(jù)包頭符合這樣的條件,就這樣處理這個(gè)數(shù)據(jù)包”。規(guī)則存儲(chǔ)在內(nèi)核空間的信息 包過濾表中,這些規(guī)則分別指定了源地址、目的地址、傳輸協(xié)議(如TCP、UDP、ICMP)和服務(wù)類型(如HTTP、FTP和SMTP)等。
當(dāng)數(shù)據(jù)包與規(guī)則匹配時(shí),iptables就根據(jù)規(guī)則所定義的方法來(lái)處理這些數(shù)據(jù)包,如放行(accept),拒絕(reject)和丟棄(drop)等。配置防火墻的主要工作是添加,修改和刪除等規(guī)則。
其中:

?

匹配(match):符合指定的條件,比如指定的 IP 地址和端口。
丟棄(drop):當(dāng)一個(gè)包到達(dá)時(shí),簡(jiǎn)單地丟棄,不做其它任何處理。
接受(accept):和丟棄相反,接受這個(gè)包,讓這個(gè)包通過。
拒絕(reject):和丟棄相似,但它還會(huì)向發(fā)送這個(gè)包的源主機(jī)發(fā)送錯(cuò)誤消息。這個(gè)錯(cuò)誤消息可以指定,也可以自動(dòng)產(chǎn)生。
目標(biāo)(target):指定的動(dòng)作,說明如何處理一個(gè)包,比如:丟棄,接受,或拒絕。
跳轉(zhuǎn)(jump):和目標(biāo)類似,不過它指定的不是一個(gè)具體的動(dòng)作,而是另一個(gè)鏈,表示要跳轉(zhuǎn)到那個(gè)鏈上。
規(guī)則(rule):一個(gè)或多個(gè)匹配及其對(duì)應(yīng)的目標(biāo)。

防火墻的語(yǔ)法格式?

1)iptables的基本語(yǔ)法格式
iptables [-t 表名] 命令選項(xiàng) [鏈名] [條件匹配] [-j 目標(biāo)動(dòng)作或跳轉(zhuǎn)]

iptables -t 表名 <-A/I/D/R> 規(guī)則鏈名 [規(guī)則號(hào)] <-i/o 網(wǎng)卡名> -p 協(xié)議名 <-s 源IP/源子網(wǎng)> --sport 源端口 <-d 目標(biāo)IP/目標(biāo)子網(wǎng)> --dport 目標(biāo)端口 -j 動(dòng)作

說明:
表名、鏈名:用于指定iptables命令所操作的表和鏈;
命令選項(xiàng):用于指定管理iptables規(guī)則的方式(比如:插入、增加、刪除、查看等;
條件匹配:用于指定對(duì)符合什么樣 條件的數(shù)據(jù)包進(jìn)行處理;
目標(biāo)動(dòng)作或跳轉(zhuǎn):用于指定數(shù)據(jù)包的處理方式(比如允許通過、拒絕、丟棄、跳轉(zhuǎn)(Jump)給其它鏈處理。

2)iptables命令的基本參數(shù)

?

-P    設(shè)置默認(rèn)策略:iptables -P INPUT (DROP    ACCEPT)
-F    清空規(guī)則鏈
-L    查看規(guī)則鏈
-A    在規(guī)則鏈的末尾加入新規(guī)則
-I    num 在規(guī)則鏈的頭部加入新規(guī)則
-D    num 刪除某一條規(guī)則
-s    匹配來(lái)源地址IP/MASK,加嘆號(hào)"!"表示除這個(gè)IP外。
-d    匹配目標(biāo)地址
-i    網(wǎng)卡名稱 匹配從這塊網(wǎng)卡流入的數(shù)據(jù)
-o    網(wǎng)卡名稱 匹配從這塊網(wǎng)卡流出的數(shù)據(jù)
-p    匹配協(xié)議,如tcp,udp,icmp
--dport num    匹配目標(biāo)端口號(hào)
--sport num    匹配來(lái)源端口號(hào)

?

?

常用命令:
-A 追加規(guī)則-->iptables -A INPUT
-D 刪除規(guī)則-->iptables -D INPUT 1(編號(hào))
-R 修改規(guī)則-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代現(xiàn)行規(guī)則,順序不變(1是位置)
-I 插入規(guī)則-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一條規(guī)則,原本位置上的規(guī)則將會(huì)往后移動(dòng)一個(gè)順位
-L 查看規(guī)則-->iptables -L INPUT 列出規(guī)則鏈中的所有規(guī)則,默認(rèn)是filter表,如果列出nat表的規(guī)則需要添加-t,即iptables -t nat -L
-N 新的規(guī)則-->iptables -N allowed 定義新的規(guī)則通用參數(shù):
-p 協(xié)議  例:iptables -A INPUT -p tcp
-s源地址 例:iptables -A INPUT -s 192.168.1.1
-d目的地址 例:iptables -A INPUT -d 192.168.12.1
-sport源端口 例:iptables -A INPUT -p tcp --sport 22
-dport目的端口 例:iptables -A INPUT -p tcp --dport 22
-i指定入口網(wǎng)卡 例:iptables -A INPUT -i eth0
-o指定出口網(wǎng)卡 例:iptables -A FORWARD -o eth0
-j 指定要進(jìn)行的處理動(dòng)作
常用的ACTION: DROP:丟棄 REJECT:明示拒絕 ACCEPT:接受 SNAT基于原地址的轉(zhuǎn)換 source
--指定原地址
MASQUERADE:源地址偽裝
REDIRECT:重定向:主要用于實(shí)現(xiàn)端口重定向
MARK:打防火墻標(biāo)記的
RETURN:返回 在自定義鏈執(zhí)行完畢后使用返回,來(lái)返回原規(guī)則鏈
  

?實(shí)例:

1.空當(dāng)前的所有規(guī)則和計(jì)數(shù)

iptables -F  # 清空所有的防火墻規(guī)則
iptables -X  # 刪除用戶自定義的空鏈
iptables -Z  # 清空計(jì)數(shù)

2.配置允許ssh端口連接

iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
# 22為你的ssh端口, -s 192.168.1.0/24表示允許這個(gè)網(wǎng)段的機(jī)器來(lái)連接,其它網(wǎng)段的ip地址是登陸不了你的機(jī)器的。 -j ACCEPT表示接受這樣的請(qǐng)求

3.允許本地回環(huán)地址可以正常使用

iptables -A INPUT -i lo -j ACCEPT
#本地圓環(huán)地址就是那個(gè)127.0.0.1,是本機(jī)上使用的,它進(jìn)與出都設(shè)置為允許
iptables -A OUTPUT -o lo -j ACCEPT

4.設(shè)置默認(rèn)的規(guī)則

iptables -P INPUT DROP # 配置默認(rèn)的不讓進(jìn)
iptables -P FORWARD DROP # 默認(rèn)的不允許轉(zhuǎn)發(fā)
iptables -P OUTPUT ACCEPT # 默認(rèn)的可以出去

5.配置白名單

iptables -A INPUT -p all -s 192.168.1.0/24 -j ACCEPT  # 允許機(jī)房?jī)?nèi)網(wǎng)機(jī)器可以訪問
iptables -A INPUT -p all -s 192.168.140.0/24 -j ACCEPT  # 允許機(jī)房?jī)?nèi)網(wǎng)機(jī)器可以訪問
iptables -A INPUT -p tcp -s 183.121.3.7 --dport 3380 -j ACCEPT # 允許183.121.3.7訪問本機(jī)的3380端口

6.開啟相應(yīng)的服務(wù)端口

iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 開啟80端口,因?yàn)閣eb對(duì)外都是這個(gè)端口
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 允許被ping
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 已經(jīng)建立的連接得讓它進(jìn)來(lái)

保存規(guī)則到配置文件中

cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak # 任何改動(dòng)之前先備份,請(qǐng)保持這一優(yōu)秀的習(xí)慣
iptables-save > /etc/sysconfig/iptables
cat /etc/sysconfig/iptables

列出已設(shè)置的規(guī)則

iptables -L [-t 表名] [鏈名]
四個(gè)表名 raw,nat,filter,mangle
五個(gè)規(guī)則鏈名 INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
filter表包含INPUT、OUTPUT、FORWARD三個(gè)規(guī)則鏈iptables -L -t nat                  # 列出 nat 上面的所有規(guī)則
#            ^ -t 參數(shù)指定,必須是 raw, nat,filter,mangle 中的一個(gè)
iptables -L -t nat  --line-numbers  # 規(guī)則帶編號(hào)
iptables -L INPUTiptables -L -nv  # 查看,這個(gè)列表看起來(lái)更詳細(xì)

清除已有規(guī)則

iptables -F INPUT  # 清空指定鏈 INPUT 上面的所有規(guī)則
iptables -X INPUT  # 刪除指定的鏈,這個(gè)鏈必須沒有被其它任何規(guī)則引用,而且這條上必須沒有任何規(guī)則。# 如果沒有指定鏈名,則會(huì)刪除該表中所有非內(nèi)置的鏈。
iptables -Z INPUT  # 把指定鏈,或者表中的所有鏈上的所有計(jì)數(shù)器清零。

開放指定的端口

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT?????????????? #允許本地回環(huán)接口(即運(yùn)行本機(jī)訪問本機(jī))
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT??? #允許已建立的或相關(guān)連的通行
iptables -A OUTPUT -j ACCEPT???????? #允許所有本機(jī)向外的訪問
iptables -A INPUT -p tcp --dport 22 -j ACCEPT??? #允許訪問22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT??? #允許訪問80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT??? #允許ftp服務(wù)的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT??? #允許FTP服務(wù)的20端口
iptables -A INPUT -j reject?????? #禁止其他未允許的規(guī)則訪問
iptables -A FORWARD -j REJECT???? #禁止其他未允許的規(guī)則訪問

屏蔽IP

iptables -A INPUT -p tcp -m tcp -s 192.168.0.8 -j DROP  # 屏蔽惡意主機(jī)(比如,192.168.0.8
iptables -I INPUT -s 123.45.6.7 -j DROP       #屏蔽單個(gè)IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整個(gè)段即從123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP    #封IP段即從123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP    #封IP段即從123.45.6.1到123.45.6.254的命令是

指定數(shù)據(jù)包出去的網(wǎng)絡(luò)接口,只對(duì) OUTPUT,FORWARD,POSTROUTING 三個(gè)鏈起作用。

iptables -A FORWARD -o eth0

查看已添加的規(guī)則

iptables -L -n -v
Chain INPUT (policy DROP 48106 packets, 2690K bytes)pkts bytes target     prot opt in     out     source               destination5075  589K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0191K   90M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22
1499K  133M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
4364K 6351M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED6256  327K ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target     prot opt in     out     source               destinationChain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)pkts bytes target     prot opt in     out     source               destination5075  589K ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0

啟動(dòng)網(wǎng)絡(luò)轉(zhuǎn)發(fā)規(guī)則,

公網(wǎng)210.14.67.7讓內(nèi)網(wǎng)192.168.188.0/24上網(wǎng)

iptables -t nat -A POSTROUTING -s 192.168.188.0/24 -j SNAT --to-source 210.14.67.127

端口映射,

本機(jī)的 2222 端口映射到內(nèi)網(wǎng) 虛擬機(jī)的22 端口

iptables -t nat -A PREROUTING -d 210.14.67.127 -p tcp --dport 2222  -j DNAT --to-dest 192.168.188.115:22

字符串匹配

比如,我們要過濾所有TCP連接中的字符串test,一旦出現(xiàn)它我們就終止這個(gè)連接,我們可以這么做:

iptables -A INPUT -p tcp -m string --algo kmp --string "test" -j REJECT --reject-with tcp-reset
iptables -L# Chain INPUT (policy ACCEPT)
# target     prot opt source               destination
# REJECT     tcp  --  anywhere             anywhere       STRING match "test" ALGO name kmp TO 65535 reject-with tcp-reset
#
# Chain FORWARD (policy ACCEPT)
# target     prot opt source               destination
#
# Chain OUTPUT (policy ACCEPT)
# target     prot opt source               destination

阻止Windows蠕蟲的攻擊

iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd.exe"

防止SYN洪水攻擊

iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEP

iptables防火墻規(guī)則的順序十分重要,內(nèi)核按順序檢查這些規(guī)則,如果發(fā)現(xiàn)有匹配的規(guī)則條目,則立刻執(zhí)行相關(guān)動(dòng)作,停止繼續(xù)向下查找規(guī)則條目,如果所有的防火墻規(guī)則都未匹配成功,則按照默認(rèn)的策略處理, -A添加防火墻規(guī)則追加到整個(gè)鏈的最后,-I默認(rèn)會(huì)插入到鏈中作為第一條規(guī)則

iptables的用法:iptables [-t 表名] {-A|-D|-I|-F|-L|-R|-Z|-P} 鏈名 rule-specification

查看filter表的所有規(guī)則
iptables -nL
查看filter表防火墻規(guī)則并顯示規(guī)則編號(hào) iptables
-nL --line-number

查看net表的所有規(guī)則 iptables
-t nat -nL

清空filter表的所有規(guī)則 iptables
-F

在filter表中添加一條新的入站規(guī)則,丟棄192.
168.1.0主機(jī)發(fā)送給防火墻本機(jī)的所有數(shù)據(jù)包 iptables -A INPUT -s 192.168.0.1 -j DROP
在filter表中,拒絕192.
168.0.22ping防火墻本機(jī) iptables -I INPUT -s 192.168.0.22 -p icmp -j REJECT
刪除filter表中INPUT鏈的第一條規(guī)則 iptables
-D INPUT 1
替換filter表中第二條規(guī)則,拒絕192.168.1.254之外的任何主機(jī)連接到防火墻本機(jī) iptables -R INPUT 2 ! -s 192.168.1.254 -j REJECT
修改filter表中INPUT的默認(rèn)規(guī)則是接受數(shù)據(jù)包 iptables
-t filter -P INPUT ACCEPT
將192.
168.0.10主機(jī)發(fā)送給防火墻本機(jī)22端口的所有數(shù)據(jù)包信息記錄到messages日志: iptables -I INPUT -s 192.168.0.10 -p tcp --dport 22 -j LOG
允許任何主機(jī)從eno16網(wǎng)絡(luò)接口訪問防火墻本機(jī)的80端口 iptables
-I INPUT -i eno16 --p tcp --dport 80 -j ACCEPT

IPTABLES防火墻應(yīng)用實(shí)例

案例一:允許任意客戶端訪問服務(wù)器主機(jī)提供的日常服務(wù)(http,https,ssh),在Linux系統(tǒng)中/etc/services文件可以找到各種服務(wù)對(duì)應(yīng)的端口號(hào)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
(如果你把OUTPUT 設(shè)置成DROP,就需要加上這個(gè)規(guī)則,否則SSH還是不能登錄,因?yàn)镾SH服務(wù)職能進(jìn)不能出.) iptables
-A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -P INPUT DROP
(-P:設(shè)置鏈默認(rèn)規(guī)則) iptables
-P OUTPUT ACCEPT

?案例二:公司擁有一個(gè)共有ip,使用防火墻實(shí)現(xiàn)局域網(wǎng)中所有主機(jī)通過SNAT共享上網(wǎng),使用centos7作為公司軟路由,公司內(nèi)部所有192.168.0.1/24網(wǎng)段內(nèi)的主機(jī)連接到外網(wǎng)124.126.199.84時(shí),防火墻自動(dòng)將所有數(shù)據(jù)包的原地址修改為路由器上的公有IP,最后互聯(lián)網(wǎng)將信息返回路由后,由路由轉(zhuǎn)交給真正的后端主機(jī)。防火墻原地址轉(zhuǎn)換(SNAT)規(guī)則需寫入到NAT表中的POSTROUTING鏈。

在centos7軟路由配置:

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 124.126.199.84

案例三:公司對(duì)外有一個(gè)公有IP,內(nèi)部有http,mail兩臺(tái)核心的服務(wù)器,通過防火墻實(shí)現(xiàn)客戶可以從互聯(lián)網(wǎng)的任意位置訪問位于公司內(nèi)部的兩臺(tái)服務(wù)器資源,連接方向發(fā)生變化,案例二是SNAT,本例是DNAT.

該案例中0.100是http,0.101是postfix,124.126.199.84是作為軟路由使用的。
vim /etc/sysctl.conf net.ipv4.ip_forward = 1 sysctl -p iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -d 124.126.199.84 -p tcp --dport 80 DNAT --to-destination 192.168.0.100 iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -d 124.126.199.84 -p tcp --dport 25 DNAT --to-destination 192.168.0.101
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -d 124.126.199.84 -p tcp --dport 110 DNAT --to-destination 192.168.0.101

案例四:目前網(wǎng)絡(luò)上攻擊手法多,很多攻擊采用發(fā)送大量無(wú)效的數(shù)據(jù)包給服務(wù)器,造成服務(wù)器無(wú)法正常響應(yīng)正常的數(shù)據(jù)請(qǐng)求,iptables提供了一個(gè)limit擴(kuò)展功能,可以限制單位時(shí)間內(nèi)數(shù)據(jù)包的個(gè)數(shù)。下面是規(guī)則是當(dāng)每秒數(shù)據(jù)包個(gè)數(shù)為500時(shí)接受入站連接,否則拒絕連接。

iptables -I INPUT -m limit --limit 500/sec -j ACCEPT
iptables -P INPUT DROP

案例五:企業(yè)環(huán)境中,服務(wù)器面臨各種攻擊,iptables本身屬于三層過濾防火墻,也提供了string擴(kuò)展功能,通過--string可以根據(jù)關(guān)鍵詞限制網(wǎng)絡(luò)連接。下面是記錄基于Linux軟路由服務(wù)器防火墻規(guī)則中,實(shí)現(xiàn)拒絕轉(zhuǎn)發(fā)包含有關(guān)鍵詞/etc/passwd 以及qq的數(shù)據(jù)包,防止將密碼文件復(fù)制出局域網(wǎng),防止內(nèi)部員工訪問QQ網(wǎng)站。

iptables -I FORWARD -m string --algo bm--string "/etc/passwd" -j REJECT
iptables -I FORWARD -m string --algo bm--string "qq" -j REJECT

案例六:根據(jù)數(shù)據(jù)連接狀態(tài)設(shè)置防火墻規(guī)則,放行所有的出站數(shù)據(jù)包,拒絕入站的新連接請(qǐng)求與無(wú)效連接,放行入站的回應(yīng)請(qǐng)求。

iptables -F
iptables -A INPUT -m state --state NEW -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P OUTPUT ACCEPT

案例七:公司基于Linux軟路由設(shè)備,要求在路由設(shè)備上設(shè)置防火墻,記錄192.168.0.1-192.168.0.11地址內(nèi)所有主機(jī)發(fā)送給路由要求轉(zhuǎn)發(fā)的數(shù)據(jù)包,并允許轉(zhuǎn)發(fā)這些數(shù)據(jù)包

iptables -A FORWARD -m iprange --src-range 192.168.0.1-192.168.0.11 -p tcp --dport 80 -j ACCEPT

案例八:減少不安全的端口連接

 iptables -A OUTPUT -p tcp --sport 31337 -j DROPiptables -A OUTPUT -p tcp --dport 31337 -j DROP
有些特洛伊木馬會(huì)掃描端口31337到31340(即黑客語(yǔ)言中的 elite 端口)上的服務(wù),
既然合法服務(wù)都不使用這些非標(biāo)準(zhǔn)端口來(lái)通信,
阻塞這些端口能夠有效地減少你的網(wǎng)絡(luò)上可能被感染的機(jī)器和它們的遠(yuǎn)程主服務(wù)器進(jìn)行獨(dú)立通信的機(jī)會(huì)。
還有其他端口:31335274442766520034 NetBus、9704137-139(smb),2049(NFS)端口也應(yīng)被禁止

案例九:

場(chǎng)景一
開放 tcp 10-22/80 端口 開放 icmp 其他未被允許的端口禁止訪問
存在的問題: 本機(jī)無(wú)法訪問本機(jī); 本機(jī)無(wú)法訪問其他主機(jī)場(chǎng)景二
ftp: 默認(rèn)被動(dòng)模式(服務(wù)器產(chǎn)生隨機(jī)端口告訴客戶端, 客戶端主動(dòng)連接這個(gè)端口拉取數(shù)據(jù)) vsftpd: 使 ftp 支持主動(dòng)模式(客戶端產(chǎn)生隨機(jī)端口通知服務(wù)器, 服務(wù)器主動(dòng)連接這個(gè)端口發(fā)送數(shù)據(jù))場(chǎng)景三
允許外網(wǎng)訪問: web http -> 80/tcp; https -> 443/tcp mail smtp -> 25/tcp; smtps -> 465/tcp pop3 -> 110/tcp; pop3s -> 995/tcp imap -> 143/tcp
內(nèi)部使用: file nfs -> 123/udp samba -> 137/138/139/445/tcp ftp -> 20/21/tcp remote ssh -> 22/tcp sql mysql -> 3306/tcp oracle -> 1521/tcp場(chǎng)景四
nat 轉(zhuǎn)發(fā)場(chǎng)景五
防CC攻擊



iptables -L -F -A -D # list flush append delete
# 場(chǎng)景一
iptables -I INPUT -p tcp --dport 80 -j ACCEPT # 允許 tcp 80 端口
iptables -I INPUT -p tcp --dport 10:22 -j ACCEPT # 允許 tcp 10-22 端口
iptables -I INPUT -p icmp -j ACCEPT # 允許 icmp
iptables -A INPUT -j REJECT # 添加一條規(guī)則, 不允許所有

# 優(yōu)化場(chǎng)景一
iptables -I INPUT -i lo -j ACCEPT # 允許本機(jī)訪問
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允許訪問外網(wǎng)
iptables -I INPUT -p tcp --dport 80 -s 10.10.188.233 -j ACCEPT # 只允許固定ip訪問80

# 場(chǎng)景二
vi /etc/vsftpd/vsftpd.conf # 使用 vsftpd 開啟 ftp 主動(dòng)模式
port_enable=yes
connect_from_port_20=YES
iptables -I INPUT -p tcp --dport 21 -j ACCEPT

vi /etc/vsftpd/vsftpd.conf # 建議使用 ftp 被動(dòng)模式
pasv_min_port=50000
pasv_max_port=60000
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -p tcp --dport 50000:60000 -j ACCEPT

# 還可以使用 iptables 模塊追蹤來(lái)自動(dòng)開發(fā)對(duì)應(yīng)的端口

# 場(chǎng)景三
iptables -I INPUT -i lo -j ACCEPT # 允許本機(jī)訪問
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允許訪問外網(wǎng)
iptables -I INPUT -s 10.10.155.0/24 -j ACCEPT # 允許內(nèi)網(wǎng)訪問
iptables -I INPUT -p tcp -m multiport --dports 80,1723 -j ACCEPT # 允許端口, 80 -> http, 1723 -> vpn
iptables -A INPUT -j REJECT # 添加一條規(guī)則, 不允許所有

iptables-save # 保存設(shè)置到配置文件

# 場(chǎng)景四
iptables -t nat -L # 查看 nat 配置

iptables -t nat -A POST_ROUTING -s 10.10.177.0/24 -j SNAT --to 10.10.188.232 # SNAT
vi /etc/sysconfig/network # 配置網(wǎng)關(guān)

iptables -t nat -A POST_ROUTING -d 10.10.188.232 -p tcp --dport 80 -j DNAT --to 10.10.177.232:80 # DNAT

#場(chǎng)景五
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT # 限制并發(fā)連接訪問數(shù)
iptables -I INPUT -m limit --limit 3/hour --limit-burst 10 -j ACCEPT # limit模塊; --limit-burst 默認(rèn)為5

防火墻的備份和還原,如果不保存,計(jì)算機(jī)重啟后所有規(guī)則會(huì)丟失。

iptables-save > /etc/sysconfig/iptables
iptables-save > firewall.bak
iptables-restore < firewall.bak

轉(zhuǎn)載于:https://www.cnblogs.com/fengzhongzhuzu/p/9075935.html

總結(jié)

以上是生活随笔為你收集整理的防火墙iptables介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。