如何安装和在CentOS 7 scponly配置

介绍

scponly是匿名FTP的安全替代。 它使管理员能够在受限的远程文件访问和无法访问交互式shell的情况下设置安全的用户帐户。

为什么使用scponly而不是普通SSH? 使用scponly,您可以让用户远程访问下载和上传特定文件。 它们不会有交互式shell,这意味着它们不能执行命令。 用户只能通过访问服务器scpsftp ,或支持这些协议的客户端。 从安全角度来看,这会通过限制不必要的访问服务器上的交互式shell来降低攻击面。

先决条件

在本教程中,您将需要一个新的CentOS 6或7 Droplet。

本教程中的所有命令都应以非root用户身份运行。 如果需要该命令的root访问权限,它会在前面加sudo 如果你不已经有成立,按照这个教程: 在CentOS 6初始服务器设置为CentOS 7初始服务器设置

第1步 - 安装软件包

scponly在一些第三方存储库中可用,但是这些scponly的构建过时,并且缺少当我们从源代码构建scponly时我们将添加的一些功能。

要从源代码构建scponly,您需要安装以下5个软件包:

  • wget(通过命令行下载文件)
  • gcc(从源编译scponly)
  • man(阅读手册页)
  • rsync(提供高级文件复制)
  • openssh-client-tools(提供各种ssh工具)

我们将使用yum来安装所需的必备软件包。 在Yum安装,我们将传递所需的软件包名称以及-y自动回答是给任何提示。

安装wgetgccmanrsync ,和openssh-clients使用yum install命令:

sudo yum install wget gcc man rsync openssh-clients -y

第2步 - 下载和提取scponly

在本节中,我们将从SourceForge使用被下载scponly的最新版本wget并使用提取文件tar

scponly下载之前,更改到/opt目录。 这个目录通常是指定的可选软件。

cd /opt

正如本文的scponly的最新快照是2011.05.26。 您可以检查Sourceforge的页面以后的版本,并调整wget相应命令。

下载使用scponly源wget

sudo wget http://sourceforge.net/projects/scponly/files/scponly-snapshots/scponly-20110526.tgz

提取scponly源代码:

sudo tar -zxvf scponly-20110526.tgz

第3步 - 建立和安装scponly

在本节中,我们将使用3个主要的命令来建立scponly: configuremakemake install 这些是从源代码下载和安装软件时最常使用的3个命令。

切换到包含刚解压缩的源代码的目录:

cd /opt/scponly-20110526

首先,运行configure命令来建立一个makefile与所有你想要启用的功能或从源代码构建禁用时:

sudo ./configure --enable-chrooted-binary --enable-winscp-compat --enable-rsync-compat --enable-scp-compat --with-sftp-server=/usr/libexec/openssh/sftp-server 

使用以下选项:

  • --enable-chrooted-binary:安装chroot的二进制scponlyc
  • --enable-winscp-compat:允许用WinSCP赋予,在Windows SCP / SFTP客户端的兼容性
  • --enable-rsync-compat:允许使用rsync,一个非常灵活的文件复制实用程序的兼容性
  • --enable-scp-compat:能够与UNIX风格SCP命令兼容

下一步,我们将与scponly建立make命令。 make命令把你的一切,你通过使用选项configure命令,并将其构建成将安装和OS上运行的二进制文件。

sudo make

下一步,我们将与安装二进制文件make install

sudo make install

最后,scponly炮弹添加到/etc/shells的文件:

sudo /bin/su -c "echo "/usr/local/bin/scponly" >> /etc/shells"

/etc/shells文件告诉操作系统,外壳可供用户使用。 所以我们告诉我们增加了一个新壳称为系统操作系统scponly和二进制位于/usr/local/bin/scponly

第4步 - 创建scponly组

现在我们将创建一个名为scponly的组,以便我们可以轻松地管理将以scponly访问服务器的所有用户。

sudo groupadd scponly

第5步 - 创建上传目录并设置适当的权限

