iptables操作

一、

說明:以下練習INPUT和OUTPUT默認策略均爲DROP

如果默認爲drop,則又可能把正在遠程的ssh殺掉;
所以在所有策略最後添加全部DROP的策略

1、限制本地主機的web服務器在週一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機

1.#週一不允許訪問:time擴展
2.#新請求的速率不能超過100個每秒:state擴展+limit擴展
3.#admin字符串的頁面不允許訪問:string擴展
4.#僅允許響應報文離開本機:tcp:80爲源端口


#把正在連接的ssh設爲接受
iptables -A INPUT -p tcp --dport 22 -s 172.17.16.16 -j ACCEPT
iptables -A OUTPUT  -p tcp --sport 22 -d 172.17.16.16 -j ACCEPT 
#新建一個鏈,負責有關web服務
iptables -N web1
    1.#週一不允許訪問:centos7默認UTC時間
         (UTC時間)
             iptables -A web1 -p tcp --dport 80  -m time  --weekdays 1 -j REJECT
        (北京時間) 
            iptables -A web1 -p tcp --dport 80  -m time --weekdays 7 --timestart 16:00  --timestop 23:59:59 -m time --weekdays 1 --timestart 00:00 --timestop 16:00  -j REJECT
    2.#新請求的速率不能超過100個每秒
        iptables -A web1 -p tcp --dport 80  -m state --state NEW -m limit --limit 100/second  -j REJECT

3.#admin字符串的頁面不允許訪問
    iptables -A OUTPUT -p tcp --sport 80  -m string --algo bm --string "admin" -j REJECT

4.#僅允許響應報文離開本機
    iptables -A OUTPUT -p tcp --sport 80  -j ACCEPT  

#將新建的鏈加入到INPUT鏈 
iptables -A INPUT -j web1

#其餘關於INPUT和OUTPUT的全部DROP
    iptables -A OUTPUT -j DROP
    iptables -A INPUT -j DROP

2、在工作時間,即週一到週五的8:30-18:00,開放本機的ftp服務給172.16.0.0網絡中的主機訪問;數據下載請求的次數每分鐘不得超過5個

#新建鏈
    ipytables -N ftpi
    #ftp爲多端口服務,首先把state狀態的相關包和端口打開
         iptables -A ftpi -m state --state ESTABLISHED -m state --state RELATED -j ACCEPT
    #週一到週五的8:30-18:00,開放ftp服務給172.16.0.0:tcp:21端口
        iptables -A ftpi -s 172.16.0.0/16 -p tcp --dport 21 -m time --timestart 00:30 --timestop 10:00  --weekdays 1,2,3,4,5  -j ACCEPT 
    #數據下載請求的次數每分鐘不得超過5個
        #應該放到state狀態的相關包和端口打開的前面
         iptables -I ftpi -p tcp --dport 21 -m state --state RELATED  -m string --algo bm --string "get"  -m limit  --limit 5/minute -j ACCEPT
#把鏈接放到INPUT中
    iptables -A INPUT -j REJECT
#剩餘全拒絕(除了正在用的ssh鏈接)
    iptables -I INPUT  -p tcp --dport 22 -s 172.17.16.16 -j ACCEPT 
    iptables -A INPUT -j REJECT 
    iptables -I OUTPUT  -p tcp --sport 22 -d 172.17.16.16 -j ACCEPT 
    iptables -A OUTPUT -j REJECT 

3、開放本機的ssh服務給172.16.16.1-172.16.16.100中的主機,新請求建立的速率一分鐘不得超過2個;僅允許響應報文通過其服務端口離開本機

#新建鏈
     iptables -N sshi
    #ssh服務給172.16.16.1-172.16.16.100中的主機,新請求建立的速率一分鐘不得超過2個
        iptables -A sshi  -m iprange --src-rang 172.16.16.1-172.16.16.100 -p tcp --dport 22 -m state --state NEW -m limit --limit 2/minute -j ACCEPT
    #除了新建立鏈接,別的指定IP ssh 鏈接都可以通過
        iptables -A sshi  -m iprange --src-rang 172.16.16.1-172.16.16.100 -p tcp --dport 22  -j ACCEPT 
