前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在CentOS 7上安装和配置scponly

如何在CentOS 7上安装和配置scponly

原创
作者头像
angel_郁
修改2018-09-30 10:49:05
1.7K0
修改2018-09-30 10:49:05
举报
文章被收录于专栏:云计算教程系列

介绍

scponly是匿名FTP的安全替代品。它使管理员能够设置具有受限远程文件访问权限且无法访问交互式shell的安全用户帐户。

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

先决条件

在本教程中,您将需要一个全新的CentOS 6或7 CVM。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

本教程中的所有命令都应以非root用户身份运行。如果命令需要root访问权限,则前面应该带有sudo

第一步 - 安装包

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

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

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

我们将使用yum来安装构建scponly所需的必备软件包。在yum安装期间,我们将传递所需的软件包名称,-y表示自动对任何提示回答“是”。

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

代码语言:javascript
复制
sudo yum install wget gcc man rsync openssh-clients -y

第二步 - 下载并提取scponly

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

在下载scponly之前,请转到/opt目录。此目录通常指定用于可选软件。

代码语言:javascript
复制
cd /opt

截至本文,scponly的最新快照是2011.05.26。您可以检查Sourceforge页面以获取更高版本,并相应地调整wget命令。

使用wget下载scponly源文件:

代码语言:javascript
复制
sudo wget http://sourceforge.net/projects/scponly/files/scponly-snapshots/scponly-20110526.tgz

提取scponly源代码:

代码语言:javascript
复制
sudo tar -zxvf scponly-20110526.tgz

第三步 - 构建和安装scponly

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

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

代码语言:javascript
复制
cd /opt/scponly-20110526

首先,运行configure命令以构建一个makefile,其中包含从源构建时要启用或禁用的所有功能:

代码语言:javascript
复制
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: 安装chrooted二进制文件 scponlyc
  • --enable-winscp-compat: 实现与Windows scp / sftp客户端WinSCP的兼容性
  • --enable-rsync-compat: 启用与rsync的兼容性,这是一个非常通用的文件复制实用程序
  • --enable-scp-compat: 启用与UNIX样式scp命令的兼容性

接下来我们将使用make命令构建scponly 。该make命令将使用该configure命令获取您传递的所有选项,并将其构建到将在OS上安装和运行的二进制文件中。

代码语言:javascript
复制
sudo make

接下来我们将安装二进制文件make install

代码语言:javascript
复制
sudo make install

最后将scponly shell添加到/etc/shells文件中:

代码语言:javascript
复制
sudo /bin/su -c "echo "/usr/local/bin/scponly" >> /etc/shells"

/etc/shells文件告诉操作系统哪些shell可供用户使用。所以我们告诉操作系统我们在被调用的系统中添加了一个新的shell scponly,并且二进制文件位于/usr/local/bin/scponly

第四步 - 创建scponly Group

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

代码语言:javascript
复制
sudo groupadd scponly

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

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

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

代码语言:javascript
复制
sudo mkdir -p /pub/upload

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

代码语言:javascript
复制
sudo chown root:scponly /pub/upload

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

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

代码语言:javascript
复制
sudo chmod 770 /pub/upload

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

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

创建一个名为testuser1的用户,并将scponly指定为备用组和shell/usr/local/bin/scponly

代码语言:javascript
复制
sudo useradd -m -d /home/testuser1 -s "/usr/local/bin/scponly" -c "testuser1" -G scponly testuser1

注意: 接下来是非常重要的一步。用户的主目录不应该是可写的,因为它们可以修改某些SSH参数并可能破坏scponly shell。

更改testuser1主目录的权限,以便仅为所有者读取和执行:

代码语言:javascript
复制
sudo chmod 500 /home/testuser1

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

代码语言:javascript
复制
sudo passwd testuser1

第七步 - 验证用户无权访问Interactive Shell

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

让我们验证testuser1帐户是否无法访问终端。

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

代码语言:javascript
复制
su - testuser1

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

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

代码语言:javascript
复制
ssh testuser1@your_server_ip

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

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

在本节中,我们将通过sftp从您的本地计算机连接到您的CVM,以验证该testuser1帐户是否可以下载文件。

首先使用fallocate命令创建100兆字节的文件:

代码语言:javascript
复制
sudo fallocate -l 100m /home/testuser1/testfile.img

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

代码语言:javascript
复制
sudo chown testuser1:testuser1 /home/testuser1/testfile.img

在本地系统更改目录/tmp中:

代码语言:javascript
复制
cd /tmp

在您的服务器上运行sftp

代码语言:javascript
复制
sftp testuser1@your_server_ip

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

sftp>提示符登录后输入ls -l

代码语言:javascript
复制
ls -l

使用get命令下载文件:

代码语言:javascript
复制
get testfile.img

文件完成后,下载类型quit退出:

代码语言:javascript
复制
quit

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

代码语言:javascript
复制
ls -l testfile.img

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

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

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

在本地系统上使用fallocate创建一个100兆字节的uploadfile.img文件:

代码语言:javascript
复制
fallocate -l 100m /home/testuser1/uploadfile.img

从本地系统连接到您的CVM。

代码语言:javascript
复制
sftp testuser1@your_server_ip

接下来从 sftp 提示符中上传uploadfile.img/pub/upload``sftp

代码语言:javascript
复制
put uploadfile.img /pub/upload/

通过在sftp提示符处发出以下命令来验证文件是否已成功上载:

代码语言:javascript
复制
ls -ltr /pub/upload

结果应类似于:

代码语言:javascript
复制
-rw-r--r--    1 testuser1 testuser1 104857600 Jun  5 07:46 uploadfile.img

最后输入quitsftp提示:

代码语言:javascript
复制
quit

结论

scponly应该在每个管理员的工具箱中。它可以用作匿名FTP的安全替代方法,也可以作为一种方法,使经过身份验证的用户无需交互式shell即可下载和上传文件。scponly的日志记录发生在标准ssh日志文件/var/log/secure 中。有关scponly的更多信息,请访问scponly GitHub页面

想要了解更多关于Linux的开源信息教程,请前往腾讯云+社区学习更多知识。

参考文献:《How To Install and Configure scponly on CentOS 7》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 先决条件
  • 第一步 - 安装包
  • 第二步 - 下载并提取scponly
  • 第三步 - 构建和安装scponly
  • 第四步 - 创建scponly Group
  • 第五步 - 创建上传目录并设置适当的权限
  • 第六步 - 使用scponly Shell创建用户帐户
  • 第七步 - 验证用户无权访问Interactive Shell
  • 第八步 - 测试用户下载文件的能力
  • 第九步 - 测试用户上传文件的能力
  • 结论
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档