完整教程:Linux 服务器安全优化:firewalld SSH 限制 白名单与 SCP 服务禁用流程

简介

在 Linux 服务器运维中,SSH 远程访问安全与文件传输管控是核心防护要点。这次从firewalld 防火墙配置与SCP 服务禁用两大关键操作展开,献出从环境准备到规则验证的全流程实战指南:先借助白名单模式精准限制仅指定 IP可访问 SSH,避免未授权 IP 渗透风险, SCP 禁用方法(卸载客户端、移除执行权限、修改 SSH 配置),满足不同场景下的文件传输管控需求。

一、前提准备:确认 firewalld 状态
首先确保 firewalld 已启动并正常运行

检查 firewalld 状态
systemctl status firewalld

启动:
systemctl start firewalld
systemctl enable firewalld


二、核心配置步骤(白名单模式)
1. 移除可能存在的全局 SSH 允许规则(避免冲突)
若之前配置过开放 SSH(如 --add-service=ssh),需先移除,防止白名单规则被覆盖:

移除全局SSH服务允许规则
firewall-cmd --permanent --remove-service=ssh


2. 添加白名单规则:允许指定 IP 访问 SSH
分别放行 1.1.2.4(远程可信 IP)和 1.1.2.5(本机 IP):


1. 允许远程可信IP 1.1.2.4 访问SSH(默认端口22)


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

2. 允许本机IP 1.1.2.5访问SSH(本机自身连接SSH时启用)


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


3. 添加拒绝规则:阻断所有其他 IP 访问 SSH (前面两个做了此步骤不做)
明确拒绝白名单外的所有 IP 访问 SSH,确保严格限制:

拒绝所有其他IPv4地址访问SSH服务

如果前面两步已经做了,这步行忽略,不然可能面临前面规则作废,无法连接

规则白名单做了,就默认会拒绝除白名单之外的ip
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="ssh" reject'


4. 重新加载规则,使配置生效
所有规则需通过 --reload 应用到运行时环境:


firewall-cmd --reload


三、验证规则是否生效
配置完成后,通过以下命令确认白名单规则已正确添加:


查看所有永久规则(重点检查 SSH 相关的 rich rules)
firewall-cmd --permanent --list-all
正确输出示例(关键部分):
plaintext
public (active)
target: default
interfaces: eth0 # 实际网卡可能不同
services: dhcpv6-client
rich rules:
rule family="ipv4" source address="1.1.2.4 service name="ssh" accept
rule family="ipv4" source address="1.1.2.5" service name="ssh" accept

额外验证(可选):
从 1.1.2.4 主机尝试 SSH 连接 1.1.2.5,应能正常连接;
从其他 IP 1.1.2.8尝试连接,应被拒绝提示 “连接被拒绝” 或超时。

四、关键补充说明
若 SSH 端口非默认(如 2222):
若你修改过 SSH 端口(如 /etc/ssh/sshd_config 中改为 Port 2222),需将上述规则中的 service name="ssh" 替换为 port port="2222" protocol="tcp",示例:

#针对非默认端口2222的规则
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.1.2.4" port port="2222" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.1.2.5" port port="2222" protocol="tcp" accept'

前面两个做了,该拒绝所有可不做
#firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="2222" protocol="tcp" reject'

加载
firewall-cmd --reload

五、禁用SCP

通过在Linux系统中,能够通过多种方法禁用SCP(Secure Copy Protocol)。以下是两种常用的方式:

方式1.

卸载openssh-clients

查看openssh档案:

rpm -qa | grep openssh-*
删除openssh-clients:

yum remove openssh-clients -y
重启sshd服务:

systemctl restart sshd.service
此途径会导致所有SSH客户端命令不可用,包括scp。

方式2.

移除scp执行权限

查找scp所在目录:

whereis scp
移除执行权限:

cd /usr/bin
chmod -x scp
此方法会在远程执行scp命令时提示权限不够。

方式3.

修改SSH配置文件

打开SSH配置文件:

vi /etc/ssh/sshd_config
注释掉Subsystem sftp行:

#Subsystem sftp /usr/libexec/openssh/sftp-server
重启sshd服务:

service sshd restart

posted @ 2025-09-17 10:20  yjbjingcha  阅读(17)  评论(0)    收藏  举报