一、iptables包過濾防火墻基本概念
為右江等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及右江網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站設計、成都做網(wǎng)站、右江網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
防火墻是工作在主機或者網(wǎng)絡邊緣的,可以對其所匹配到的報文根據(jù)我們事先定義好的規(guī)則做匹配檢查對于能夠被匹配到的報文出相應的處理動作
iptables/netfilter:
實際上iptables防火墻是包括netfilter和iptables兩個部分,netfilter是內(nèi)核中的防火墻框架,iptables是用戶空間中的命令程序,所有這兩者加起來才是一個完整的iptables。
四表:
raw:關閉NAT的連接追蹤機制,防止在高并發(fā)的訪問下服務器的內(nèi)存溢出,它由PREROUTTING OUTPUT實現(xiàn)
mangle:可以對匹配到的報文的數(shù)據(jù)進行拆解,重新封裝,它由五個鏈來實現(xiàn)
nat:網(wǎng)絡地址轉換,nat表可以由PREROUTING FORWARD POSTROUTING實現(xiàn)
filter:實現(xiàn)包過濾,可以由INPUT FORWARD OUTPUT實現(xiàn)
五鏈:
PREROUTING:在對數(shù)據(jù)包作路由選擇前,應用此鏈中的規(guī)則
INPUT:當收到訪問防火墻本機地址的數(shù)據(jù)包(入站)時,應用此鏈中的規(guī)則
FORWARD:當收到需要通過防火墻轉發(fā)給其他地址的數(shù)據(jù)包(轉發(fā))是應用此鏈中的規(guī)則
OUTPUT:當防火墻本周向外發(fā)送數(shù)據(jù)包(出站)時,應用此鏈中的規(guī)則
POSTROUTING:當對數(shù)據(jù)包做出路由現(xiàn)在后,應用此鏈中的規(guī)則
規(guī)則:根據(jù)規(guī)則的匹配條件嘗試匹配報文,對匹配成功的報文根據(jù)規(guī)則定義的處理動作做出處理
匹配條件:
基本匹配條件:netfilter自帶的匹配機制
擴展匹配條件:由擴展模塊引入的匹配機制
二、iptables基本使用命令介紹
命令格式:iptables [-t table] SUBCOMMAND chain [matches...] [target]
1、管理類的命令操作:
鏈管理:
-N:新增加一個自定義的鏈(自定義被內(nèi)建鏈上的規(guī)則調用才生效,-j 自定義鏈名稱)
-X:刪除自定義的空鏈(引用計數(shù)為0的空鏈)
-P:設置鏈的默認策略
-E:重命名自定義的未被引用(引用計數(shù)為0)的鏈;
-F:清除
規(guī)則管理
-A:追加,默認為最后一個
-I:插入,默認為第一個
-D:刪除指定的規(guī)則
-R:替換修改,將指定的鏈規(guī)則替換為新的規(guī)則
-Z:將packets和bytes計算器給重置為0
查看:
-L:列出規(guī)則列表
-n:以數(shù)字形式顯示地址和端口
-v:顯示詳細的信息
-x:顯示計數(shù)器的精確值而非單位換算后的結果
--line-numbers:顯示鏈上的規(guī)則編號
實例:
iptables -I 2 INPUT -s 192.168.1.1 -d 192.168.1.2 -j DROP ###將此規(guī)則插入在input鏈的第2條
iptables -vnL ##顯示詳細信息 iptables -vnL --line-number##顯示鏈上的規(guī)則編號
iptables -F ##清空所有鏈上的規(guī)則 iptables -F INPUT ##清空指定INPUT鏈上的所有規(guī)則 iptables -D INPUT 1 ###刪除INPUT鏈上的第一條規(guī)則
iptables -R INPUT 2 -s 192.168.22.2 -d 192.168.1.1 -j ACCEPT ###將INPUT鏈的第2條規(guī)則替換
iptables -P INPUT DROP ##設置INPUT鏈的默認規(guī)則為拒絕 iptables -P OUTPUT DROP ##設置OUTPUT鏈的默認規(guī)則為拒絕 iptables -P FORWARD DROP ###設置FORWARD鏈的默認規(guī)則為拒絕
2、匹配條件規(guī)則命令:
基本匹配:netfilter自帶的匹配機制
[!] -s, --source address[/mask][,...]:原地址匹配
[!] -d, --destination address[/mask][,...]:目標地址匹配
[!] -i, --in-interface name:限制報文流入的接口,只能用于PREROUTING,INPUT及FORWARD;
[!] -o, --out-interface name:限制報文流出的接口,只能用于OUTPUT,F(xiàn)ORWARD及POSTROUTING;
[!] -p {tcp|udp|icmp}:限制協(xié)議;
實例:拒絕192.168.1.0網(wǎng)段訪問本機192.168.1.1
iptables -A INPUT -s 192.168.0.0/24 -d 192.168.1.1 -j REJECT iptables -A OUTPUT -s 192.168.1.1 -d 192.168.0.0/24 -j REJECT iptables -A INPUT -s 172.16.100.67 -d 172.16.0.0/16 -i eth0 -j DORP
擴展匹配:需要加載擴展模塊
隱式擴展:可以不用使用-m選項專門加載相應模塊;前提是要使用-p選項可匹配何種協(xié)議
顯示擴展:必須由-m選項專門加載相應模塊
【隱式擴展】
[!] -p 協(xié)議:tcp, udp, icmp, icmpv6, esp, ah, sctp, mh or "all"
-p tcp:
[!] --source-port,--sport port[:port]:匹配報文中的tcp首部的源端口;可以是端口范圍
[!] --destination-port,--dport port[:port]:匹配報文中的tcp首部的目標端口;可以是端口范圍
[!] --tcp-flags mask comp: (其中flags包括:syn,fin,ack,rst syn )
mask:需要檢查的標志位列表,以逗號分隔
comp:必須為1的標志位,余下的出現(xiàn)在mask列表中的
-p udp:
[!] --source-port,--sport port[:port]:匹配報文中的udp首部的源端口;可以是端口范圍
[!] --destination-port,--dport port[:port]:匹配報文中的udp首部的目標端口;可以是端口范圍
-p icmp:
[!] --icmp-type {type[/code]|typename}
0/0:echo reply 回應
8/0:echo request 請求
實例:
允許192.168.1.0網(wǎng)段的訪問本機192.168.1.1的ssh服務,其余全部拒絕
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.1 -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -d 192.168.1.0/24 -s 192.168.1.1 -p tcp --sport 22 -j ACCEPT iptables -P INPUT DORP iptables -P OUTPUT DORP iptables -P FORWARD DORP
###僅允許172.16.100.67主機ping任何人 iptables -A INPUT -s 0/0 -d 172.16.100.67 -p icmp --icmp-type 0 -j ACCEPT iptables -A OUPUT -d 0/0 -s 172.16.100.67 -p icmp --icmp-type 8 -j ACCEPT
#####允許本機172.16.100.1 ping所有人,同時允許所有人ping本機 iptables -A INPUT -s 0/0 -d 172.16.100.1 -p icmp --icmp-type 0 -j ACCEPT iptables -A OUTPUT -d 0/0 -s 172.16.100.1 -p icmp --icmp-type 8 -j ACCEPT iptables -A INPUT -s 0/0 -d 172.16.100.1 -p icmp --icmp-type 8 -j ACCEPT iptables -A OUTPUT -d 0/0 -s 172.16.100.1 -p imcp --icmp-type 0 -j ACCEPT
【顯式擴展】:需要使用-m選項
multiport:多端口匹配
[!] --source-ports,--sports port[,port|,port:port]...指定多個原端口
[!] --destination-ports,--dports port[,port|,port:port]...指定多個目標端口
[!] --ports port[,port|,port:port]...指定多個端口,不限定源端口及目標端口
實例:開發(fā)本機的ssh Telnet和web服務
iptables -I INPUT -s 0/0 -d 172.18.100.6 -p tcp -m multiport --dports 22,23,80 -j ACCEPT(離散類型指定) iptables -I OUTPUT -d 0/0 -s 172.18.100.6 -p tcp -m multiport --sports 22:23,80 -j ACCEPT(連續(xù)及離散指定)
iprange:指明一段連續(xù)的ip地址范圍做為源地址或目標地址匹配
[!] --src-range from[-to]:源地址范圍
[!] --dst-range from[-to]:目標地址范圍
實例:允許172.16.100.1到172.16.100.20范圍內(nèi)的主機訪問MySQL服務
iptables -A INPUT -s 0/0 -d 172.16.1.1 -p tcp --dport 3306 -m iprange --src-range 172.16.100.1-172.16.100.20 -j ACCEPT iptables -A OUTPUT -d 0/0 -s 172.16.1.1 -P tcp --sport 3306 -m iprange --dst-range 172.16.100.1-172.16.100.20 -j ACCEPT
string:對報文中的應用層數(shù)據(jù)做字符串匹配檢測
--algo {bm|kmp}
[!] --string pattern:給定要檢查的字符串模式
[!] --hex-string pattern:給定要檢查的字符串模式;16進制編碼
實例:任何人訪問172.18.100.6web服務時候內(nèi)容字符包含admin的拒絕
iptables -I OUTPUT -s 172.18.100.6 -d 0/0 -p tcp --sport 80 -m string --algo bm --string "admin" -j REJECT
time:根據(jù)收到報文的時間/日期與指定的時間/日期范圍進行匹配
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:起始日期時間;
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:結束日期時間
--timestart hh:mm[:ss]:起始時間;
--timestop hh:mm[:ss]:結束時間
[!] --monthdays day[,day...]:匹配一個月中的哪些天;
[!] --weekdays day[,day...]:匹配一個周中的哪些天
實例:允許周一到周五早上9點到下午16點時間內(nèi)172.16.100.1-172.16.100.100內(nèi)的主機可以Telnet172.16.100.6
iptables -R INPUT 4 -d 172.16.100.6 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -m time --timestart 09:00:00 --timestop 16:00:00 --weekdays 1,2,3,4,5 -j ACCEPT
connlimit:根據(jù)每客戶端主機做并發(fā)連接數(shù)限制,即每客戶端最多可同時發(fā)起的連接數(shù)量
--connlimit-upto n:連接數(shù)量小于等于n則匹配;
--connlimit-above n:連接數(shù)量大于n則匹配
iptables -A INPUT -s 0/0 -d 172.18.100.6 -p tcp --dport 23 -m connlimit --connlimit-upto 2 -j ACCEPT ##最多可以連接2個
limit:基于令牌桶算法對收發(fā)報文的速率做匹配
--limit rate[/second|/minute|/hour|/day]
--limit-burst number 最大速率
iptables -R INPUT 3 -d 172.18.100.6 -p icmp --icmp-type 8 -m limit --limit 20/minute --limit-burst 3 -j ACCEPT
state:是連接追蹤機制的子集,用于對報文的狀態(tài)做連接追蹤,使用前需要裝載此模塊:modprobe nf_conntrack
[!] --state state
INVALID:無法識別的連接
ESTABLISHED:連接追蹤模板當中存在記錄的連接
NEW:連接追蹤模板當中不存的連接請求
RELATED:相關聯(lián)的連接
UNTRACKED:未追蹤的連接
已經(jīng)追蹤到的并記錄下來的連接:/proc/net/nf_conntrack
連接追蹤功能所能夠記錄的最大連接數(shù)量(可調整):/proc/sys/net/nf_conntrack_max
實例:
iptables -A INPUT -d 172.16.100.67 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -s 172.16.100.67 -m state --state ESTABLISHED -j ACCEP
REDORECT:端口重定向即端口映射
--to-ports port[-port]
實例:將172.16.100.67的80端口映射為8080
iptables -t nat -A PREROUTING -d 172.16.100.67 -p tcp --dport 80 -j REDIRECT --to-ports 8080
SNAT:使用在nat表中,僅可用使用POSTROUTING INPUT鏈
--to-source [ipaddr[-ipaddr]]
實例: 將內(nèi)網(wǎng)的地址192.168.1.0/24使用轉換為統(tǒng)一的地址與外部地址通信
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 172.16.100.6
DNAT:使用在nat表中,僅可用使用PREROUTING OUTPUT鏈
--to-destination [ipaddr[-ipaddr]][:port[-port]]
實例:將本地網(wǎng)絡總的地址使用統(tǒng)一的地址向外發(fā)布服務
iptables -t nat -A PREROUTING -s 192.168.1.1/24 -j DNAT --to-destination 172.16.100.1
保存規(guī)則:
iptables-save >/PATH/TO/SOME_RULE_FILE
iptables -S >/PATH/TO/SOME_RULE_FILE
重載預存的規(guī)則:
iptables-restore < /PATH/FROM/SOME_RULE_FILE
本文名稱:iptables使用介紹
本文網(wǎng)址:http://www.chinadenli.net/article30/peieso.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站維護、網(wǎng)站制作、企業(yè)網(wǎng)站制作、營銷型網(wǎng)站建設、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)