linux - 阻止所有内部流量,除了来自单个端口上特定 IP 的传入流量
问题描述
我正在尝试使用 IPtables 来阻止除一台服务器之外的所有内部流量,这是我的规则,但是当我从另一个实例远程登录时,我仍然可以连接....
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-383efc983cd2 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-383efc983cd2 -j DOCKER
-A FORWARD -i br-383efc983cd2 ! -o br-383efc983cd2 -j ACCEPT
-A FORWARD -i br-383efc983cd2 -o br-383efc983cd2 -j ACCEPT
-A DOCKER -d 172.18.0.3/32 ! -i br-383efc983cd2 -o br-383efc983cd2 -p tcp -m tcp --dport 1080 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-383efc983cd2 ! -o br-383efc983cd2 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-383efc983cd2 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -s 10.0.1.253/32 -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT
-A DOCKER-USER -m state --state ESTABLISHED -j ACCEPT
-A DOCKER-USER -i eth1 -j REJECT --reject-with icmp-port-unreachable
-A DOCKER-USER -j RETURN
解决方案
在调试 iptables 时,我通常:
- 重置所有计数器 - 'iptables -Z'
- 建立联系
- 然后查看规则命中 - 'iptables -L -v -n |more'
这应该为您提供一些关于哪个规则正在传递连接的指示
推荐阅读
- html - 在动态div中打印迭代器的值
- mysql - n="+".join(n) TypeError: can only join an iterable id 我不知道为什么会出现这个错误
- excel - 使用 Powershell 在 Excel 文件上设置 AIP 文件标签
- list - Flutter:拖放 ListView 但显示类似 GridView
- amazon-dynamodb - 由 Terraform 在 LocalStack 中创建的 DynamoDB 表在 NoSQL Workbench 中不可见
- javascript - 从另一个列表中选择动态加载列表
- r - 对于同一个变量,cramersV 函数不是 1
- spring - 使用 OneToOne 和 MapsId 在 Kotlin 的 Spring Boot 中传递 Hibernate 分离实体以保持错误
- rust - 可选模式内的重复
- c - alloca() 如何在内存级别上工作?