中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iptables基礎

發布時間:2020-08-09 15:20:49 來源:網絡 閱讀:496 作者:cszdz123 欄目:安全技術

Linux系統之上有三種安全防范手段:

①包過濾防火墻:iptables

②應用程序防火墻:TCP Wrappers

③代理服務器防火墻:nginx等

iptables程序工作在內核的TCP/IP網絡協議棧的框架上,工作在用戶空間;

按用途和功能可分為四表和五鏈

四表:filter、nat、mangle、raw

優先級:raw、mangle、nat、filter

filter一般的過濾功能
nat地址轉換、映射,端口映射等
mangle用于對特定數據包的修改(使用情況很少)
raw一般是為了不再讓iptables做數據包的鏈接跟蹤處理,從而提高性能

四表與五鏈的對應:

filter:INPUT OUTPUT FORWARD

nat:PREROUTING POSTROUTING FORWARD

mangle:INPUT OUTPUT FORWARD PREROUTING POSTROUTING

raw:PREROUTING OUTPUT

iptables的工作流程傳送門

添加規則的時候需要考慮:

1、要實現的功能:判斷加載那個表上;

2、不同類規則,匹配報文幾率較大的放上面;

3、應該設置默認策略。


iptables的語法格式:

~]# man iptables-extensions

iptables [-t TABLE] SUBCOMMAND CHAIN CRETERIA -j TARGET

SUBCOMMAND

對鏈的操作

-F清空指定表的指定鏈上的所有規則;省略鏈名時,清空表中所有鏈
-N新建一個用戶自定義的鏈;只能作為默認鏈的跳轉對象,通過被引用生效
-X刪除用戶自定義的空鏈;非自定義鏈和內置鏈無法刪除
-Z將規則的計數器置0
-P設置鏈的默認處理機制
-E重命名自定義鏈

注意:被引用中的鏈無法刪除和改名


規則

-A在鏈尾追加一條規則
-I在指定位置插入一條規則
-D刪除指定規則
-R替換指定規則
-L

查看鏈上所有規則,一般使用格式-vnL

--line-number顯示規則編號


CRETERIA:匹配條件

-s檢查報文中的源IP地址
-d檢查報文中的目標IP地址
-p檢查報文中的協議,如:tcp、udp、icmp
-i數據報文的流入接口,通常只用于PREROUTING INPUT FORWARD鏈上的規則
-o檢查報文的流出接口;通常指用于PORWARD OUTPUT POSTROUTING鏈上的規則


  • icmp協議(ping請求)

iptables -A INPUT -d 192.168.1.1 -s 192.168.1.0/24 -p icmp --icmp-type 8/0 -j ACCEPT
iptables -A OUTPUT -s 192.168.1.1 -d 192.168.1.0/24 -p icmp --icmp-type 0/0 -j ACCEPT

8:匹配ping請求報文

0:匹配對ping請求的響應報文

-j :指明采取的動作。REJECT(拒絕)、ACCEPT(接受)、DROP(丟棄)

  • 一次指定多個端口


示例:

    

iptables -I INPUT 1 -d 192.168.1.1 -p tcp -m multiport --dports 22,80,443 -j ACCEPT


在INPUT鏈上插入一條新規則,報文的目標IP是192.168.1.1(一般為本機IP):也就是對所有發往本機22,80,443端口的tcp請求都接受,這里一般會設置默認規則為DROP(拒絕沒有定義的請求)

   

 iptables -I OUTPUT 1 -s 192.168.1.1 -p tcp -m multiport --sports 22,80,443 -j ACCEPT


同理:所有本機發出去的響應報文,經過22,80,443端口的tcp協議都放行

-m 模塊名稱

multiport擴展:以離散定義多端口匹配,最多指定15個端口

-s 192.168.1.1   源IP 

--sports ...     源端口,也就是響應報文出口


  • 指定連續的IP地址范圍

iptables -A INPUT -d 192.168.1.1 -p tcp --dport 23 -m iprange --src-range 192.168.2.2-192.168.2.100 -j ACCEPT

入棧報文規則

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

出棧報文規則

  • 對報文中的應用層數據做字符串的匹配

iptables -A OUTPUT -s 192.168.1.1 -p tcp --sport 80 -m string --string "sex" --algo bm -j REJECT

