proftpd安全加固:限制用户FTP登录

其实无所谓安全加固,因为proftp默认就是限制用户FTP登录的,这里有点凌乱得研究和实验了proftpd如何进行限制的,以及可能的放开限制。懂了这些才能更好的进行防护配置。

RootLogin指令其实主要作用就是启用ROOT访问。通常,proftpd在任何情况下都不允许root登录,因为默认RootLogin off。如果客户端试图以root身份使用正确的密码登录,则会记录一条特殊的安全消息:

  SECURITY VIOLATION: Root login attempted

当配置RootLogin on时,root用户可以像任何其他用户一样进行身份验证(假设没有其他访问控制措施拒绝访问);但是,root登录安全消息仍然被记录:

  ROOT FTP login successful.

上面已经说了,在没有其他访问控制措施拒绝访问的情况下,启用RootLogin,则会开启root登录。但是,是有其他访问措施的,开启后访问会提示密码错误。显然是被PAM认证模块给毙了。
    USER root (Login failed): Incorrect password

当我们在/etc/ftpusers中注释掉root,再次登录则会成功。
#root
 USER root: Login successful.

主要是因为:当客户端试图进行身份验证时,传统FTP服务器通常会检查一个特殊的授权文件(通常是/etc/ftpusers)。如果在该文件中找到用户名,则拒绝FTP访问。一般ftp软件都会遵从在/etc/ftpusers中的用户不允许登录,最初/etc/ftpusers是由wu-ftp上使用,为了行为的兼容性,Proftpd在默认情况下类似地支持任何/etc/ftpusers文件,以减轻站点从wu-ftpd迁移到Proftpd的难度。官方强调可以通过UseFtpUsers off来关闭上述逻辑。但是,通过实验,貌似关不掉。/etc/ftpusers中的用户始终会被PAM毙掉。

查看proftpd.conf中配有AuthPAMConfig ,指定了PAM名称:

# Use pam to authenticate (default) and be authoritative
AuthPAMConfig                   proftpd
AuthOrder                       mod_auth_pam.c* mod_auth_unix.c

查看/etc/pam.d/proftpd:

auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

如果注释掉AuthPAMConfig,则会认证失败,即便不在/etc/ftpusers中的用户也无法正常登录:

USER user1 (Login failed): Incorrect password

 上面我们,看到AuthPAMConfig紧跟着一个AuthOrder,这个指令配置了认证顺序,如果注释掉,将导致查询不到用户,而认证失败:

pam_listfile(proftpd:auth): Refused user root for service proftpd
USER root (Login failed): No such user found

综上,通过上面的了解,如果要限制用户访问proftpd,那么,只需要确保:

1、/etc/ftpusers要存在

2、auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed要存在且正确:sense=deny /etc/ftpusers为黑名单,sense=allow /etc/ftpusers为白名单

3、不能显式配置UseFtpUsers off

4、不能显式配置RootLogin on

参考链接:ProFTPD module mod_auth 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/209288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Fastadmin】一个完整的轮播图功能示例

目录 1.效果展示: 列表 添加及编辑页面同 2.建表: 3.使用crud一键生成并创建控制器 4.html页面 add.html edit.html index.php 5.js页面 6.小知识点 1.效果展示: 列表 添加及编辑页面同 2.建表: 表名:fa_x…

【LabVIEW学习】5.数据通信之TCP协议,控制电脑的一种方式

一。tcp连接以及写数据(登录) 数据通信--》协议--》TCP 1.tcp连接 创建while循环,中间加入事件结构,创建tcp连接,写入IP地址与端口号 2.写入tcp数据 登录服务器除了要知道IP地址以及端口以外,需要用户名与密…

中通单号查询,中通快递物流查,备注需要的单号记录

批量查询中通快递单号的物流信息,并对需要的单号记录进行备注。 所需工具: 一个【快递批量查询高手】软件 中通快递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,第一次使用的朋友记得先注册&#xff0c…

快速幂(C语言)

前言 快速幂算法一般用于高次幂取模的题目中,比如求3的10000次方对7取模。这时候有些同学会说:这还不简单?我直接调用pow函数然后对结果%7不得了么?可是3的10000次方这么庞大的数字,真的能储存在计算机里么&#xff1f…

HTML行内元素与块级元素的区别(超详细)

目录 行内元素&#x1f338;常见的行内元素&#x1f338;行内元素&#xff08;内联元素&#xff09;的特性 块级元素&#x1f338;常见的块级元素&#x1f338;块级元素的特性 相互转换(display)&#x1f338;行内块状元素的特性 行内元素 &#x1f338;常见的行内元素 <s…

c#学习相关系列之as和is的相关用法

