Linux系統(tǒng)之上有三種安全防范手段:
創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司,提供成都網(wǎng)站設(shè)計、成都做網(wǎng)站,網(wǎng)頁設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);可快速的進(jìn)行網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,是專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!①包過濾防火墻:iptables
②應(yīng)用程序防火墻:TCP Wrappers
③代理服務(wù)器防火墻:nginx等
iptables程序工作在內(nèi)核的TCP/IP網(wǎng)絡(luò)協(xié)議棧的框架上,工作在用戶空間;
按用途和功能可分為四表和五鏈
四表:filter、nat、mangle、raw
優(yōu)先級:raw、mangle、nat、filter
filter | 一般的過濾功能 |
nat | 地址轉(zhuǎn)換、映射,端口映射等 |
mangle | 用于對特定數(shù)據(jù)包的修改(使用情況很少) |
raw | 一般是為了不再讓iptables做數(shù)據(jù)包的鏈接跟蹤處理,從而提高性能 |
四表與五鏈的對應(yīng):
filter:INPUT OUTPUT FORWARD
nat:PREROUTING POSTROUTING FORWARD
mangle:INPUT OUTPUT FORWARD PREROUTING POSTROUTING
raw:PREROUTING OUTPUT
iptables的工作流程:傳送門
添加規(guī)則的時候需要考慮:
1、要實現(xiàn)的功能:判斷加載那個表上;
2、不同類規(guī)則,匹配報文幾率較大的放上面;
3、應(yīng)該設(shè)置默認(rèn)策略。
iptables的語法格式:
~]# man iptables-extensionsiptables [-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET
SUBCOMMAND | 對鏈的操作 |
-F | 清空指定表的指定鏈上的所有規(guī)則;省略鏈名時,清空表中所有鏈 |
-N | 新建一個用戶自定義的鏈;只能作為默認(rèn)鏈的跳轉(zhuǎn)對象,通過被引用生效 |
-X | 刪除用戶自定義的空鏈;非自定義鏈和內(nèi)置鏈無法刪除 |
-Z | 將規(guī)則的計數(shù)器置0 |
-P | 設(shè)置鏈的默認(rèn)處理機(jī)制 |
-E | 重命名自定義鏈 |
注意:被引用中的鏈無法刪除和改名
規(guī)則
-A | 在鏈尾追加一條規(guī)則 |
-I | 在指定位置插入一條規(guī)則 |
-D | 刪除指定規(guī)則 |
-R | 替換指定規(guī)則 |
-L | 查看鏈上所有規(guī)則,一般使用格式-vnL |
--line-number | 顯示規(guī)則編號 |
CRETERIA:匹配條件
-s | 檢查報文中的源IP地址 |
-d | 檢查報文中的目標(biāo)IP地址 |
-p | 檢查報文中的協(xié)議,如:tcp、udp、icmp |
-i | 數(shù)據(jù)報文的流入接口,通常只用于PREROUTING INPUT FORWARD鏈上的規(guī)則 |
-o | 檢查報文的流出接口;通常指用于PORWARD OUTPUT POSTROUTING鏈上的規(guī)則 |
icmp協(xié)議(ping請求)
8:匹配ping請求報文
0:匹配對ping請求的響應(yīng)報文
-j :指明采取的動作。REJECT(拒絕)、ACCEPT(接受)、DROP(丟棄)
一次指定多個端口
示例:
iptables -I INPUT 1 -d 192.168.1.1 -p tcp -m multiport --dports 22,80,443 -j ACCEPT在INPUT鏈上插入一條新規(guī)則,報文的目標(biāo)IP是192.168.1.1(一般為本機(jī)IP):也就是對所有發(fā)往本機(jī)22,80,443端口的tcp請求都接受,這里一般會設(shè)置默認(rèn)規(guī)則為DROP(拒絕沒有定義的請求)
iptables -I OUTPUT 1 -s 192.168.1.1 -p tcp -m multiport --sports 22,80,443 -j ACCEPT同理:所有本機(jī)發(fā)出去的響應(yīng)報文,經(jīng)過22,80,443端口的tcp協(xié)議都放行
-m 模塊名稱
multiport擴(kuò)展:以離散定義多端口匹配,最多指定15個端口
-s 192.168.1.1 源IP
--sports ... 源端口,也就是響應(yīng)報文出口
指定連續(xù)的IP地址范圍
入棧報文規(guī)則
iptables -A OUTPUT -s 192.168.1.1 -p tcp --sport 23 -m iprange --dst-range 192.168.2.2-192.168.2.100 -j ACCEPT出棧報文規(guī)則
對報文中的應(yīng)用層數(shù)據(jù)做字符串的匹配
對80端口的出棧報文做匹配,凡是響應(yīng)報文中帶有sex字符的都不予響應(yīng)
-m string:指明模塊為string模塊
--string:后面跟要匹配的字符串
--algo:字符串匹配檢查算法 bm算法
--hex-string pattern:為了在匹配時性能更好、效率功更高,把字符串作十六進(jìn)制編碼以后,轉(zhuǎn)換格式后再進(jìn)行匹配
對報文中的某些位置做檢查,可以用 –from從最開始處打算偏移多少字節(jié)作為開頭,然后到結(jié)尾;還有--to選項
基于時間區(qū)間做訪問控制
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 從什么時間開始
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 到什么時間結(jié)束
--timestart hh:mm[:ss] 每天的什么時間開始
--timestop hh:mm[:ss] 每天的什么時間結(jié)束
--monthdays day[,day...] 每月的哪幾天
--weekdays day[,day...] 每周的哪幾天
示例:
iptables -R INPUT 1 -d 192.168.1.1 -p tcp --dport 80 -m time --timestart 08:30 --timestop 18:30 --weekdays Mon,Tue,Wed,Thu,Fri -j REJECTPS:星期首字母要大寫或者寫成1,2,3,4,5,6,7也是可以的
此條命令的作用:
請求本服務(wù)器80端口的進(jìn)棧報文,在周一到周五的每天8:30-18:30之間是不被允許的
基于發(fā)包速率做限制
connlimit:根據(jù)每客戶端IP做并發(fā)請求連接限制,,即限制單IP可同時發(fā)起的連接請求;
--connlimit-upto n:連接數(shù)小于等于閾值;
--connlimit-above n:連接數(shù)超出閾值;
示例:
每客戶端發(fā)起的ssh請求不能超過2個
iptables -I INPUT -d 192.168.1.1 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT限制用戶每分鐘發(fā)起的ping請求不能超過20個
--limit rate[/second|/minute|/hour|/day]
--limit-burst number 令牌桶的大小,默認(rèn)為5個(峰值速率)
iptables -I INPUT -d 192.168.1.1 -p icmp --icmp-type 8 -m limit --limit-burst 3 --limit 20/minute -j ACCEPT iptables -A OUTPUT -s 192.168.1.1 -p icmp --icmp-type 0 -j ACCEPT狀態(tài)監(jiān)測機(jī)制
iptables能夠在內(nèi)核當(dāng)中的某段內(nèi)存上用一個哈希表記錄每個連接的源IP、目標(biāo)IP;源端口、目標(biāo)端口,什么時候與本機(jī)建立的連接,已經(jīng)持續(xù)多長時間…
當(dāng)再有一個新的請求到達(dá)時,會根據(jù)這個表中記錄的信息作比較,看是否有記錄,如果沒有則記錄
當(dāng)并發(fā)訪問數(shù)量大于可記錄的內(nèi)存空間時會導(dǎo)致請求被拒絕,
查看可存儲的大請求追蹤數(shù):
cat /proc/sys/net/nf_conntrack_max注意:主機(jī)為調(diào)度器,本身要承載非常大的并發(fā)請求鏈接數(shù),那么開啟這個功能會瞬間由大量服務(wù)請求被拒絕,這是致命的?。?!
狀態(tài):
NEW:新連接
ESTABLISHED:已建立的連接
INVALID:無法識別的連接
UNTRACKED:未被追蹤的連接
RELATED:相關(guān)聯(lián)的連接(例如:ftp的命令連接和數(shù)據(jù)傳輸連接)
現(xiàn)在假設(shè)有這么一種情況:
服務(wù)器的其他端口都是關(guān)閉的,只有80端口是對外開放的。突然有個從80端口出去的請求,說明有人在的服務(wù)器上種了個小程序,偷偷的去連接它的控制端去了。
所以要設(shè)置狀態(tài)監(jiān)測:所有通過80 端口的報文,只允許進(jìn)來為NEW的請求,而出去的只能是ESTABLISHED
~]# iptables -A INPUT -d 192.168.1.1 -ptcp -m multiport --dports 22,23,80 -m state --state NEW,ESTABLISHED -j ACCEPT ~]# iptables -R OUTPUT 1 -m state--state ESTABLISHED -j ACCEPT默認(rèn)策略為DROP
恩,基本就這些了,還有就是日志信息記錄,以及如何保存規(guī)則和重載規(guī)則
保存:iptables-save > /PATH/TO/SOME_RULE_FILE
重載:iptables-restore < /PATH/FROM/SOME_RULE_FILE
-n, --noflush:不清除原有規(guī)則
-t, --test:僅分析生成規(guī)則集,但不予提交;
注意:重載文件中的規(guī)則,會清除已有規(guī)則;
規(guī)則優(yōu)化的思路:
(1) 優(yōu)先放行雙方向狀態(tài)為ESTABLISHED的報文;
(2) 服務(wù)于不同類別的功能的規(guī)則,匹配到報文可能性更大的放前面;
(3) 服務(wù)于同一類別的功能的規(guī)則,匹配條件較為嚴(yán)格的放前面;
(4) 設(shè)置默認(rèn)策略:白名單機(jī)制
(a) 可使用iptables -P設(shè)定默認(rèn)策略;
(b) 建議在規(guī)則鏈的最后定義規(guī)則做為默認(rèn)策略;
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。