Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在CentOS 7上安装和配置scponly

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

原创
作者头像
angel_郁
修改于 2018-09-30 02:49:05
修改于 2018-09-30 02:49:05
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

介绍

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
代码运行次数:0
运行
AI代码解释
复制
sudo yum install wget gcc man rsync openssh-clients -y

第二步 - 下载并提取scponly

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /opt

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

使用wget下载scponly源文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo wget http://sourceforge.net/projects/scponly/files/scponly-snapshots/scponly-20110526.tgz

提取scponly源代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo tar -zxvf scponly-20110526.tgz

第三步 - 构建和安装scponly

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /opt/scponly-20110526

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
sudo make

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo make install

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
sudo groupadd scponly

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo mkdir -p /pub/upload

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chown root:scponly /pub/upload

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chmod 770 /pub/upload

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo useradd -m -d /home/testuser1 -s "/usr/local/bin/scponly" -c "testuser1" -G scponly testuser1

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chmod 500 /home/testuser1

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo passwd testuser1

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
su - testuser1

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh testuser1@your_server_ip

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo fallocate -l 100m /home/testuser1/testfile.img

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chown testuser1:testuser1 /home/testuser1/testfile.img

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /tmp

在您的服务器上运行sftp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sftp testuser1@your_server_ip

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ls -l

使用get命令下载文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
get testfile.img

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
quit

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ls -l testfile.img

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fallocate -l 100m /home/testuser1/uploadfile.img

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sftp testuser1@your_server_ip

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
put uploadfile.img /pub/upload/

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ls -ltr /pub/upload

结果应类似于:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-rw-r--r--    1 testuser1 testuser1 104857600 Jun  5 07:46 uploadfile.img

