The goal was to design and implement a virtualised local network with a working FTP server, simulating a real corporate environment. The system had to allow secure file transfer between virtual machines with per-user access control and per-directory permissions.
The main constraint was to implement it exclusively with Windows Server tools, with no additional third-party software beyond FileZilla as the FTP client for testing.
01Network topology design
Configuring VirtualBox with two VMs: server (Windows Server 2019) and client (Windows 10). Internal network with a host-only adapter to isolate the environment, and static IP assignment.
02Windows Server 2019 installation and configuration
Installing the server operating system, configuring the network and enabling the required roles through Server Manager: Web Server (IIS) and FTP Server.
03FTP service configuration in IIS
Creating the FTP site in IIS Manager, binding it to port 21, configuring the root directory, enabling SSL/TLS for FTPS and configuring the Windows firewall to allow FTP traffic.
04User and permission management
Creating local users in Windows Server and assigning read/write permissions per directory through IIS Authorization Rules. Configuring per-user virtual directories with session isolation.
05Testing with FileZilla
Verifying FTP and FTPS connections from the client VM using FileZilla. Testing upload, download, directory creation and confirming that per-user permissions work correctly.
Configuring an FTP server from scratch on Windows Server gave me a real understanding of how file transfer protocols work at the infrastructure level — something cloud services abstract away completely. Understanding the difference between FTP, FTPS and SFTP, and why unencrypted FTP is unacceptable in production, was a key security lesson.
It was also my first serious experience with network virtualisation, an essential foundation for any IT or DevOps role.