首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CentOS防火墙-cmd脚本,只允许从源中列出的IPs访问

CentOS防火墙-cmd脚本,只允许从源中列出的IPs访问
EN

Server Fault用户
提问于 2022-01-08 23:59:53
回答 1查看 514关注 0票数 0

我使用这个脚本来设置防火墙。我希望只有一个IP可以访问ssh,但测试后并非如此。少了什么?

代码语言:javascript
复制
#!/bin/bash
#
# Reset to initial install of firewalld
#
rm -f /etc/firewalld/zones/*
firewall-cmd --complete-reload
firewall-cmd --runtime-to-permanent
firewall-cmd --reload
#
# Create / Setup custom zone
#
firewall-cmd --new-zone calzone --permanent
firewall-cmd --reload
firewall-cmd --zone=calzone --add-service={ssh,dhcpv6-client}
firewall-cmd --zone=calzone --add-source=10.0.0.177
firewall-cmd --change-interface enp1s0 --zone calzone --permanent
firewall-cmd --runtime-to-permanent
firewall-cmd --reload

当我运行:防火墙-cmd- get -active-zone时,我得到以下信息

代码语言:javascript
复制
calzone
  interfaces: enp1s0
  sources: 10.0.0.177

我的理解是,设置接口将首先引导从该接口到该区域的所有通信量,而且由于源中有条目,通信量将仅限于这些IP。提前鸣谢。

针对纳斯尔的评论,这个命令防火墙-cmd-列表-所有区域- sed -n '/calzone/,/rich/p‘生成:

代码语言:javascript
复制
calzone (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp1s0
  sources: 10.0.0.177
  services: dhcpv6-client ssh
  ports:
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

我还重新启动了deamon firewalld,可以从10.0.0.188开始使用ssh --我只期望从10.0.0.177访问

EN

回答 1

Server Fault用户

发布于 2022-01-09 04:32:20

在阅读了许多小时的RedHat firewalld文档并坚持不懈地编写了一个脚本之后,我成功地得到了我想要的行为。然而,我没有100%的信心,因为我仍然不清楚为什么设置接口不工作。然而,这个脚本似乎有效。我使用了现有的工作区域,当我向它添加一个源时,它似乎变得很活跃。

代码语言:javascript
复制
#!/bin/bash
#
# Reset to initial install of firewalld
#
rm -f /etc/firewalld/zones/*
firewall-cmd --complete-reload
firewall-cmd --runtime-to-permanent
firewall-cmd --reload
systemctl restart firewalld
systemctl status firewalld
#
# Remove the services from all zones
#  
# iterate through the default zones
for zone in drop block public external dmz work home internal trusted
do
# iterate through default services
    for srv in $(firewall-cmd --list-services --zone=$zone)
    do
      echo "Removing service $srv from $zone"
      firewall-cmd --zone=$zone --remove-service=$srv
      firewall-cmd --zone=$zone --remove-service=$srv --permanent
    done
done
#
# Drop all public traffic?
# Allow work zone to see ssh from host
#
firewall-cmd --zone=public --set-target=DROP --permanent
firewall-cmd --zone=work --add-source=10.0.0.177 --permanent
firewall-cmd --zone=work --add-service=ssh --permanent
firewall-cmd --runtime-to-permanent
firewall-cmd --reload
systemctl restart firewalld
systemctl status firewalld
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1089433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档