在CentOS中安装和配置Scponly
简介
Scponly 是系统管理员的替代 shell,系统管理员希望为远程用户提供读写本地文件的访问权限,而不提供任何远程执行权限。从功能上来说,最好将其描述为经过考验的真正 ssh 应用程序套件的包装器。 Scponly 是匿名 FTP 的安全替代方案。它使管理员能够设置安全用户帐户,该帐户具有受限的远程文件访问权限,并且无法访问交互式 shell。
scponly 的典型用法是创建半公共帐户。这允许管理员以与匿名 ftp 设置相同的方式共享文件,仅使用 ssh 提供的所有保护。如果您认为 ftp 身份验证以纯文本格式穿越公共网络,这一点尤其重要。
先决条件
在开始本教程之前,有一些先决条件,例如:
- 您需要一个新的 CentOS 6 或 7 Droplet。
- 您还需要以非 root 用户身份运行所有命令。
安装和配置Scponly
第 1 步:
为了从源代码构建 scponly,需要安装 5 个必需的软件包,这些软件包如下:
- Wget:下载文件
- man: 阅读手册页
- rsync:提供高级文件复制
- gcc: 从源代码编译 scponly
- openssh-client-tools:使用各种ssh工具
要安装这些软件包,我们将使用以下命令:
sudo yum install wget man rsync gcc openssh-clients -y
第2步:
现在我们将按照以下说明下载最新版本的 Scponly。我们将首先使用以下命令移动到 /opt 目录,该命令用于可选软件:
cd /opt
我们将使用以下命令来安装最新版本的Scponly:
sudo wget http://sourceforge.net/projects/scponly/files/scponly-snapshots/scponly-20110526.tgz
要提取文件,我们将使用以下命令:
sudo tar -zxvf scponly-20110526.tgz
步骤3:
现在下载并解压文件后,我们将使用 3 个主要命令开始构建 scponly:configure、make 和 make install。
我们将使用以下命令移动到 scponly 源代码所在的目录:
cd /opt/scponly-20110526
然后我们将使用第一个命令“configure”来构建具有我们所选功能的 makefile。
我们选择以下选项:
--enable-chrooted-binary:
安装 chroot 二进制文件
scponlyc
--enable-winscp-compat:
实现与 Windows scp/sftp 客户端 WinSCP 的兼容性
--enable-rsync-compat:
启用与 rsync 的兼容性,rsync 是一种非常通用的文件复制实用程序
--enable-scp-compat:
启用与 UNIX 风格 scp 命令的兼容性
正如以下命令中所写:
sudo ./configure --enable-chrooted-binary --enable-winscp-compat --enable-rsync-compat --enable-scp-compat --with-sftp-server=/usr/libexec/openssh/sftp-server
现在我们将使用第二个命令“make”将所选选项构建到将在系统中安装和运行的二进制文件中。
sudo make
我们将使用以下命令安装二进制文件:
sudo make install
我们将使用以下命令将 scponly shell 添加到 /etc/shells 文件中:
sudo /bin/su -c "echo "/usr/local/bin/scponly" >> /etc/shells"
现在我们已经向系统添加了一个名为 scponly 的新 shell,并且我们已将二进制文件放置在 /usr/local/bin/scponly 目录中。
之后,我们将使用以下命令创建名为 sconly 的组:
sudo groupadd scponly
步骤4:
在本节中,我们将为 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
第5步:
为了检查我们的 scponly 配置,我们将设置一个新的用户帐户。因此,我们将首先创建一个名为 Waf_User 的用户,并提及 scponly 作为替代组,然后
/usr/local/bin/scponly
作为 shell 使用以下命令:
sudo useradd -m -d /home/Waf_User -s "/usr/local/bin/scponly" -c "Waf_User" -G scponly Waf_User
现在我们将使用以下命令编辑 Waf_User 主目录的权限:
sudo chmod 500 /home/Waf_User
我们将使用以下命令为创建的用户添加密码来完成此步骤:
sudo passwd Waf_User
第6步:
在此步骤中,我们将检查 scponly shell 是否可以远程运行。我们将首先检查我们创建的用户是否无法访问终端。为此,我们将尝试使用以下命令以 Waf_User 身份登录服务器:
su - Waf_User
如果您尚未访问,请按 ctrl+c 退出 scponly shell。您还可以使用以下命令检查本地计算机的访问情况:
ssh Waf_User@your_IP
你会发现你还没有访问权限,所以再次按 ctrl+c 退出 scponly shell。
第7步:
现在我们将检查我们创建的用户是否可以下载文件。我们将首先使用以下命令创建一个 100 MB 的文件:
sudo fallocate -l 100m /home/Waf_User/Waf_file.img
现在我们将使用以下命令将 Waf_file.img 的所有权更改为 Waf_User:
sudo chown Waf_User:Waf_User /home/Waf_User/Waf_file.img
然后使用以下命令移动到 tmp 目录:
cd /tmp
然后我们将使用以下命令移动到我们的服务器:
sftp Waf_User@your_IP
然后使用以下命令下载文件:
ls -l
get Waf_file.img
下载完成后使用quit命令退出:
quit
在返回到本地计算机之前检查文件是否已成功下载。
ls -l Waf_file.img
步骤8:
现在我们将检查 Waf_User 是否可以使用 sftp 命令将文件下载到服务器。
与上一步一样,创建一个名为 Waf_upload 的 100 MB 文件
.img
使用以下命令:
fallocate -l 100m /home/Waf_User/Waf_upload.img
然后使用以下命令从本地系统连接到服务器:
sftp Waf_User@your_IP
然后使用以下命令上传文件:
put Waf_upload.img /pub/upload/
使用以下命令检查文件是否已成功上传:
ls -ltr /pub/upload
你会得到这样的东西:
-rw-r--r-- 1 Waf_User Waf_User 104857600 Juil 27 08:58 Waf_upload.img
最后使用quit命令退出:
quit
结论
现在,您已经在系统中安装并配置了 sconly。该工具是一个有限的 shell,允许用户 scp/sftp 访问,并且仅允许 scp/sftp 访问您的盒子。此外,您可以设置 scponly 将用户 chroot 到特定目录,从而提高安全级别。
来源和参考链接:
- Sconly主页
- 数字海洋