咱們從事IT的部分人員中,常常會與Linux系統打交道,而Linux中有一個很是重要的包過濾工具,它就是防火牆。大多數人員可能對這塊知識不甚瞭解,亦或是隻知道其中一些簡單的配置。本節博主將爲你們簡單的講述防火牆相關的知識,幫助小白們快速的配置Linux防火牆技術iptables。centos
Iptables也叫netfilter是Linux下自帶的一款免費且優秀的基於包過濾的防火牆工具,它的功能十分強大,使用很是靈活,能夠對流入、流出、流經服務器的數據包進行精細的控制。安全
1、iptables中的「四表五鏈」及「堵通策略」服務器
A.「四表」是指,iptables的功能——filter, nat, mangle, raw.網絡
filter, 控制數據包是否容許進出及轉發(INPUT、OUTPUT、FORWARD),能夠控制的鏈路有input, forward, outputapp
nat, 控制數據包中地址轉換,能夠控制的鏈路有prerouting, input, output, postroutingssh
mangle,修改數據包中的原數據,能夠控制的鏈路有prerouting, input, forward, output, postroutingtcp
raw,控制nat表中鏈接追蹤機制的啓用情況,能夠控制的鏈路有prerouting, output工具
注:在centos7中,還有security表,不過這裏不做介紹post
B.「五鏈」是指內核中控制網絡的NetFilter定義的五個規則鏈,分別爲centos7
PREROUTING, 路由前
INPUT, 數據包流入口
FORWARD, 轉發關卡
OUTPUT, 數據包出口
POSTROUTING, 路由後
C.「堵通策略」是指對數據包所作的操做,通常有兩種操做——「通(ACCEPT)」、「堵(DROP)」,還有一種操做很常見REJECT(此種配置有可能會暴露服務器的存在).
談談REJECT和DROP之間的區別,Jack寫了一封信,向Rose示愛。Rose若是不肯意接受,她能夠不迴應Jack,這個時候Ming不肯定Rose是否接到了信;Rose也能夠一樣寫一封信,在信中明確地拒絕Jack。前一種操做就如同執行了DROP操做,然後一種操做就如同REJECT操做。
2、經常使用iptables防火牆配置
#查看幫助 iptables -h man iptables 列出iptables規則 iptables -L -n 列出iptables規則並顯示規則編號 iptables -L -n --line-numbers 列出iptables nat表規則(默認是filter表) iptables -L -n -t nat 清除默認規則(注意默認是filter表,若是對nat表操做要加-t nat) #清除全部規則 iptables -F 查看iptables狀態 service iptables status 開啓/關閉iptables service iptables start service iptables stop 查看iptables是否開機啓動 chkconfig iptables --list 設置iptables開機啓動/不啓動 chkconfig iptables on chkconfig iptables off #重啓iptables發現規則依然存在,由於沒有保存 service iptables restart #保存配置 service iptables save /etc/rc.d/init.d/iptables save #禁止ssh登錄(若果服務器在機房,必定要當心) iptables -A INPUT -p tcp --dport 22 -j DROP #刪除規則 iptables -D INPUT -p tcp --dport 22 -j DROP -A, --append chain 追加到規則的最後一條 -D, --delete chain [rulenum] Delete rule rulenum (1 = first) from chain -I, --insert chain [rulenum] Insert in chain as rulenum (default 1=first) 添加到規則的第一條 -p, --proto proto protocol: by number or name, eg. 'tcp',經常使用協議有tcp、udp、icmp、all -j, --jump target 常見的行爲有ACCEPT、DROP和REJECT三種,但通常不用REJECT,會帶來安全隱患 注意:INPUT和DROP這樣的關鍵字須要大寫 #禁止192.168.33.0網段從eth0網卡接入 iptables -A INPUT -p tcp -i eth0 -s 192.168.33.0 -j DROP iptables -A INPUT -p tcp --dport 22 -i eth0 -s 192.168.33.61 -j ACCEPT #禁止ip地址非192.168.10.10的全部類型數據接入 iptables -A INPUT ! -s 192.168.10.10 -j DROP #禁止ip地址非192.168.10.10的ping請求 iptables -I INPUT -p icmp --icmp-type 8 -s 192.168.50.100 -j DROP #擴展匹配:1.隱式擴展 2.顯示擴展 #隱式擴展 -p tcp --sport PORT 源端口 --dport PORT 目標端口 #顯示擴展:使用額外的匹配規則 -m EXTENSTION --SUB-OPT -p tcp --dport 22 與 -p tcp -m tcp --dport 22功能相同 state:狀態擴展,接口ip_contrack追蹤會話狀態 NEW:新的鏈接請求 ESTABLISHED:已創建的鏈接請求 INVALID:非法鏈接 RELATED:相關聯的鏈接 #匹配端口範圍 iptables -I INPUT -p tcp --dport 22:80 -j DROP #匹配多個端口 iptables -I INPUT -p tcp -m multiport --dport 22,80,3306 -j ACCEPT #不容許源端口爲80的數據流出 iptables -I OUTPUT -p tcp --sport 80 -j DROP