iptables限制宿主机跟Docker IP和端口访问(安全整改)_docker容器访问主机端口 iptables

一、常用命令

查看版本:
[root@iptables-server ~]# iptables -V 
iptables v1.4.21
配置文件:
 /etc/sysconfig/iptables-config 
 /etc/sysconfig/iptables   #记录规则文件	

#查看防火墙规则,显示规则行号
[root@iptables-server ~]# iptables -nL --line-number  
##指定行号删除,需要注意删除第一条规则后原来的第二条规则行号就会变成1,多次执行切勿删错
[root@iptables-server ~]# iptables -D INPUT 1   
# 规则保存
[root@iptables-server ~]# iptables-save
# service iptables save
# iptables-save > /etc/sysconfig/iptables
# iptables-restore < /etc/sysconfig/iptables
--参数解释
-L:列出一个链或所有链中的规则信息
-n:以数字形式显示地址、端口等信息
-v:以更详细的方式显示规则信息
--line-numbers:查看规则时,显示规则的序号(方便之处,通过需要删除规则-D INPUT 1
-F:清空所有的规则(-X是清理自定义的链,用的少;-Z清零规则序号)
-D:删除链内指定序号(或内容)的一条规则
-P:为指定的链设置默认规则
-A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则
-t: 指定表名,默认filter表
.... 更多参数可通过--help查看

二、宿主机网络限制

背景:漏洞扫描发现任意用户对目标服务通过访问URL获取内容或者单纯的想要限制/允许某个Ip或者某个网段进行访问

1、任意用户对目标服务通过访问URL获取内容
目标服务存在未授权访问漏洞,通过访问URL:http://192.168.180.140:8081/swagger-resources,获取内容如下
[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"}]

整改:对端口做限制,只允许平台服务器的网段对该端口进行访问,其余都拒绝
#注意拒绝其他所有IP地址进行访问,此规则因该在其他规则之前执行,以确保其生效

#192.168.180.140
[root@xiaoliu ~]# iptables -I INPUT -p tcp --dport 8081 -j DROP   #这种规则需要先执行
[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、允许某个Ip或者某个网段进行访问
[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 网络IP和端口访问

背景:整改安全加固时,使用iptabels限制docker端口不生效,限制非docker容器端口可生效。经查阅大量资料,发现Docker容器创建时会自动创建iptables策略,Docker使用的i规则链是DOCKER-USER,所以需使用iptables对DOCKER-USER链做限制。

1、同网段只允许负载均衡机器跟控制主机机器访问算法服务器
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
##此刻只执行上面命令发现同网段其余机器还是可以访问该算法的调用端口,此时需要对容器做限制
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主机的连接

默认情况下,允许所有外部源IP连接到Docker主机。要仅允许特定的IP或网络访问容器,请在DOCKER-USER过滤器链的顶部插入一个否定的规则。

#限制除192.168.1.1地址外的其他地址访问
$ iptables -I DOCKER-USER -i eno1 ! -s 192.168.1.1 -j DROP

#注意:eno1网卡需要按照你的实际情况填写

#限制除192.168.1.0/24网段外的其他地址访问
$ iptables -I DOCKER-USER -i eno1 ! -s 192.168.1.0/24 -j DROP

最后,您可以指定要接受的IP地址范围–src-range (请记住-m iprange在使用–src-range或时也要添加–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

您可以结合使用-s或–src-range与-d或–dst-range一起控制连续源地址和连续目标地址。例如,如果Docker守护程序同时监听 192.168.1.99和10.1.2.3,则可以制定特定于10.1.2.3并保持 192.168.1.99打开的规则。

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)规则
[root@test ~]# iptables -D DOCKER-USER 1

# 保存DOCKER-USER策略,默认临时生效
[root@test ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]

telnet访问测试:
[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

最后

从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。

因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。

干货主要有:

①1000+CTF历届题库(主流和经典的应该都有了)

②CTF技术文档(最全中文版)

③项目源码(四五十个有趣且经典的练手项目及源码)

④ CTF大赛、web安全、渗透测试方面的视频(适合小白学习)

⑤ 网络安全学习路线图(告别不入流的学习)

⑥ CTF/渗透测试工具镜像文件大全

⑦ 2023密码学/隐身术/PWN技术手册大全

扫码领取

本文转自 https://blog.csdn.net/m0_66406345/article/details/137371812?spm=1001.2100.3001.7377&utm_medium=distribute.pc_feed_blog_category.none-task-blog-classify_tag-8-137371812-null-null.nonecase&depth_1-utm_source=distribute.pc_feed_blog_category.none-task-blog-classify_tag-8-137371812-null-null.nonecase,如有侵权,请联系删除。

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值