這篇文章主要講解了“Linux下有哪些iptables的相關(guān)配置與命令”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Linux下有哪些iptables的相關(guān)配置與命令”吧!
創(chuàng)新互聯(lián)長(zhǎng)期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為歙縣企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),歙縣網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。啟動(dòng)和停止
1、命令:
代碼如下:
service iptables start/stop/restart
或者直接去找/etc/init.d/下的
2、配置文件:
/etc/sysconfig/iptables
沒(méi)有的話,可以用iptables-save生成
框架: tables > chains > rules(target)
整體上可認(rèn)為iptables就是由許多chain組成的,要不然其老版本怎么叫做ipchains呢。但是劃分層次為:
一個(gè)table可由多個(gè)chain組成,一個(gè)chain可由多個(gè)rules組成(一個(gè)rule對(duì)應(yīng)一個(gè)target)。
target概念的好處是:系統(tǒng)預(yù)置了一些target,如ACCEPT,DROP,REJECT,LOG等,意思是如果這個(gè)包匹配這條rule,其處理辦法就是target。這里引入target的好處在于,允許用戶自定義一條chain,然后用chain名做為新的target,這樣,就可以聚合一些rule!形成了層次性的rule,就是說(shuō)如果滿足這條rule,那么再看其target里面的rule。
1、iptables由四張table組成,每張table由默認(rèn)的chain組成:
(1)filter: 默認(rèn)有三個(gè)chain——INPUT,OUTPUT和FORWARD
(2)nat: 做NAT工作,默認(rèn)三個(gè)chain——OUTPUT,PREROUTING,POSTROUTING
(3)mangle: 對(duì)包的一些參數(shù)進(jìn)行修改,默認(rèn)有五個(gè)chain——INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
(4)raw:作用未明,默認(rèn)有兩個(gè)chain——OUTPUT,PREROUTING
不同的table分管不同的方面。iptables的默認(rèn)命令是對(duì)filter生效??梢杂?t nat指定對(duì)nat生效。
2、所謂的配置防火墻就是:
(1)向chain添加rule:
每個(gè)chain都是由一系列rule組成的,比如你要更改INPUT這個(gè)chain來(lái)允許用戶訪問(wèn)你機(jī)器上的某個(gè)端口。
比如這個(gè)INPUT有兩個(gè)rule,一個(gè)用于允許用戶訪問(wèn)你的5901端口,一個(gè)用于允許用戶訪問(wèn)你的5902端口
一般安全策略:
1、從最嚴(yán)厲的安全措施開(kāi)始,當(dāng)你發(fā)現(xiàn)有用的東西不能工作時(shí)再一點(diǎn)點(diǎn)兒的放寬限度。
2、防火墻不能當(dāng)作防范入侵的主要手段,它只能作為每臺(tái)主機(jī)上獨(dú)立保護(hù)措施的一個(gè)補(bǔ)充罷了。每臺(tái)主機(jī)上的獨(dú)立保護(hù)措施包括crack,tcpd,nmap,COPS,tripwire和相應(yīng)的策略。
規(guī)則和命令:
規(guī)則很簡(jiǎn)單,相應(yīng)的包,會(huì)交給相應(yīng)的內(nèi)置chain,然后對(duì)于chain中的rules,是從上到下的順序進(jìn)行匹配,和break語(yǔ)句一樣。所以,比如你要開(kāi)放某些端口,就寫上面,最后才寫封閉所有端口。
靜態(tài)規(guī)則:
1、iptables -F chain-name:
清除名為chain-name的chain中的所有rule,只寫-F清除所有的chain中的所有rule,但保留chain。
這默認(rèn)只對(duì)filter table的。如果要清除如nat table的,要用 iptables -t nat -F
2、iptables -P chain-name target:
給名為chain-name的chain設(shè)置默認(rèn)的rule。這個(gè)通常是放在給該chain設(shè)置的所有rule的開(kāi)頭。相當(dāng)于break語(yǔ)句中的default。 注意,如果給nat或mangle中的chain設(shè)置,則別忘了用 -t table。 但是注意的是,這里的target只能用內(nèi)置的
3、iptables -A chain-name rule
給名為chain-name的chain添加一條規(guī)則,后面rule是一下的組合:
-j target 預(yù)置target或用戶自定義的chain
-i interface 如eth0
-p proto 協(xié)議,有tcp,udp
-s source-ip 源ip
-d dest-ip 目的ip
--sport source-port 源端口
--dport dest-port 目的端口
--icmp-type type 匹配ICMP類型,比如你允許哪些類型的ICMP包通過(guò),后面跟數(shù)字
! 否定
-t table
4、iptables -I chain-name rulenum rule:
這個(gè)和-A的區(qū)別是:插入,而不是加在末尾。rulenum為1表示加在最前面。
5、iptables -X chain-name:
刪除非系統(tǒng)內(nèi)置(用戶自定義)的chain,這個(gè)不同于-F,這個(gè)是把chain整個(gè)刪除,名字都沒(méi)了,即你用iptables -L -v看不到了。
6、iptables -D chain-name rule/rulenum
這個(gè)同iptable -A chain-name rule完全相反,如果你要?jiǎng)h除chain-name中的一條rule,就按照-A時(shí)的寫法就可以刪除之?;蛘哂胷ulenum,即該chain的從上往下數(shù)的num數(shù),第一條rule的rulenum為1。
7、iptables -L chain-name
打印名為chain-name的chain的rules。不給出chain-name,則打印所有chain。
8、iptables -L -v chain-name
在6的基礎(chǔ)上加了些有用信息,如從開(kāi)機(jī)到現(xiàn)在,匹配每條rule的包的數(shù)量!
動(dòng)態(tài)規(guī)則: 針對(duì)connection(TCP連接)
1、有三種動(dòng)態(tài)參數(shù):
NEW:指收到的第一次TCP連接
ESTABLISHED:當(dāng)連接建立后,屬于該connection的包
RELATED:當(dāng)連接建立后,又有相關(guān)的連接建立(典型的是ftp的passive模式,由client發(fā)起到server的數(shù)據(jù)連接,這個(gè)端口是由server指定的,但由client發(fā)起)
2、命令:
代碼如下:
iptables -A INPUT -m state --state NEW -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
上面兩條命令,拒絕所有NEW的外來(lái)包。但允許自己發(fā)出的連接收到外來(lái)的數(shù)據(jù)(ESTABLISHED)
再加上:
代碼如下:
iptables -A INPUT -p tcp -dport 21 -j ACCEPT
iptables -A INPUT -p udp -dport 21 -j ACCEPT
則表示可以允許外界訪問(wèn)21端口(FTP,并假設(shè)采用passive模式),結(jié)合上面的狀態(tài),則允許外界主動(dòng)發(fā)起到自己的ftp數(shù)據(jù)連接———可能是任意端口,但這里已不用寫了!!
所以,一般,先寫上動(dòng)態(tài)規(guī)則,然后再寫靜態(tài)規(guī)則,就可以做到處理一些像FTP Passive模式這種不知道用戶會(huì)訪問(wèn)哪個(gè)端口的情況。
3、注意:
有狀態(tài)的規(guī)則需要內(nèi)核相應(yīng)模塊支持,如果沒(méi)有編譯進(jìn),或沒(méi)有加載,則不會(huì)生效的。
iptables對(duì)請(qǐng)求的URL作IP訪問(wèn)控制
下面來(lái)看一個(gè)實(shí)例。
服務(wù)器運(yùn)行環(huán)境是Tomcat,現(xiàn)在要實(shí)現(xiàn)的目的是,只允許特定的IP訪問(wèn)某個(gè)目錄,
一種方法是在tomcat配置文件server.conf中,使用RemoteAddrValve對(duì)虛擬主機(jī)做訪問(wèn)控制。
另外一種方法可以通過(guò)iptables規(guī)則。個(gè)人比較喜歡iptables
例如:禁止訪問(wèn)http://192.168.137.254:10000/managersns 這個(gè)路徑,只允許192.168.137.101訪問(wèn)
代碼如下:
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -s 192.168.137.101 -m string --string "/managersns" --algo bm -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -m string --string "/managersns" --algo bm -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -s 192.168.137.101 -m string --string "/managersns" --algo bm -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -m string --string "/managersns" --algo bm -j DROP
以上規(guī)則是正對(duì)eth0網(wǎng)卡,可以跟蹤自己需求修改。
參數(shù)說(shuō)明:
-m string
使用string功能,string是iptables的一個(gè)module,也就是做字符串匹配的。
–string “xxxx”
定義字符串內(nèi)容,可以是URL里任意字符,如果是需要block下載某些類型的文件或請(qǐng)求,這個(gè)有很大的發(fā)揮空間,可自由想象喔。
–algo bm
設(shè)置字符匹配的查詢算法,一般默認(rèn)使用bm算法效果就可以了,另外還可以設(shè)置kmp算法,那是一種更復(fù)雜的算法,詳細(xì)內(nèi)容可自行參見(jiàn)高等數(shù)學(xué)里的資料。(bm = Boyer-Moore, kmp = Knuth-Pratt-Morris)
-j DROP
這在公司網(wǎng)絡(luò)禁用視頻網(wǎng)站是非常有效的,在網(wǎng)關(guān)服務(wù)器上設(shè)置:
代碼如下:
iptables -A FORWARD -m string –-string “ku6.com” --algo bm -j DROP iptables -A FORWARD -m string –-string “tudou.com” –-algo bm -j DROP iptables -A FORWARD -m string –-string “ouou.com” –-algo bm -j DROP
iptables -A FORWARD -m string –-string “ku6.com” --algo bm -j DROP
iptables -A FORWARD -m string –-string “tudou.com” –-algo bm -j DROP
iptables -A FORWARD -m string –-string “ouou.com” –-algo bm -j DROP
其中各項(xiàng)參數(shù)的意義如下:
-A FORWARD
增加FORWARD鏈的規(guī)則,以上規(guī)則是針對(duì)啟用了路由功能(即:echo 1 > /proc/sys/net/ipv4/ip_forward)
如果是直接訪問(wèn),可使用的INPUT或OUTPUT。
設(shè)置符合此條件的包的處理方式,DROP即是丟棄,也是reject的意思。
代碼如下:
iptables -A INPUT -m string --string "stringname" --algo bm -j DROP
感謝各位的閱讀,以上就是“Linux下有哪些iptables的相關(guān)配置與命令”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Linux下有哪些iptables的相關(guān)配置與命令這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!