A real-life situation
FGT1 only allows HTTP, HTTPS and DNS out. Yet the logs show a user running a peer-to-peer client and another tunnelling all their traffic through a free proxy app, both over TCP 443. Port-based policies can't tell them apart from web browsing. Application control can.
Build the profile
Edit Application Sensor: Staff-AppCtrl
- P2P
- Block
- Proxy
- BlockProxy and anonymiser apps bypass every other control.
- Remote.Access
- Monitor
- Video/Audio
- Monitor
- All other categories
- Monitor
- Override 1
- TeamViewer → Allow The help desk's approved remote access tool.
- Block applications detected on non-default ports
- On
- Allow and log DNS traffic
- On
Categories
Application and Filter Overrides
Options
- Categories set the broad policy. Monitor everything you don't block, so logs show what is in use.
- Overrides make exceptions: allow one remote access tool while the category stays monitored, or block one application in an allowed category.
- Non-default ports: an application normally on port 80 or 443 that appears elsewhere is suspicious; blocking it closes a common evasion trick.
On the CLI the profile is config application list, and the policy references it with set application-list "Staff-AppCtrl".
Encrypted applications
Many applications can be recognised from unencrypted parts of the session, such as the TLS server name or the traffic pattern. Others, and especially actions inside cloud applications (uploading to a personal cloud drive, posting rather than reading), can only be identified with deep inspection. Application signatures marked as requiring SSL inspection show this in the GUI.
Reading the results
Log & Report › Security Events › Application Control lists each detection with the application, category, action and policy ID. Dashboard › FortiView Applications shows the busiest applications and their users, the quickest way to see what "monitor" has found before deciding what to block.
Why it works this way
Applications choose their own ports, and many deliberately use 443 to get through firewalls. Recognising them by signature moves the decision from "which port" to "which application", which is what the business actually cares about.
Common mistakes
- Blocking whole categories without monitoring first, and breaking business tools.
- Expecting control of actions inside cloud apps without deep inspection.
- Forgetting overrides are evaluated before categories: a broad allow override can undo a category block.
Key takeaways
- Application control identifies applications by signature, regardless of port.
- Category actions set the default; application and filter overrides make exceptions.
- Block applications on non-default ports to stop evasion.
- Some applications and in-app actions need deep inspection to be identified.
Check yourself
A policy allows only HTTPS, yet a P2P client works through it on port 443. What stops it?
The Remote.Access category is monitored, but only TeamViewer should be allowed and the rest blocked. What do you configure?