![pure-ftpd 身份验证被 SELinux 阻止](https://linux22.com/image/614579/pure-ftpd%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E8%A2%AB%20SELinux%20%E9%98%BB%E6%AD%A2.png)
首先,我的设置。我使用的是 CentOS 6.4,并从 EPEL 存储库安装了 pure-ftpd(以及 SELinux 模块):
> rpm -q pure-ftpd pure-ftpd-selinux
pure-ftpd-1.0.30-1.el6.x86_64
pure-ftpd-selinux-1.0.30-1.el6.x86_64
在努力让它与 SELinux 正常工作之后,我尝试了setsebool
一些方法:
allow_ftpd_full_access --> on
ftp_home_dir --> on
ftpd_use_passive_mode --> on
pure-ftpd 运行的环境(如root.root
):
system_u:system_r:ftpd_t:s0-s0:c0.c1023 25196 ? Ss 0:00 pure-ftpd (SERVER)
现在,问题来了。由于某些未知原因,SELinux 拒绝登录尝试,而根本不登录/var/log/audit/audit.log
。pure-ftpd 记录了以下内容(在-d -d
模式下):
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [INFO] New connection from <my_ip>
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] 220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] 220-You are user number 1 of 50 allowed.
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] 220-Local time is now 17:53. Server port: 21.
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] 220-This is a private system - No anonymous login
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] 220-IPv6 connections are also welcome on this server.
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] 220 You will be disconnected after 15 minutes of inactivity.
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] Command [auth] [TLS]
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] 234 AUTH TLS OK.
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [INFO] SSL/TLS: Enabled TLSv1/SSLv3 with DHE-RSA-AES256-SHA, 256 secret bits cipher
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] Command [user] [admin]
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] 331 User admin OK. Password required
Jul 10 17:53:39 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] Command [pass] [<*>]
Jul 10 17:53:42 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] 530 Login authentication failed
Jul 10 17:53:42 <hostname> pure-ftpd: (?@<my_ip>) [WARNING] Authentication failed for user [admin]
Jul 10 17:53:42 <hostname> pure-ftpd: (?@<my_ip>) [INFO] Logout.
Jul 10 17:53:42 <hostname> pure-ftpd: (?@<my_ip>) [DEBUG] 530 Logout.
当我登录时setenforce 0
,登录突然变得非常正常。当我再次setenforce 1
重新连接时,它却不允许我登录。
再次:auditd 没有记录任何内容并且 pure-ftpd 日志毫无用处。/var/log/secure
也保持空并且tail -f /var/log/*
仅显示我上面粘贴的系统日志消息。
为了完整起见,他是我的pure-ftpd.conf
:
# Core
Daemonize yes
#PassivePortRange 35000 35999
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
# Security
#ChrootEveryone yes
NoAnonymous yes
UnixAuthentication yes
MinUID 499
UseFtpUsers no
#TLS 2
VerboseLog yes
VerboseLog yes
# Logging
SyslogFacility local5
AltLog clf:/var/log/pureftpd.log
# Performance
DontResolve yes
MaxIdleTime 15
LimitRecursion 10000 8
MaxLoad 4
MaxDiskUsage 99
# Customer happy
CustomerProof yes
NoTruncate yes
#AllowUserFXP yes
非常感谢您的帮助。
答案1
许多 SELinux 政策被标记dontaudit
,以便它们不要在审计日志中留下消息。这通常是因为它们是只会向日志中发送无用条目的策略,但有时开发人员dontaudit
会拒绝而不是修复潜在问题。您遇到的策略几乎肯定是其中之一,因为您没有看到任何正在记录的消息audit.log
。
您可以dontaudit
通过运行以下命令暂时禁用:
semodule -DB
发现问题原因后,请dontaudit
使用以下命令重新启用:
semodule -B
要在生成策略后构建策略,请运行:
make -f /usr/share/selinux/devel/Makefile