iptables

鏈:鏈上的規則次序,即爲檢查的次序:因此,隱含一定的應用法則:
    1.同類規則(訪問同一應用),匹配範圍小的放上面:
    2.不同類的規則(訪問不同應用),匹配到報文頻率較大的放在上面:
    3.將那些可由一條規則描述的多個規則合併起來:
    4.設置默認策略:


簡單應用:

iptables -t filter -P INPUT DROP //設置INPUT鏈的默認規則爲DROP

iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT //放行對本機22端口的訪問

iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT //放行對本機80端口的訪問

iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT //放行對本機443端口的訪問

iptables -t filter -A INPUT -p icmp --icmp-type 8 -j ACCEPT //放行ping請求,允許別人ping本機

iptables -t filter -P OUPUT DROP //設置OUTPUT鏈默認策略爲DROP

iptables -t filter -A OUTPUT -p tcp --sport 22 -j ACCEPT //放行22端口出站流量

iptables -t filter -A OUTPUT -p tcp --sport 80 -j ACCEPT //放行80端口的出站流量

iptables -t filter -A OUTPUT -p tcp --sport 443 -j ACCEPT //放行443端口的出站流量

iptables -t filter -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT //放行ping應答,允許本機迴應ping請求



擴展應用:

1.以離散方式定義多端口匹配:最多指定15個端口-m multiport:

    --sports 指定多個源端口

    --dports 指定多個目標端口

    --ports 指定多個端口

iptables -A INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT //放行22和80端口


   


2.指明連續的(但一般不腦整個網絡)ip地址範圍-m iprange:

    --src-range 源ip地址

    --dst-range 目標ip地址

iptables -A INPUT -p tcp --dport 80 -m iprange --src-range 172.25.100.5-172.25.100.10 -j DROP //.5~.10不允許訪問80端口


   


3.對報文中的應用層數據做字符串模式匹配檢測-m string:

    --algo {bm|kmp}:字符串匹配檢測算法:
    --string pattern:要檢測的字符串
     --hex-string pattern:要檢測的字符串,16進制格式

iptables -A INPUT -p tcp --dport 80 -m string --algo bm --string 'GET /index.html' -j LOG //記錄對index.html文件的請求


   

    

4.根據指定的時間範圍進行匹配-m time:

    --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:起始日期,中間要加個T
    --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]:結束日期,中間要加個T

    --timestart hh:mm[:ss]:起始時間
    --timestop hh:mm[:ss]:結束時間

    --monthdays day[,day...]:每個月只在哪一號檢查
    --weekdays day[,day...]:周幾檢查
        Sa:週六
        Su:週日
        Fr:週五
        Th:週四
        We:週三
        Tu:週二
        Mo:週一

    --kerneltz:使用內核上的時區,而非默認的UTC:

iptables -A INPUT -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays Sa,Su --kerneltz -j DROP //星球6星期天14:30到18:30不允許訪問80端口

   


5.根據每客戶端IP做併發連接數數量匹配-m connlimit:

    --connlimit-upto n:連接的數量小於等於n時匹配:
    --connlimit-above n:連接的數量大於n時匹配:

iptables -A INPUT -p tcp --dport 21 -m connlimit --connlimit-above 2 -j REJECT //每個ip併發連接數不能大於2

   


6.根據”連接追蹤機制“去檢查連接的狀態-m state:
    conntrack機制:追蹤本機上的請求和響應之間的關係:狀態有如下幾種:
    NEW:新發出請求:連接追蹤模板中不存在此連接的相關信息條目,因此,將其識別爲第一次發出的請求
    ESTABLISHED:NEW狀態之後,連接追蹤模板中爲其建立的條目失效之前期間內所進行的通信狀態
    RELATED:相關聯的連接:如ftp協議中的數據連接與命令連接之間的關係
    INVALID:無效的連接
    UNTRACKED:未進行追蹤的連接

    --state conntrack

iptables -A INPUT -p tcp -m multiport --dports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -p tcp -m multiport --sports 22,80 -m state --state ESTABLISHED -j ACCEPT


   


放行FTP的方法:

放行命令連接(假設Server地址爲172.25.100.131):

iptables -A INPUT -d 172.25.100.131 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 172.25.100.131 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

   

   

放行數據連接(假設Server地址爲172.25.100.131):

iptables -A INPUT -d 172.25.100.131 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -s 172.25.100.131 -m state --state ESTABLISHED -j ACCEPT


   


   
7.保存規則

iptables-save > /etc/sysconfig/iptables
iptables-restore < /etc/sysconfig/iptables


   


CentOS7引入了新的iptables前端管理工具firewalld,建議再CentOS7下還是使用和CentOS6的方法

systemctl stop firwalld.service    
systemctl disable firwalld
yum remove firewalld
yum remove firewalld-filesystem
yum install iptables-services
systemctl start iptables.service
systemctl enable iptables


   


更多精彩,盡在主機貓 http://hostmaoo.com

虛擬主機半價優惠活動進行中....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章