#新建鏈
     iptables -N ssho   
    #僅允許響應報文通過其服務端口離開本機
        iptables -A ssho  -m iprange --dst-rang 172.16.16.1-172.16.16.100 -p tcp --sport 22 -j ACCEPT

#將鏈接加入INPUT和OUTPUT中
    iptables -I INPUT -j sshi
    iptables -I OUTPUT -j ssho  
#剩餘全拒絕(除了正在用的ssh鏈接)
    iptables -I INPUT  -p tcp --dport 22 -s 172.17.16.16 -j ACCEPT 
    iptables -A INPUT -j REJECT 
    iptables -I OUTPUT  -p tcp --sport 22 -d 172.17.16.16 -j ACCEPT 
    iptables -A OUTPUT -j REJECT 

4、拒絕TCP標誌位全部爲1及全部爲0的報文訪問本機

iptables -A tcpi -p tcp  --tcp-flags ALL ALL -j REJECT
iptables -A tcpi -p tcp  --tcp-flags ALL NONE -j REJECT    
iptables -I INPUT -j tcpi

#剩餘全拒絕(除了正在用的ssh鏈接)
    iptables -I INPUT  -p tcp --dport 22 -s 172.17.16.16 -j ACCEPT 
    iptables -A INPUT -j REJECT 
    iptables -I OUTPUT  -p tcp --sport 22 -d 172.17.16.16 -j ACCEPT 
    iptables -A OUTPUT -j REJECT 

5、允許本機ping別的主機;但不開放別的主機ping本機

#允許OUTPUT發出請求包
iptables -I OUTPUT -p icmp --icmp-type 8/0 -j ACCEPT
#允許INPUT接受迴應包
iptables -I INPUT -p icmp --icmp-type 0/0 -j ACCEPT
#拒絕INPUT的請求包 
iptables -I INPUT -p icmp --icmp-type 8/0 -j REJECT  


#剩餘全拒絕(除了正在用的ssh鏈接)
    iptables -I INPUT  -p tcp --dport 22 -s 172.17.16.16 -j ACCEPT 
    iptables -A INPUT -j REJECT 
    iptables -I OUTPUT  -p tcp --sport 22 -d 172.17.16.16 -j ACCEPT 
    iptables -A OUTPUT -j REJECT 

二、

1 實現主機防火牆:放行telnet, ftp, web服務;放行samba服務;放行dns服務(查詢和區域傳送);

#telnet TCP23; ftp TCP21和相關通道; web:TCP80;samba:TCP139,445 ;DNS 53/udp(查詢和區域傳送)
    iptables -A INPUT -p tcp -m multiport --dport 21,23,80,139,445 -j ACCEPT
    iptables -A INPUT -p udp --dport 53 -j ACCEPT
    iptables -A INPUT -p tcp -m multiport --dport 21,23,80,139,445  -m state --state ESTABLISHED,RELATED -j ACCEPT           
    iptables -A INPUT -j DROP


#剩餘全拒絕(除了正在用的ssh鏈接)
    iptables -I INPUT  -p tcp --dport 22 -s 172.17.16.16 -j ACCEPT 
    iptables -A INPUT -j REJECT 
    iptables -I OUTPUT  -p tcp --sport 22 -d 172.17.16.16 -j ACCEPT 
    iptables -A OUTPUT -j REJECT 

2 實現網絡防火牆:放行telnet, ftp, web服務;放行samba服務;放行dns服務(查詢和區域傳送);

#開啓ip-forword功能
    sysctl -w net.ipv4.ip_forward=1
    sysctl -p
iptables -A FORWARD -p tcp  -m multiport --port 21,23,80,139,445  -j ACCEPT

iptables -A FORWARD -p udp -m multiport --port 53 -j ACCEPT                

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

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