在本节中,我们将为scponly组创建一个集中式上传目录。 这允许您控制可以上传到服务器的位置和数据量。

创建一个名为目录/pub/upload这将是一个专用于上传目录:

sudo mkdir -p /pub/upload

更改的组所有权/pub/upload目录scponly

sudo chown root:scponly /pub/upload

下一步是在设置权限/pub/upload目录。 通过将此目录的权限设置为770,我们仅授予对root用户和scponly组成员的访问权限。

在更改权限/pub/upload目录读,写和执行的所有者和组,并删除所有权限,为他人:

sudo chmod 770 /pub/upload

第6步 - 使用scponly Shell创建用户帐户

现在我们将设置一个测试用户帐户来验证我们的scponly配置。

创建一个用户名为testuser1scponly指定作为替代组, /usr/local/bin/scponly作为外壳:

sudo useradd -m -d /home/testuser1 -s "/usr/local/bin/scponly" -c "testuser1" -G scponly testuser1

注:下面是一个非常重要的步骤。 用户的主目录不应该是可写的,因为他们可以修改某些SSH参数,并可能颠覆scponly shell。

testuser1主目录权限更改为阅读与为业主执行:

sudo chmod 500 /home/testuser1

最后,设置testuser1用户的密码:

sudo passwd testuser1

第7步 - 验证用户无权访问交互式Shell

现在我们将测试scponly shell访问,并验证它是否按预期工作。

让我们验证testuser1帐户没有访问终端。

尝试以testuser1身份登录服务器:

su - testuser1

您的终端将挂起,因为您无法访问交互式shell。 CTRL+C退出scponly外壳。

您还可以测试本地计算机的访问:

ssh testuser1@your_server_ip

同样,您的终端将挂起,因为testuser1不允许shell访问。 CTRL+C退出scponly外壳。

第8步 - 测试用户下载文件的能力

在本节中,我们将通过以下方式连接sftp从本地计算机到你DigitalOceanDroplet验证testuser1帐户可以下载文件。

首先使用创建一个100兆的文件fallocate

sudo fallocate -l 100m /home/testuser1/testfile.img

更改所有权testfile.img文件testuser1:

sudo chown testuser1:testuser1 /home/testuser1/testfile.img

在您的本地系统目录更改为/tmp

cd /tmp

接下来sftp您DigitalOcean服务器:

sftp testuser1@your_server_ip

在输入密码时,可能会提示您保存ssh密钥。

一旦登录问题ls -lsftp>提示:

ls -l

下载使用文件的get命令:

get testfile.img

一旦文件下载完毕类型quit退出:

quit

返回本地计算机,验证文件已成功下载:

ls -l testfile.img

第9步 - 测试用户上传文件的能力

在本节中,我们将测试的能力testuser1帐户将文件上传到使用服务器sftp

注:在本节中,我们将限制对/pub/upload目录。 这不是必需的,但由于多种原因(例如管理配额或磁盘使用情况,并轻松监控中央位置的所有上传),这是一个额外的安全性好处。

在您的本地系统中创建一个名为100兆字节的文件uploadfile.img使用fallocate

fallocate -l 100m /home/testuser1/uploadfile.img

从本地系统连接到您的DigitalOcean Droplet。

sftp testuser1@your_server_ip

接着上传uploadfile.img/pub/uploadsftp提示:

put uploadfile.img /pub/upload/

验证通过在发出以下命令已成功上传的文件sftp提示:

ls -ltr /pub/upload

结果应类似于:

-rw-r--r--    1 testuser1 testuser1 104857600 Jun  5 07:46 uploadfile.img

最终输入quitsftp提示:

quit

结论

scponly应该在每个管理员的工具箱。 它可以用来作为匿名FTP的安全替代,或者作为一种方式给予经过身份验证的用户下载和上传文件,而没有交互式shell。 scponly的记录发生在标准SSH的日志文件/var/log/secure 一如既往地阅读手册页并保持您的系统更新。

有关scponly的更多信息,请访问scponly GitHub的页面

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