banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Zimbra Ldap và vsftpd  XML
  [Question]   Zimbra Ldap và vsftpd 11/08/2009 20:41:47 (+0700) | #1 | 189600
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
Chào mọi người,
Mình đang gặp phải một vấn đề hơi khó hiểu về pam_ldap, zimbra ldap và vsftpd.
Đáng lẽ phải post ở topic /hvaonline/posts/list/30619.html nhưng mà mình nghĩ mở topic mới chắc sẽ có nhiều người chú ý hơn smilie , mong mọi người thông cảm.
Mô hình hiện tại: Mail server sử dụng Zimbra, FTP server sử dụng vsftp, đang hoạt động bình thường. Vì ngoài 2 dịch vụ trên bên mình còn triển khai nhiều dịch khác mà hầu hết đều cần chứng thực users, do đó mình muốn sử dụng Zimbra Ldap để lưu trữ thông tin của tất cả người dùng, cho tất cả các dịch vụ, trừ web.

Mình thử nghiệm với vsftp, và hiện tại vsftpd đã hoạt động tốt với Zimbra Ldap. FTP users có thể được chứng thực qua Zimbra Ldap bình thường. Nhưng vấn đề nằm ở chỗ, bên mình tạo user khá khuôn khổ smilie . Ví dụ như user tên Nguyễn Văn Hưng sẽ có email là hung_n@domain.com , ftp username sẽ là hung_n, nên khi cấu hình vsftpd, pam, và Zimbra ldap xong thì mình có thể authenticate qua Zimbra ldap luôn mà khỏi cần làm gì khác. Khi user change password ở Zimbra thì password ftp cũng thay đổi theo.

Nhưng mà khi thêm user mới thì gặp vấn đề. Mình tạo user ở Zimbra thì user này không login vào vsftp được, nhưng mà báo lỗi lạ lùng.
Các file cấu hình:
Code:
#%PAM-1.0
#/etc/pam.d/vsftpd
#session    optional     pam_keyinit.so    force revoke
#auth       required	pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required	pam_shells.so
#auth       include	system-auth
#account    include	system-auth
#session    include	system-auth
#auth       required     pam_unix.so
#session    required     pam_loginuid.so
#session    required     pam_mkhomedir.so skel=/etc/skel/ umask=0022

auth 	   sufficient   pam_ldap.so
password   sufficient   pam_ldap.so 

auth       required     pam_unix.so
account    sufficient   pam_ldap.so
account    required     pam_unix.so
password   sufficient   pam_ldap.so
password   required     pam_unix.so
session    required     pam_mkhomedir.so skel=/etc/skel/ umask=0022


Code:
#%PAM-1.0
# /etc/pam.d/system-auth
# 
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

#session    required    pam_mkhomedir.so skel=/etc/skel/ umask=0022
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     optional      pam_mkhomedir.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so


Dòng
Code:
session    required     pam_mkhomedir.so skel=/etc/skel/ umask=0022

mình nghĩ dùng để khi user được tạo mới (ở ZImbra) lần đầu tiên login vào vsftpd sẽ được tạo ra một home directory do mình chỉ định khi cấu hình vsftpd.conf, nhưng directory này không tạo ra được. Vị trí của dòng trên mình cũng thử thay đổi nhiều lần, như nhau.

Khi tạo ra user có user12@domain.com, login với uid user12, mình tail /var/log/audit/audit.log (trên ftp server) thì log báo login success, nhưng lỗi trả về Client lại là 530 Login fail.
Code:
type=CRED_DISP msg=audit(1250015445.687:59): user pid=3412 uid=0 auid=0 subj=root:system_r:ftpd_t:s0 msg='PAM: setcred acct="user12" : exe="/usr/sbin/vsftpd" (hostname=192.168.1.99, addr=192.168.1.99, terminal=ftp res=success)'
type=USER_AUTH msg=audit(1250015490.352:60): user pid=3412 uid=0 auid=0 subj=root:system_r:ftpd_t:s0 msg='PAM: authentication acct="user12" : exe="/usr/sbin/vsftpd" (hostname=192.168.1.99, addr=192.168.1.99, terminal=ftp res=success)'
type=USER_ACCT msg=audit(1250015490.352:61): user pid=3412 uid=0 auid=0 subj=root:system_r:ftpd_t:s0 msg='PAM: accounting acct="user12" : exe="/usr/sbin/vsftpd" (hostname=192.168.1.99, addr=192.168.1.99, terminal=ftp res=success)'


So sánh với user bình thường (User này login thành công, account này là account đã có sẵn ở ftp server trước khi dùng Zimbra Ldap)
Code:
type=CRED_ACQ msg=audit(1250015337.093:53): user pid=3387 uid=0 auid=0 subj=root:system_r:ftpd_t:s0 msg='PAM: setcred acct="anh_v" : exe="/usr/sbin/vsftpd" (hostname=192.168.1.99, addr=192.168.1.99, terminal=ftp res=success)'
type=USER_START msg=audit(1250015337.095:54): user pid=3387 uid=0 auid=0 subj=root:system_r:ftpd_t:s0 msg='PAM: session open acct="anh_v" : exe="/usr/sbin/vsftpd" (hostname=192.168.1.99, addr=192.168.1.99, terminal=ftp res=success)'


