配置FTP服务器和pam.d以使用AD对用户进行身份验证(CentOS/RHEL 7/8)

时间:2020-01-09 10:37:44  来源:igfitidea点击:

在本文中,我将分享配置FTP服务器和/etc/pam.d文件以从Active Directory验证用户身份的步骤。

我已经在CentOS/RHEL 7和8 Linux上执行了这些步骤。
在RHEL 8上,需要执行一些添加步骤才能通过AD和登录对用户进行身份验证。

强制性准备工作

确保已将Linux节点与Active Directory集成在一起。
我们可以使用Windows Active Directory或者使用FreeIPA的基于Linux的Active Directory。

我已经将RHEL 7和CentOS 8与运行在Windows Server 2012上的Windows Active Directory集成在一起。

分步教程:在CentOS/RHEL 8中安装和配置Windows目录备用FreeIPA服务器分步教程:在Windows XP中安装和配置Windows AD备用FreeIPA服务器和客户端(RHEL/CentOS 7)

分步教程,使用Realm和Adcli将RHEL/CentOS 7添加到Windows Active Directory域中分步教程,使用Winbind将RHEL/CentOS 8添加或者添加到Windows Domain Controller中

其中我在Active Directory上创建了一个用户amit来演示本文。

在RHEL 7主机上

[root@rhel-7 ~]# getent passwd amit
amit:*:1407601118:1407600513:admit:/home/theitroad.COM/amit:

在CentOS 8主机上

# getent passwd theitroad+amit
theitroad+amit:*:2001118:2000513:admit:/home/theitroad/amit:/bin/bash

重要的提示:

对于RHEL/CentOS 7和8,配置FTP服务器(vsftpd)和/etc/pam.d/vsftpd的步骤相同。

配置FTP服务器(vsftpd)

我将使用vsftpd服务器在我的RHEL/CentOS 7和8 Linux中配置FTP服务器。
第一步是安装vsftpdrpm。

说明:

在RHEL系统上,我们必须具有RHN的有效订阅,或者我们可以配置本地脱机存储库,通过该本地脱机存储库,yum软件包管理器可以安装提供的rpm及其依赖项。

[root@rhel-7 ~]# yum -y install vsftpd
[root@centos-8 ~]# yum -y install vsftpd

我将无法其中解释" vsftpd"配置(" /etc/vsftpd/vsftpd.conf"),因为我们将集中精力通过Active Directory对用户进行身份验证。
以下是我的示例" vsftpd"配置文件

# egrep -v "^#|^$" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
userlist_log=YES
tcp_wrappers=NO
session_support=YES

接下来,重新启动" vsftpd"服务以激活更改

# systemctl restart vsftpd

打开vsftpd服务器的端口21

# firewall-cmd --zone=public --permanent --add-service=ftp

配置/etc/pam.d/vsftpd

接下来,将使用Active Directory对用户进行身份验证的主文件是/etc/pam.d/vsftpd
以如下格式添加以下突出显示的行:

提示:

我们可以将/etc/pam.d/vsftpd的全部内容与安装程序的文件进行比较。

# cat /etc/pam.d/vsftpd
#%PAM-1.0
auth       required      pam_env.so
auth       sufficient    pam_sss.so
account    sufficient    pam_sss.so
session    required      pam_loginuid.so
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      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

从Active Directory验证用户

在CentOS/RHEL 7中

让我们尝试使用FTP客户端从CentOS/RHEL 7中的Windows AD对用户进行身份验证。

如果尚未安装ftp客户端,请安装

[root@rhel-7 ~]# yum -y install ftp

接下来执行ftp客户端并使用amit用户连接到本地主机

[root@rhel-7 ~]# ftp
ftp> open localhost
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 3.0.2)
Name (localhost:root): amit
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,56,127).
150 Here comes the directory listing.
226 Directory send OK.
ftp> exit

如我们所见,我们能够使用Linux中的Active Directory用户成功连接localhost。

在CentOS/RHEL 8中

接下来,让我们尝试使用FTP客户端从CentOS/RHEL 8中的Windows AD对用户进行身份验证。

同样其中我们也需要安装FTP客户端

[root@centos-8 ~]# yum -y install ftp

在CentOS/RHEL 8中,我还必须创建AD用户的主目录,否则该用户登录失败。

[root@centos-8 ~]# mkdir -p /home/theitroad/amit

向AD用户授予其主目录的登录权限

[root@centos-8 ~]# chown -R theitroad+amit:theitroad+amit /home/theitroad/

接下来尝试使用su登录到AD用户。

[root@centos-8 ~]# su - theitroad+amit
Last login: Sun Nov 24 04:59:14 IST 2019 on pts/0
[theitroad+amit@centos-8 ~]$pwd
/home/theitroad/amit
[theitroad+amit@centos-8 ~]$logout

由于正常登录成功,因此我不会使用Active Directory用户amit连接到FTP服务器

[root@centos-8 ~]# ftp
ftp> open localhost
Trying ::1...
ftp: connect to address ::1Connection refused
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 3.0.3)
Name (localhost:root): theitroad+amit
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,120,213).
150 Here comes the directory listing.
226 Directory send OK.
ftp> exit
221 Goodbye.

因此,我们能够使用amit用户成功连接FTP(vsftpd)服务器。