iptables如何限制宿主機(jī)跟Docker IP和端口訪問(安全整改)
一、常用命令
查看版本: [root@iptables-server ~]# iptables -V iptables v1.4.21 配置文件: /etc/sysconfig/iptables-config /etc/sysconfig/iptables #記錄規(guī)則文件 #查看防火墻規(guī)則,顯示規(guī)則行號(hào) [root@iptables-server ~]# iptables -nL --line-number ##指定行號(hào)刪除,需要注意刪除第一條規(guī)則后原來(lái)的第二條規(guī)則行號(hào)就會(huì)變成1,多次執(zhí)行切勿刪錯(cuò) [root@iptables-server ~]# iptables -D INPUT 1 # 規(guī)則保存 [root@iptables-server ~]# iptables-save # service iptables save # iptables-save > /etc/sysconfig/iptables # iptables-restore < /etc/sysconfig/iptables --參數(shù)解釋 -L:列出一個(gè)鏈或所有鏈中的規(guī)則信息 -n:以數(shù)字形式顯示地址、端口等信息 -v:以更詳細(xì)的方式顯示規(guī)則信息 --line-numbers:查看規(guī)則時(shí),顯示規(guī)則的序號(hào)(方便之處,通過(guò)需要?jiǎng)h除規(guī)則-D INPUT 1 -F:清空所有的規(guī)則(-X是清理自定義的鏈,用的少;-Z清零規(guī)則序號(hào)) -D:刪除鏈內(nèi)指定序號(hào)(或內(nèi)容)的一條規(guī)則 -P:為指定的鏈設(shè)置默認(rèn)規(guī)則 -A:在鏈的末尾追加一條規(guī)則 -I:在鏈的開頭(或指定序號(hào))插入一條規(guī)則 -t: 指定表名,默認(rèn)filter表 .... 更多參數(shù)可通過(guò)--help查看
二、宿主機(jī)網(wǎng)絡(luò)限制
背景:
漏洞掃描發(fā)現(xiàn)任意用戶對(duì)目標(biāo)服務(wù)通過(guò)訪問URL獲取內(nèi)容或者單純的想要限制/允許某個(gè)Ip或者某個(gè)網(wǎng)段進(jìn)行訪問
1、任意用戶對(duì)目標(biāo)服務(wù)通過(guò)訪問URL獲取內(nèi)容
目標(biāo)服務(wù)存在未授權(quán)訪問漏洞,通過(guò)訪問URL:http://192.168.180.140:8081/swagger-resources,獲取內(nèi)容如下
[root@xiaoliu ~]# curl -iv http://192.168.180.140:8081/swagger-resources
[root@xiaoliu ~]# curl -I 192.168.180.140:8081
:[{"name":"default","location":"/v2/api-docs","swaggerVersion":"2.0"}]整改:對(duì)端口做限制,只允許平臺(tái)服務(wù)器的網(wǎng)段對(duì)該端口進(jìn)行訪問,其余都拒絕
#注意拒絕其他所有IP地址進(jìn)行訪問,此規(guī)則因該在其他規(guī)則之前執(zhí)行,以確保其生效
#192.168.180.140 [root@xiaoliu ~]# iptables -I INPUT -p tcp --dport 8081 -j DROP #這種規(guī)則需要先執(zhí)行 [root@xiaoliu ~]# iptables -I INPUT -s 10.146.57.0/24 -p tcp --dport 8081 -j ACCEPT [root@xiaoliu ~]# iptables -I INPUT -s 10.146.60.0/24 -p tcp --dport 8081 -j ACCEPT [root@xiaoliu ~]# iptables -I INPUT -s 10.146.119.0/24 -p tcp --dport 8081 -j ACCEPT
2、允許某個(gè)Ip或者某個(gè)網(wǎng)段進(jìn)行訪問
[root@xiaoliu ~]# iptables -I INPUT -p tcp --dport 2375 -j DROP [root@xiaoliu ~]# iptables -I INPUT -s 10.146.119.0/24 -p tcp --dport 2375 -j ACCEPT
三、限制Docker 網(wǎng)絡(luò)IP和端口訪問
背景:
整改安全加固時(shí),使用iptabels限制docker端口不生效,限制非docker容器端口可生效。
經(jīng)查閱大量資料,發(fā)現(xiàn)Docker容器創(chuàng)建時(shí)會(huì)自動(dòng)創(chuàng)建iptables策略,Docker使用的i規(guī)則鏈?zhǔn)荄OCKER-USER,所以需使用iptables對(duì)DOCKER-USER鏈做限制。
1、同網(wǎng)段只允許負(fù)載均衡機(jī)器跟控制主機(jī)機(jī)器訪問算法服務(wù)器
iptables -I INPUT -p tcp --dport 48002 -j DROP iptables -I INPUT -s 192.168.180.204 -p tcp --dport 48002 -j ACCEPT iptables -I INPUT -s 192.168.180.215 -p tcp --dport 48002 -j ACCEPT ##此刻只執(zhí)行上面命令發(fā)現(xiàn)同網(wǎng)段其余機(jī)器還是可以訪問該算法的調(diào)用端口,此時(shí)需要對(duì)容器做限制 iptables -I INPUT -s 192.168.180.0/24 -j DROP iptables -I INPUT -s 192.168.180.215 -j ACCEPT iptables -I INPUT -s 192.168.180.204 -j ACCEPT iptables -I DOCKER-USER -i eno1 -s 192.168.180.215 -p tcp --dport 48002 -j ACCEPT iptables -I DOCKER-USER -i eno1 -s 192.168.180.204 -p tcp --dport 48002 -j ACCEPT
2、限制與Docker主機(jī)的連接
默認(rèn)情況下,允許所有外部源IP連接到Docker主機(jī)。
要僅允許特定的IP或網(wǎng)絡(luò)訪問容器,請(qǐng)?jiān)贒OCKER-USER過(guò)濾器鏈的頂部插入一個(gè)否定的規(guī)則。
#限制除192.168.1.1地址外的其他地址訪問 $ iptables -I DOCKER-USER -i eno1 ! -s 192.168.1.1 -j DROP
#注意:eno1網(wǎng)卡需要按照你的實(shí)際情況填寫
#限制除192.168.1.0/24網(wǎng)段外的其他地址訪問 $ iptables -I DOCKER-USER -i eno1 ! -s 192.168.1.0/24 -j DROP
最后,您可以指定要接受的IP地址范圍--src-range (請(qǐng)記住-m iprange在使用--src-range或時(shí)也要添加--dst-range):
#限制除192.168.1.1-192.168.1.3外的其他地址訪問 $ iptables -I DOCKER-USER -m iprange -i eno1 ! --src-range 192.168.1.1-192.168.1.3 -j DROP
您可以結(jié)合使用-s或--src-range與-d或--dst-range一起控制連續(xù)源地址和連續(xù)目標(biāo)地址。
例如,如果Docker守護(hù)程序同時(shí)監(jiān)聽 192.168.1.99和10.1.2.3,則可以制定特定于10.1.2.3并保持 192.168.1.99打開的規(guī)則。
3、限制docker指定端口訪問策略
禁止所有IP訪問docker的389端口 iptables -I DOCKER-USER -i eth0 -p tcp --dport 389 -j DROP 允許172.27.30.92地址訪問docker的389端口 iptables -I DOCKER-USER -i eth0 -s 172.27.30.92 -p tcp --dport 389 -j ACCEPT
4、DOCKER-USER常用命令
# 查詢DOCKER-USER策略 [root@test ~]# iptables --line -nvL DOCKER-USER Chain DOCKER-USER (1 references) num pkts bytes target prot opt in out source destination 1 8 432 ACCEPT tcp -- eth0 * 172.27.30.92 0.0.0.0/0 tcp dpt:389 2 13 740 DROP tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:389 3 188 12524 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0 # 刪除DOCKER-USER策略 # 刪除DOCKER-USER鏈第一條(num)規(guī)則 [root@test ~]# iptables -D DOCKER-USER 1 # 保存DOCKER-USER策略,默認(rèn)臨時(shí)生效 [root@test ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ 確定 ] telnet訪問測(cè)試: [root@zabbix_server ~]# telnet 127.0.0.1 8075 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection timed out
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 解決docker安裝完成報(bào):bridge-nf-call-iptables is disabled問題
- 在Docker容器中使用iptables時(shí)的最小權(quán)限的開啟方法
- Docker中iptables規(guī)則在iptables重啟后丟失的完整過(guò)程
- 詳解Docker使用Linux iptables 和 Interfaces管理容器網(wǎng)絡(luò)
- Docker與iptables及實(shí)現(xiàn)bridge方式網(wǎng)絡(luò)隔離與通信操作
- iptables使用及docker的iptables規(guī)則
- docker的iptables策略詳解和用戶自定義策略的添加方式
- Docker iptables的錯(cuò)誤解決
- docker的WARNING:bridge-nf-call-iptables is disabled的解決方案
- 基于iptables的Docker端口白名單控制實(shí)現(xiàn)
相關(guān)文章
docker+Nginx部署前端項(xiàng)目的詳細(xì)過(guò)程記錄
docker的出現(xiàn)解決了我們很多問題,讓我們避免陷入各種依賴安裝的痛苦中,下面這篇文章主要給大家介紹了關(guān)于docker+Nginx部署前端項(xiàng)目的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10
Docker不能綁定靜態(tài)的外網(wǎng)固定ip的問題及解決辦法
這篇文章主要介紹了Docker不能綁定靜態(tài)的外網(wǎng)固定ip的問題及解決辦法,需要的朋友可以參考下2017-01-01
如何修改Docke上傳/下載并發(fā)線程數(shù)來(lái)解決docker: unexpected EOF.錯(cuò)誤問題
下載或上傳鏡像時(shí),有可能因?yàn)榫W(wǎng)絡(luò)問題導(dǎo)致報(bào)出docker: unexpected EOF.的錯(cuò)誤,這時(shí)候可以考慮通過(guò)修改上傳/下載并發(fā)線程數(shù)來(lái)解決,本文給大家分享兩種方法幫助大家解決,需要的朋友一起看看吧2023-03-03
Docker network自定義網(wǎng)絡(luò)方式
這篇文章主要介紹了Docker network自定義網(wǎng)絡(luò)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
解決docker run中使用 ./ 相對(duì)路徑掛載文件或目錄失敗的問題
這篇文章主要介紹了解決docker run中使用‘./‘相對(duì)路徑掛載文件或目錄失敗的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
用docker部署RabbitMQ環(huán)境的詳細(xì)介紹
這篇文章主要介紹了用docker部署RabbitMQ環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07
docker-compose部署etcd集群的實(shí)現(xiàn)步驟
本文主要介紹了docker-compose部署etcd集群的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Docker暴露2375端口導(dǎo)致服務(wù)器被攻擊問題及解決方法
這篇文章主要介紹了Docker暴露2375端口導(dǎo)致服務(wù)器被攻擊問題及解決方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04

