大數據教程(2.6):Linux防火牆配置詳解

    咱們從事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
相關文章
相關標籤/搜索