linux网络_防火墙-iptables基础
2019獨角獸企業重金招聘Python工程師標準>>>
定義:
防火墻:是用于實現Linux下訪問控制的功能。
分類:硬件或者軟件防火墻。
3、4層的防火墻,叫網絡層的防火墻;7層的防火墻,即代理層的網關。
TCP/IP的七層模型,第三層是網絡層,三層的防火墻會在這層對源地址和目標地址進行檢測。
對于七層的防火墻,不管你源端口或者目標端口,源地址或者目標地址是什么,都將對你所有的東西進行檢查。
所以,對于設計原理來講,七層防火墻更加安全,但是這卻帶來了效率更低。
無論是在哪個網絡中,防火墻工作的地方一定是在網絡的邊緣。而我們的任務就是需要去定義到底防火墻如何工作,即防火墻的策略,規則,以達到讓它對出入網絡的IP、數據進行檢測。
原理:
工作在用戶空間中,定義規則的工具,本身并不算是防火墻。它們定義的規則,可以讓在內核空間當中的netfilter來讀取。而放入內核的地方必須要是特定的位置,必須是tcp/ip的協議棧經過的地方。而這個tcp/ip協議棧必須經過的地方,可以實現讀取規則的地方就叫做 netfilter.(網絡過濾器)
在內核空間中選擇了5個位置:
? ? 1.內核空間中:從一個網絡接口進來,到另一個網絡接口去的
? ? 2.數據包從內核流入用戶空間的
? ? 3.數據包從用戶空間流出的
? ? 4.進入/離開本機的外網接口
? ? 5.進入/離開本機的內網接口
這五個位置也被稱為五個鉤子函數(hook functions),也叫五個規則鏈。
1.PREROUTING (路由前)
2.INPUT (數據包流入口)
3.FORWARD (轉發網卡)
4.OUTPUT(數據包出口)
5.POSTROUTING(路由后)
? ? ? ?NetFilter規定的五個規則鏈,任何一個數據包,只要經過本機,必將經過這五個鏈中的其中一個鏈。 ?
?
用的比較多個功能有3個:
1.filter 定義允許或者不允許的
2.nat 定義地址轉換的?
3.mangle功能:修改報文原數據
filter來講一般只能做在3個鏈上:INPUT ,FORWARD ,OUTPUT
nat來講一般也只能做在3個鏈上:PREROUTING ,OUTPUT ,POSTROUTING
mangle則是5個鏈都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
規則的寫法:
?iptables定義規則的方式比較復雜:
?格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
?-t table :3個filter nat mangle
?COMMAND:定義如何對規則進行管理
?chain:指定你接下來的規則到底是在哪個鏈上操作的,當定義策略的時候,是可以省略的。 5個鏈
?CRETIRIA:指定匹配標準
?-j ACTION :指定如何進行處理
?比如:不允許172.16.0.0/24的進行訪問。
?iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP
?當然你如果想拒絕的更徹底:
?iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT
?iptables -L -n -v#查看定義規則的詳細信息
?
詳解COMMAND:
1.鏈管理命令(這都是立即生效的)
-P :設置默認策略的(設定默認門是關著的還是開著的)
默認策略一般只有兩種
iptables -P INPUT (DROP|ACCEPT) ?默認是關的/默認是開的
比如:
iptables -P INPUT DROP 這就把默認規則給拒絕了。并且沒有定義哪個動作,所以關于外界連接的所有規則包括Xshell連接之類的,遠程連接都被拒絕了。
????????-F: FLASH,清空規則鏈的(注意每個鏈的管理權限)
????iptables -t nat -F PREROUTING
????iptables -t nat -F 清空nat表的所有鏈
????????-N:NEW 支持用戶新建一個鏈
????????????iptables -N inbound_tcp_web 表示附在tcp表上用于檢查web的。
????????-X: 用于刪除用戶自定義的空鏈
????????????使用方法跟-N相同,但是在刪除之前必須要將里面的鏈給清空昂了
????????-E:用來Rename chain主要是用來給用戶自定義的鏈重命名
????????????-E oldname newname
?????????-Z:清空鏈,及鏈中默認規則的計數器的(有兩個計數器,被匹配到多少個數據包,多少個字節)
????????????iptables -Z :清空
?
2.規則管理命令
?????????-A:追加,在當前鏈的最后新增一個規則
?????????-I num : 插入,把當前規則插入為第幾條。
????????????-I 3 :插入為第三條
?????????-R num:Replays替換/修改第幾條規則
????????????格式:iptables -R 3 …………
?????????-D num:刪除,明確指定刪除第幾條規則
????????
3.查看管理命令 “-L”
?附加子命令
?-n:以數字的方式顯示ip,它會將ip直接顯示出來,如果不加-n,則會將ip反向解析成主機名。
?-v:顯示詳細信息
?-vv
?-vvv :越多越詳細
?-x:在計數器上顯示精確值,不做單位換算
?--line-numbers : 顯示規則的行號
?-t nat:顯示所有的關卡的信息
?
五:詳解匹配標準
1.通用匹配:源地址目標地址的匹配
?-s:指定作為源地址匹配,這里不能指定主機名稱,必須是IP
IP | IP/MASK | 0.0.0.0/0.0.0.0
而且地址可以取反,加一個“!”表示除了哪個IP之外
?-d:表示匹配目標地址
?-p:用于匹配協議的(這里的協議通常有3種,TCP/UDP/ICMP)
?-i eth0:從這塊網卡流入的數據
流入一般用在INPUT和PREROUTING上
?-o eth0:從這塊網卡流出的數據
流出一般在OUTPUT和POSTROUTING上
????????
2.擴展匹配
2.1隱含擴展:對協議的擴展
????-p tcp :TCP協議的擴展。一般有三種擴展
--dport XX-XX:指定目標端口,不能指定多個非連續端口,只能指定單個端口,比如
--dport 21 ?或者 --dport 21-23 (此時表示21,22,23)
--sport:指定源端口
--tcp-fiags:TCP的標志位(SYN,ACK,FIN,PSH,RST,URG)
????對于它,一般要跟兩個參數:
1.檢查的標志位
2.必須為1的標志位
--tcpflags syn,ack,fin,rst syn ??= ???--syn
表示檢查這4個位,這4個位中syn必須為1,其他的必須為0。所以這個意思就是用于檢測三次握手的第一次包的。對于這種專門匹配第一包的SYN為1的包,還有一種簡寫方式,叫做--syn
????-p udp:UDP協議的擴展
????????--dport
????????--sport
????-p icmp:icmp數據報文的擴展
????????--icmp-type:
echo-request(請求回顯),一般用8 來表示
所以 --icmp-type 8 匹配請求回顯數據包
echo-reply (響應的數據包)一般用0來表示
??????????????????
2.2顯式擴展(-m)
?????擴展各種模塊
??????-m multiport:表示啟用多端口擴展
??????之后我們就可以啟用比如 --dports 21,23,80
??????????????????
????????
六:詳解-j ACTION
?常用的ACTION:
?DROP:悄悄丟棄
一般我們多用DROP來隱藏我們的身份,以及隱藏我們的鏈表
?REJECT:明示拒絕
?ACCEPT:接受
custom_chain:轉向一個自定義的鏈
?DNAT
?SNAT
?MASQUERADE:源地址偽裝
?REDIRECT:重定向:主要用于實現端口重定向
?MARK:打防火墻標記的
?RETURN:返回
在自定義鏈執行完畢后使用返回,來返回原規則鏈。
?
轉載于:https://my.oschina.net/u/1014520/blog/2885331
總結
以上是生活随笔為你收集整理的linux网络_防火墙-iptables基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Chrome浏览器相关细节整理
- 下一篇: 转:文件系统read,write缓存,有