凌峰创科服务平台

Linux服务器禁止访问,原因何在?

在Linux服务器管理中,禁止访问特定服务或IP地址是常见的安全管理操作,可通过多种技术手段实现,涵盖防火墙配置、访问控制列表(ACL)、服务端口限制及用户权限管理等多个层面,以下是具体操作方法和注意事项。

Linux服务器禁止访问,原因何在?-图1
(图片来源网络,侵删)

使用iptables防火墙禁止访问

iptables是Linux内核的经典防火墙工具,通过定义规则链控制数据包过滤,禁止访问的核心思路是添加DROP或REJECT规则,前者直接丢弃数据包(无响应),后者拒绝并返回错误信息。

基础操作示例

  1. 禁止特定IP访问所有服务
    iptables -A INPUT -s 192.168.1.100 -j DROP  # 禁止IP 192.168.1.100访问所有服务
  2. 禁止IP访问特定端口(如SSH的22端口)
    iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j REJECT
  3. 禁止所有人访问某个端口(如Web服务的80端口)
    iptables -A INPUT -p tcp --dport 80 -j DROP
  4. 保存规则(CentOS系统)
    service iptables save

    Ubuntu/Debian系统需安装iptables-persistent并执行netfilter-persistent save

高级技巧

Linux服务器禁止访问,原因何在?-图2
(图片来源网络,侵删)
  • 使用iptables -L -n -v查看当前规则,确认规则是否生效。
  • 通过-I参数插入规则到链首,优先级更高;使用-D删除规则(需匹配原命令)。
  • 结合ipset批量管理IP地址(如禁止整个IP段):
    ipset create badip hash:ip
    ipset add badip 192.168.1.0/24
    iptables -A INPUT -m set --match-set badip src -j DROP

使用firewalld(CentOS 7+/RHEL 7+)

firewalld是新一代动态防火墙管理工具,支持区域(Zone)和富规则(Rich Rule)配置。

操作示例

  1. 禁止IP访问
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
    firewall-cmd --reload  # 重新加载配置
  2. 禁止端口访问
    firewall-cmd --permanent --remove-service=http  # 禁止HTTP服务
    firewall-cmd --permanent --add-port=80/tcp  # 仅允许特定IP访问80端口需结合rich-rule

使用TCP Wrappers控制访问

TCP Wrappers通过/etc/hosts.allow/etc/hosts.deny文件实现基于主机的访问控制,适用于如SSH、FTP等支持libwrap的服务。

配置示例

  1. 编辑/etc/hosts.deny,禁止所有访问:
    ALL: ALL
  2. 编辑/etc/hosts.allow,允许特定IP访问SSH:
    sshd: 192.168.1.0/24  # 允许192.168.1.0/24网段访问SSH

    注意hosts.allow优先级高于hosts.deny,规则从上到下匹配。

禁止特定用户访问服务

以SSH为例,可通过修改/etc/ssh/sshd_config限制用户登录:

DenyUsers user1 user2  # 禁止user1和user2登录
AllowUsers admin@192.168.1.0/24  # 仅允许admin从指定网段登录

修改后需重启SSH服务:systemctl restart sshd

服务端口禁用

若需彻底禁止某服务,可停用其端口监听,禁用Apache服务:

systemctl stop httpd
systemctl disable httpd  # 禁止开机自启

常见禁止访问场景对比

场景 工具 命令/配置示例
禁止特定IP访问所有服务 iptables iptables -A INPUT -s 192.168.1.100 -j DROP
禁止IP访问SSH端口 firewalld firewall-cmd --add-rich-rule="rule reject source address=192.168.1.100"
禁止用户登录SSH SSH配置 DenyUsers user1
禁止所有人访问Web服务 iptables iptables -A INPUT -p tcp --dport 80 -j DROP

注意事项

  1. 规则顺序:防火墙规则按顺序匹配,建议精确规则放在前面。
  2. 测试验证:禁止规则前,确保可通过控制台或VPN访问服务器,避免被锁死。
  3. 日志记录:通过iptables -A INPUT -j LOG记录被拒绝的连接,便于分析。
  4. 服务兼容性:TCP Wrappers仅对支持的服务有效,需查看服务手册确认。

相关问答FAQs

Q1: 如何撤销已设置的禁止访问规则?
A1:

  • iptables:使用-D参数删除规则,例如iptables -D INPUT -s 192.168.1.100 -j DROP;或清空所有规则iptables -F(谨慎操作)。
  • firewalld:执行firewall-cmd --permanent --remove-rich-rule="..."后重载。
  • TCP Wrappers:直接编辑hosts.denyhosts.allow文件,删除对应行后重启服务。

Q2: 禁止访问后如何排查问题?
A2:

  1. 检查防火墙规则iptables -L -nfirewall-cmd --list-all确认规则是否生效。
  2. 查看服务状态systemctl status httpd确认服务是否运行。
  3. 分析日志/var/log/secure(SSH)、/var/log/messagesjournalctl -xe查看拒绝记录。
  4. 网络连通性测试:在客户端使用telnet IP 端口nc -zv IP 端口验证是否被拦截。
分享:
扫描分享到社交APP
上一篇
下一篇