本小結重點講解一下iptables的顯示擴展規(guī)則設置
在漳平等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站設計、做網(wǎng)站 網(wǎng)站設計制作按需開發(fā)網(wǎng)站,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站建設,成都全網(wǎng)營銷,成都外貿網(wǎng)站制作,漳平網(wǎng)站建設費用合理。顯示擴展:必須顯式地指明使用的擴展模塊進行擴展;
使用幫助:
Centos 6:man Iptables
Centos 7:man iptables-extensions
實驗1:
multiport擴展
以離散的方式定義多端口匹配;最多指定15個端口;
[!]--source-ports,--sports port,port,....:指定多個源端口;
[!]--destination-ports,--dports port,port....:指定多個目標端口
[!]--ports port ,port...:指明多個端口,不管是源端口還是目標端口都匹配
允許192.168.32.163這臺主機訪問本機的22,80端口
iptables -A INPUT -s 192.168.32.163 -d 192.168.32.144 -p tcp -m multiport --dports 22,80 -j ACCEPT
實驗2:
iprange擴展
指明連續(xù)的(但一般不能是整個網(wǎng)絡)ip地址范圍;
[!]--src-rang from[-to]:源IP地址;
[!]--dst-rang from[-to]:目標IP地址;
172.16.100.5主機到172.16.100.10主機不能訪問本機的web服務
iptables -A INPUT -d 192.168.32.144 -p tcp --dport 80 -m iprange --src-range 172.16.100.5-172.16.100.10 -j DROP
實驗3:
string擴展
對報文中的應用層數(shù)據(jù)做字符串模式匹配檢測;
--algo{bm|kmp}:字符串匹配檢測算法;
bm:Boyer-Moore
kmp:Knuth-Pratt_Morrls
[!]--string patter:要檢測的字符串模式;
[!]--hex-string patter:要檢測的字符創(chuàng)模式,16進制格式;
限制192.168.32.163訪問本機web網(wǎng)頁中含有have內容的網(wǎng)頁。
必須定義到OUTPUT中因為請求的報文中是不帶需要限制的字符串的,只有響應的報文中才帶有需要限制的字符串
iptables -A OUTPUT -s 192.168.32.144 -d 192.168.32.163 -p tcp --sport 80 -m string --algo bm --string "have" -j REJECT
在本機安裝web服務,并創(chuàng)建兩個頁面,其中一個含有have字符串,
初始狀態(tài)防火墻未做任何規(guī)則
此時客戶端可以正常訪問web服務器
添加防火墻規(guī)則
iptables -A OUTPUT -s 192.168.32.144 -d 192.168.32.163 -p tcp --sport 80 -m string --algo bm --string "have" -j REJECT
含有have字段的網(wǎng)頁不能夠訪問
實驗4:
time擴展
根據(jù)將報文到達時間與指定的時間范圍進行匹配
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--datestart 1970-01-01T00:00:00
--datestop 2030-01-19T04:17:07
--timestart hh:mm[:ss]
--timestop hh:mm[:ss]
[!]--monthdays day[,day]
Possible values are 1 to 31.
[!]--weekdays day[,day]
Possible values are Mon,Tue,Wed,Thu,Fri,Sat,Sun
--kerneltz:使用內核上的時區(qū),而非默認的UTC;
定義本機的web服務在每周末下午的14:30到18:30不允許192.168.32.145主機訪問
iptables -A INPUT -s 192.168.32.163 -d 192.168.32.144 -p tcp --dport 80 -m time --timestart 14:30 --timestop 18:30 --weekdays Sat,Sun --kerneltz -j DROP
未使用time擴展設置防火墻規(guī)則時客戶端可以正常網(wǎng)站
客戶端可以正常訪問web服務
添加time擴展訪問規(guī)則
實驗5:
connlimit擴展
根據(jù)每客戶端IP做并發(fā)連接數(shù)量匹配;
--connlimit-upto n:連接的數(shù)量小于等于n時匹配;
--connlimit-above n:連接的數(shù)量大于n時匹配;
我們要求每個客戶端IP最多能夠連接兩個
iptables -A INPUT -d 192.168.32.144 -p tcp --dport 21 -m connlimit --connlimit-above 2 -j REJECT
實驗6:
limit擴展
基于收發(fā)報文的速率做匹配;
令牌桶過濾器:
--limit rate[/second | /minute| /hour| /day]
--limit-burst number
每分鐘只允許其它主機對本主機進行ping操作三次,峰值大為5
iptables -I INPUT -d 192.168.32.144 -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT 滿足條件執(zhí)行放行策略
iptables -I INPUT 2 -p icmp -j REJECT 加一條拒絕規(guī)則
設置規(guī)則之前:
添加規(guī)則:
實驗7:
state擴展
根據(jù)“連接追蹤機制”去檢查連接的狀態(tài);跟TCP協(xié)議沒有關系
如何判斷從本機發(fā)出的一個連接是對別人請求的響應還是自己發(fā)起的請求?
可以通過本機記錄的conntrack追蹤結果,在有效時間內,可以查看到每個對本機的請求連接跟本機反饋的結果的之間的對應關系
conntrack機制:追蹤本機上的請求和響應之間關系;狀態(tài)有如下幾種;
NEW:新發(fā)出請求;連接追蹤模板中不存在此連接的信息條目,因此,將其識別為第一次發(fā)出的請求;
ESTABLISHED:NEW狀態(tài)之后,連接追蹤模板中為其建立的條目失效之前期間內所進行的通信狀態(tài);
RELATED:相關聯(lián)的連接;如ftp協(xié)議中的命令連接與書籍之間的關系;
INVALID:無效的連接;
UNTRACKEN:為進行追蹤的連接;
正常情況下,服務器是不會通過80端口主動發(fā)起連接請求,22號端口正常情況下也是不會主動發(fā)起連接請求
允許NEW請求連接進來
iptables -A INPUT -d 192.168.32.144 -p tcp --dport 80 -m state --state NEW -j ACCEPT
INPUT鏈放行NEW,ESTABLISHED
iptables -A INPUT -d 192.168.32.144 -p tcp -m multiport --dports 22,80 -m state --state NEW,ESTABLISHED -j ACCEPT
OUTPUT鏈放行ESTABLISHED
iptables -A OUTPUT -s 192.168.32.144 -p tcp -m multiport --sports 22,80 -m state --state ESTABLISHED -j ACCEPT
更改默認策略全部為DROP:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
客戶端可以正常訪問:
調整連接追蹤功能所能容納的大連接數(shù)量:
/proc/sys/net/nf_contrack_max
已經(jīng)追蹤到的并記錄下來的連接:
/proc/net/nf_conntrack
不同的協(xié)議的連續(xù)追蹤時長
/proc/sys/net/netfilter/
iptables的鏈接跟蹤大容量為/proc/sys/net/ipv4/ip_conntrack_max,鏈接碰到各種狀態(tài)的超時后就會從表中刪除;當模板滿載時,后續(xù)的連接可能會超時
解決方法一般有兩個:
(1)加大nf_conntrack_max值
vim /etc/sysctl.conf
net.ipv4.nf_conntrack_max=393216
net.ipv4.netfilter.nf_conntrack_max=393216
(2)降低nf_conntrack timeout時間
vim /etc/sysctl.conf
net.ipv4.netfilter.nf_conntrack_tcp_timeout_established=300
net.ipv4.netfilter.nf_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.nf_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.nf_conntrack_tcp_timeout_fin_wait=120
實驗8:
如何開放被動模式的ftp
ftp主動鏈接模式??蛻舳税l(fā)起請求連接服務器21號端口,服務器端進程會通過本機的20號端口主動去連接客戶端隨機端口+1的端口(新數(shù)據(jù)請求),客戶端有可能存在防火墻,
ftp被動連接模式??蛻舳苏埛掌靼l(fā)起數(shù)據(jù)下載請求,服務器端隨機使用一個端口響應,
服務器端判斷數(shù)據(jù)連接是不是與此前的某個命令連接有關聯(lián)關系, 只要數(shù)據(jù)連與此前的命令連接有關聯(lián)關系,防火墻就放行,不從端口放行,以轉態(tài)為標準。
先復制一個文件到/var/ftp/pub
cp /etc/issue /var/ftp/pub/
防火墻初始狀態(tài):
因為要使用遠程連接功能,所以放行了22號端口
客戶端使用lftp連接發(fā)現(xiàn)連接失敗
手動記載連接追蹤的模塊
modprobe nf_conntrack_ftp
設置防火墻規(guī)則放行命令連接:
iptables -A INPUT -d 192.168.32.144 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.32.144 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
放行數(shù)據(jù)連接:
iptables -A INPUT -d 192.168.32.144 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.32.144 -p tcp -m state --state ESTABLISHED -j ACCEPT
此時繼續(xù)訪問可以看到
實驗9:
規(guī)則優(yōu)化:
服務器規(guī)則優(yōu)化設定:任何不允許的訪問,應該在請求到達時給予拒絕;
(1)可安全放行所有入站的狀態(tài)為ESTABLISHED狀態(tài)連接;
(2)可安全放行所有出站的狀態(tài)為ESTABLISHED狀態(tài)連接;
(3)謹慎放行入站的新請求;
(4)有特殊目的的限制訪問功能,要于芳心規(guī)則之前加以決絕;
iptables -I INPUT -d 192.168.32.144 -m state --state ESTABLISHED -j ACCEPT
iptables -I INPUT 2 -d 192.168.32.144 -p tcp -m multiport --dport 21,22,80 -m state --state NEW -j ACCEPT
iptables -I INPUT 3 -d 192.168.32.144 -p tcp -m state --state RELATED -j ACCEPT
iptables -D INPUT 4
iptables -D INPUT 4
iptables -D INPUT 4
出站規(guī)則設定
iptables -I OUTPUT -s 192.168.32.144 -m state --state ESTABLISHED -j ACCEPT
iptables -D OUTPUT 2
iptables -D OUTPUT 2
iptables -D OUTPUT 2
限制掉web服務反饋的請求中含有have的頁面
iptables -I OUTPUT -m string --algo kmp --string "have" -j REJECT
備注:其實在前端的web服務異常繁忙的服務器上的使用state連接追蹤功能是不明智的,在講到集群負載的時候我們將重點討論這個問題
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。