最后输入quitsftp提示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
FTP服务搭建与配置 原
说明: vsftpd可以使用系统级别的用户进行登录,但是这样做不安全,所以需要使用vsftpd创建一个虚拟用户。在此创建一个系统普通用户的作用是使vsftpd的虚拟用户来进行映射,然后完成数据的传输。
阿dai学长
2019/04/03
1.2K0
如何在 CentOS 8 上使用 Vsftpd 配置 FTP 服务器
本文最先发布在: https://www.itcoder.tech/posts/how-to-setup-ftp-server-with-vsftpd-on-centos-8/
雪梦科技
2020/04/01
8.6K0
如何在 CentOS 8 上使用 Vsftpd 配置 FTP 服务器
如何在CentOS 7上安装和配置Nagios
在本教程中,我们将向您展示如何在CentOS 7上安装Nagios.Nagios是一款功能强大的开源企业级软件,可监控网络基础架构,服务器和应用程序。 它可用于监视Linux和Windows服务器以及Web应用程序,Linux和Unix应用程序以及Windows应用程序。 其中一些功能包括:并行服务检查,插件系统,通过电子邮件发送通知,寻呼机或用户定义服务,用于查看状态的Web界面,日志文件,问题历史记录和通知等等。 本指南也适用于其他Linux VPS系统,但已针对CentOS 7 VPS进行了测试和编写。
星哥玩云
2022/07/19
1.1K0
如何在CentOS 7上安装和配置Nagios
Linux ssh命令详解,连ssh命令都不了解就别说自己会用Linux了
ssh相当于windows上的远程桌面连接,但没有桌面,只有文字终端。ssh是许多Linux使用者入门时必学的一个命令。借助ssh,开发人员可以很方便地连接远程或是局域网的其他电脑,直接在上面进行开发工作。
北游
2021/07/31
3.2K0
Linux基础(day57)
14.4 exportfs命令 exportfs命令 常用选项 -a 全部挂载或者全部卸载 -r 重新挂载 -u 卸载某一个目录 -v 显示共享目录 以下操作在服务端上 -vim /etc/exports //增加 /tmp/ 192.168.133.0/24(rw,sync,no_root_squash) exportfs -arv //不用重启nfs服务,配置文件就会生效 以下操作在客户端 mkdir /aminglinux mount -t nfs -onolock 192.168.133.130:/
运维小白
2018/02/06
1.5K0
Linux基础(day57)
Ubuntu 16.04升级OpenSSH
参考:Ubuntu 16.04 升级Openssh 8.8P1 Ubuntu 16 更新openssh 8.8
geekfly
2022/08/11
2.2K0
Ubuntu 16.04升级OpenSSH
通过命令下载执行恶意代码的几种姿势
在渗透过程中,攻击者往往需要通过命令下载执行恶意代码,实现信息收集、持久化、权限提升、防御绕过、提取凭证、横向移动、数据渗出等操作。
Bypass
2020/08/27
2.3K0
如何在Ubuntu 16.04上为匿名下载设置vsftpd
FTP是文件传输协议的缩写,是一种曾经广泛用于在客户端和服务器之间移动文件的网络协议。它已被更快,更安全,更方便的文件传输方式所取代。许多休闲网民希望直接从他们的网页浏览器用https下载,而且命令行用户更加喜欢使用的安全协议,如scp或SFTP
木纸鸢
2018/10/25
1.8K0
CentOS 7配置SSH远程访问及控制
在实际生产环境中,不可能一直在服务器本地对服务器进行相应的管理,大多数企业服务器都是通过远程登录的方式进行管理的。当需要从一个工作站管理数以百计的服务器主机时,远程维护的方式将更占优势。
星哥玩云
2022/07/28
4.5K0
CentOS 7配置SSH远程访问及控制
FTP远程文件传输服务安装与配置
描述: FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口)。通常21端口是命令端口,20端口是数据端口。当混入主动(Active)/被动模式(Passive)的概念时,数据端口就有可能不是20了。
全栈工程师修炼指南
2022/09/29
2.2K0
FTP远程文件传输服务安装与配置
SSH 命令介绍
ssh命令多用于登录和文件传输,安全可靠,本文记录ssh命令用法。 概述 SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。 SSH服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序) SSH是安全的加密协议,用于远程连接Linux服务器 SSH的默认端口是22,安全协议版本是SSH2 SSH
为为为什么
2022/08/05
1K0
SSH 命令介绍
exportfs命令,NFS客户端问题,FTP介绍,使用vsftpd搭建ftp
/tmp/ 192.168.209.129/24(rw,sync,no_root_squash)
叶瑾
2018/05/10
4K2
exportfs命令,NFS客户端问题,FTP介绍,使用vsftpd搭建ftp
SSH原理常见应用升级及端口转发
命令 -L localport:remotehost:remotehostport sshserver
iginkgo18
2020/09/27
1.9K0
SSH原理常见应用升级及端口转发
Centos下SFTP双机高可用环境部署记录
SFTP(SSH File Transfer Protocol),安全文件传送协议。有时也被称作 Secure File Transfer Protocol 或 SFTP。它和SCP的区别是它允许用户中断传输, SCP拷贝速度稍快一些。SFTP可以为传输文件提供一种安全的加密方法。 SFTP与FTP有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至Blogger伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP的 安全文件传输子系统,SFTP本身没有单独的守护进程,它必
洗尽了浮华
2018/01/23
3.3K0
给你CVM服务器加把锁,如何使用SSH密钥
SSH或安全shell是用于管理服务器和与服务器通信的加密协议。使用Ubuntu服务器时,您可能会将大部分时间花在通过SSH连接到服务器中。
陈树丶
2018/07/20
1.7K0
带你白嫖程序带宽限制命令Trickle
前天一个研发的兄弟问我,实现完成了ClickHouse数据备份的功能,然后把数据上传到HDFS之类的文件系统中,但是提交给测试,发现程序把网卡带宽跑满了,就向我咨询在Linux下是否有可以限制某个命令操作的带宽速率的,然后就推荐了trickle这个命令给研发同学,这里我也推荐给大家。
后场技术
2020/09/03
3.1K0
Linux 温习(七): 文件传输
wget可以使我们直接从终端控制台下载文件,只需要给出文件的 HTTP 或 FTP 地址。
陈大剩博客
2023/02/17
3.1K0
exportfs命令,NFS客户端问题,FTP介绍,使用vsftp搭建ftp
这个exportfs命令会在安装nfs-util包时一起安装,当服务端需要停止NFS服务或者进行一些变动并重启时,其他挂载了共享目录的机器需要将这个挂载的目录卸载掉,不然的话服务进程就会出问题,单台机器我们可以使用unmnt命令去卸载,但是如果有几十台机器的话总不能一个个去unmnt吧,所以这个exportfs命令就是用来进行多台机器的卸载、重新挂载之类的操作的。
端碗吹水
2020/09/23
5.7K0
exportfs命令,NFS客户端问题,FTP介绍,使用vsftp搭建ftp
如何在Ubuntu 18.04上为用户目录设置vsftpd
FTP是文件传输协议的缩写,是一种曾经广泛用于在客户端和服务器之间移动文件的网络协议。它已被更快,更安全,更方便的文件传输方式所取代。许多普通网民希望通过https直接从他们的网络浏览器下载,命令行用户更有可能使用安全协议,如scp或SFTP。
葡萄
2018/08/08
2.9K0
常用的运维工具:文件传输工具详解(SCP, SFTP)
在信息技术(IT)运维中,文件传输是日常工作中不可或缺的一部分。运维工程师需要高效、安全地在不同服务器之间传输文件,以确保系统的正常运行和数据的完整性。本文将详细介绍两种常用的文件传输工具——SCP(Secure Copy Protocol)和SFTP(Secure File Transfer Protocol),帮助读者更好地理解和应用这些工具。
Echo_Wish
2024/09/16
1.8K0
常用的运维工具:文件传输工具详解(SCP, SFTP)
相关推荐
FTP服务搭建与配置 原
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入[游戏服务器] 腾讯云官方交流站
游戏服运维小技巧 常见问题齐排查
加入架构与运维学习入门群
系统架构设计入门 运维体系构建指南
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档