FTP 服务器检查器

FTP 服务器检查器概述

类型

检查器(服务)

使用方式

检测

实例类型

多实例

所需其他检查器

ftp_clientstream_tcp

已启用

true

文件传输协议 (FTP) 是用于通过 TCP/IP 在客户端和服务器之间传输文件的网络协议。在客户端和服务器建立连接后,客户端向服务器发出命令以将文件上传到服务器或从服务器下载文件,并解释服务器的响应。

ftp_server 检查器检查 FTP 命令通道并将其规范化。

给定 FTP 命令通道缓冲区, ftp_server 检查器可识别 FTP 命令和参数,并检查参数的正确性。ftp_server 确定何时加密 FTP 命令连接以及何时打开 FTP 数据通道。

FTP 服务器检查器参数

FTP 服务器端口配置

绑定程序 检查器定义 FTP 服务器配置。有关详细信息,请参阅绑定程序检查器概述

示例:
[
    {
        "when": {
            "role":"any",
            "service":"ftp",
            "ports": ""
        },
        "use": {
            "type":"ftp_server"
        }
    }
]

chk_str_fmt

指定要检查字符串格式攻击的 FTP 命令列表。您可以启用规则 125:5 来生成警报,在内联部署中,当检查器检测到这种情况时,丢弃违规数据包。使用空格字符分隔多个命令。

类型: 字符串

有效值: 有效 FTP 命令的列表。

默认值: None

data_chan_cmds

指定要检查格式正确的 FTP 命令列表。使用空格字符分隔多个命令。

类型: 字符串

有效值: 下列一个或多个命令的列表: PORT PASV LPRT LPSV EPRT EPSV

默认值: None

data_xfer_cmds

指定数据传输命令列表。检查命令格式是否正确。使用空格字符分隔多个命令。

类型: 字符串

有效值: 包含以下一个或多个命令的列表: RETR STOR STOU APPE LIST NLST

默认值: None

file_put_cmds

指定 PUT 命令列表。检查命令格式是否正确。使用空格字符分隔多个命令。

类型: 字符串

有效值: 以下一个或多个命令的列表: STOR STOU APPE

默认值: None


小心


请勿改变 file_put_cmds 参数,除非支持人员指示执行此操作。


file_get_cmds

指定 GET 命令列表。检查命令格式是否正确。使用空格字符分隔多个命令。

类型: 字符串

有效值:GET 命令列表,例如 RETR

默认值: None


小心


请勿改变 file_get_cmds 参数,除非支持人员指示执行此操作。


encr_cmds

指定与安全连接相关的命令列表。检查命令格式是否正确。使用空格字符分隔多个命令。

类型: 字符串

有效值: 与安全连接相关的命令列表,例如: AUTH

默认值: None

login_cmds

指定与登录过程相关的命令列表。检查命令格式是否正确。使用空格字符分隔多个命令。

类型: 字符串

有效值: 指定一个或多个命令的列表: USERPASS

默认值: None

check_encrypted

指定是否检查加密会话中的结束加密命令。与 encrypted_traffic 参数一起使用。

您可以为此参数启用规则 125:7 到 生成事件并在内联部署中丢弃攻击性数据包

类型: boolean

有效值: truefalse

默认值: false

cmd_validity[]

FTP 命令数组以及检查器用来验证这些命令的条件。这些有效性检查会覆盖 ftp_server 检查器 (RFC 959) 执行的默认检查。

您可以启用规则 125:2 和 125:4 来生成事件,并且在线路部署中,丢弃此参数的违规数据包。

类型: 数组(对象)

示例:
{
   "cmd_validity": [
       {
           "command": "CWD",
           "format": "abc",
           "length": 250
       }
   ]
}

cmd_validity[].command

指定要验证的 FTP 命令的名称。

类型: 字符串

有效值: 用双引号括起来的有效 FTP 命令。

默认值: None

cmd_validity[].format

描述 cmd_validity[].command的有效格式

类型: 字符串

