Linux下 IP访问控制策略配置

admin 2022年9月21日14:23:52评论12 views字数 4026阅读13分25秒阅读模式



概述

笔者在日常安全运营过程中经常需要与各系统管理员就漏洞、告警相关问题进行沟通和协作。当识别服务器上存在风险时,也是通过管理员协助去解决。在此过程中遇到较多由于业务需要和实际使用需要,无法直接对风险进行处理情况。今天给大家介绍,也是平常使用最多也是最便捷的缓解措施,通过主机层防火墙对IP进行访问控制。


场景

应用服务器上分别运行A、B两个服务,分别使用80和8080端口,如下图:

Linux下 IP访问控制策略配置


现在安全团队检测到B服务存在安全漏洞,存在一定风险

Linux下 IP访问控制策略配置


与管理员沟通,服务A、B均开放互联网,服务A所有用户使用,服务B仅特定用户甲使用,目前业务运行中无法中断,但可实施临时缓解措施。

Linux下 IP访问控制策略配置

先通过主机层防火墙对服务B进行访问限制,只允许用户甲访问,乙、丙、丁不可访问,先缩小暴露面,待用户甲空闲时再对漏洞进行修复

Linux下 IP访问控制策略配置

以下分别以CentOS7和6为例

CentOS7

应用服务器IP为192.168.206.130,系统版本为CentOS 7.6.1810

Linux下 IP访问控制策略配置


服务A、B分别监听80和8080两个端口

Linux下 IP访问控制策略配置


用户甲IP为192.168.206.129

Linux下 IP访问控制策略配置


可正常访问服务A和B

Linux下 IP访问控制策略配置


用户乙 IP为192.168.206.1,正常访问服务A、B

Linux下 IP访问控制策略配置


现在服务B(使用8080端口)出现漏洞,临时缓解措施需要缩小暴露面,限制服务B访问权限,只允许用户甲(使用IP192.168.206.129)才能访问

# 初次启用防火墙,需要将对外开放端口加入开放清单,不然默认策略可能会导致其他端口也无法访问
# 将服务A,80端口加入防火墙
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
# 将服务B,8080端口加入防火墙
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
success
# 保存策略
[root@localhost ~]# firewall-cmd --reload
success

# 查看允许开放端口
[root@localhost ~]# firewall-cmd --permanent --zone=public --list-ports
8080/tcp 80/tcp

# 删除掉可供所有人访问8080端口规则
[root@localhost ~]# firewall-cmd --zone=public --remove-port=8080/tcp --permanent
success
# 对8080端口进行配置,只允许192.168.206.129访问
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.206.129" port protocol="tcp" port="8080" accept'
success
# 保存策略
[root@localhost ~]# firewall-cmd --reload
success
# 查看策略
[root@localhost ~]# firewall-cmd --list-rich-rules
rule family="ipv4" source address="192.168.206.129" port port="8080" protocol="tcp" accept

测试用户甲访问,可正常访问服务A、B

Linux下 IP访问控制策略配置


测试用户乙访问,只能访问服务A,无法访问服务B

Linux下 IP访问控制策略配置


CentOS6

应用服务器IP为192.168.206.131,系统版本为CentOS 6.5

Linux下 IP访问控制策略配置


# 初次启用防火墙,需要将对外开放端口加入开放清单,不然默认策略可能会导致其他端口也无法访问
# 将服务A 80端口加入防火墙,因为iptables由上而下执行,这里将策略插入第一行
[root@localhost ~]# iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

# 将服务B 8080端口加入防火墙,插入第二行
[root@localhost ~]# iptables -I INPUT 2 -p tcp --dport 8080 -j ACCEPT

# 查看已添加规则
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 #(刚添加,允许80访问)
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:8080 #(刚添加,允许8080访问)
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

# 将允许所有人访问8080端口的规则删掉
[root@localhost ~]# iptables -D INPUT 2

# 插入新规则,只允许用户甲访问8080端口
[root@localhost ~]# iptables -I INPUT 2 -p tcp -s 192.168.206.129 --dport 8080 -j ACCEPT

# 插入新规则,拒绝所有访问8080端口
# 因为iptables优先级为由上到下,用户甲访问会被第2条规则允许,其他刚会被这个规则拦截
[root@localhost ~]# iptables -I INPUT 3 -p tcp  --dport 8080 -j DROP

# 查看当前iptables规则列表
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
ACCEPT     tcp  --  192.168.206.129      0.0.0.0/0           tcp dpt:8080
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:8080
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

# 保存策略
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

客户甲可以访问服务A、B

Linux下 IP访问控制策略配置


客户乙只能访问服务A,无法访问服务B

Linux下 IP访问控制策略配置




参考

2篇:Linux防火墙-firewalld的rich规则配置jiecy的博客-CSDN博客firewalld富规则





原文始发于微信公众号(A9 Team):Linux下 IP访问控制策略配置

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月21日14:23:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux下 IP访问控制策略配置http://cn-sec.com/archives/1309834.html

发表评论

匿名网友 填写信息