對80端口的出棧報文做匹配,凡是響應報文中帶有sex字符的都不予響應

-m string:指明模塊為string模塊

--string:后面跟要匹配的字符串

--algo:字符串匹配檢查算法 bm算法


 --hex-string pattern:為了在匹配時性能更好、效率功更高,把字符串作十六進制編碼以后,轉換格式后再進行匹配

對報文中的某些位置做檢查,可以用 –from 從最開始處打算偏移多少字節作為開頭,然后到結尾;還有--to選項


  • 基于時間區間做訪問控制

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]   從什么時間開始

--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]  到什么時間結束

--timestart hh:mm[:ss]            每天的什么時間開始

--timestop hh:mm[:ss]             每天的什么時間結束

--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 REJECT

PS:星期首字母要大寫或者寫成1,2,3,4,5,6,7也是可以的

此條命令的作用:

    請求本服務器80端口的進棧報文,在周一到周五的每天8:30-18:30之間是不被允許的

  • 基于發包速率做限制

connlimit:根據每客戶端IP做并發請求連接限制,,即限制單IP可同時發起的連接請求;

--connlimit-upto n:連接數小于等于閾值;

--connlimit-above n:連接數超出閾值;

示例:

每客戶端發起的ssh請求不能超過2個

iptables -I INPUT -d 192.168.1.1 -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT


  • 限制用戶每分鐘發起的ping請求不能超過20個

--limit rate[/second|/minute|/hour|/day]

--limit-burst number 令牌桶的大小,默認為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

狀態監測機制

iptables能夠在內核當中的某段內存上用一個哈希表記錄每個連接的源IP、目標IP;源端口、目標端口,什么時候與本機建立的連接,已經持續多長時間…

當再有一個新的請求到達時,會根據這個表中記錄的信息作比較,看是否有記錄,如果沒有則記錄

當并發訪問數量大于可記錄的內存空間時會導致請求被拒絕,

查看可存儲的最大請求追蹤數:

cat /proc/sys/net/nf_conntrack_max

注意:主機為調度器,本身要承載非常大的并發請求鏈接數,那么開啟這個功能會瞬間由大量服務請求被拒絕,這是致命的!!!

狀態:

 NEW:新連接

  ESTABLISHED:已建立的連接

  INVALID:無法識別的連接

  UNTRACKED:未被追蹤的連接

  RELATED:相關聯的連接(例如:ftp的命令連接和數據傳輸連接)


現在假設有這么一種情況:

    服務器的其他端口都是關閉的,只有80端口是對外開放的。突然有個從80端口出去的請求,說明有人在的服務器上種了個小程序,偷偷的去連接它的控制端去了。

所以要設置狀態監測:所有通過80 端口的報文,只允許進來為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

默認策略為DROP



恩,基本就這些了,還有就是日志信息記錄,以及如何保存規則和重載規則

保存:iptables-save > /PATH/TO/SOME_RULE_FILE 

重載:iptables-restore < /PATH/FROM/SOME_RULE_FILE

    -n, --noflush:不清除原有規則

    -t, --test:僅分析生成規則集,但不予提交;

注意:重載文件中的規則,會清除已有規則;

規則優化的思路:

  (1) 優先放行雙方向狀態為ESTABLISHED的報文;

  (2) 服務于不同類別的功能的規則,匹配到報文可能性更大的放前面;

  (3) 服務于同一類別的功能的規則,匹配條件較為嚴格的放前面;

  (4) 設置默認策略:白名單機制

    (a) 可使用iptables -P設定默認策略;

    (b) 建議在規則鏈的最后定義規則做為默認策略;


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

本溪| 新闻| 清镇市| 马公市| 布尔津县| 镇宁| 桐梓县| 新密市| 顺义区| 蒲城县| 岳西县| 益阳市| 大洼县| 新化县| 临西县| 深圳市| 合川市| 石台县| 孟州市| 敦煌市| 乐都县| 交口县| 兴隆县| 阿拉善盟| 江都市| 集安市| 讷河市| 隆林| 金昌市| 玛沁县| 阳春市| 宁安市| 景宁| 闽侯县| 称多县| 定南县| 东港市| 黔西县| 五台县| 翁源县| 合阳县|