Vì sao lại như vậy? Làm sao để khi tao user ở Zimbra, user này login vào ftp server thì home directory được tự động tạo ra và user login thành công?

Thật ra khi làm cái này mình cũng không hiểu Zimbra Ldap, pam_ldap và vsftp hoạt động thế nào, communicate ra sao, nên nếu bạn nào có kinh nghiệm giải thích rõ hộ mình.

Edit: Bổ sung, mình enable pam_ldap để làm việc với Zimbra ldap bằng cái này

Code:
authconfig --enableldap --enableldapauth --disablenis --enablecache \
           --ldapserver=domain.com --ldapbasedn=dc=domain,dc=com \
	   --enablemkhomedir \
           --updateall

Xin cảm ơn.
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 11/08/2009 21:20:59 (+0700) | #2 | 189606
huuhien
Member

[Minus]    0    [Plus]
Joined: 07/04/2005 20:06:32
Messages: 26
Offline
[Profile] [PM]
Mình chưa dùng Zimbra LDAP nhưng mình nghĩ là bạn bị lỗi ...hiểu lầm hihihi.
Khi bạn sử dụng 1 service nào đó tích hợp với LDAP thì đó chỉ là authentication mà thôi . Do đó khi tạo user mới trên Zimbra LDAP và login vào vsftpd thì log báo login success là đúng thôi, nhưng user authentication đúng là một việc, login vào được home dir của vsftpd ko là 1 việc khác. Do đó bạn phải tạo homedir cho user mới trên vsftpd server nữa.
Nếu bạn muốn khi tạo user mới trên Zimbra LDAP mà có tạo luôn homedir trên vsftpd thì bạn xem cách nào để chèn script create homedir vsftpd vào script tạo user của Zimbra LDAP đi.
Regards.
Hữu Hiền
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 11/08/2009 21:26:46 (+0700) | #3 | 189608
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
@huuhien: thế cái lib pam_mkhomedir.so để làm gì bạn?
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 12/08/2009 00:04:22 (+0700) | #4 | 189622
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
File cấu hình vsftpd.conf của em thế nào nhỉ?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 12/08/2009 07:31:34 (+0700) | #5 | 189635
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
Đây anh

Code:
# grep -v "#" /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=0227
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
idle_session_timeout=600
ftpd_banner=Welcome to ABC FTP service. 
chroot_local_user=YES
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
session_support=YES
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 12/08/2009 07:34:37 (+0700) | #6 | 189636
huuhien
Member

[Minus]    0    [Plus]
Joined: 07/04/2005 20:06:32
Messages: 26
Offline
[Profile] [PM]
Bạn thử thêm dòng : "session required pam_mkhomedir.so skel=/etc/skel/ umask=0022"
vào file /etc/pam.d/login xem sao?
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 12/08/2009 09:02:04 (+0700) | #7 | 189647
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
uhm, mình bỏ vào rồi mà vẫn thế.
selinux đã disable.
Cám ơn bạn.
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 12/08/2009 09:54:09 (+0700) | #8 | 189657
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

mR.Bi wrote:

...
Mình thử nghiệm với vsftp, và hiện tại vsftpd đã hoạt động tốt với Zimbra Ldap. FTP users có thể được chứng thực qua Zimbra Ldap bình thường.
...

Nhưng mà khi thêm user mới thì gặp vấn đề. Mình tạo user ở Zimbra thì user này không login vào vsftp được, nhưng mà báo lỗi lạ lùng.
...
Dòng
Code:
session    required     pam_mkhomedir.so skel=/etc/skel/ umask=0022

mình nghĩ dùng để khi user được tạo mới (ở ZImbra) lần đầu tiên login vào vsftpd sẽ được tạo ra một home directory do mình chỉ định khi cấu hình vsftpd.conf, nhưng directory này không tạo ra được. Vị trí của dòng trên mình cũng thử thay đổi nhiều lần, như nhau.
 

Em thử với ssh chẳng hạn xem cái module pam_mkhomedir.so nó làm việc chưa đã.

mR.Bi wrote:

Vì sao lại như vậy? Làm sao để khi tao user ở Zimbra, user này login vào ftp server thì home directory được tự động tạo ra và user login thành công?
 

mR.Bi wrote:
Đây anh

Code:
# grep -v "#" /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=0227
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
idle_session_timeout=600
ftpd_banner=Welcome to ABC FTP service. 
chroot_local_user=YES
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
session_support=YES

 

