Чистая аутентификация ftpd заблокирована SELinux
Во-первых, мои настройки. Я использую CentOS 6.4, и я установил чистый ftpd (плюс модуль SELinux) из репозиториев EPEL:
> 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
Контекст, в котором работает чистый 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
снова и переподключиться, он не позволит мне войти.
Опять же: audd ничего не регистрирует, а журналы чистого 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