一、
說明:以下練習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