3389 RDPMicrosoft Remote Desktop Protocol.
Windows remote desktop/admin. A top ransomware entry point — gate behind VPN/RD Gateway, never raw internet exposure.
| Transport | Status | Meaning |
|---|---|---|
| TCP | Yes | Assigned by IANA and standardized, specified, or widely used on this port. |
| UDP | Yes | Assigned by IANA and standardized, specified, or widely used on this port. |
| SCTP | — | Not applicable for this transport. |
| DCCP | — | Not applicable for this transport. |
Registered (1024–49151). Assigned by IANA on request; usable without elevated privileges on most systems.
Browse all ports →
Copy-ready inbound rules for the active transports. Replace every <source> placeholder with the specific host, subnet, or CIDR that should reach this port.
sudo ufw allow proto tcp from <source> to any port 3389
Allow TCP 3389 (RDP). Replace <source> with the network/host that should reach it.
sudo ufw allow proto udp from <source> to any port 3389
Allow UDP 3389 (RDP). Replace <source> with the network/host that should reach it.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="<source>" port port="3389" protocol="tcp" accept'
Allow TCP 3389 (RDP) from <source>. Run 'firewall-cmd --reload' afterwards.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="<source>" port port="3389" protocol="udp" accept'
Allow UDP 3389 (RDP) from <source>. Run 'firewall-cmd --reload' afterwards.
nft add rule inet filter input ip saddr <source> tcp dport 3389 accept
Allow TCP 3389 (RDP). Assumes table 'inet filter' with an 'input' chain.
nft add rule inet filter input ip saddr <source> udp dport 3389 accept
Allow UDP 3389 (RDP). Assumes table 'inet filter' with an 'input' chain.
sudo iptables -A INPUT -p tcp -s <source> --dport 3389 -j ACCEPT
Allow TCP 3389 (RDP). Persist with iptables-save/netfilter-persistent.
sudo iptables -A INPUT -p udp -s <source> --dport 3389 -j ACCEPT
Allow UDP 3389 (RDP). Persist with iptables-save/netfilter-persistent.
az network nsg rule create -g <resource-group> --nsg-name <nsg> -n Allow-rdp-3389 --priority 1000 --access Allow --direction Inbound --protocol "*" --source-address-prefixes <source> --destination-port-ranges 3389
Inbound rule for 3389 (RDP). Set <source> to a CIDR; lower priority number = higher precedence.
aws ec2 authorize-security-group-ingress --group-id <sg-id> --ip-permissions IpProtocol=tcp,FromPort=3389,ToPort=3389,IpRanges="[{CidrIp=<source-cidr>}]"
Inbound TCP 3389 (RDP). Replace <source-cidr> (e.g. 10.0.0.0/16).
aws ec2 authorize-security-group-ingress --group-id <sg-id> --ip-permissions IpProtocol=udp,FromPort=3389,ToPort=3389,IpRanges="[{CidrIp=<source-cidr>}]"
Inbound UDP 3389 (RDP). Replace <source-cidr> (e.g. 10.0.0.0/16).
gcloud compute firewall-rules create allow-rdp-3389 --direction=INGRESS --action=ALLOW --rules=tcp:3389,udp:3389 --source-ranges=<source-cidr> --network=<network>
Ingress rule for 3389 (RDP). Scope with --source-ranges and optionally --target-tags.
netsh advfirewall firewall add rule name="Allow RDP 3389/TCP" dir=in action=allow protocol=TCP localport=3389 remoteip=<source>
Inbound TCP 3389 (RDP). Set remoteip to a host/subnet; 'any' is discouraged.
netsh advfirewall firewall add rule name="Allow RDP 3389/UDP" dir=in action=allow protocol=UDP localport=3389 remoteip=<source>
Inbound UDP 3389 (RDP). Set remoteip to a host/subnet; 'any' is discouraged.
New-NetFirewallRule -DisplayName "Allow RDP 3389/TCP" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3389 -RemoteAddress <source>
Inbound TCP 3389 (RDP). Replace <source> with a host or subnet.
New-NetFirewallRule -DisplayName "Allow RDP 3389/UDP" -Direction Inbound -Action Allow -Protocol UDP -LocalPort 3389 -RemoteAddress <source>
Inbound UDP 3389 (RDP). Replace <source> with a host or subnet.
Rules are generated only for transports marked active for this port. They default to an inbound allow with an explicit source placeholder — never any. Review direction, scope, and rule precedence before applying in production.