web-dev-qa-db-ja.com

SELinuxによってブロックされたpure-ftpd認証

まず、私のセットアップ。私はCentOS6.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/*は上記で貼り付けたsyslogメッセージのみを表示します。

完全を期すために、彼は私の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
2
Michael Hampton