Я пытаюсь заставить MySQL функционировать как серверную часть для аутентификации пользователей в CentOS 6.3. Пока что я успешно установил и настроил libnss-mysql. Я могу проверить это, выполнив:
# groups testuser
testuser : sftp
Testuser является членом группы sftp, и все учетные записи пользователей на базе MySQL будут жестко привязаны к нему. Группа sftp привязана к корневому каталогу и вынуждена использовать internal-sftp, поэтому они не могут ничего делать, кроме доступа к своему домашнему каталогу.
Затем я настроил pam-mysql и PAM, чтобы разрешить вход в систему mysql. Это тоже работает .. Когда SELinux не принудительно.
Когда я делаю setenforce 1
пользователи больше не могут войти в систему. Ошибка:
В доступе отказано, попробуйте еще раз.
Это мое pam_mysql.conf
файл:
users.host=localhost
users.db_user=nss-pam-user
users.db_passwd=***********
users.database=sftpusers
users.table=users
users.user_column=username
users.password_column=password
users.password_crypt=6
verbose=1
Мой /etc/pam.d/sshd
:
#%PAM-1.0
auth sufficient pam_sepermit.so
auth include password-auth
auth required pam_mysql.so config_file=/etc/pam_mysql.conf
account sufficient pam_nologin.so
account include password-auth
account required pam_mysql.so config_file=/etc/pam_mysql.conf
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
И для полноты содержание некоторых файлов журналов ..
/var/logs/secure
Nov 20 14:52:20 hostname unix_chkpwd[4891]: check pass; user unknown
Nov 20 14:52:20 hostname unix_chkpwd[4891]: password check failed for user (testuser)
Nov 20 14:52:20 hostname sshd[4880]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.10.107 user=testuser Nov 20 14:52:22 sftpusers sshd[4880]: Failed password for testuser from 192.168.10.107 port 51849 ssh2
/var/logs/audit/audit.log
type=USER_AUTH msg=audit(1353420107.070:812): user pid=5285 uid=0 auid=500 ses=24 subj=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=pubkey acct="testuser" exe="/usr/sbin/sshd" hostname=? addr=192.168.10.107 terminal=ssh res=failed'
type=USER_AUTH msg=audit(1353420112.312:813): user pid=5285 uid=0 auid=500 ses=24 subj=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="testuser" exe="/usr/sbin/sshd" hostname=192.168.10.107 addr=192.168.10.107 terminal=ssh res=failed'
type=USER_AUTH msg=audit(1353420112.456:814): user pid=5285 uid=0 auid=500 ses=24 subj=unconfined_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=password acct="testuser" exe="/usr/sbin/sshd" hostname=? addr=192.168.10.107 terminal=ssh res=failed'
Я пытался позволить audit2why
объясните проблему, но он ничего не говорит, даже если есть некоторые ошибки.
Кто-нибудь видит проблему? Спасибо!
РЕДАКТИРОВАТЬ: Оказывается, это почти работаю с setenforce 0
Я могу mkdir foobar
но если я сделаю сингл ls
Я получаю сообщение об ошибке: Received message too long 16777216
CentOS 6.3 поставляется с OpenSSH5.3p1, существует известная ошибка, которая не позволяет sftp извлекать имена групп файлов, в результате возникает ошибка и соединение закрывается при каждой команде ls.
Решение - загрузить более свежую версию OpenSSH, я взял 6.1p1 и собрал ее из исходников.
В основном я следовал этим инструкциям: http://kb.bobcares.com/?View=entry&EntryID=1059 , в моем случае libwrap отсутствовал, его нужно было установить. Я сделал:
yum install tcp_wrappers-devel
Некоторые другие библиотеки могут отсутствовать, после их установки я настроил OpenSSH для включения SELinux, когда вы достигнете этого шага:
./configure --prefix=/usr/local/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-kerberos5 --with-ssl-engine
Вместо этого сделайте это:
./configure --prefix=/usr/local/ssh --with-selinux --with-md5-passwords --with-pam --with-tcp-wrappers --with-kerberos5 --with-ssl-engine
Ваш файл sshd_config по умолчанию изменится на расположение префикса:
/usr/local/ssh/etc/sshd_config
После копирования моей существующей конфигурации поверх этого файла (вы также можете использовать псевдонимы) моя конфигурация волшебным образом начала работать!