鏈:鏈上的規則次序,即爲檢查的次序:因此,隱含一定的應用法則:
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
虛擬主機半價優惠活動進行中....