首先,我的设置。 我使用的是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拒绝login尝试而不logging/var/log/audit/audit.log 。 pure-ftpdlogging这个(在-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 ,login突然工作非常好。 当我再次setenforce 1重新连接,它不会让我login。
再说一遍: auditd不会logging任何东西 ,纯粹的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
您的帮助将非常感激。
一些SELinux策略被标记为dontaudit以便它们不会在审计日志中留下消息 。 这通常是因为他们的政策只是垃圾邮件日志无用的条目,但有时开发商dontaudit拒绝而不是解决底层的问题。 您碰到的策略几乎可以肯定是其中之一,因为您没有在audit.log中logging任何消息。
您可以通过运行暂时禁用dontaudit :
semodule -DB
在发现问题的原因后,重新启用dontaudit :
semodule -B
一旦你生成了你的策略,运行:
make -f /usr/share/selinux/devel/Makefile