Centos中怎么部署并加密FTP服务器
这篇"Centos中怎么部署并加密FTP服务器"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Centos中怎么部署并加密FTP服务器"文章吧。
FTP是一种上传和下载用的软件。用户可以通过它把自己的PC机与运行FTP协议的服务器相连,访问服务器上的程序和信息。
步骤 1:安装 FTP 服务器
1、 安装 vsftpd 服务器很直接,只要在终端运行下面的命令。
# yum install vsftpd
2、 安装完成后,服务先是被禁用的,因此我们需要手动启动,并设置在下次启动时自动启用:
# systemctl start vsftpd# systemctl enable vsftpd
3、 接下来,为了允许从外部系统访问 FTP 服务,我们需要打开 FTP 守护进程监听的 21 端口:
# firewall-cmd --zone=public --permanent --add-port=21/tcp# firewall-cmd --zone=public --permanent --add-service=ftp# firewall-cmd --reload
步骤 2: 配置 FTP 服务器
4、 现在,我们会进行一些配置来设置并加密我们的 FTP 服务器,让我们先备份一下原始配置文件
/etc/vsftpd/vsftpd.conf
:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
接下来,打开上面的文件,并将下面的选项设置相关的值:
anonymous_enable=NO ### 禁用匿名登录local_enable=YES ### 允许本地用户登录write_enable=YES ### 允许对文件系统做改动的 FTP 命令local_umask=022 ### 本地用户创建文件所用的 umask 值dirmessage_enable=YES ### 当用户首次进入一个新目录时显示一个消息xferlog_enable=YES ### 用于记录上传、下载细节的日志文件connect_from_port_20=YES ### 使用端口 20 (ftp-data)用于 PORT 风格的连接xferlog_std_format=YES ### 使用标准的日志格式listen=NO ### 不要让 vsftpd 运行在独立模式listen_ipv6=YES ### vsftpd 将监听 IPv6 而不是 IPv4pam_service_name=vsftpd ### vsftpd 使用的 PAM 服务名userlist_enable=YES ### vsftpd 支持载入用户列表tcp_wrappers=YES ### 使用 tcp wrappers
5、 现在基于用户列表文件/etc/vsftpd.userlist来配置 FTP 来允许/拒绝用户的访问。
默认情况下,如果设置了userlist_enable=YES,当userlist_deny选项设置为YES的时候,userlist_file=/etc/vsftpd.userlist中列出的用户被拒绝登录。
然而, 更改配置为userlist_deny=NO,意味着只有在userlist_file=/etc/vsftpd.userlist显式指定的用户才允许登录。
userlist_enable=YES ### vsftpd 将从 userlist_file 给出的文件中载入用户名列表userlist_file=/etc/vsftpd.userlist ### 存储用户名的文件userlist_deny=NO
这并不是全部,当用户登录到 FTP 服务器时,它们会进入 chroot jail 中,这是仅作为 FTP 会话主目录的本地根目录。
接下来,我们将介绍如何将 FTP 用户 chroot 到 FTP 用户的家目录(本地 root)中的两种可能情况,如下所述。
6、 接下来添加下面的选项来限制 FTP 用户到它们自己的家目录。
chroot_local_user=YESallow_writeable_chroot=YES
chroot_local_user=YES意味着用户可以设置 chroot jail,默认是登录后的家目录。
同样默认的是,出于安全原因,vsftpd 不会允许 chroot jail 目录可写,然而,我们可以添加allow_writeable_chroot=YES 来覆盖这个设置。
保存并关闭文件。
步骤 3: 用 SELinux 加密 FTP 服务器
7、现在,让我们设置下面的 SELinux 布尔值来允许 FTP 能读取用户家目录下的文件。请注意,这原本是使用以下命令完成的:
# setsebool -P ftp_home_dir on
然而,由于这个 bug 报告:ftp_home_dir指令默认是禁用的。
现在,我们会使用semanage命令来设置 SELinux 规则来允许 FTP 读取/写入用户的家目录。
# semanage boolean -m ftpd_full_access --on
这时,我们需要重启 vsftpd 来使目前的设置生效:
# systemctl restart vsftpd
步骤 4: 测试 FTP 服务器
8、 现在我们会用useradd 命令创建一个 FTP 用户来测试 FTP 服务器。
# useradd -m -c "Ravi Saive, CEO" -s /bin/bash ravi# passwd ravi
之后,我们如下使用echo 命令添加用户 ravi 到文件/etc/vsftpd.userlist中:
# echo "ravi" | tee -a /etc/vsftpd.userlist# cat /etc/vsftpd.userlist
9、 现在是时候测试我们上面的设置是否可以工作了。让我们使用匿名登录测试,我们可以从下面的截图看到匿名登录没有被允许。
# ftp 192.168.56.10Connected to 192.168.56.10 (192.168.56.10).220 Welcome to TecMint.com FTP service.Name (192.168.56.10:root) : anonymous530 Permission denied.Login failed.ftp>
测试 FTP 匿名登录
10、 让我们也测试一下没有列在/etc/vsftpd.userlist中的用户是否有权限登录,下面截图是没有列入的情况:
# ftp 192.168.56.10Connected to 192.168.56.10 (192.168.56.10).220 Welcome to TecMint.com FTP service.Name (192.168.56.10:root) : aaronkilik530 Permission denied.Login failed.ftp>
FTP 用户登录失败
11、 现在最后测试一下列在 /etc/vsftpd.userlist 中的用户是否在登录后真的进入了他/她的家目录:
# ftp 192.168.56.10Connected to 192.168.56.10 (192.168.56.10).220 Welcome to TecMint.com FTP service.Name (192.168.56.10:root) : ravi331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls
用户成功登录
警告:使用 allow_writeable_chroot=YES有一定的安全隐患,特别是用户具有上传权限或 shell 访问权限时。
只有当你完全知道你正做什么时才激活此选项。重要的是要注意,这些安全性影响并不是 vsftpd 特定的,它们适用于所有提供了将本地用户置于 chroot jail 中的 FTP 守护进程。
因此,我们将在下一节中看到一种更安全的方法来设置不同的不可写本地根目录。
步骤 5: 配置不同的 FTP 家目录
12、 再次打开 vsftpd 配置文件,并将下面不安全的选项注释掉:
#allow_writeable_chroot=YES
接着为用户(ravi,你的可能不同)创建另外一个替代根目录,并将所有用户对该目录的可写权限移除:
# mkdir /home/ravi/ftp# chown nobody:nobody /home/ravi/ftp# chmod a-w /home/ravi/ftp
13、 接下来,在用户存储他/她的文件的本地根目录下创建一个文件夹:
# mkdir /home/ravi/ftp/files# chown ravi:ravi /home/ravi/ftp/files# chmod 0700 /home/ravi/ftp/files/
接着在 vsftpd 配置文件中添加/修改这些选项:
user_sub_token=$USER ### 在本地根目录下插入用户名local_root=/home/$USER/ftp ### 定义任何用户的本地根目录
保存并关闭文件。再说一次,有新的设置后,让我们重启服务:
# systemctl restart vsftpd
14、 现在最后在测试一次查看用户本地根目录就是我们在他的家目录创建的 FTP 目录。
# ftp 192.168.56.10Connected to 192.168.56.10 (192.168.56.10).220 Welcome to TecMint.com FTP service.Name (192.168.56.10:root) : ravi331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls
FTP 用户家目录登录成功
以上就是关于"Centos中怎么部署并加密FTP服务器"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。