如何设置CentOS防火墙以实现SFTP传输的安全与高效?
- 内容介绍
- 文章标签
- 相关推荐
您可能需要通过SFTP进行安全文件传输,但常常会遇到防火墙配置问题导致连接失败或速度缓慢。" src="/img02/2738222536,2719305305&fm=253&app=138&f=jpg"/>
1. 准备工作:安装和启动firewalld
确保您的CentOS程序已安装firewalld服务。如果未安装,请执行以下命令:
sudo yum install firewalld
安装完成后启动并设置为开机自启动:
sudo systemctl start firewalld
sudo systemctl enable firewalld
2. 配置firewalld允许SFTP流量
SFTP通常使用SSH协议。所以需要确保防火墙允许通过端口22的TCP流量。说到执行以下命令,
sudo firewall-cmd --permanent --add-service=sftp
sudo firewall-cmd --reload
注意事项这方面。检查规则是否生效
验证规则是否成功添加:
sudo firewall-cmd --list-all
services: ssh sftp
从ports来看,22/tcp
说到常见问题,防火墙规则无效?
即使服务运行了防火墙规则可能仍然不生效。老实说,检查iptables状态:
iptables -L
3. 配置SELinux策略
sudo setsebool -P sftp_home_dir on
sudo setsebool -P ssh_sysadm_login on
# 检查是否生效:
getsebool -a | grep sftp_home_dir
sftp_home_dir --> on
\* 警告 *\
4. 配置SSH服务
* 重启SSH服务以使配置生效 *:
sudo systemctl restart sshd
# 检查状态:
systemctl status sshd | grep Active
从Active来看。active
\*\* 快速测试 \*\*
-
至于创建测试账号,
$ sudo useradd testuser$ passwd testuser New password: Retype new password: passwd的观点是,password updated successfully $ sudo chmod 750 /home/testuser # 修正权限!$ sudo chown root:root /home/testuser # 安全措施!怎么说呢,$ sudo chmod +t /home/testuser # 强制sticky bit!$ sudo restorecon -Rv /home/testuser # SELinux恢复上下文!restoring SELinux security context of /home/testuser/... OK!restoring SELinux security context of /home/testuser/.bash_logout... restoring SELinux security context of ... OK! -
sftp testuser@your_server_ip Password: Connected to your_server_ip. sftp> ls -l -rw------- 1 testuser users 0 Sep 17 10:48 .bash_history* drwx------ 7 testuser users 4096 Sep 17 10:48 .cache/ -rw-r--r-- 1 testuser users 75 Sep 17 10:48 .profile* drwx------ 8 testuser users 4096 Sep 17 10:48 .ssh/
\*\* 错误排查 \*\*
| 序号 | 错误表现 | 方法 |
|---|
-
目录层级权限必须正确设置:
- /chrootdir = root:sftponly。mode 'r-xr-xr-x'
- /chrootdir/home = root:sftponly,mode 'r-xr-xr-x'
- /chrootdir/home/user = user:sftponly,mode 'rw-r----- '
cat>/etc/sysctl.d/99-security.conf <'EOF' net.ipv4.tcpsyncookies = On net.ipv4.icmpechoignorebroadcasts = On kernel.sysrq = Off EOF sysctl --system # Apply immediately!EOF,auditctl -A -a exit,always -F arch=b64 \ -F euid!=unconfinedu \ -F auid!=unconfinedt \ -F exe=/usr/libexec/sftpd \ -F success=no \ -k SFTPAUDITFAIL
sed '/^\/{n;s/#//}' \ -i.bak /etc/ssh/sshdconfig sed '/^\/{n;s/#//}' \ -i.bak /etc/ssh/sshdconfig
echo 'SessionTimeoutIdleSec=$)'>/etc/systemd/logind.conf.d/local.conf echo 'SessionLockingMode=enforce'>/etc/pam.d/common-session.d/enable-locking.conf auth required pamtally.so deny=userlock unlocktime=$) resettime=$)
auth pamlistfile.so item=user sense=deny file=/etc/security/passwd-blacklist dirsep=/ auth sufficient pamunix.so nullok tryfirstpass usefirstpass auth required pamdeny.so account required pampermit.so account pamlistfile.so item=user sense=deny file=/etc/security/user-blacklist dirsep=/ account sufficient pamunix.so session required pamlimits.so session optional pammotd.so motd=/run/motd.dynamic noupdate session optional pammotd.so motd=/run/motd.nologin noupdate session optional pamlastlog.so noupdate showfailed session optional pammail.so quiet session required pamenv.so envfile=/etc/default/login envfileprefix=- DEFMAXSIZETMPFS=$) DEFSIZELOGINDEF=$) DEFTIMEOUTSYSTEMD=$)
EOF;chattr +aiCjsuSeT ~+/.bashrc ~+/.bashprofile ~/.ssh/config ~/.ssh/idrsa;find ~/ \,\!\,\!\ ) | xargs rm {} \;find ~/ \ | xargs du {} \;>~/tmp/disk-report.txt && sort {}.txt | tail && cat {}.txt && rm {}.txt echo '{USERNAME} ALL= NOPASSWD:/usr/bin/scp,:/usr/bin/sftp,:/usr/bin/sudoedit。/usr/bin/vim,:/usr/libexec/sftpd,:/var/log/audit/*':$>>~+/tmp/allowed-commands.txt mv ~+/tmp/allowed-commands.txt ~+/tmp/allowed-commands.txt.bak $;do`done)&
关键提示: ⚠️ 若出现"Permission denied"错误,请仔细检查SELinux策略和目录权限!
您可能需要通过SFTP进行安全文件传输,但常常会遇到防火墙配置问题导致连接失败或速度缓慢。" src="/img02/2738222536,2719305305&fm=253&app=138&f=jpg"/>
1. 准备工作:安装和启动firewalld
确保您的CentOS程序已安装firewalld服务。如果未安装,请执行以下命令:
sudo yum install firewalld
安装完成后启动并设置为开机自启动:
sudo systemctl start firewalld
sudo systemctl enable firewalld
2. 配置firewalld允许SFTP流量
SFTP通常使用SSH协议。所以需要确保防火墙允许通过端口22的TCP流量。说到执行以下命令,
sudo firewall-cmd --permanent --add-service=sftp
sudo firewall-cmd --reload
注意事项这方面。检查规则是否生效
验证规则是否成功添加:
sudo firewall-cmd --list-all
services: ssh sftp
从ports来看,22/tcp
说到常见问题,防火墙规则无效?
即使服务运行了防火墙规则可能仍然不生效。老实说,检查iptables状态:
iptables -L
3. 配置SELinux策略
sudo setsebool -P sftp_home_dir on
sudo setsebool -P ssh_sysadm_login on
# 检查是否生效:
getsebool -a | grep sftp_home_dir
sftp_home_dir --> on
\* 警告 *\
4. 配置SSH服务
* 重启SSH服务以使配置生效 *:
sudo systemctl restart sshd
# 检查状态:
systemctl status sshd | grep Active
从Active来看。active
\*\* 快速测试 \*\*
-
至于创建测试账号,
$ sudo useradd testuser$ passwd testuser New password: Retype new password: passwd的观点是,password updated successfully $ sudo chmod 750 /home/testuser # 修正权限!$ sudo chown root:root /home/testuser # 安全措施!怎么说呢,$ sudo chmod +t /home/testuser # 强制sticky bit!$ sudo restorecon -Rv /home/testuser # SELinux恢复上下文!restoring SELinux security context of /home/testuser/... OK!restoring SELinux security context of /home/testuser/.bash_logout... restoring SELinux security context of ... OK! -
sftp testuser@your_server_ip Password: Connected to your_server_ip. sftp> ls -l -rw------- 1 testuser users 0 Sep 17 10:48 .bash_history* drwx------ 7 testuser users 4096 Sep 17 10:48 .cache/ -rw-r--r-- 1 testuser users 75 Sep 17 10:48 .profile* drwx------ 8 testuser users 4096 Sep 17 10:48 .ssh/
\*\* 错误排查 \*\*
| 序号 | 错误表现 | 方法 |
|---|
-
目录层级权限必须正确设置:
- /chrootdir = root:sftponly。mode 'r-xr-xr-x'
- /chrootdir/home = root:sftponly,mode 'r-xr-xr-x'
- /chrootdir/home/user = user:sftponly,mode 'rw-r----- '
cat>/etc/sysctl.d/99-security.conf <'EOF' net.ipv4.tcpsyncookies = On net.ipv4.icmpechoignorebroadcasts = On kernel.sysrq = Off EOF sysctl --system # Apply immediately!EOF,auditctl -A -a exit,always -F arch=b64 \ -F euid!=unconfinedu \ -F auid!=unconfinedt \ -F exe=/usr/libexec/sftpd \ -F success=no \ -k SFTPAUDITFAIL
sed '/^\/{n;s/#//}' \ -i.bak /etc/ssh/sshdconfig sed '/^\/{n;s/#//}' \ -i.bak /etc/ssh/sshdconfig
echo 'SessionTimeoutIdleSec=$)'>/etc/systemd/logind.conf.d/local.conf echo 'SessionLockingMode=enforce'>/etc/pam.d/common-session.d/enable-locking.conf auth required pamtally.so deny=userlock unlocktime=$) resettime=$)
auth pamlistfile.so item=user sense=deny file=/etc/security/passwd-blacklist dirsep=/ auth sufficient pamunix.so nullok tryfirstpass usefirstpass auth required pamdeny.so account required pampermit.so account pamlistfile.so item=user sense=deny file=/etc/security/user-blacklist dirsep=/ account sufficient pamunix.so session required pamlimits.so session optional pammotd.so motd=/run/motd.dynamic noupdate session optional pammotd.so motd=/run/motd.nologin noupdate session optional pamlastlog.so noupdate showfailed session optional pammail.so quiet session required pamenv.so envfile=/etc/default/login envfileprefix=- DEFMAXSIZETMPFS=$) DEFSIZELOGINDEF=$) DEFTIMEOUTSYSTEMD=$)
EOF;chattr +aiCjsuSeT ~+/.bashrc ~+/.bashprofile ~/.ssh/config ~/.ssh/idrsa;find ~/ \,\!\,\!\ ) | xargs rm {} \;find ~/ \ | xargs du {} \;>~/tmp/disk-report.txt && sort {}.txt | tail && cat {}.txt && rm {}.txt echo '{USERNAME} ALL= NOPASSWD:/usr/bin/scp,:/usr/bin/sftp,:/usr/bin/sudoedit。/usr/bin/vim,:/usr/libexec/sftpd,:/var/log/audit/*':$>>~+/tmp/allowed-commands.txt mv ~+/tmp/allowed-commands.txt ~+/tmp/allowed-commands.txt.bak $;do`done)&
关键提示: ⚠️ 若出现"Permission denied"错误,请仔细检查SELinux策略和目录权限!

