亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

防火墻及netfilter基礎iptables基本用法

發布時間:2020-06-03 01:42:53 來源:網絡 閱讀:1062 作者:wgbhji 欄目:建站服務器

iptables

 

firewall:

主機防火墻

網絡防火墻

 

工作于主機或網絡的邊緣,對于進出的報文根據事先定義的規則作檢查,將那些能夠被規則所匹配到的報文作出相應處理的組件。

 

網絡防火墻:

專業的硬件防火墻:

checkpoint,netscreen

主機:

 

iptables: 程序

iptables:規則編寫工具

netfilter: 網絡過濾器, 內核中工作在TCP/IP網絡協議棧上的框架;

 

IDSIntrusionDetecting System

NIDS

HIDS

 

IPS:Intrusion Protec System

 

HoneyPot: 蜜罐

 

kali,(backtrack)

 

OpenBSD:

ipfw

ipchains

iptables/netfilter

 

kernel,framework

 

hooksfunction:

prerouting: 進入本機后路由功能發生之前

input:到達本機內部

output: 由本機發出

forward: 由本機轉發

postrouting:路由功能發生之后,即將離開本機之前

 

路由發生的時刻:

報文進入本機后:

判斷目標地址

報文離開本機之前:

判斷經由哪個接口發出;

 

報文流向經由的位置:

到本內部:prerouting, input

由本機發出:output, postrouting

由本機轉發:prerouting, forward, postrouing

 

規則的功能:

過濾:firewall

地址轉換:NAT Server

NetworkAddress Translation

mangle:修改報文首部中的某些信息

raw:關閉nat表上啟用的連接追蹤功能

 

filterinput,forward, output

natprerouting,output, postrouting

mangleprerouting,input, forward, output, postrouting

rawprerouting,output

 