一、子类和父类的关系 public class Program{static void Main(string[] args){Animal animal new Dog();// Dog dog (Dog)new Animal(); 编译成功&#xff0c;运行报错Dog dog (Dog)animal;Dog dog new Dog();Animal animal dog; //等价于Animal animal new Dog();}}pub…

java多生产者多消费者模拟实现

package com.example.springboottestone.main;import java.util.LinkedList; import java.util.Queue;/*** 多生产者多消费者模型是指多个生产者线程同时向缓冲区中添加数据&#xff0c;同时多个消费者线程从缓冲区中获取数据的并发模型。这种模型适用于需要高并发处理数据的场…

企业计算机服务器中了eking勒索病毒怎么办,eking勒索病毒解密数据恢复

随着计算机网络技术的不断发展与应用&#xff0c;企业的生产运营效率得到了极大提升&#xff0c;但网络安全威胁一直存在&#xff0c;网络威胁的技术也在不断更新&#xff0c;给企业的数据安全带来了严重威胁。在本月&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#…

C++ Qt开发:Qt的安装与配置

Qt是一种C编程框架&#xff0c;用于构建图形用户界面&#xff08;GUI&#xff09;应用程序和嵌入式系统。Qt由Qt公司&#xff08;前身为Nokia&#xff09;开发&#xff0c;提供了一套跨平台的工具和类库&#xff0c;使开发者能够轻松地创建高效、美观、可扩展的应用程序。其被广…

Python---random库

目录 基本随机数函数(): rand.seed() random() 扩展随机数函数(): random库包含两类函数&#xff1a;基本随机数函数&#xff0c;扩展随机数函数 基本随机数函数:seed(),random() 扩展随机数函数&#xff1a;randint,getrandbits(),uniform(),randrange(),choice(),shuff…

猴子吃桃问题(for循环)

一只猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又多吃了一个&#xff1b;第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时&#xff0c;见只剩下一个桃子了…

ECS云主机容量大于2TB,初始化Linux数据盘(parted)

本文为您介绍当容量大于2TB时&#xff0c;如何在Linux环境下适用parted分区工具初始化数据盘。 操作场景 本文以“CentOS 7.6 64位”操作系统为例&#xff0c;介绍当磁盘容量大于2TB时&#xff0c;如何使用parted分区工具在Linux操作系统中为数据盘设置分区&#xff0c;操作回…

SAP UI5 walkthrough step6 Modules

在SAPUI5 中&#xff0c;资源通常用作Modules&#xff0c;这个我们将用Message Toast 来实现告警功能 修改controller.js webapp/controller/App.controller.js sap.ui.define(["sap/ui/core/mvc/Controller","sap/m/MessageToast" ], (Controller, Mes…

Python中的Alpha-Beta剪枝算法:优化博弈树搜索

标题&#xff1a;Python中的Alpha-Beta剪枝算法&#xff1a;优化博弈树搜索 摘要&#xff1a;Alpha-Beta剪枝算法是一种用于优化博弈树搜索的算法&#xff0c;能够降低搜索的时间复杂度&#xff0c;提高程序的性能和效率。本文将介绍Alpha-Beta剪枝算法的原理&#xff0c;以及…

Java 1对1

文章目录 前言 客户端 服务器端 输出线程端 End 前言 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的网络传输协议&#xff0c;它提供了端到端的数据传输和可靠性保证。 本程序就是基于tcp协议编写而成的。 利用 TCP 协议进行通信的…

js 复制粘贴板,当clipboardjs 不好使怎么办?

最近项目中做一个很常见的复制粘贴的功能耽误了比较长的时间特此记录&#xff0c;在往常这个功能直接用 clipboard 做就行了&#xff0c;但是这次却发现复制功能不好使了&#xff0c;虽然走了复制成功的回调&#xff0c;但是粘贴板并没有复制的内容。代码如下 <div v-for&q…

java实现冒泡排序算法

文章目录 冒泡排序算法 冒泡排序算法 算法原理&#xff1a; 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。 对每一对相邻元素做同样的工作&#xff0c;从开始第一对到结尾的最后一对。在这一点&#xff0c;最后的元素应该会是最大的数。 针对所有的元素重…

Leetcode 345. Reverse Vowels of a String

Problem Given a string s, reverse only all the vowels in the string and return it. The vowels are ‘a’, ‘e’, ‘i’, ‘o’, and ‘u’, and they can appear in both lower and upper cases, more than once. Algorithm Collect all the vowels and reverse the…

人工智能教程(三):更多有用的 Python 库

目录 前言 推荐 JupyterLab 入门 复杂的矩阵运算 其它人工智能和机器学习的 Python 库 前言 在本系列的上一篇人工智能教程&#xff08;二&#xff09;&#xff1a;人工智能的历史以及再探矩阵中&#xff0c;我们回顾了人工智能的历史&#xff0c;然后详细地讨论了矩阵。在…

【数据结构和算法】--- 栈

目录 栈的概念及结构栈的实现初始化栈入栈出栈其他一些栈函数 小结栈相关的题目 栈的概念及结构 栈是一种特殊的线性表。相比于链表和顺序表&#xff0c;栈只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的…