当前位置: 首页 > news >正文

怎么限制某些IP访问服务器?

您可以通过多种方式限制特定IP地址访问您的服务器,以下是几种常见的方法:

1. 使用防火墙限制IP访问

Linux系统 (iptables)

# 阻止单个IP
iptables -A INPUT -s 192.168.1.100 -j DROP# 阻止IP段
iptables -A INPUT -s 192.168.1.0/24 -j DROP# 允许特定IP访问SSH(22端口)
iptables -A INPUT -s 203.0.113.5 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP# 保存规则(根据系统不同)
iptables-save > /etc/sysconfig/iptables  # CentOS/RHEL
iptables-save > /etc/iptables/rules.v4   # Debian/Ubuntu

Linux系统 (ufw - Ubuntu)

sudo ufw deny from 192.168.1.100
sudo ufw allow from 203.0.113.5 to any port 22

Linux系统 (firewalld - CentOS/RHEL)

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
firewall-cmd --reload

Windows系统

  1. 打开"高级安全Windows防火墙"

  2. 创建入站规则

  3. 选择"阻止连接"并指定要阻止的IP地址

2. 使用TCP Wrappers (Linux)

编辑/etc/hosts.deny文件:

sshd: 192.168.1.100
sshd: 192.168.1.0/24

编辑/etc/hosts.allow文件允许特定IP:

sshd: 203.0.113.5

3. 在服务配置中限制IP

SSH服务

编辑/etc/ssh/sshd_config

AllowUsers *@203.0.113.5
DenyUsers *@192.168.1.100

然后重启SSH服务:systemctl restart sshd

Nginx Web服务器

nginx

location / {deny 192.168.1.100;deny 192.168.1.0/24;allow 203.0.113.5;allow all;
}

Apache Web服务器

apache

<Directory "/var/www/html">Require all grantedRequire not ip 192.168.1.100Require not ip 192.168.1.0/24
</Directory>

4. 使用云服务商的安全组/ACL

AWS安全组

  1. 在EC2控制台选择安全组

  2. 编辑入站规则,添加拒绝规则

Azure网络安全组

  1. 在网络安全组中添加入站安全规则

  2. 设置源IP和操作(拒绝)

阿里云安全组

  1. 在ECS控制台配置安全组规则

  2. 添加拒绝特定IP访问的规则

5. 使用Fail2Ban自动阻止恶意IP

# 安装Fail2Ban
sudo apt install fail2ban  # Debian/Ubuntu
sudo yum install fail2ban  # CentOS/RHEL# 配置(编辑/etc/fail2ban/jail.local)
[DEFAULT]
bantime = 1h
maxretry = 3[sshd]
enabled = true

注意事项

  1. 修改防火墙规则前,确保不会把自己锁在服务器外

  2. 对于生产环境,建议先在测试环境验证规则

  3. 使用iptables -L -nufw status检查当前规则

  4. 定期审查IP限制列表,移除不再需要的限制

  5. 考虑使用IP黑名单和白名单结合的方式管理访问

以上方法可以根据您的具体需求和服务器环境选择使用或组合使用。

http://www.lryc.cn/news/579913.html

相关文章:

  • 基于AR和SLAM技术的商场智能导视系统技术原理详解
  • 基于dropbear实现嵌入式系统ssh服务端与客户端完整交互
  • 适用于 vue2、vue3 的自定义指定:v-int(正整数)
  • HDMI延长器 vs 分配器 vs KVM切换器 vs 矩阵:技术区别与应用场景
  • Django+DRF 实战:从异常捕获到自定义错误信息
  • VS中将cuda项目编译为DLL并调用
  • Excel 如何处理更复杂的嵌套逻辑判断?
  • Java并发性能优化|读写锁与互斥锁解析
  • openEuler 24.03 全流程实战:用 Ansible 5 分钟部署分布式 MinIO 高可用集群
  • 分布式集合通信--学习笔记
  • Data的时区格式BUG
  • 4 位量化 + FP8 混合精度:ERNIE-4.5-0.3B-Paddle本地部署,重新定义端侧推理效率
  • 【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之高斯椭球的颜色表达
  • 替代MT6701,3D 霍尔磁性角度传感器芯片
  • Python 机器学习核心入门与实战进阶 Day 2 - KNN(K-近邻算法)分类实战与调参
  • PyTorch实战(14)——条件生成对抗网络(conditional GAN,cGAN)
  • vue-39(为复杂 Vue 组件编写单元测试)
  • MySQL分布式ID冲突详解:场景、原因与解决方案
  • FFmpeg、WebAssembly 和 WebGL 在 Web 端的结合应用
  • GO 语言学习 之 结构体
  • 【深度学习新浪潮】如何使用大模型等技术基于序列预测蛋白质的结构,功能和靶点?
  • 韩顺平之第九章综合练习-----------房屋出租管理系统
  • hive中2种常用的join方式
  • 基于 PyTorch 的猫狗图像分类实战
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(四十) -> 灵活定制编译选项
  • 判断文件是否有硬链接
  • 类图+案例+代码详解:软件设计模式----单例模式
  • 【基础算法】贪心 (二) :推公式
  • PHP:从入门到进阶的全面指南
  • SRE - - PV、UV、VV、IP详解及区别