1、rp_filter參數介紹
rp_filter參數用於控制系統是否開啓對數據包源地址的校驗。
rp_filter - INTEGER
0 - No source validation.
1 - Strict mode as defined in RFC3704 Strict Reverse Path
Each incoming packet is tested against the FIB and if the interface
is not the best reverse path the packet check will fail.
By default failed packets are discarded.
2 - Loose mode as defined in RFC3704 Loose Reverse Path
Each incoming packet's source address is also tested against the FIB
and if the source address is not reachable via any interface
the packet check will fail.
Current recommended practice in RFC3704 is to enable strict mode
to prevent IP spoofing from DDos attacks. If using asymmetric routing
or other complicated routing, then loose mode is recommended.
The max value from conf/{all,interface}/rp_filter is used
when doing source validation on the {interface}.
Default value is 0. Note that some distributions enable it
in startup scripts.
即rp_filter參數有三個值,0、一、2,具體含義:
0:不開啓源地址校驗。
1:開啓嚴格的反向路徑校驗。對每一個進來的數據包,校驗其反向路徑是不是最佳路徑。若是反向路徑不是最佳路徑,則直接丟棄該數據包。
2:開啓鬆散的反向路徑校驗。對每一個進來的數據包,校驗其源地址是否可達,即反向路徑是否能通(經過任意網口),若是反向路徑不一樣,則直接丟棄該數據包。
2、rp_filter參數示例
假設機器有2個網口:
eth0: 192.168.1.100
eth1:200.153.1.122
數據包源IP:10.75.153.98,目的IP:200.153.1.122
系統路由表配置爲:
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.234 0.0.0.0 UG 0 0 0 eth0
192.168.120.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.75.153.98 0.0.0.0 255.255.255.0 U 0 0 0 eth0
系統rp_filter參數的配置爲:
[root@localhost ~]# sysctl -a | grep rp_filter
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
如上所示,數據包發到了eth1網卡,若是這時候開啓了rp_filter參數,並配置爲1,則系統會嚴格校驗數據包的反向路徑。從路由表中能夠看出,返回響應時數據包要從eth0網卡出,即請求數據包進的網卡和響應數據包出的網卡不是同一個網卡,這時候系統會判斷該反向路徑不是最佳路徑,而直接丟棄該請求數據包。(業務進程也收不到該請求數據包)
解決辦法:
1.修改路由表,使響應數據包從eth1出,即保證請求數據包進的網卡和響應數據包出的網卡爲同一個網卡。
2.關閉rp_filter參數。(注意all和default的參數都要改)
1)修改/etc/sysctl.conf文件,而後sysctl -p刷新到內存。
2)使用sysctl -w直接寫入內存:sysctl -w net.ipv4.conf.all.rp_filter=0
3)修改/proc文件系統: echo "0">/proc/sys/net/ipv4/conf/all/rp_filter
3、開啓rp_filter參數的做用
1. 減小DDoS攻擊
校驗數據包的反向路徑,若是反向路徑不合適,則直接丟棄數據包,避免過多的無效鏈接消耗系統資源。
2. 防止IP Spoofing
校驗數據包的反向路徑,若是客戶端僞造的源IP地址對應的反向路徑不在路由表中,或者反向路徑不是最佳路徑,則直接丟棄數據包,不會向僞造IP的客戶端回覆響應。
Ps:兩種常見的非法攻擊手段:
1. DDos攻擊(Distribute Deny of Service)
分佈式拒絕服務攻擊。經過構造大量的無用數據包向目標服務發起請求,佔用目標服務主機大量的資源,還可能形成網絡擁塞,進而影響到正經常使用戶的訪問。
2. IP Spoofing(IP欺騙)
IP Spoofing指一個客戶端經過僞造源IP,冒充另一個客戶端與目標服務進行通訊,從而達到某些不可告人的祕密。