有效值: 采用以下格式之一:

  • int – 参数必须为整数

  • number - 该参数必须为 1 到 255 之间的整数

  • char chars - 参数必须为来自 chars的单个字符,chars 个数,由一个或多个字符组成,且之间无分隔符。

  • date datefmt - 参数遵循指定的格式,其中 datefmt 使用以下元素构建:

    • # = 编号

    • C = Char

    • [] = 括起来的可选格式

    • | = 或

    • {} = 所包含格式的选择

    • .+- 文字字符

  • 字符串 - 参数为不受限制的字符串。

  • host_port - 根据 RFC 959,参数必须是主机端口说明符。

  • long_host_port - 根据 RFC 1639,参数必须是长主机端口说明符。

  • Extended_host_port - 根据 RFC 2428,参数必须是扩展主机端口说明符。

  • |{}中所述 - 参数必须是大括号内用 | 分隔的选项之一。

  • {}[] - 参数必须是大括号内的选项之一。可选值包含在方括号内。

默认值: None

cmd_validity[].length

cmd_validity[].command 指定最大长度(以字节为单位),覆盖 def_max_param_len中定义的默认值。如果 FTP 命令的参数超过了 cmd_validity[].length,并启用了规则 125:3 ,Snort 会生成警报。使用 cmd_validity[].length 将特定命令限制为小参数值。

指定 0 以表示长度不受限制。

类型: 整数

有效范围: 04,294,967,295(最大 32)

默认值: 0

def_max_param_len

指定检查器允许的所有服务器处理的 FTP 命令的默认最大长度(以字节为单位)。使用 def_max_param_len 进行基本缓冲区溢出检测。(可以使用 cmd_validity[].length为单个命令覆盖此项。)您可以为此参数启用规则 125:3 变为 生成事件并在内联部署中丢弃攻击性数据包

指定 0 以表示长度不受限制。

类型: 整数

有效范围: 04,294,967,295(最大 32)

默认值: 100

encrypted_traffic

指定是否检查加密的 FTP 流量。与 check_encrypted 参数一起使用。您可以为此参数启用规则 125:7 到 生成事件并在内联部署中丢弃攻击性数据包

类型: boolean

有效值: truefalse

默认值: false

ftp_cmds

除 RFC 959 中所述的命令外,服务器还支持 FTP 命令列表。(例如,如果安装使用 RFC 775 中指定的“X”命令,则可以使用此参数将其添加到检查器。)

类型: 字符串

有效值: 以空格分隔的有效 FTP 命令列表,用双引号引起来。

默认值: None

ignore_data_chan

指定是否忽略 FTP 数据信道。

类型: boolean

有效值: truefalse

默认值: false

Ignore_telnet_erase_cmds

指定在规范化 FTP 命令通道时是否忽略擦除字符 (TNC EAC) 和擦除行字符 (TNC EAL) 的 telnet 转义序列。设置 ignore_telnet_erase_cmds 以匹配您的FTP服务器处理telnet擦除命令的方式。请注意,新 FTP 客户端通常会忽略 Telnet 擦除命令,而旧客户端通常会进行处理。

如果未忽略 telnet擦除命令,并且启用了规则125:1,则 Snort 会生成一个事件,并且在内联部署中会丢弃违规的数据包。

类型: boolean

有效值: truefalse

默认值: false

print_cmds

指定是否在初始化时打印此服务器的每个 FTP 命令的配置。

类型: boolean

有效值: truefalse

默认值: false

telnet_cmds

指定是否检查 FTP 命令通道上的 telnet 命令。如果存在此类命令,则可能表示 FTP 命令通道上存在逃逸尝试。

类型: boolean

有效值: truefalse

默认值: false

FTP 服务器检查器规则

启用 ftp_server 检查器规则以 生成事件并在内联部署中丢弃攻击性数据包

表 1. FTP 服务器检查器规则

GID:SID

Rule Message

125:1 FTP 命令通道上的 TELNET 命令

125:2

无效的 FTP 命令

125:3

FTP 命令参数过长

125:4

FTP 命令参数格式错误

125:5

包含的 FTP 命令参数的潜在字符串格式

125:7

FTP 流量已加密

125:9

FTP 命令信道上存在回避(不完整)TELNET cmd

FTP 服务器检查器入侵规则选项

ftp_server 检查器没有任何入侵规则选项。