Nếu em muốn home directory được tự động tạo ra thì nó sẽ được tạo ra ở đâu, theo cấu trúc nào? Khi đó trong vsftpd.conf liệu có cần 2 dòng này không nhỉ: user_sub_token, local_root (để sau khi login thành công, nó còn có chỗ mà nhảy đến chứ).

Bây giờ em cứ thử tạo trước một cái home directory đi, rồi tạo user bên Zimbra LDAP sau đó thử login xem có được không?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 15/08/2009 22:11:26 (+0700) | #9 | 190099
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
2 giá trị user_sub_token và local_root thêm vào hay bỏ ra thì cũng như nhau, ý em nói hiện tượng y đúc trên kia.
Nếu em tạo home directory trước thì login bình thường.
ssh vào bình thường. chỉ có login qua ftp là lỗi, session_support đã là YES rồi.
Cám ơn anh.
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 16/08/2009 00:41:34 (+0700) | #10 | 190112
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

mR.Bi wrote:
2 giá trị user_sub_token và local_root thêm vào hay bỏ ra thì cũng như nhau, ý em nói hiện tượng y đúc trên kia.
Nếu em tạo home directory trước thì login bình thường.
ssh vào bình thường. chỉ có login qua ftp là lỗi, session_support đã là YES rồi.
Cám ơn anh. 

Thấy có người nói là được mà.

Trích từ: http://www.experts-exchange.com/Networking/Linux_Networking/Q_21777583.html

karelrambousek wrote:

My point:
Add a virtual user to DB (username/password). /virtual-users directory is created. FTP server will create /virtual-users/LOGIN when the user logs in for the first time.

Solution: done by myself.
I have written a pam module called pam_vsftpd_autohomedir
now I add it to pam process chain to the end.
The porcess:
1) user tries to login
2) Login is OK -> now my pam module takes control this way: pam_vsftpd_autohomedir.so uid=virtusers gid=virtusers root=/virtual-users
3) if dir /virtual-users/LOGIN doesn't exist, the pam will create one for me
4) Control is returned to the FTP daemon which is happy because it is possible to change the dir to new homedir

WHY THIS IS SO COOL?
I just add one record to the DB and the virtual homedir is created the first time a user logs in!
 


Em thử tham khảo xem. Nếu vẫn không được thì thử ngâm cứu cách mà bạn huuhien nói ở trên.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 19/11/2010 09:40:42 (+0700) | #11 | 225178
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Bạn nào cũng gặp vấn đề với pam_mkhomedir.so thì có thể dùng autodir nhé: http://www.intraperson.com/autodir/.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Zimbra Ldap và vsftpd 28/11/2011 21:04:55 (+0700) | #12 | 250441
trongthect
Member

[Minus]    0    [Plus]
Joined: 02/04/2008 13:00:46
Messages: 54
Offline
[Profile] [PM]
nhờ anh quanta giúp em cái vsftp.

em làm cái vsftp kết hợp với ldap.

file cấu hình vsftpd có phần như sau:

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anon_root=/data/vsftp
chroot_local_user=YES
user_config_dir=/etc/vsftpd/users
userlist_enable=YES
userlist_file=/etc/vsftpd/ftpusers

file vsftpd trong /etc/pam.d/vsftpd

auth sufficient pam_ldap.so
account sufficient pam_ldap.so
password sufficient pam_ldap.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
~
Tuy nhiên kết quả như sau:

khi em login vào từ trình duyệt thì bị báo lỗi:500 OOPS: cannot change directory:/home/ns1

em tail -f file audit.log thì :

type=USER_AUTH msg=audit(1010531786.910:71): user pid=3438 uid=0 auid=0 msg='PAM: authentication acct="anonymous" : exe="/usr/sbin/vsftpd" (hostname=192.168.1.100, addr=192.168.1.100, terminal=ftp res=failed)'
type=USER_AUTH msg=audit(1010531793.602:72): user pid=3440 uid=0 auid=0 msg='PAM: authentication acct="ns1" : exe="/usr/sbin/vsftpd" (hostname=192.168.1.100, addr=192.168.1.100, terminal=ftp res=success)'
type=USER_ACCT msg=audit(1010531793.602:73): user pid=3440 uid=0 auid=0 msg='PAM: accounting acct="ns1" : exe="/usr/sbin/vsftpd" (hostname=192.168.1.100, addr=192.168.1.100, terminal=ftp res=success)'
type=CRED_ACQ msg=audit(1010531793.602:74): user pid=3440 uid=0 auid=0 msg='PAM: setcred acct="ns1" : exe="/usr/sbin/vsftpd" (hostname=192.168.1.100, addr=192.168.1.100, terminal=ftp res=success)'

Chứng tỏ đăng nhập thành công.

em vào ldap thay đổi home folder sang /data/vsftp thì đăng nhập bình thường.

vấn đề ở đây là em đã đổi thư mục mặc định của vsftpd nhưng tại sao nó vấn đổ về home folder của từng user.

Nhờ anh và các cao thủ giúp em.

[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|