前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >只允许特定的IP访问特定的端口

只允许特定的IP访问特定的端口

作者头像
chuchur
发布2024-11-21 18:33:06
发布2024-11-21 18:33:06
22100
代码可运行
举报
文章被收录于专栏:禅境花园禅境花园
运行总次数:0
代码可运行

业务需求 , 只允许特定的IP访问特定的端口 .

一步到位

1.先要移除已经开放的端口,如443

代码语言:javascript
代码运行次数:0
复制
firewall-cmd --zone=public --remove-port=443/tcp --permanent

2.允许指定的IP或者IP段访问此端口

代码语言:javascript
代码运行次数:0
复制
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="173.245.48.0/20" port protocol="tcp" port="443" accept'

3.重启

代码语言:javascript
代码运行次数:0
复制
firewall-cmd --reload

–permanent永久生效,没有此参数重启后失效

只允许特定的IP 访问Server 特定的端口8080.

查看/开启/关闭防火墙

代码语言:javascript
代码运行次数:0
复制
// 查看防火墙状态
systemctl status firewalld
// 开启防火墙
systemctl start firewalld
// 关闭防火墙
systemctl stop firewalld
// 开机启动
systemctl enable firewalld
// 开机关闭
systemctl disable firewalld

查看/开放/关闭端口

代码语言:javascript
代码运行次数:0
复制
// 查询打开的端口
firewall-cmd --zone=public --list-ports

//开放指定端口
firewall-cmd --zone=public --add-port=8888/tcp --permanent 
//重新载入一下防火墙设置,使设置生效
firewall-cmd --reload

//关闭端口8888
firewall-cmd --zone=public --remove-port=8888/tcp --permanent
//重新载入一下防火墙设置,使设置生效
firewall-cmd --reload

给指定的IP开放/关闭指定的端口

代码语言:javascript
代码运行次数:0
复制
// 允许ip127.0.0.1访问8888端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="8888" accept"
//重新载入一下防火墙设置,使设置生效
firewall-cmd --reload
//查看已设置规则
firewall-cmd --zone=public --list-rich-rules

//限制IP为127.0.0.1的地址禁止访问8888端口即禁止访问机器
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="8888" reject"

//删除已设置规则
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address=" 127.0.0.1" port protocol="tcp" port="8888" accept"

规则的持久化位置

以上配置都会持久化的存储在一个文件里面,使用如下命令查看

代码语言:javascript
代码运行次数:0
复制
vi /etc/firewalld/zones/public.xml

//查看防火墙清单,很详细
firewall-cmd --list-all

//通过如下命令查看8888是否生效
firewall-cmd --zone=public --query-port=8888/tcp

//批量开放或限制端口
//批量开放端口,如从7000到7005这之间的端口我们全部要打开
firewall-cmd --zone=public --add-port=7000-7005/tcp --permanent
firewall-cmd --reload

//批量限制端口为
firewall-cmd --zone=public --remove-port=7000-7005/tcp --permanent
firewall-cmd --reload

使用 firewall-cmd 配置

  1. 允许特定 IPv4 地址访问端口:
代码语言:javascript
代码运行次数:0
复制
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.1" port protocol="tcp" port="8080" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.2" port protocol="tcp" port="8080" accept'

2.拒绝其他 IPv4 地址访问该端口:

代码语言:javascript
代码运行次数:0
复制
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" port protocol="tcp" port="8080" drop'

3.允许特定 IPv6 地址访问端口:

代码语言:javascript
代码运行次数:0
复制
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="2001:db8::1" port protocol="tcp" port="8080" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="2001:db8::2" port protocol="tcp" port="8080" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" source address="2001:db8::3" port protocol="tcp" port="8080" accept'

4.拒绝其他 IPv6 地址访问该端口:

代码语言:javascript
代码运行次数:0
复制
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv6" port protocol="tcp" port="8080" drop'

5.重新加载 firewalld 配置以使更改生效:

代码语言:javascript
代码运行次数:0
复制
sudo firewall-cmd --reload

验证规则

代码语言:javascript
代码运行次数:0
复制
sudo firewall-cmd --list-all --zone=public

使用 iptables 配置

使用 iptables 配置 IPv4 地址

  1. 允许特定IPv4地址访问端口:
代码语言:javascript
代码运行次数:0
复制
sudo iptables -A INPUT -p tcp -s 192.168.1.1 --dport 8080 -j ACCEPT
sudo iptables -A INPUT -p tcp -s 192.168.1.2 --dport 8080 -j ACCEPT
  1. 拒绝其他IPv4地址访问该端口:
代码语言:javascript
代码运行次数:0
复制
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP

使用 ip6tables 配置 IPv6 地址

  1. 允许特定IPv6地址访问端口:
代码语言:javascript
代码运行次数:0
复制
sudo ip6tables -A INPUT -p tcp -s 2001:db8::1 --dport 8080 -j ACCEPT
sudo ip6tables -A INPUT -p tcp -s 2001:db8::2 --dport 8080 -j ACCEPT
  1. 拒绝其他IPv6地址访问该端口:
代码语言:javascript
代码运行次数:0
复制
sudo ip6tables -A INPUT -p tcp --dport 8080 -j DROP

保存配置

保存iptablesip6tables配置,以确保重启后规则仍然存在:

  • Debian/Ubuntu:
代码语言:javascript
代码运行次数:0
复制
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
  • CentOS/RHEL:
代码语言:javascript
代码运行次数:0
复制
sudo service iptables save
sudo service ip6tables save
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一步到位
  • 查看/开启/关闭防火墙
  • 查看/开放/关闭端口
  • 给指定的IP开放/关闭指定的端口
  • 规则的持久化位置
  • 使用 firewall-cmd 配置
  • 使用 iptables 配置
    • 使用 iptables 配置 IPv4 地址
    • 使用 ip6tables 配置 IPv6 地址
    • 保存配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档