CentOS7防火墙配置,仅允许特定IP访问的详细指南

admin
CentOS7防火墙配置仅允许特定IP访问,需使用firewalld管理,首先启用防火墙:systemctl start firewalld && systemctl enable firewalld,添加允许的IP规则,如仅允许192.168.1.100访问SSH端口22:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept',设置默认拒绝策略:firewall-cmd --set-default-zone=drop,重载防火墙使规则生效:firewall-cmd --reload,最后检查规则:firewall-cmd --list-rich-rules,确保配置后测试访问限制,保障安全。

在服务器管理中,限制特定IP访问是保障安全的重要手段,CentOS7默认使用firewalld防火墙管理工具,本文将详细介绍如何通过firewalld配置规则,仅允许单个IP地址访问服务器的特定端口(如SSH、HTTP等),同时拒绝其他所有IP的访问。

环境准备

  1. 系统要求:CentOS7及以上版本(已安装firewalld服务)。
  2. 权限要求:需使用root用户或具有sudo权限的用户执行命令。
  3. 目标IP:明确需要允许访问的IP地址(168.1.100)。

检查防火墙状态

首先确认firewalld服务是否正在运行,若未运行,需先启动并设置为开机自启:

# 检查firewalld服务状态
systemctl status firewalld
# 若未启动,执行以下命令启动并开机自启
systemctl start firewalld
systemctl enable firewalld

配置仅允许特定IP访问

以允许IP 168.1.100 访问SSH(默认端口22)为例,以下是具体步骤:

CentOS7防火墙配置,仅允许特定IP访问的详细指南

添加富规则(Rich Rule)

firewalld的“富规则”支持复杂的条件匹配,可通过--add-rich-rule参数添加允许特定IP访问的规则,语法如下:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="允许的IP地址" port protocol="TCP" port="端口号" accept'

示例(允许168.1.100访问SSH端口22)

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'

参数说明

  • --permanent:规则永久生效(重启后不丢失),若临时测试可去掉此参数(重启后失效)。
  • family="ipv4":指定IPv4协议(若需IPv6,改为family="ipv6")。
  • source address="IP地址":允许访问的源IP。
  • port protocol="tcp" port="端口号":允许访问的端口及协议(如tcpudp)。
  • accept:允许通过(若需拒绝,改为dropreject)。

重新加载防火墙

添加规则后,需重新加载防火墙使规则生效:

firewall-cmd --reload

验证规则是否生效

(1)查看富规则列表

firewall-cmd --list-rich-rules

若成功添加,会显示类似以下内容:

rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept

(2)检查端口开放状态

firewall-cmd --list-ports

若规则生效,可能不会直接显示端口(因富规则优先级高于普通端口规则),可通过测试连接验证(见下文)。

(3)测试连接

  • 从允许的IP(168.1.100)访问

    ssh root@服务器IP

    应能正常连接。

  • 从其他IP访问

    ssh root@服务器IP

    应被拒绝(提示“Connection refused”或“Permission denied”)。

常见场景扩展

允许访问多个端口

若需允许同一IP访问多个端口(如SSH22和HTTP80),可添加多条规则或合并为一个规则:

# 合并规则(允许IP访问22和80端口)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80" accept'

或使用service参数(适用于标准服务,如sshhttp):

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="http" accept'

允许访问所有端口(谨慎使用)

若需允许特定IP访问所有端口,可使用accept且不限制端口:

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

删除已添加的规则

若需撤销允许的IP规则,可通过--remove-rich-rule删除:

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
firewall-cmd --reload

注意事项

  1. 默认拒绝策略firewalld默认采用“拒绝所有,允许匹配”的策略,因此只要添加了允许特定IP的规则,未匹配的IP会被自动拒绝。
  2. Zone优先级:规则默认添加到public区域(默认区域),若需指定其他区域(如internal),可通过--zone=区域名参数指定,
    firewall-cmd --zone=internal --permanent --add-rich-rule='rule family="ipv4
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码