FTPS - File Transfer Protocol Secure
What is FTPS?
FTPS stands for File Transfer Protocol Secure. It is an extension of the standard FTP protocol that adds support for SSL/TLS encryption, making file transfers more secure over a network.
What is the purpose of FTPS?
Secure uploading and downloading of files between systems.
Protecting sensitive data during transfer (e.g., credentials, documents).
Compliance with security standards (e.g., HIPAA, PCI-DSS).
Encrypted backups to remote servers or cloud storage.
Common in industries where data confidentiality and integrity are critical.
How does it work?
Client connects to FTPS server – Using an FTPS-compatible client (e.g., FileZilla, WinSCP).
SSL/TLS handshake – A secure encrypted session is established.
Authentication – Via username/password or certificate.
File operations – Upload, download, rename, delete, or move files securely.
Connection closes – Client disconnects when finished.
Two channels: 1. Command channel – Sends commands and responses (encrypted) 2. Data channel – Transfers files (can be encrypted depending on config)
Where is FTPS used?
Healthcare and finance – For secure transmission of sensitive records.
Enterprise IT – Secure internal and external file transfers.
Government and defense – Where compliance and encryption are mandatory.
Cloud storage providers – Secure uploads and backups.
Which OSI Layer does this protocol belong to?
FTPS operates at the Application Layer (Layer 7) of the OSI model.
It uses application-level commands like AUTH, USER, PASS, RETR, STOR, etc.
It relies on TCP (Layer 4) for reliable transmission but protocol logic is in Layer 7.
Topics in this section,
In this section, you are going to learn
Terminology
Version Info
sno |
DLNA Version |
core/Contribution |
RFC Details |
Year |
---|---|---|---|---|
1 |
Not Applicable |
FTPS (Explicit Mode) |
RFC 4217 Securing FTP with TLS |
2005 |
2 |
Not Applicable |
FTP Base Protocol |
RFC 959 File Transfer Protocol |
1985 |
3 |
Not Applicable |
TLS Protocol Used in FTPS |
RFC 8446 TLS 1.3 |
2018 |
4 |
Not Applicable |
Deprecated SSL Usage |
RFC 7568 Deprecating SSL |
Setup
Setup
AUTH
S.No |
Protocol Packets |
Description |
Size(bytes) |
---|---|---|---|
1 |
AUTH TLS |
Initiates secure connection using TLS |
~50100 |
Command |
The command sent to initiate TLS |
AUTH TLS (8 bytes) |
|
Response Code |
Server response (e.g., 234) |
3 bytes |
|
Response Message |
Human-readable message |
~30100 bytes |
|
TLS Version |
TLS version used (e.g., TLS 1.2) |
2 bytes |
|
ClientHello |
Initial handshake message from client |
~5121024 bytes |
|
ServerHello |
Server’s handshake response |
~5121024 bytes |
|
Session ID |
Identifier for the TLS session |
32 bytes |
|
Cipher Suites |
List of supported ciphers |
~2256 bytes |
|
Compression Methods |
Supported compression methods |
12 bytes |
|
Extensions |
TLS extensions (e.g., SNI, ALPN) |
Variable (up to 1 KB) |
|
Certificate |
Server’s X.509 certificate |
~13 KB |
|
Certificate Chain |
Intermediate certificates |
~15 KB |
|
Server Key Exchange |
Key exchange parameters |
~2561024 bytes |
|
Client Key Exchange |
Client’s key exchange message |
~2561024 bytes |
|
Pre-Master Secret |
Shared secret for key derivation |
48 bytes |
|
Master Secret |
Derived from pre-master secret |
48 bytes |
|
Finished Message |
Final handshake message |
~64 bytes |
|
Session Keys |
Keys for encryption/decryption |
128256 bits |
|
MAC Keys |
Keys for message authentication |
128256 bits |
|
Handshake Hash |
Hash of handshake messages |
3264 bytes |
|
Random Values |
Client and server randoms |
32 bytes each |
|
TLS Record Header |
Header for each TLS record |
5 bytes |
|
Content Type |
Type of TLS record (e.g., handshake) |
1 byte |
|
Protocol Version |
TLS version in record |
2 bytes |
|
Length |
Length of TLS record |
2 bytes |
|
Encrypted Data |
Encrypted application data |
Variable |
|
MAC |
Message authentication code |
1632 bytes |
|
Padding |
For block ciphers |
Variable |
|
Alert Level |
Warning or fatal |
1 byte |
|
Alert Description |
Reason for alert |
1 byte |
|
Renegotiation Info |
Extension for secure renegotiation |
Variable |
|
ALPN Protocol |
Application Layer Protocol Negotiation |
Variable |
|
SNI |
Server Name Indication |
Variable |
|
OCSP Stapling |
Certificate status info |
Variable |
|
Key Exchange Algorithm |
E.g., RSA, ECDHE |
Variable |
|
Signature Algorithm |
E.g., SHA256 with RSA |
Variable |
|
Elliptic Curve |
Used in ECDHE |
Variable |
|
DH Parameters |
For Diffie-Hellman |
Variable |
|
Session Ticket |
For session resumption |
Variable |
|
PSK Identity |
Pre-shared key identity |
Variable |
|
Heartbeat Extension |
For keep-alive |
Variable |
|
Record MAC |
MAC for each record |
1632 bytes |
|
Record IV |
Initialization vector |
16 bytes |
|
Record Sequence Number |
For replay protection |
8 bytes |
|
TLS Handshake Type |
Type of handshake message |
1 byte |
|
Handshake Length |
Length of handshake message |
3 bytes |
|
Handshake Message |
Actual handshake data |
Variable |
|
TLS Session Cache |
Cached session info |
Variable |
|
TLS Session Resumption |
Mechanism for reusing sessions |
Variable |
|
TLS Ticket Lifetime |
Validity of session ticket |
4 bytes |
|
TLS Ticket Age |
Age of session ticket |
4 bytes |
|
TLS Ticket Nonce |
Random nonce |
816 bytes |
|
TLS Ticket |
Encrypted session state |
Variable |
|
PBSZ
2 |
PBSZ |
Protection buffer size negotiation |
~4060 |
---|---|---|---|
Command |
The PBSZ command |
PBSZ (4 bytes) |
|
Parameter |
Buffer size value (usually 0) |
14 bytes |
|
Response Code |
Server response (e.g., 200) |
3 bytes |
|
Response Message |
Human-readable message |
~30100 bytes |
|
TLS Version |
TLS version in use |
2 bytes |
|
Session ID |
TLS session identifier |
32 bytes |
|
Client IP |
IP address of client |
416 bytes |
|
Server IP |
IP address of server |
416 bytes |
|
Client Port |
Port used by client |
2 bytes |
|
Server Port |
Port used by server |
2 bytes |
|
Data Channel Type |
Type of data channel (e.g., TLS) |
Variable |
|
Protection Level |
Level of protection (e.g., Clear, Safe) |
1 byte |
|
Negotiated Buffer Size |
Agreed buffer size (usually 0) |
4 bytes |
|
TLS Record Size |
Size of TLS record |
Variable |
|
TLS Fragment Size |
Fragmentation size for TLS |
Variable |
|
TLS MAC Size |
Size of MAC in TLS record |
1632 bytes |
|
TLS Padding Size |
Padding for block ciphers |
Variable |
|
TLS Header Size |
Header for TLS record |
5 bytes |
|
TLS Footer Size |
Footer (MAC + padding) |
Variable |
|
Data Channel Encryption |
Whether encryption is enabled |
1 byte |
|
Data Channel Integrity |
Whether integrity is enforced |
1 byte |
|
Session Resumption |
Whether session is resumed |
1 byte |
|
Session Ticket |
TLS session ticket |
Variable |
|
TLS Alert Code |
Alert if negotiation fails |
1 byte |
|
TLS Alert Description |
Reason for alert |
1 byte |
|
TLS Handshake Status |
Status of handshake |
1 byte |
|
TLS Cipher Suite |
Cipher used for encryption |
2 bytes |
|
TLS Compression |
Compression method |
1 byte |
|
TLS Extension Count |
Number of TLS extensions |
1 byte |
|
TLS Extension Type |
Type of extension (e.g., ALPN) |
2 bytes |
|
TLS Extension Length |
Length of extension data |
2 bytes |
|
TLS Extension Data |
Actual extension data |
Variable |
|
ClientHello Random |
Random value from client |
32 bytes |
|
ServerHello Random |
Random value from server |
32 bytes |
|
Handshake Hash |
Hash of handshake messages |
3264 bytes |
|
TLS Session Cache |
Cached session info |
Variable |
|
TLS Key Material |
Derived keys for encryption |
Variable |
|
TLS MAC Key |
Key for message authentication |
Variable |
|
TLS IV |
Initialization vector |
16 bytes |
|
TLS Sequence Number |
For replay protection |
8 bytes |
|
TLS Finished Message |
Final handshake message |
~64 bytes |
|
TLS Alert Level |
Warning or fatal |
1 byte |
|
TLS Alert Description |
Description of alert |
1 byte |
|
PBSZ Negotiation Status |
Success or failure |
1 byte |
|
PBSZ Max Buffer Size |
Max buffer size supported |
4 bytes |
|
PBSZ Effective Size |
Actual buffer size used |
4 bytes |
|
PBSZ Negotiation Timestamp |
Time of negotiation |
8 bytes |
|
PBSZ Negotiation Log |
Log entry for audit |
Variable |
|
PBSZ Error Code |
Error code if failed |
2 bytes |
|
PBSZ Error Message |
Description of error |
Variable |
|
PBSZ Retry Count |
Number of retries |
1 byte |
|
PBSZ Retry Delay |
Delay between retries |
2 bytes |
|
PBSZ Session ID |
Unique session identifier |
32 bytes |
|
PBSZ Command Length |
Length of PBSZ command |
2 bytes |
|
PBSZ Command Timestamp |
Time command was issued |
8 bytes |
|
PROT
3 |
PROT |
Sets data channel protection level |
~4060 |
---|---|---|---|
Command |
The PROT command |
PROT (4 bytes) |
|
Parameter |
Protection level (C, S, E, P) |
1 byte |
|
Response Code |
Server response (e.g., 200) |
3 bytes |
|
Response Message |
Human-readable message |
~30100 bytes |
|
TLS Version |
TLS version in use |
2 bytes |
|
Session ID |
TLS session identifier |
32 bytes |
|
Client IP |
IP address of client |
416 bytes |
|
Server IP |
IP address of server |
416 bytes |
|
Client Port |
Port used by client |
2 bytes |
|
Server Port |
Port used by server |
2 bytes |
|
Data Channel Type |
Type of data channel (e.g., TLS, clear) |
Variable |
|
Protection Level |
Negotiated level (C, S, E, P) |
1 byte |
|
TLS Record Size |
Size of TLS record |
Variable |
|
TLS Fragment Size |
Fragmentation size for TLS |
Variable |
|
TLS MAC Size |
Size of MAC in TLS record |
1632 bytes |
|
TLS Padding Size |
Padding for block ciphers |
Variable |
|
TLS Header Size |
Header for TLS record |
5 bytes |
|
TLS Footer Size |
Footer (MAC + padding) |
Variable |
|
Data Channel Encryption |
Whether encryption is enabled |
1 byte |
|
Data Channel Integrity |
Whether integrity is enforced |
1 byte |
|
Session Resumption |
Whether session is resumed |
1 byte |
|
Session Ticket |
TLS session ticket |
Variable |
|
TLS Alert Code |
Alert if negotiation fails |
1 byte |
|
TLS Alert Description |
Reason for alert |
1 byte |
|
TLS Cipher Suite |
Cipher used for encryption |
2 bytes |
|
TLS Compression |
Compression method |
1 byte |
|
TLS Extension Count |
Number of TLS extensions |
1 byte |
|
TLS Extension Type |
Type of extension (e.g., ALPN) |
2 bytes |
|
TLS Extension Length |
Length of extension data |
2 bytes |
|
TLS Extension Data |
Actual extension data |
Variable |
|
ClientHello Random |
Random value from client |
32 bytes |
|
ServerHello Random |
Random value from server |
32 bytes |
|
Handshake Hash |
Hash of handshake messages |
3264 bytes |
|
TLS Session Cache |
Cached session info |
Variable |
|
TLS Key Material |
Derived keys for encryption |
Variable |
|
TLS MAC Key |
Key for message authentication |
Variable |
|
TLS IV |
Initialization vector |
16 bytes |
|
TLS Sequence Number |
For replay protection |
8 bytes |
|
TLS Finished Message |
Final handshake message |
~64 bytes |
|
TLS Alert Level |
Warning or fatal |
1 byte |
|
TLS Alert Description |
Description of alert |
1 byte |
|
PROT Negotiation Status |
Success or failure |
1 byte |
|
PROT Command Timestamp |
Time command was issued |
8 bytes |
|
PROT Negotiation Timestamp |
Time of negotiation |
8 bytes |
|
PROT Negotiation Log |
Log entry for audit |
Variable |
|
PROT Error Code |
Error code if failed |
2 bytes |
|
PROT Error Message |
Description of error |
Variable |
|
PROT Retry Count |
Number of retries |
1 byte |
|
PROT Retry Delay |
Delay between retries |
2 bytes |
|
PROT Session ID |
Unique session identifier |
32 bytes |
|
PROT Command Length |
Length of PROT command |
2 bytes |
|
USER
4 |
USER |
Sends username for authentication |
~4080 |
---|---|---|---|
Command |
The FTP command |
USER (4 bytes) |
|
Username |
The username being sent |
Variable (164 bytes) |
|
Command Length |
Total length of the command |
570 bytes |
|
Response Code |
Server response (e.g., 331) |
3 bytes |
|
Response Message |
Human-readable message |
~30100 bytes |
|
Client IP |
IP address of client |
416 bytes |
|
Server IP |
IP address of server |
416 bytes |
|
Client Port |
Port used by client |
2 bytes |
|
Server Port |
Port used by server |
2 bytes |
|
Session ID |
Unique session identifier |
32 bytes |
|
Timestamp |
Time of command |
8 bytes |
|
Authentication Status |
Pending, success, or failure |
1 byte |
|
Login Attempts |
Number of login attempts |
1 byte |
|
Max Login Attempts |
Allowed attempts before lockout |
1 byte |
|
User Exists |
Whether the user exists |
1 byte |
|
User Account Status |
Active, locked, expired |
1 byte |
|
User Role |
Role (admin, guest, etc.) |
Variable |
|
User Group |
Group membership |
Variable |
|
User Home Directory |
Default directory after login |
Variable |
|
User Shell |
Shell assigned (if applicable) |
Variable |
|
User Quota |
Storage quota assigned |
Variable |
|
User Quota Used |
Storage used |
Variable |
|
User Last Login |
Timestamp of last login |
8 bytes |
|
User Login History |
Log of past logins |
Variable |
|
User Auth Method |
Password, key, etc. |
Variable |
|
User Auth Source |
Local, LDAP, etc. |
Variable |
|
User Lockout Status |
Locked or unlocked |
1 byte |
|
User Lockout Reason |
Reason for lockout |
Variable |
|
User Lockout Time |
Time of lockout |
8 bytes |
|
User Password Expiry |
Time until password expires |
8 bytes |
|
User Password Last Set |
Timestamp of last password change |
8 bytes |
|
User Password Policy |
Complexity rules |
Variable |
|
User MFA Enabled |
Multi-factor authentication status |
1 byte |
|
User MFA Method |
TOTP, SMS, etc. |
Variable |
|
User Timezone |
Timezone setting |
Variable |
|
User IP Restrictions |
Allowed IPs |
Variable |
|
User Agent |
Client software info |
Variable |
|
User Device Info |
Device fingerprint |
Variable |
|
User Login Token |
Temporary login token |
Variable |
|
User Login Signature |
Digital signature (if used) |
Variable |
|
User Login Certificate |
Certificate (if used) |
Variable |
|
User Login Attempt Timestamp |
Time of attempt |
8 bytes |
|
User Login Attempt Result |
Success or failure |
1 byte |
|
User Login Attempt Source |
IP or device info |
Variable |
|
User Login Attempt Log |
Log entry |
Variable |
|
User Session Key |
Key for session encryption |
Variable |
|
User Session State |
Active, idle, closed |
1 byte |
|
User Session Duration |
Time since login |
4 bytes |
|
User Session Activity |
Last activity timestamp |
8 bytes |
|
PASS
5 |
PASS |
Sends password for authentication |
~4080 |
---|---|---|---|
Command |
The FTP command |
PASS (4 bytes) |
|
Password |
The password being sent |
Variable (864 bytes) |
|
Command Length |
Total length of the command |
1070 bytes |
|
Response Code |
Server response (e.g., 230, 530) |
3 bytes |
|
Response Message |
Human-readable message |
~30100 bytes |
|
Client IP |
IP address of client |
416 bytes |
|
Server IP |
IP address of server |
416 bytes |
|
Client Port |
Port used by client |
2 bytes |
|
Server Port |
Port used by server |
2 bytes |
|
Session ID |
Unique session identifier |
32 bytes |
|
Timestamp |
Time of command |
8 bytes |
|
Authentication Status |
Success or failure |
1 byte |
|
Login Attempts |
Number of login attempts |
1 byte |
|
Max Login Attempts |
Allowed attempts before lockout |
1 byte |
|
Password Validity |
Whether password is valid |
1 byte |
|
Password Expiry |
Time until password expires |
8 bytes |
|
Password Last Set |
Timestamp of last password change |
8 bytes |
|
Password Policy |
Complexity rules |
Variable |
|
Password Hash |
Hashed version of password |
3264 bytes |
|
Password Salt |
Salt used in hashing |
1632 bytes |
|
Password Encryption |
Encryption method used |
Variable |
|
Password Auth Method |
Plain, hashed, certificate, etc. |
Variable |
|
User Account Status |
Active, locked, expired |
1 byte |
|
User Role |
Role (admin, guest, etc.) |
Variable |
|
User Group |
Group membership |
Variable |
|
User MFA Enabled |
Multi-factor authentication status |
1 byte |
|
User MFA Method |
TOTP, SMS, etc. |
Variable |
|
User Lockout Status |
Locked or unlocked |
1 byte |
|
User Lockout Reason |
Reason for lockout |
Variable |
|
User Lockout Time |
Time of lockout |
8 bytes |
|
User Session Timeout |
Timeout duration |
4 bytes |
|
User Locale |
Language/region settings |
Variable |
|
User Timezone |
Timezone setting |
Variable |
|
User IP Restrictions |
Allowed IPs |
Variable |
|
User Agent |
Client software info |
Variable |
|
User Device Info |
Device fingerprint |
Variable |
|
Login Token |
Temporary login token |
Variable |
|
Login Signature |
Digital signature (if used) |
Variable |
|
Login Certificate |
Certificate (if used) |
Variable |
|
Login Attempt Timestamp |
Time of attempt |
8 bytes |
|
Login Attempt Result |
Success or failure |
1 byte |
|
Login Attempt Source |
IP or device info |
Variable |
|
Login Attempt Log |
Log entry |
Variable |
|
Session Key |
Key for session encryption |
Variable |
|
Session State |
Active, idle, closed |
1 byte |
|
Session Duration |
Time since login |
4 bytes |
|
Session Activity |
Last activity timestamp |
8 bytes |
|
TLS Encryption Used |
Whether TLS was used |
1 byte |
|
TLS Cipher Suite |
Cipher used for encryption |
2 bytes |
|
TLS Session ID |
TLS session identifier |
32 bytes |
|
TLS Alert Code |
Alert if authentication fails |
1 byte |
|
TLS Alert Description |
Reason for alert |
1 byte |
|
LIST
6 |
LIST |
Requests directory listing |
~40100 |
---|---|---|---|
Command |
The FTP command |
LIST (4 bytes) |
|
Command Argument |
Optional path or pattern |
Variable (0256 bytes) |
|
Command Length |
Total length of the command |
4260 bytes |
|
Response Code |
Server response (e.g., 150, 226) |
3 bytes |
|
Response Message |
Human-readable message |
~30100 bytes |
|
Client IP |
IP address of client |
416 bytes |
|
Server IP |
IP address of server |
416 bytes |
|
Client Port |
Port used by client |
2 bytes |
|
Server Port |
Port used by server |
2 bytes |
|
Session ID |
Unique session identifier |
32 bytes |
|
Timestamp |
Time of command |
8 bytes |
|
Data Channel Type |
Clear or encrypted |
1 byte |
|
Data Channel Port |
Port used for data transfer |
2 bytes |
|
Data Channel Encryption |
Whether encryption is enabled |
1 byte |
|
Data Channel Cipher |
Cipher used if encrypted |
Variable |
|
Data Channel Status |
Open, closed, error |
1 byte |
|
Transfer Mode |
ASCII or binary |
1 byte |
|
Transfer Direction |
Upload or download |
1 byte |
|
Transfer Status |
Success or failure |
1 byte |
|
Transfer Start Time |
Timestamp |
8 bytes |
|
Transfer End Time |
Timestamp |
8 bytes |
|
Transfer Duration |
Time taken |
4 bytes |
|
Transfer Size |
Total bytes transferred |
48 bytes |
|
Directory Path |
Path being listed |
Variable |
|
File Count |
Number of files listed |
24 bytes |
|
File Name |
Name of file or directory |
Variable |
|
File Type |
File or directory |
1 byte |
|
File Size |
Size in bytes |
48 bytes |
|
File Permissions |
Unix-style permissions |
10 bytes |
|
File Owner |
Owner name or ID |
Variable |
|
File Group |
Group name or ID |
Variable |
|
File Timestamp |
Last modified time |
8 bytes |
|
File Creation Time |
Creation time (if available) |
8 bytes |
|
File Access Time |
Last access time |
8 bytes |
|
File Extension |
File type extension |
Variable |
|
File Hidden |
Whether file is hidden |
1 byte |
|
File Symlink |
Whether file is a symlink |
1 byte |
|
File Symlink Target |
Target of symlink |
Variable |
|
File Checksum |
Optional checksum (e.g., MD5) |
1632 bytes |
|
File Encoding |
Character encoding used |
Variable |
|
File Locale |
Locale of file metadata |
Variable |
|
Directory Listing Format |
Unix, DOS, MLSD, etc. |
Variable |
|
Listing Charset |
Charset used in listing |
Variable |
|
Listing Line Count |
Number of lines in listing |
24 bytes |
|
Listing Line Length |
Average line length |
24 bytes |
|
Listing Total Size |
Total size of listing data |
48 bytes |
|
Listing Compression |
Whether compressed |
1 byte |
|
Listing Compression Type |
GZIP, ZIP, etc. |
Variable |
|
Listing Transfer Encoding |
ASCII, UTF-8, etc. |
Variable |
|
Listing Transfer Chunk Size |
Size of each chunk |
24 bytes |
|
Listing Transfer Retry Count |
Retries if failed |
1 byte |
|
Listing Transfer Retry Delay |
Delay between retries |
2 bytes |
|
Listing Transfer Log |
Log entry for audit |
Variable |
|
TLS Session ID |
If encrypted |
32 bytes |
|
TLS Cipher Suite |
Cipher used |
2 bytes |
|
TLS Alert Code |
If error occurs |
1 byte |
|
TLS Alert Description |
Description of alert |
Variable |
|
RETR
7 |
RETR |
Requests file download |
~40100 |
---|---|---|---|
Command |
The FTP command |
RETR (4 bytes) |
|
Command Argument |
Path to the file to retrieve |
Variable (1256 bytes) |
|
Command Length |
Total length of the command |
5260 bytes |
|
Response Code |
Server response (e.g., 150, 226, 550) |
3 bytes |
|
Response Message |
Human-readable message |
~30100 bytes |
|
Client IP |
IP address of client |
416 bytes |
|
Server IP |
IP address of server |
416 bytes |
|
Client Port |
Port used by client |
2 bytes |
|
Server Port |
Port used by server |
2 bytes |
|
Session ID |
Unique session identifier |
32 bytes |
|
Timestamp |
Time of command |
8 bytes |
|
Data Channel Type |
Clear or encrypted |
1 byte |
|
Data Channel Port |
Port used for data transfer |
2 bytes |
|
Data Channel Encryption |
Whether encryption is enabled |
1 byte |
|
Data Channel Cipher |
Cipher used if encrypted |
Variable |
|
Data Channel Status |
Open, closed, error |
1 byte |
|
Transfer Mode |
ASCII or binary |
1 byte |
|
Transfer Direction |
Download |
1 byte |
|
Transfer Status |
Success or failure |
1 byte |
|
Transfer Start Time |
Timestamp |
8 bytes |
|
Transfer End Time |
Timestamp |
8 bytes |
|
Transfer Duration |
Time taken |
4 bytes |
|
Transfer Size |
Total bytes transferred |
48 bytes |
|
File Path |
Full path of the file |
Variable |
|
File Name |
Name of the file |
Variable |
|
File Extension |
File type extension |
Variable |
|
File Size |
Size in bytes |
48 bytes |
|
File Type |
Regular file, symlink, etc. |
1 byte |
|
File Permissions |
Unix-style permissions |
10 bytes |
|
File Owner |
Owner name or ID |
Variable |
|
File Group |
Group name or ID |
Variable |
|
File Timestamp |
Last modified time |
8 bytes |
|
File Creation Time |
Creation time (if available) |
8 bytes |
|
File Access Time |
Last access time |
8 bytes |
|
File Checksum |
Optional checksum (e.g., MD5) |
1632 bytes |
|
File Encoding |
Character encoding used |
Variable |
|
File Locale |
Locale of file metadata |
Variable |
|
File Compression |
Whether compressed |
1 byte |
|
File Compression Type |
GZIP, ZIP, etc. |
Variable |
|
File Transfer Chunk Size |
Size of each chunk |
24 bytes |
|
File Transfer Retry Count |
Retries if failed |
1 byte |
|
File Transfer Retry Delay |
Delay between retries |
2 bytes |
|
File Transfer Log |
Log entry for audit |
Variable |
|
TLS Session ID |
If encrypted |
32 bytes |
|
TLS Cipher Suite |
Cipher used |
2 bytes |
|
TLS Alert Code |
If error occurs |
1 byte |
|
TLS Alert Description |
Description of alert |
Variable |
|
Resume Offset |
Byte offset for resuming download |
48 bytes |
|
Bandwidth Limit |
Throttle limit (if applied) |
4 bytes |
|
Client User Agent |
Client software info |
Variable |
|
Client Device Info |
Device fingerprint |
Variable |
|
Client Authentication Status |
Authenticated or not |
1 byte |
|
Client Session Timeout |
Timeout duration |
4 bytes |
|
Client Locale |
Language/region settings |
Variable |
|
Client Timezone |
Timezone setting |
Variable |
|
Client IP Restrictions |
Allowed IPs |
Variable |
|
STOR
8 |
STOR |
Requests file upload |
~40100 |
---|---|---|---|
Command |
The FTP command |
STOR (4 bytes) |
|
Command Argument |
Path or name of the file to upload |
Variable (1256 bytes) |
|
Command Length |
Total length of the command |
5260 bytes |
|
Response Code |
Server response (e.g., 150, 226, 553) |
3 bytes |
|
Response Message |
Human-readable message |
~30100 bytes |
|
Client IP |
IP address of client |
416 bytes |
|
Server IP |
IP address of server |
416 bytes |
|
Client Port |
Port used by client |
2 bytes |
|
Server Port |
Port used by server |
2 bytes |
|
Session ID |
Unique session identifier |
32 bytes |
|
Timestamp |
Time of command |
8 bytes |
|
Data Channel Type |
Clear or encrypted |
1 byte |
|
Data Channel Port |
Port used for data transfer |
2 bytes |
|
Data Channel Encryption |
Whether encryption is enabled |
1 byte |
|
Data Channel Cipher |
Cipher used if encrypted |
Variable |
|
Data Channel Status |
Open, closed, error |
1 byte |
|
Transfer Mode |
ASCII or binary |
1 byte |
|
Transfer Direction |
Upload |
1 byte |
|
Transfer Status |
Success or failure |
1 byte |
|
Transfer Start Time |
Timestamp |
8 bytes |
|
Transfer End Time |
Timestamp |
8 bytes |
|
Transfer Duration |
Time taken |
4 bytes |
|
Transfer Size |
Total bytes transferred |
48 bytes |
|
File Path |
Full path of the file |
Variable |
|
File Name |
Name of the file |
Variable |
|
File Extension |
File type extension |
Variable |
|
File Size |
Size in bytes |
48 bytes |
|
File Type |
Regular file, symlink, etc. |
1 byte |
|
File Permissions |
Unix-style permissions |
10 bytes |
|
File Owner |
Owner name or ID |
Variable |
|
File Group |
Group name or ID |
Variable |
|
File Timestamp |
Last modified time |
8 bytes |
|
File Creation Time |
Creation time (if available) |
8 bytes |
|
File Access Time |
Last access time |
8 bytes |
|
File Checksum |
Optional checksum (e.g., MD5) |
1632 bytes |
|
File Encoding |
Character encoding used |
Variable |
|
File Locale |
Locale of file metadata |
Variable |
|
File Compression |
Whether compressed |
1 byte |
|
File Compression Type |
GZIP, ZIP, etc. |
Variable |
|
File Transfer Chunk Size |
Size of each chunk |
24 bytes |
|
File Transfer Retry Count |
Retries if failed |
1 byte |
|
File Transfer Retry Delay |
Delay between retries |
2 bytes |
|
File Transfer Log |
Log entry for audit |
Variable |
|
TLS Session ID |
If encrypted |
32 bytes |
|
TLS Cipher Suite |
Cipher used |
2 bytes |
|
TLS Alert Code |
If error occurs |
1 byte |
|
TLS Alert Description |
Description of alert |
Variable |
|
Resume Offset |
Byte offset for resuming upload |
48 bytes |
|
Bandwidth Limit |
Throttle limit (if applied) |
4 bytes |
|
Client User Agent |
Client software info |
Variable |
|
Client Device Info |
Device fingerprint |
Variable |
|
Client Authentication Status |
Authenticated or not |
1 byte |
|
Client Session Timeout |
Timeout duration |
4 bytes |
|
Client Locale |
Language/region settings |
Variable |
|
Client Timezone |
Timezone setting |
Variable |
|
Client IP Restrictions |
Allowed IPs |
Variable |
|
QUIT
9 |
QUIT |
Terminates the session |
~4060 |
---|---|---|---|
Command |
The FTP command |
QUIT (4 bytes) |
|
Command Length |
Total length of the command |
4 bytes |
|
Response Code |
Server response (e.g., 221) |
3 bytes |
|
Response Message |
Human-readable message |
~30100 bytes |
|
Client IP |
IP address of client |
416 bytes |
|
Server IP |
IP address of server |
416 bytes |
|
Client Port |
Port used by client |
2 bytes |
|
Server Port |
Port used by server |
2 bytes |
|
Session ID |
Unique session identifier |
32 bytes |
|
Session Start Time |
When the session began |
8 bytes |
|
Session End Time |
When the session ended |
8 bytes |
|
Session Duration |
Total session time |
4 bytes |
|
Session State |
Active, closed, timed out |
1 byte |
|
User Authenticated |
Whether user was authenticated |
1 byte |
|
User Name |
Username used in session |
Variable |
|
User Role |
Role (admin, guest, etc.) |
Variable |
|
User Group |
Group membership |
Variable |
|
User Locale |
Language/region settings |
Variable |
|
User Timezone |
Timezone setting |
Variable |
|
TLS Session ID |
If encrypted |
32 bytes |
|
TLS Cipher Suite |
Cipher used |
2 bytes |
|
TLS Alert Code |
If error occurs |
1 byte |
|
TLS Alert Description |
Description of alert |
Variable |
|
Data Channel Status |
Open, closed, error |
1 byte |
|
Data Channel Encryption |
Whether encryption was used |
1 byte |
|
Data Channel Port |
Port used for data transfer |
2 bytes |
|
Transfer Count |
Number of transfers in session |
2 bytes |
|
Total Bytes Sent |
Bytes sent to server |
48 bytes |
|
Total Bytes Received |
Bytes received from server |
48 bytes |
|
Last Command |
Last command before QUIT |
Variable |
|
Last Command Timestamp |
Time of last command |
8 bytes |
|
Error Count |
Number of errors in session |
2 bytes |
|
Warning Count |
Number of warnings |
2 bytes |
|
Session Termination Reason |
Normal, timeout, error |
Variable |
|
Session Termination Log |
Log entry for audit |
Variable |
|
Client Software |
FTP client name/version |
Variable |
|
Client OS |
Operating system info |
Variable |
|
Client Device Info |
Device fingerprint |
Variable |
|
Server Software |
FTP server name/version |
Variable |
|
Server OS |
Operating system info |
Variable |
|
Server Uptime |
Uptime at session end |
48 bytes |
|
Server Load |
Load at session end |
Variable |
|
Log File Entry |
Entry in server logs |
Variable |
|
sno |
Use Case |
Description |
---|---|---|
1 |
Secure File Transfers |
FTPS is used to securely transfer files between clients and servers using TLS encryption. |
2 |
Enterprise Data Exchange |
Common in corporate environments for exchanging sensitive documents like financial reports, HR data, etc. |
3 |
Automated Backup Systems |
Used in automated scripts or software to securely back up data to remote servers. |
4 |
Healthcare Data Compliance |
Supports HIPAA-compliant data transfers in healthcare systems. |
5 |
Government File Submissions |
Used by government agencies to securely collect or distribute official documents. |
6 |
E-commerce Transactions |
Transfers order data, invoices, and customer information securely between systems. |
7 |
Cross-Platform File Sharing |
Enables secure file sharing between different operating systems and platforms. |
8 |
Secure Software Updates |
Distributes software patches and updates securely to clients or partners. |
Basic Features |
||
---|---|---|
sno |
Feature |
Description |
1 |
TLS/SSL Encryption |
Provides secure communication by encrypting both command and data channels. |
2 |
Authentication Support |
Supports username/password and certificate-based authentication. |
3 |
Explicit & Implicit Modes |
Offers two connection modes: Explicit (AUTH TLS) and Implicit (dedicated port). |
4 |
Data Integrity |
Ensures data is not altered during transmission using cryptographic checks. |
5 |
Firewall-Friendly |
Explicit FTPS can be configured to work with firewalls and NAT. |
6 |
Backward Compatibility |
Can fall back to standard FTP if encryption is not required. |
7 |
Granular Access Control |
Allows fine-grained permissions for users and directories. |
8 |
Logging and Auditing |
Supports detailed logging for compliance and troubleshooting. |
TLS/SSL Encryption - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
TLS/SSL Encryption Test 1 |
Verify TLS handshake with valid certificate |
Secure FTPS connection established |
2 |
TLS/SSL Encryption Test 2 |
Verify TLS handshake with expired certificate |
Connection rejected due to certificate expiration |
3 |
TLS/SSL Encryption Test 3 |
Verify TLS handshake with self-signed certificate |
Connection rejected or warning shown based on client settings |
4 |
TLS/SSL Encryption Test 4 |
Verify TLS handshake with revoked certificate |
Connection rejected due to certificate revocation |
5 |
TLS/SSL Encryption Test 5 |
Verify TLS 1.2 support |
FTPS connection established using TLS 1.2 |
6 |
TLS/SSL Encryption Test 6 |
Verify TLS 1.3 support |
FTPS connection established using TLS 1.3 |
7 |
TLS/SSL Encryption Test 7 |
Verify SSLv3 rejection |
Connection rejected due to insecure protocol |
8 |
TLS/SSL Encryption Test 8 |
Verify cipher suite negotiation |
Strong cipher suite selected and used |
9 |
TLS/SSL Encryption Test 9 |
Verify weak cipher suite rejection |
Connection rejected due to weak cipher |
10 |
TLS/SSL Encryption Test 10 |
Verify encrypted data transfer |
Data is encrypted during transfer |
11 |
TLS/SSL Encryption Test 11 |
Verify encrypted command channel |
Commands are encrypted and not visible in plaintext |
12 |
TLS/SSL Encryption Test 12 |
Verify encrypted data channel |
Data channel is encrypted |
13 |
TLS/SSL Encryption Test 13 |
Verify client certificate authentication |
Client authenticated using certificate |
14 |
TLS/SSL Encryption Test 14 |
Verify server certificate validation |
Server certificate validated successfully |
15 |
TLS/SSL Encryption Test 15 |
Verify certificate chain validation |
Full certificate chain validated |
16 |
TLS/SSL Encryption Test 16 |
Verify hostname matches certificate |
Hostname matches certificate CN/SAN |
17 |
TLS/SSL Encryption Test 17 |
Verify session reuse |
TLS session reused for performance |
18 |
TLS/SSL Encryption Test 18 |
Verify session timeout |
TLS session expires after timeout |
19 |
TLS/SSL Encryption Test 19 |
Verify renegotiation support |
TLS renegotiation handled securely |
20 |
TLS/SSL Encryption Test 20 |
Verify connection with large file transfer |
Large file transferred securely |
21 |
TLS/SSL Encryption Test 21 |
Verify connection under high latency |
FTPS connection remains stable |
22 |
TLS/SSL Encryption Test 22 |
Verify connection under packet loss |
FTPS connection retries or fails gracefully |
23 |
TLS/SSL Encryption Test 23 |
Verify connection with firewall |
FTPS connection established through firewall |
24 |
TLS/SSL Encryption Test 24 |
Verify connection with NAT |
FTPS connection established through NAT |
25 |
TLS/SSL Encryption Test 25 |
Verify explicit FTPS mode |
AUTH TLS command initiates secure session |
26 |
TLS/SSL Encryption Test 26 |
Verify implicit FTPS mode |
Connection starts on port 990 with encryption |
27 |
TLS/SSL Encryption Test 27 |
Verify fallback to plain FTP disabled |
Plain FTP connection rejected |
28 |
TLS/SSL Encryption Test 28 |
Verify logging of encrypted session |
Session logged without exposing sensitive data |
29 |
TLS/SSL Encryption Test 29 |
Verify encryption of file metadata |
File names and paths encrypted |
30 |
TLS/SSL Encryption Test 30 |
Verify encryption of file contents |
File contents encrypted during transfer |
31 |
TLS/SSL Encryption Test 31 |
Verify encryption with multiple clients |
Multiple clients connect securely |
32 |
TLS/SSL Encryption Test 32 |
Verify encryption with concurrent transfers |
Concurrent transfers maintain encryption |
33 |
TLS/SSL Encryption Test 33 |
Verify encryption with interrupted session |
Session resumes or fails securely |
34 |
TLS/SSL Encryption Test 34 |
Verify encryption with resumed session |
Resumed session maintains encryption |
35 |
TLS/SSL Encryption Test 35 |
Verify encryption with passive mode |
Passive mode connection encrypted |
36 |
TLS/SSL Encryption Test 36 |
Verify encryption with active mode |
Active mode connection encrypted |
37 |
TLS/SSL Encryption Test 37 |
Verify encryption with IPv6 |
FTPS over IPv6 works securely |
38 |
TLS/SSL Encryption Test 38 |
Verify encryption with IPv4 |
FTPS over IPv4 works securely |
39 |
TLS/SSL Encryption Test 39 |
Verify encryption with proxy |
FTPS connection through proxy is secure |
40 |
TLS/SSL Encryption Test 40 |
Verify encryption with antivirus scanning |
File scanned without breaking encryption |
41 |
TLS/SSL Encryption Test 41 |
Verify encryption with intrusion detection system |
IDS detects no plaintext data |
42 |
TLS/SSL Encryption Test 42 |
Verify encryption with load balancer |
Load balancer handles encrypted sessions |
43 |
TLS/SSL Encryption Test 43 |
Verify encryption with certificate rotation |
New certificate accepted and validated |
44 |
TLS/SSL Encryption Test 44 |
Verify encryption with expired session |
Expired session rejected |
45 |
TLS/SSL Encryption Test 45 |
Verify encryption with revoked session |
Revoked session rejected |
46 |
TLS/SSL Encryption Test 46 |
Verify encryption with invalid certificate format |
Connection rejected due to invalid certificate |
47 |
TLS/SSL Encryption Test 47 |
Verify encryption with missing certificate |
Connection rejected due to missing certificate |
48 |
TLS/SSL Encryption Test 48 |
Verify encryption with certificate signed by unknown CA |
Connection rejected or warning shown |
49 |
TLS/SSL Encryption Test 49 |
Verify encryption with certificate signed by trusted CA |
Connection accepted and encrypted |
50 |
TLS/SSL Encryption Test 50 |
Verify encryption with TLS downgrade attack attempt |
Downgrade attempt detected and blocked |
Authentication Support - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Auth Test 1 |
Verify login with valid username and password |
Authentication successful |
2 |
Auth Test 2 |
Verify login with invalid username |
Authentication failed |
3 |
Auth Test 3 |
Verify login with invalid password |
Authentication failed |
4 |
Auth Test 4 |
Verify login with empty username |
Authentication failed |
5 |
Auth Test 5 |
Verify login with empty password |
Authentication failed |
6 |
Auth Test 6 |
Verify login with special characters in username |
Authentication successful or failed based on server config |
7 |
Auth Test 7 |
Verify login with special characters in password |
Authentication successful |
8 |
Auth Test 8 |
Verify login with long username |
Authentication successful |
9 |
Auth Test 9 |
Verify login with long password |
Authentication successful |
10 |
Auth Test 10 |
Verify login with expired credentials |
Authentication failed |
11 |
Auth Test 11 |
Verify login with locked account |
Authentication failed |
12 |
Auth Test 12 |
Verify login with disabled account |
Authentication failed |
13 |
Auth Test 13 |
Verify login with anonymous account |
Authentication failed |
14 |
Auth Test 14 |
Verify login with valid client certificate |
Authentication successful |
15 |
Auth Test 15 |
Verify login with invalid client certificate |
Authentication failed |
16 |
Auth Test 16 |
Verify login with expired client certificate |
Authentication failed |
17 |
Auth Test 17 |
Verify login with revoked client certificate |
Authentication failed |
18 |
Auth Test 18 |
Verify login with self-signed certificate |
Authentication failed or warning shown |
19 |
Auth Test 19 |
Verify login with certificate signed by trusted CA |
Authentication successful |
20 |
Auth Test 20 |
Verify login with certificate signed by unknown CA |
Authentication failed |
21 |
Auth Test 21 |
Verify login with mismatched certificate CN |
Authentication failed |
22 |
Auth Test 22 |
Verify login with certificate missing SAN |
Authentication failed |
23 |
Auth Test 23 |
Verify login with certificate chain validation |
Authentication successful |
24 |
Auth Test 24 |
Verify login with certificate containing unsupported key |
Authentication failed |
25 |
Auth Test 25 |
Verify login with certificate using RSA key |
Authentication successful |
26 |
Auth Test 26 |
Verify login with certificate using ECC key |
Authentication successful |
27 |
Auth Test 27 |
Verify login with certificate using DSA key |
Authentication failed |
28 |
Auth Test 28 |
Verify login with certificate using SHA-1 signature |
Authentication failed |
29 |
Auth Test 29 |
Verify login with certificate using SHA-256 signature |
Authentication successful |
30 |
Auth Test 30 |
Verify login with certificate using SHA-512 signature |
Authentication successful |
31 |
Auth Test 31 |
Verify login with certificate using TLS 1.2 |
Authentication successful |
32 |
Auth Test 32 |
Verify login with certificate using TLS 1.3 |
Authentication successful |
33 |
Auth Test 33 |
Verify login with certificate using SSLv3 |
Authentication failed |
34 |
Auth Test 34 |
Verify login with certificate using expired TLS session |
Authentication failed |
35 |
Auth Test 35 |
Verify login with certificate using resumed TLS session |
Authentication successful |
36 |
Auth Test 36 |
Verify login with certificate using renegotiated TLS session |
Authentication successful |
37 |
Auth Test 37 |
Verify login with certificate using mutual TLS |
Authentication successful |
38 |
Auth Test 38 |
Verify login with certificate using one-way TLS |
Authentication successful |
39 |
Auth Test 39 |
Verify login with certificate using revoked CA |
Authentication failed |
40 |
Auth Test 40 |
Verify login with certificate using intermediate CA |
Authentication successful |
41 |
Auth Test 41 |
Verify login with certificate using root CA only |
Authentication successful |
42 |
Auth Test 42 |
Verify login with certificate using incorrect key usage extension |
Authentication failed |
43 |
Auth Test 43 |
Verify login with certificate using correct key usage extension |
Authentication successful |
44 |
Auth Test 44 |
Verify login with certificate using OCSP validation |
Authentication successful |
45 |
Auth Test 45 |
Verify login with certificate using CRL validation |
Authentication successful |
46 |
Auth Test 46 |
Verify login with certificate using invalid CRL |
Authentication failed |
47 |
Auth Test 47 |
Verify login with certificate using invalid OCSP |
Authentication failed |
48 |
Auth Test 48 |
Verify login with certificate using valid SAN |
Authentication successful |
49 |
Auth Test 49 |
Verify login with certificate using invalid SAN |
Authentication failed |
50 |
Auth Test 50 |
Verify login with certificate using correct CN and SAN |
Authentication successful |
Explicit and Implicit Modes - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Mode Test 1 |
Verify connection using Explicit FTPS on port 21 |
Connection established after AUTH TLS |
2 |
Mode Test 2 |
Verify connection using Implicit FTPS on port 990 |
Connection established with immediate encryption |
3 |
Mode Test 3 |
Verify Explicit FTPS with AUTH TLS command |
AUTH TLS accepted and session encrypted |
4 |
Mode Test 4 |
Verify Implicit FTPS without AUTH command |
Connection encrypted from start |
5 |
Mode Test 5 |
Verify Explicit FTPS with invalid AUTH command |
Connection rejected |
6 |
Mode Test 6 |
Verify Implicit FTPS with invalid port |
Connection failed |
7 |
Mode Test 7 |
Verify Explicit FTPS with firewall |
Connection established through firewall |
8 |
Mode Test 8 |
Verify Implicit FTPS with firewall |
Connection established through firewall |
9 |
Mode Test 9 |
Verify Explicit FTPS with NAT |
Connection established through NAT |
10 |
Mode Test 10 |
Verify Implicit FTPS with NAT |
Connection established through NAT |
11 |
Mode Test 11 |
Verify Explicit FTPS with passive mode |
Passive mode works with encryption |
12 |
Mode Test 12 |
Verify Implicit FTPS with passive mode |
Passive mode works with encryption |
13 |
Mode Test 13 |
Verify Explicit FTPS with active mode |
Active mode works with encryption |
14 |
Mode Test 14 |
Verify Implicit FTPS with active mode |
Active mode works with encryption |
15 |
Mode Test 15 |
Verify Explicit FTPS with invalid certificate |
Connection rejected |
16 |
Mode Test 16 |
Verify Implicit FTPS with invalid certificate |
Connection rejected |
17 |
Mode Test 17 |
Verify Explicit FTPS with valid certificate |
Connection established securely |
18 |
Mode Test 18 |
Verify Implicit FTPS with valid certificate |
Connection established securely |
19 |
Mode Test 19 |
Verify Explicit FTPS with expired certificate |
Connection rejected |
20 |
Mode Test 20 |
Verify Implicit FTPS with expired certificate |
Connection rejected |
21 |
Mode Test 21 |
Verify Explicit FTPS with revoked certificate |
Connection rejected |
22 |
Mode Test 22 |
Verify Implicit FTPS with revoked certificate |
Connection rejected |
23 |
Mode Test 23 |
Verify Explicit FTPS with TLS 1.2 |
Connection established using TLS 1.2 |
24 |
Mode Test 24 |
Verify Implicit FTPS with TLS 1.2 |
Connection established using TLS 1.2 |
25 |
Mode Test 25 |
Verify Explicit FTPS with TLS 1.3 |
Connection established using TLS 1.3 |
26 |
Mode Test 26 |
Verify Implicit FTPS with TLS 1.3 |
Connection established using TLS 1.3 |
27 |
Mode Test 27 |
Verify Explicit FTPS with SSLv3 |
Connection rejected |
28 |
Mode Test 28 |
Verify Implicit FTPS with SSLv3 |
Connection rejected |
29 |
Mode Test 29 |
Verify Explicit FTPS with large file transfer |
File transferred securely |
30 |
Mode Test 30 |
Verify Implicit FTPS with large file transfer |
File transferred securely |
31 |
Mode Test 31 |
Verify Explicit FTPS with multiple clients |
All clients connect securely |
32 |
Mode Test 32 |
Verify Implicit FTPS with multiple clients |
All clients connect securely |
33 |
Mode Test 33 |
Verify Explicit FTPS with concurrent transfers |
Transfers handled securely |
34 |
Mode Test 34 |
Verify Implicit FTPS with concurrent transfers |
Transfers handled securely |
35 |
Mode Test 35 |
Verify Explicit FTPS with interrupted session |
Session resumes or fails securely |
36 |
Mode Test 36 |
Verify Implicit FTPS with interrupted session |
Session resumes or fails securely |
37 |
Mode Test 37 |
Verify Explicit FTPS with resumed session |
Session resumes securely |
38 |
Mode Test 38 |
Verify Implicit FTPS with resumed session |
Session resumes securely |
39 |
Mode Test 39 |
Verify Explicit FTPS with invalid AUTH sequence |
Connection rejected |
40 |
Mode Test 40 |
Verify Implicit FTPS with invalid handshake |
Connection rejected |
41 |
Mode Test 41 |
Verify Explicit FTPS with logging enabled |
Session logged without exposing sensitive data |
42 |
Mode Test 42 |
Verify Implicit FTPS with logging enabled |
Session logged without exposing sensitive data |
43 |
Mode Test 43 |
Verify Explicit FTPS with antivirus scanning |
File scanned without breaking encryption |
44 |
Mode Test 44 |
Verify Implicit FTPS with antivirus scanning |
File scanned without breaking encryption |
45 |
Mode Test 45 |
Verify Explicit FTPS with IDS |
No plaintext data detected |
46 |
Mode Test 46 |
Verify Implicit FTPS with IDS |
No plaintext data detected |
47 |
Mode Test 47 |
Verify Explicit FTPS with proxy |
Connection established securely through proxy |
48 |
Mode Test 48 |
Verify Implicit FTPS with proxy |
Connection established securely through proxy |
49 |
Mode Test 49 |
Verify Explicit FTPS with load balancer |
Load balancer handles encrypted sessions |
50 |
Mode Test 50 |
Verify Implicit FTPS with load balancer |
Load balancer handles encrypted sessions |
Data Integrity - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Integrity Test 1 |
Verify file checksum before and after transfer |
Checksums match |
2 |
Integrity Test 2 |
Verify file hash (SHA-256) before and after transfer |
Hashes match |
3 |
Integrity Test 3 |
Verify file content is not altered during transfer |
File content remains unchanged |
4 |
Integrity Test 4 |
Verify file size before and after transfer |
File sizes match |
5 |
Integrity Test 5 |
Verify transfer of binary file |
Binary file remains intact |
6 |
Integrity Test 6 |
Verify transfer of text file |
Text file content remains unchanged |
7 |
Integrity Test 7 |
Verify transfer of large file |
File integrity maintained |
8 |
Integrity Test 8 |
Verify transfer of compressed file |
File decompresses successfully |
9 |
Integrity Test 9 |
Verify transfer of encrypted file |
File decrypts successfully |
10 |
Integrity Test 10 |
Verify transfer of image file |
Image opens without corruption |
11 |
Integrity Test 11 |
Verify transfer of video file |
Video plays without corruption |
12 |
Integrity Test 12 |
Verify transfer of audio file |
Audio plays without corruption |
13 |
Integrity Test 13 |
Verify file integrity with TLS 1.2 |
File integrity maintained |
14 |
Integrity Test 14 |
Verify file integrity with TLS 1.3 |
File integrity maintained |
15 |
Integrity Test 15 |
Verify file integrity with interrupted session |
File resumes or fails securely |
16 |
Integrity Test 16 |
Verify file integrity with resumed session |
File resumes with integrity |
17 |
Integrity Test 17 |
Verify file integrity with concurrent transfers |
All files maintain integrity |
18 |
Integrity Test 18 |
Verify file integrity with multiple clients |
All clients receive unaltered files |
19 |
Integrity Test 19 |
Verify file integrity with passive mode |
File integrity maintained |
20 |
Integrity Test 20 |
Verify file integrity with active mode |
File integrity maintained |
21 |
Integrity Test 21 |
Verify file integrity with firewall |
File integrity maintained |
22 |
Integrity Test 22 |
Verify file integrity with NAT |
File integrity maintained |
23 |
Integrity Test 23 |
Verify file integrity with proxy |
File integrity maintained |
24 |
Integrity Test 24 |
Verify file integrity with antivirus scanning |
File scanned without corruption |
25 |
Integrity Test 25 |
Verify file integrity with IDS |
No tampering detected |
26 |
Integrity Test 26 |
Verify file integrity with load balancer |
File integrity maintained |
27 |
Integrity Test 27 |
Verify file integrity with high latency |
File integrity maintained |
28 |
Integrity Test 28 |
Verify file integrity with packet loss |
File integrity maintained or transfer fails gracefully |
29 |
Integrity Test 29 |
Verify file integrity with retry mechanism |
File integrity maintained after retry |
30 |
Integrity Test 30 |
Verify file integrity with checksum validation tool |
Tool confirms file integrity |
31 |
Integrity Test 31 |
Verify file integrity with hash mismatch |
Transfer flagged or rejected |
32 |
Integrity Test 32 |
Verify file integrity with corrupted file |
Corruption detected |
33 |
Integrity Test 33 |
Verify file integrity with tampered file |
Tampering detected |
34 |
Integrity Test 34 |
Verify file integrity with FTP fallback disabled |
No fallback to insecure FTP |
35 |
Integrity Test 35 |
Verify file integrity with TLS renegotiation |
File integrity maintained |
36 |
Integrity Test 36 |
Verify file integrity with session timeout |
File transfer fails or resumes securely |
37 |
Integrity Test 37 |
Verify file integrity with session reuse |
File integrity maintained |
38 |
Integrity Test 38 |
Verify file integrity with expired certificate |
Transfer rejected |
39 |
Integrity Test 39 |
Verify file integrity with revoked certificate |
Transfer rejected |
40 |
Integrity Test 40 |
Verify file integrity with valid certificate |
File integrity maintained |
41 |
Integrity Test 41 |
Verify file integrity with invalid certificate |
Transfer rejected |
42 |
Integrity Test 42 |
Verify file integrity with TLS downgrade attempt |
Downgrade blocked, integrity preserved |
43 |
Integrity Test 43 |
Verify file integrity with TLS session hijack attempt |
Session terminated, integrity preserved |
44 |
Integrity Test 44 |
Verify file integrity with man-in-the-middle attack |
Attack detected, transfer blocked |
45 |
Integrity Test 45 |
Verify file integrity with checksum logging |
Checksums logged and verified |
46 |
Integrity Test 46 |
Verify file integrity with hash logging |
Hashes logged and verified |
47 |
Integrity Test 47 |
Verify file integrity with file rename during transfer |
File integrity preserved or transfer fails |
48 |
Integrity Test 48 |
Verify file integrity with file deletion during transfer |
Transfer fails gracefully |
49 |
Integrity Test 49 |
Verify file integrity with file permission change during transfer |
Transfer fails or completes securely |
50 |
Integrity Test 50 |
Verify file integrity with simultaneous upload and download |
Both operations maintain file integrity |
Firewall-Friendly - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Firewall Test 1 |
Verify Explicit FTPS connection through firewall |
Connection established successfully |
2 |
Firewall Test 2 |
Verify Implicit FTPS connection through firewall |
Connection established successfully |
3 |
Firewall Test 3 |
Verify firewall allows port 21 for Explicit FTPS |
Port 21 accessible and connection succeeds |
4 |
Firewall Test 4 |
Verify firewall allows port 990 for Implicit FTPS |
Port 990 accessible and connection succeeds |
5 |
Firewall Test 5 |
Verify firewall blocks non-FTPS ports |
Connection blocked as expected |
6 |
Firewall Test 6 |
Verify firewall allows passive mode data ports |
Passive mode data ports open and usable |
7 |
Firewall Test 7 |
Verify firewall blocks passive mode data ports |
Data connection fails as expected |
8 |
Firewall Test 8 |
Verify firewall allows active mode |
Active mode connection succeeds |
9 |
Firewall Test 9 |
Verify firewall blocks active mode |
Active mode connection fails |
10 |
Firewall Test 10 |
Verify firewall with FTPS control channel encrypted |
Control channel encrypted and allowed |
11 |
Firewall Test 11 |
Verify firewall with FTPS data channel encrypted |
Data channel encrypted and allowed |
12 |
Firewall Test 12 |
Verify firewall with FTPS session timeout |
Session times out as configured |
13 |
Firewall Test 13 |
Verify firewall with FTPS session keep-alive |
Session remains active |
14 |
Firewall Test 14 |
Verify firewall with FTPS connection retry |
Retry succeeds if firewall allows |
15 |
Firewall Test 15 |
Verify firewall with FTPS connection drop |
Connection dropped as expected |
16 |
Firewall Test 16 |
Verify firewall with FTPS connection logging |
Connection logged correctly |
17 |
Firewall Test 17 |
Verify firewall with FTPS connection inspection |
Encrypted traffic passes inspection |
18 |
Firewall Test 18 |
Verify firewall with FTPS and NAT |
Connection succeeds through NAT |
19 |
Firewall Test 19 |
Verify firewall with FTPS and proxy |
Connection succeeds through proxy |
20 |
Firewall Test 20 |
Verify firewall with FTPS and IDS |
No plaintext data detected |
21 |
Firewall Test 21 |
Verify firewall with FTPS and antivirus |
File scanned without breaking encryption |
22 |
Firewall Test 22 |
Verify firewall with FTPS and load balancer |
Load balancer handles encrypted sessions |
23 |
Firewall Test 23 |
Verify firewall with FTPS and port forwarding |
Port forwarding works correctly |
24 |
Firewall Test 24 |
Verify firewall with FTPS and port translation |
Port translation handled correctly |
25 |
Firewall Test 25 |
Verify firewall with FTPS and IP whitelisting |
Only whitelisted IPs can connect |
26 |
Firewall Test 26 |
Verify firewall with FTPS and IP blacklisting |
Blacklisted IPs blocked |
27 |
Firewall Test 27 |
Verify firewall with FTPS and domain filtering |
Domain filtering does not block FTPS |
28 |
Firewall Test 28 |
Verify firewall with FTPS and DNS filtering |
DNS filtering does not block FTPS |
29 |
Firewall Test 29 |
Verify firewall with FTPS and TLS 1.2 |
TLS 1.2 traffic allowed |
30 |
Firewall Test 30 |
Verify firewall with FTPS and TLS 1.3 |
TLS 1.3 traffic allowed |
31 |
Firewall Test 31 |
Verify firewall with FTPS and SSLv3 |
SSLv3 traffic blocked |
32 |
Firewall Test 32 |
Verify firewall with FTPS and certificate validation |
Certificate validated and connection allowed |
33 |
Firewall Test 33 |
Verify firewall with FTPS and expired certificate |
Connection blocked due to expired cert |
34 |
Firewall Test 34 |
Verify firewall with FTPS and revoked certificate |
Connection blocked due to revoked cert |
35 |
Firewall Test 35 |
Verify firewall with FTPS and self-signed certificate |
Connection blocked or warned |
36 |
Firewall Test 36 |
Verify firewall with FTPS and trusted certificate |
Connection allowed |
37 |
Firewall Test 37 |
Verify firewall with FTPS and certificate chain |
Chain validated and connection allowed |
38 |
Firewall Test 38 |
Verify firewall with FTPS and OCSP |
OCSP check passed and connection allowed |
39 |
Firewall Test 39 |
Verify firewall with FTPS and CRL |
CRL check passed and connection allowed |
40 |
Firewall Test 40 |
Verify firewall with FTPS and invalid CRL |
Connection blocked |
41 |
Firewall Test 41 |
Verify firewall with FTPS and invalid OCSP |
Connection blocked |
42 |
Firewall Test 42 |
Verify firewall with FTPS and session reuse |
Session reused and allowed |
43 |
Firewall Test 43 |
Verify firewall with FTPS and session timeout |
Session expired as expected |
44 |
Firewall Test 44 |
Verify firewall with FTPS and session renegotiation |
Renegotiation allowed |
45 |
Firewall Test 45 |
Verify firewall with FTPS and large file transfer |
File transferred successfully |
46 |
Firewall Test 46 |
Verify firewall with FTPS and concurrent transfers |
All transfers succeed |
47 |
Firewall Test 47 |
Verify firewall with FTPS and multiple clients |
All clients connect successfully |
48 |
Firewall Test 48 |
Verify firewall with FTPS and IPv4 |
IPv4 traffic allowed |
49 |
Firewall Test 49 |
Verify firewall with FTPS and IPv6 |
IPv6 traffic allowed |
50 |
Firewall Test 50 |
Verify firewall with FTPS and port scan detection |
Port scan blocked, FTPS unaffected |
Backward Compatibility - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Legacy FTP Client |
Connect using a non-FTPS client |
Server allows fallback or denies with clear message |
2 |
FTPS Client to FTP Server |
FTPS client connects to plain FTP server |
Connection fails gracefully |
3 |
AUTH TLS Unsupported |
Server does not support AUTH TLS |
Client receives 502 or similar |
4 |
AUTH SSL Fallback |
Client tries AUTH SSL if AUTH TLS fails |
Server accepts AUTH SSL if supported |
5 |
PBSZ Optional |
Server accepts PBSZ 0 as per RFC |
Server responds with 200 OK |
6 |
PROT C Support |
Server accepts PROT C (clear data) |
Server responds with 200 OK |
7 |
PROT P Support |
Server accepts PROT P (private data) |
Server responds with 200 OK |
8 |
PROT S Unsupported |
Server rejects PROT S if not supported |
Server responds with 536 |
9 |
USER Command |
Legacy USER command works |
Server responds with 331 |
10 |
PASS Command |
Legacy PASS command works |
Server responds with 230 |
11 |
LIST Command |
LIST works over encrypted and unencrypted channels |
Directory listing is returned |
12 |
RETR Command |
RETR works with PROT C and PROT P |
File is downloaded |
13 |
STOR Command |
STOR works with PROT C and PROT P |
File is uploaded |
14 |
QUIT Command |
QUIT terminates session cleanly |
Server responds with 221 |
15 |
PORT Command |
Active mode works with legacy clients |
Data connection established |
16 |
PASV Command |
Passive mode works with legacy clients |
Data connection established |
17 |
FEAT Command |
Server lists supported features |
Client parses features |
18 |
Unsupported FEAT |
Client handles unknown features |
Client ignores or logs |
19 |
TLS 1.0 Support |
Server supports TLS 1.0 for legacy clients |
Connection established |
20 |
TLS 1.2 Support |
Server supports TLS 1.2 |
Connection established |
21 |
TLS 1.3 Support |
Server supports TLS 1.3 |
Connection established |
22 |
SSLv3 Rejection |
Server rejects SSLv3 |
Connection fails securely |
23 |
Anonymous Login |
Server allows anonymous login |
Login succeeds |
24 |
IPv4 Compatibility |
Server supports IPv4 |
Connection succeeds |
25 |
IPv6 Compatibility |
Server supports IPv6 |
Connection succeeds |
26 |
Resume Download |
REST command works for RETR |
Download resumes |
27 |
Resume Upload |
REST command works for STOR |
Upload resumes |
28 |
File Permissions |
Legacy clients can set permissions |
Server accepts SITE CHMOD |
29 |
Directory Navigation |
CWD and CDUP work as expected |
Directory changes |
30 |
File Deletion |
DELE command works |
File is deleted |
31 |
Directory Creation |
MKD command works |
Directory is created |
32 |
Directory Removal |
RMD command works |
Directory is removed |
33 |
File Rename |
RNFR and RNTO work |
File is renamed |
34 |
Timezone Handling |
Server handles legacy timezone formats |
Timestamps are correct |
35 |
ASCII Mode |
TYPE A works for text files |
File is transferred in ASCII |
36 |
Binary Mode |
TYPE I works for binary files |
File is transferred in binary |
37 |
Legacy Clients with No TLS |
Server denies or downgrades securely |
Connection fails or downgrades |
38 |
Mixed Mode Transfers |
Switch between PROT C and PROT P |
Server handles correctly |
39 |
Session Timeout |
Legacy timeout settings respected |
Session closes after timeout |
40 |
Command Pipelining |
Legacy clients send commands in sequence |
Server handles correctly |
41 |
Unsupported Commands |
Server handles unknown commands |
Responds with 500 or 502 |
42 |
File Size Limit |
Large file uploads/downloads work |
Transfer completes |
43 |
Filename Encoding |
Legacy encoding (e.g., ISO-8859-1) supported |
Filenames are readable |
44 |
UTF-8 Support |
Server supports UTF-8 |
Filenames are correct |
45 |
Control Channel Only |
Server handles control channel without data |
Responds appropriately |
46 |
Encrypted Control, Clear Data |
Server supports mixed mode |
Works as expected |
47 |
Encrypted Control and Data |
Server supports full encryption |
Works as expected |
48 |
Logging Compatibility |
Legacy log formats are supported |
Logs are readable |
49 |
Client Certificate Optional |
Server allows login without client cert |
Login succeeds |
50 |
Client Certificate Required |
Server enforces client cert |
Login fails without cert |
Granular Access Control - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Read-Only User |
User with read-only access tries to upload |
Upload is denied |
2 |
Write-Only User |
User with write-only access tries to download |
Download is denied |
3 |
Admin Access |
Admin user accesses all directories |
Access is granted |
4 |
Guest Access |
Guest user accesses restricted folder |
Access is denied |
5 |
Group-Based Access |
User inherits permissions from group |
Access is granted/denied based on group |
6 |
Directory-Level Access |
User has access to one directory only |
Other directories are inaccessible |
7 |
File-Level Access |
User can access only specific files |
Other files are hidden or denied |
8 |
Time-Based Access |
User allowed access only during work hours |
Access denied outside allowed time |
9 |
IP-Based Access |
User allowed from specific IP range |
Access denied from other IPs |
10 |
Command Restriction |
User restricted from using DELE |
Delete command is denied |
11 |
Upload Quota |
User exceeds upload quota |
Upload is denied |
12 |
Download Quota |
User exceeds download quota |
Download is denied |
13 |
File Type Restriction |
User restricted from uploading .exe files |
Upload is denied |
14 |
File Size Limit |
User tries to upload large file |
Upload is denied |
15 |
Hidden Files |
User cannot see hidden files |
Hidden files are not listed |
16 |
Symlink Access |
User restricted from following symlinks |
Access is denied |
17 |
Recursive Access |
User cannot access subdirectories |
Access to subfolders is denied |
18 |
Read Access to Logs |
User allowed to read logs only |
Write/delete denied |
19 |
Write Access to Temp |
User allowed to write to /tmp only |
Other directories are denied |
20 |
Delete Restriction |
User cannot delete files |
DELE command is denied |
21 |
Rename Restriction |
User cannot rename files |
RNFR/RNTO denied |
22 |
Directory Creation |
User allowed to create directories |
MKD succeeds |
23 |
Directory Deletion |
User restricted from deleting directories |
RMD denied |
24 |
File Overwrite |
User cannot overwrite existing files |
Upload fails if file exists |
25 |
File Append |
User allowed to append only |
APPE succeeds, STOR denied |
26 |
Session Timeout Policy |
User session expires after 10 mins |
Session is closed |
27 |
Concurrent Session Limit |
User exceeds allowed sessions |
New session is denied |
28 |
Role-Based Access |
Role determines access level |
Access matches role |
29 |
MFA Enforcement |
User must use MFA to access sensitive files |
Access denied without MFA |
30 |
Logging Access |
Only admins can view logs |
Others are denied |
31 |
Access Denied Logging |
All denied attempts are logged |
Log entry created |
32 |
Access Granted Logging |
All granted accesses are logged |
Log entry created |
33 |
Temporary Access |
User has temporary access to folder |
Access expires after time |
34 |
Expired Account |
User account is expired |
Login denied |
35 |
Disabled Account |
User account is disabled |
Login denied |
36 |
Password Expiry |
User password expired |
Login denied |
37 |
Password Change Required |
User must change password on login |
Prompted to change |
38 |
Directory Listing Restriction |
User cannot list certain directories |
LIST denied |
39 |
File Visibility Filter |
User sees only permitted files |
Others are hidden |
40 |
Access Control Inheritance |
Subfolders inherit parent permissions |
Access matches parent |
41 |
Access Control Override |
Explicit deny overrides allow |
Access denied |
42 |
Access Control Priority |
Specific rules override general ones |
Most specific rule applies |
43 |
Access Control Sync |
Changes to access rules take effect immediately |
New rules enforced |
44 |
Access Control Audit Trail |
All access changes are logged |
Audit log updated |
45 |
Access Control Backup |
Access rules are backed up |
Backup file created |
46 |
Access Control Restore |
Access rules restored from backup |
Rules restored correctly |
47 |
Access Control Export |
Rules exported to file |
Export file created |
48 |
Access Control Import |
Rules imported from file |
Rules applied correctly |
49 |
Access Control Testing |
Simulate access for a user |
Simulation result shown |
50 |
Access Control API |
Access rules managed via API |
API responds correctly |
Logging and Auditing - Testcases
S.No |
Test Case |
Description |
Expected Result |
---|---|---|---|
1 |
Successful Login |
Log a successful user login |
Entry created with timestamp and username |
2 |
Failed Login |
Log a failed login attempt |
Entry includes reason and source IP |
3 |
Anonymous Login |
Log anonymous access |
Entry includes “anonymous” user |
4 |
File Upload |
Log file upload event |
Entry includes filename, size, user |
5 |
File Download |
Log file download event |
Entry includes filename, size, user |
6 |
File Deletion |
Log file deletion |
Entry includes filename and user |
7 |
File Rename |
Log file rename operation |
Entry includes old and new names |
8 |
Directory Creation |
Log directory creation |
Entry includes path and user |
9 |
Directory Deletion |
Log directory removal |
Entry includes path and user |
10 |
Permission Denied |
Log access denial |
Entry includes command and reason |
11 |
Session Start |
Log session start |
Entry includes session ID and user |
12 |
Session End |
Log session termination |
Entry includes duration and reason |
13 |
TLS Handshake |
Log TLS handshake success/failure |
Entry includes protocol version |
14 |
Command Execution |
Log all FTP commands issued |
Entry includes command and user |
15 |
Passive Mode |
Log PASV command usage |
Entry includes IP and port |
16 |
Active Mode |
Log PORT command usage |
Entry includes IP and port |
17 |
IP Address Logging |
Log client IP address |
Entry includes IP and geolocation (if available) |
18 |
User Agent Logging |
Log client software info |
Entry includes FTP client name/version |
19 |
File Access Time |
Log file access timestamps |
Entry includes access time |
20 |
File Modification Time |
Log file modification events |
Entry includes timestamp and user |
21 |
File Size Change |
Log file size before and after upload |
Entry includes delta |
22 |
Quota Exceeded |
Log when user exceeds quota |
Entry includes limit and attempted size |
23 |
Concurrent Sessions |
Log multiple sessions per user |
Entry includes session count |
24 |
Session Timeout |
Log session timeout events |
Entry includes idle time |
25 |
Authentication Method |
Log method used (password, cert) |
Entry includes method type |
26 |
MFA Usage |
Log multi-factor authentication events |
Entry includes method and result |
27 |
Certificate Validation |
Log client certificate validation |
Entry includes cert details |
28 |
Encryption Level |
Log encryption protocol used |
Entry includes TLS version and cipher |
29 |
Access Control Violation |
Log denied access due to ACL |
Entry includes rule and user |
30 |
File Integrity Check |
Log checksum verification |
Entry includes result |
31 |
Audit Trail Export |
Export audit logs |
File is generated and verified |
32 |
Audit Trail Import |
Import audit logs |
Logs are restored correctly |
33 |
Log Rotation |
Logs rotate after size/time threshold |
Old logs archived |
34 |
Log Retention Policy |
Logs retained per policy |
Older logs purged or archived |
35 |
Log Tampering Detection |
Detect unauthorized log changes |
Alert or hash mismatch logged |
36 |
Log Encryption |
Logs are encrypted at rest |
Encrypted files verified |
37 |
Log Access Control |
Only authorized users can view logs |
Unauthorized access denied |
38 |
Log Viewing |
Admin views logs via interface |
Logs displayed correctly |
39 |
Log Filtering |
Filter logs by user/date/event |
Filtered results shown |
40 |
Log Search |
Search logs for specific keyword |
Matching entries returned |
41 |
Log Archiving |
Archive old logs |
Archive file created |
42 |
Log Compression |
Compress logs for storage |
Compressed file verified |
43 |
Log Backup |
Backup logs to external storage |
Backup completed successfully |
44 |
Log Restore |
Restore logs from backup |
Logs restored correctly |
45 |
Real-Time Logging |
Logs updated in real-time |
New events appear instantly |
46 |
Log Format Compliance |
Logs follow standard format (e.g., JSON, syslog) |
Format validated |
47 |
Log Timestamp Accuracy |
Timestamps are accurate and synced |
Matches system time |
48 |
Log Integrity Hashing |
Logs include hash for integrity |
Hash verified |
49 |
Log Alerting |
Alerts triggered on suspicious activity |
Alert sent to admin |
50 |
Log Review Audit |
Periodic review of logs by auditor |
Review report generated |
Reference links