iptables:每個鉤子函數上可放置n條規則;對應于每個鉤子上的多條規則就稱為一個鏈(CHAIN

每個功能有多個鏈,所以,就稱作表;

防火墻及netfilter基礎iptables基本用法

 

鏈:鏈上的規則次序即為檢查次序,因此有一定的法則

(1) 同類規則,匹配范圍小的放上面;

(2) 不同類規則,匹配報文幾率較大的放上面;

(3) 應該設置默認策略;

 

iptables/netfilter

netfilter:framework in kernel

tcp/ip協議棧

 

iptables有四表五鏈

filter:input, forward, output

添加規則時的考量點:

(1) 要實現的功能:判斷添加在哪個表上;

(2) 報文流向及經由路徑:判斷添加在哪個鏈上;

 

功能的優先級:

由高而低:

raw--> mangle --> nat --> filter

 

規則的組成部分:

報文的匹配條件, 匹配之后如何處理

 

匹配條件:基本匹配條件、擴展匹配條件

如何處理:內建處理機制、自定義處理機制(自定義的鏈)

 

注意:報文不可能經由自定義鏈,只有在被內置鏈上的引用才能生效(即做為自定義目標)

 

iptables:規則管理工具

自動實現規則的語法檢查

 

規則和鏈有計數器:

pkts: 由規則或鏈匹配到的報文的個數;

bytes:由規則或鏈匹配到的所有報文大小之和;

 

鏈:應該有默認策略;

 

 

iptables命令生成規則,送往netfilter;

規則通過內核接口直接送至內核,因此,會立即生效。但不會永久有效;

如果期望有永久有效,需要保存至配置文件中,此文件還開機時加載和由用戶手工加載;

 

iptables[-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET

 

-tTABLE:

默認為filter, 共有filter, nat, mangle, raw四個可用;

 

SUBCOMMAND

鏈:

-Fflush,清空指定表的指定鏈上所有規則;省略鏈名時,清空表中的所有鏈;

例:

[root@localhost~]# iptables -F INPUT

[root@localhost~]# iptables -F OUTPUT

 

-Nnew, 新建一個用戶自定義的鏈;自定義鏈只能作為默認鏈上的跳轉對象,即在默認鏈通過引用來生效自定義鏈;

例:

防火墻及netfilter基礎iptables基本用法

 

-Xdrop,刪除用戶自定義的空鏈非空自定義鏈內置鏈無法刪除

-Zzero,將規則的計數器置0

-Ppolicy,設置鏈的默認處理機制;當所有都無法匹配或有匹配有無法做出有效處理機制時,默認策略即生效;

filter表的可用策略:ACCEPT,DROP, REJECT

            例:表明filter的表INPUT鏈默認為DROP

iptables-t filter -P INPUT DROP

 

-Erename,重命名自定義鏈;

 

注意:被引用中的鏈,無法刪除和改名

 

規則:

-Aappend,在鏈尾追加一條規則;

-Iinsert,在指定位置插入一條規則;

-Ddelete,刪除指定的規則;

-Rreplace,替換指定的規則;

 

查看:

-Llist,列出指定鏈上的所有規則;

-n: numeric,以數字格式顯示地址和端口號,即不反解;

-v: verbose,詳細格式,顯示規則的詳細信息,包括規則計數器等;

-vv:

-vvv:

--line-numbers: 顯示規則編號;

 

可以顯示規則的編號

 iptables -L -n --line-numbers

-x: exactly,顯示計數器的精確值;

                                                          

防火墻及netfilter基礎iptables基本用法

 

pktsbytes target     prot opt in     out    source               destination

pkts: 被本規則所匹配到的包個數;

bytes:被本規則所匹配到的所包的大小之和;

target: 處理目標(目標可以為用戶自定義的鏈)

prot: 協議 {tcp,udp, icmp}

opt: 可選項

in: 數據包流入接口

out: 數據包流出接口

source: 源地址

destination: 目標地址;

 

CRETERIA: 匹配條件

檢查IP首部,檢查TCPUDPICMP首部;

基于擴展機制,也可以進行額外的檢查;如做連接追蹤;

 

注意:可同時指定多個條件,默認多條件要同時被滿足;

 

匹配條件:

 

通用匹配:

[!] -s, --src, --source  IP|Network:檢查報文中的源IP地址;

-d, --dst, --destination:檢查報文中的目標IP地址;

-p, --protocol:檢查報文中的協議,即ip首部中的protocols所標識的協議;tcpudpicmp三者之一;

-i, --in-interface:數據報文的流入接口;通常只用于PREROUTING, INPUT, FORWARD鏈上的規則;

-o, --out-interface:檢查報文的流出接口;通常只用于FORWARD, OUTPUT, POSTROUTING鏈上的規則;

 

                             

                                            例:替換第一條規則,檢查為tcp協議首部

                                            iptables -t filter -R INPUT 1 -s 172.16.250.145 -d 172.16.249.139 -ptcp -j ACCEPT

                                            添加一條icmp協議的

                                            iptables -t filter -R INPUT 1 -s 172.16.250.145 -d 172.16.249.139 -picmp -j ACCEPT

                                             例:INPUT的默認策略改為DROP

                                            iptables -t filter -P INPUTDROP

 

                                           例將原先的第二條規則替換為以eth0端口進入的以icmp協議

                                           [root@localhost ~]# iptables -R INPUT 2 -s 172.16.250.145 -d172.16.249.139 -p icmp -i eth0 -j ACCEPT

                                           [root@localhost ~]# iptables -L -n -v --line-numbers

                                           Chain INPUT (policy DROP 7 packets, 796 bytes)

                                           num   pkts bytes target     prot opt in     out    source              destination        

                                           1     1546  113K ACCEPT     tcp --  *      *      172.16.250.145      172.16.249.139     

                                           2        0     0 ACCEPT     icmp -- eth0   *       172.16.250.145       172.16.249.139

 

擴展匹配:使用iptables的模塊實現擴展性檢查機制

隱式擴展:如果在通用匹配上使用-p選項指明了協議的話,則使用-m選項指明對其協議的擴展就變得可有可無了;

tcp:

--dportPORT[-PORT]

--sport

--tcp-flagsLIST1 LIST2

LIST1: 要檢查的標志位;

LIST2:在LIST1中出現過的,且必須為1標記位;而余下的則必須為0;

例如:--tcp-flags syn,ack,fin,rst syn

--syn:用于匹配tcp會話三次握手的第一次;

例:目標的80端口被禁止

iptables -I INPUT 1 -s 172.16.250.145 -d172.16.249.139 -p tcp -m tcp --dport 80 -j DROP-m tcp可以不寫)

 

udp:

--sport

--dport

icmp:

--icmp-types

8:echo request

0echo reply

 

練習:

1、放行本機上的sshhttp服務;要求inputoutput策略默認均為DROP

2、開放本機對ping的響應,和ping請求;

 

 

顯式擴展:必須指明使用的擴展機制;

-m 模塊名稱

每個模塊會引入新的匹配機制;

 

想知道有哪些模塊可用:

rpm-ql iptables

 

小寫字母,以.so結尾;

 

multiport擴展:

以離散定義多端口匹配;最多指定15個端口;

 

專用選項:

--source-ports,--sports PORT[,PORT,...]

--destination-ports,--dports PORT[,PORT,...]

--portsPORT[,PORT,...]

 

例子:

iptables-I INPUT 1 -d 172.16.100.11 -p tcp -m multiport --dports 22,80,443 -j ACCEPT

iptables-I OUTPUT 1 -s 172.16.100.11 -p tcp -m multiport --sports 22,80,443 -j ACCEPT

 

iprange擴展:

指定連續的ip地址范圍;在匹配非整個網絡地址時使用;

 

專用選項:

[!]--src-range IP[-IP]

[!]--dst-range IP[-IP]

 

示例:

iptables-A INPUT -d 172.16.100.11 -p tcp --dport 23 -m iprange --src-range172.16.100.1-172.16.100.100 -j ACCEPT

iptables-A OUTPUT -s 172.16.100.11 -p tcp --sport 23 -m iprange --dst-range172.16.100.1-172.16.100.100 -j ACCEPT

 

string擴展:

檢查報文中出現的字符串,與給定的字符串作匹配;

 

字符串匹配檢查算法:

kmp,bm

 

專用選項:

--algo{kmp|bm}

--string"STRING"

--hex-string "HEX_STRING"HEX_STRING為編碼成16進制格式的字串;

 

 

示例:

iptables-I OUTPUT 1 -s 172.16.100.11 -p tcp --sport 80 -m string --string"sex" --algo kmp -j REJECT

 

time擴展:

基于時間區間做訪問控制

 

專用選項:

--datestartYYYY[-MM][-DD][hh[:mm[:ss]]]

--dattestop

 

--timestart

--timestop

 

--weekdaysDAY1[,DAY2,...]

 

示例:

#iptables -R INPUT 1 -d 172.16.100.11 -p tcp --dport 80 -m time --timestart08:30 --timestop 18:30 --weekdays Mon,Tue,Thu,Fri -j REJECT

 

connlimit擴展:

基于連接數作限制;對每個IP能夠發起的并發連接數作限制;

 

專用選項:

--connlimit-above[n]

 

#iptables -I INPUT 2 -d 172.16.100.11 -p tcp --dport 22 -m connlimit--connlimit-above 5 -j REJECT

 

limit擴展:

基于發包速率作限制;

 

專用選項:令牌桶算法

--limit  n[/second|/minit|/hour|/day]

--limit-burstn

 

iptables-R INPUT 3 -d 172.16.100.11 -p icmp --icmp-type 8 -m limit --limit 10/minute--limit-burst 5 -j ACCEPT

 

    

iptables/netfilter(3)

 

顯式擴展(續)

connection template:連接追蹤模板,用于記錄各連接及相關狀態;基于IP實現,與是否為TCP協議無關;通過倒計時的方式刪除條目;

 

記錄連接的狀態:

NEW: 新建立的連接,連接追蹤模板中無相應的條目時,客戶端第一次發出的請求;

ESTABLISHEDNEW狀態之后,邊距追蹤模板中的條目刪除之前所進行的通信過程,都稱為ESTABLISHED

RELATED:相關聯的連接,如ftp協議的命令連接與數據連接即為相關聯的連接;

INVALIED: 無法識別的狀態;

 

state擴展:啟用連接追蹤模板記錄連接,并根據連接匹配連接狀態的擴展;

啟用連接追蹤功能之前:簡單包過濾防火墻;

啟用連接追蹤功能:帶狀態檢測的包過濾防火墻;

 

專用選項:

--stateSTATE

 

調整連接追蹤功能所能容納的連接的最大數目:

/proc/sys/net/nf_conntrack_max

 

當前追蹤的所有連接:

/proc/net/nf_conntrack

 

不同協議或連接類型追蹤時的時長屬性:

/proc/sys/net/netfilter/

 

如何放行被動模式下的ftp服務:

(1) 裝載模塊:

#modprobe nf_conntrack_ftp

 

(2) 放行請求報文

放行入站請求端口為21的請求報文;

放行所有狀態為ESTABLISHEDRELATED狀態的入站報文;

 

(3) 放行出站響應報文

放行所有狀態為ESTABLISHED的出站報文;

 

如何保存及重載規則:

保存:

(1)service iptables save

/etc/sysconfig/iptables文件;

 

(2)iptables-save > /PATH/TO/SOMEFILE

 

重載:

(1)service iptables reload

 

(2)iptables-restore < /PATH/FROM/SOMEFILE

 

NATNetwork AddressTranslation

 

僅從請求報文判斷,地址轉換:

源地址轉換:SNAT

目標地址轉換:DNAT

端口轉換:PNAT

 

NAT Server: 能根據需要實現所謂的SNATDNATPNAT

并非是用戶空間運行的進程完成轉換功能,靠的是內核中地址轉換規則;

 

SNAT:CIP --> SIP: CIP --> SNAT(PIP) --> SIP

CIP: 本地客戶端地址

DNATRemoteIP--> PIP: RemoteIP --> DNAT(SIP) --> SIP

RemoteIP:遠程客戶端地址;

PNAT:端口轉換

 

私有的客戶端訪問互聯網的方法:

(1)SNAT

(2)Proxy

 

SNAT:主要用于實現讓內網客戶端訪問外部主機時使用;

注意:要定義在POSTROUTING鏈;也可以在OUTPUT上使用;

 

定義方法:

iptables -t nat -A POSTROUTING -s 內網網絡或主機地址 -j SNAT --to-source NAT服務器上的某外網地址

 

另一個TARGET

MASQUERADE:地址偽裝;

能自行判斷該轉為哪個源地址;

 

iptables -t nat -A POSTROUTING -s 內網網絡或主機地址 -j MASQUERADE

 

DNAT:主要用于發布內部服務器,讓內網中的服務器在外網中可以被訪問到;

注意:要定義在PREROUTING鏈;

 

iptables -t nat -A PREROUTING -d NAT服務器的某外網地址 -p 某協議 --dport 某端口 -jDNAT --to-destination 內網某服務器地址[:PORT]

 

FULLNAT: 全地址轉換

在請求報文到時:既修改源地址,又修改目標地址

 

 

回顧:

state擴展,nat

 

state擴展:

tcp finite state machine: 有限狀態機

closed, listen, syn_sent, syn_rcvd,established, fin_wait_1, fin_wait_2, close_wait, last_ack time_wait

 

state: 無論tcp,udp, icmp協議,都能夠基于connection track template完成連接追蹤;

NEW,ESTABLISHED, RELATED, INVALID

 

內核模塊:nf_conntrack, nf_conntrack_ftp

 

專用選項:--state

 

nat: 網絡地址轉換;用到的表為nat

SNAT:源地址轉換;

DNAT:目標地址轉換;

FULLNAT:源地址和目標都進行轉換;

 

nat表相對應鏈:PREROUTING,OUTPUT, POSTROUTING

SNATOUTPUT,POSTROUTING

-jSNAT --to-source

-jMASQUERADE

DNATPREROUTING

PNAT

-jDNAT --to-destination IP[:PORT]

 

iptables(4)

 

TARGET:

ACCEPT

DROP

REJECT

 

SNAT

DNAT

MASQUERADE

 

LOG:日志

REDIRECT:端口重定向;

RETURN: 返回至調用者;

MARK:防火墻標記

 

 

練習:INPUTOUTPUT默認策略為DROP

                        iptables -P INPUT DROP

           iptables -P OUTPUT DROP

 

1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機;

                      #iptables -A INPUT  -d 172.16.18.1 -p tcp --dport 80 -m time ! --weekdays Mon  limit --limit10/minute --limit-burst 5   

                         ! string --string "admin" --algo kmp -j ACCEPT                

 

                      #iptables -AOUTPUT -s 172.16.18.1 -p tcp --dport 80 -m time ! --weekdays Mon   limit --limit 10/minute --limit-burst 5

                             ! string --string "admin" --algo kmp -j ACCEPT   

 

2、在工作時間,即周一到周五的8:30-18:00,開放本機的ftp服務給172.16.0.0網絡中的主機訪問;數據下載請求的次數每分鐘不得超過5個;

                      

                        # iptables -A INPUT  -s 172.16.0.0/16 -d 172.16.18.1 -ptcp --dport 21 -m time--timestart 08:30 --timestop 18:30

                         --weekdays  Mon,Tue,Wed,Thu,Fri  connlimit--connlimit-above 5  -j REJECT

                       

                       #iptables -A  OUTPUT  -s 172.16.18.1 -d 172.16.0.0/16 -p tcp --dport 21 -m time --timestart 08:30 --timestop18:30

                         --weekdays  Mon,Tue,Wed,Thu,Fri  connlimit--connlimit-above 5  -j REJECT

   

 

3、開放本機的ssh服務給172.16.x.1-172.16.x.100中的主機,x為你的座位號,新請求建立的速率一分鐘不得超過2個;僅允許響應報文通過其服務端口離開本機;

iptables -A INPUT -s 172.16.18.1-172.16.18.100  -m  connlimit --connlimit-above 5  -state RELATED -j REJECT

iptables -A OUTPUT -d 172.16.18.1-172.16.18.100  -m  connlimit --connlimit-above 5  -state RELATED -j REJECT

 

4、拒絕TCP標志位全部為1及全部為0的報文訪問本機;

                       iptables -A INPUT -d172.16.18.1 -p tcp --tcp-flags  allnone  -j REJECT

                   

 

5、允許本機ping別的主機;但不開放別的主機ping本機;

iptables -A INPUT -d 172.16.18.1 -p tcp --dport 22  -j REJECT

iptables -A OUTPUT -s 172.16.18.1 -p tcp --dport 22 -j ACCEPT

 

練習:判斷下述規則的意義:

#iptables -N clean_in

#iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP

#iptables -A clean_in -d 172.16.255.255 -p icmp -j DROP

                                            

 

#iptables -A clean_in -p tcp ! --syn -m state --state NEW -j DROP

#iptables -A clean_in -p tcp --tcp-flags ALL ALL -j DROP

#iptables -A clean_in -p tcp --tcp-flags ALL NONE -j DROP

#iptables -A clean_in -d 172.16.100.7 -j RETURN

 

 

#iptables -A INPUT -d 172.16.100.7 -j clean_in

 

#iptables -A INPUT  -i lo -j ACCEPT

#iptables -A OUTPUT -o lo -j ACCEPT

                        運行從lo端口進入以及出去

 

#iptables -A INPUT  -i eth0 -m multiport-p tcp --dports 53,113,135,137,139,445 -j DROP

#iptables -A INPUT  -i eth0 -m multiport-p udp --dports 53,113,135,137,139,445 -j DROP

#iptables -A INPUT  -i eth0 -p udp --dport1026 -j DROP

#iptables -A INPUT  -i eth0 -m multiport-p tcp --dports 1433,4899 -j DROP

 

#iptables -A INPUT  -p icmp -m limit--limit 10/second -j ACCEPT

 

 

課外任務:研究recent擴展的用法

 

利用iptablesrecent模塊來抵御DOS***:

 

 

ssh: 遠程連接,

 

iptables-I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP

 

 

iptables-I INPUT  -p tcp --dport 22 -m state--state NEW -m recent --set --name SSH

iptables-I INPUT  -p tcp --dport 22 -m state--state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j LOG--log-prefix "SSH Attack: "

iptables-I INPUT  -p tcp --dport 22 -m state--state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP

 

1.利用connlimit模塊將單IP的并發設置為3;會誤殺使用NAT上網的用戶,可以根據實際情況增大該值;

 

2.利用recentstate模塊限制單IP300s內只能與本機建立2個新連接。被限制五分鐘后即可恢復訪問。

 

下面對最后兩句做一個說明:

 

1.第二句是記錄訪問tcp 22端口的新連接,記錄名稱為SSH

--set 記錄數據包的來源IP,如果IP已經存在將更新已經存在的條目

 

2.第三句是指SSH記錄中的IP300s內發起超過3次連接則拒絕此IP的連接。

--update 是指每次建立連接都更新列表;

--seconds必須與--rcheck或者--update同時使用

--hitcount必須與--rcheck或者--update同時使用

 

3.iptables的記錄:/proc/net/xt_recent/SSH


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大厂| 钟山县| 嵊泗县| 兰坪| 祥云县| 象州县| 武强县| 长白| 商丘市| 裕民县| 上栗县| 雷波县| 杭州市| 北流市| 富蕴县| 离岛区| 连山| 阳曲县| 宁安市| 博白县| 遂宁市| 江孜县| 静宁县| 西安市| 宽城| 巫山县| 崇阳县| 伊川县| 辽源市| 宁海县| 木里| 灵武市| 水富县| 潢川县| 大宁县| 拜城县| 马山县| 漳浦县| 手游| 莆田市| 博乐市|