Is it safe to open
Infrastructure services (DNS, NTP, DHCP, routing) should answer only the networks they serve. Open resolvers and time servers get abused for DDoS amplification.
How to open port 389
Open to everyone
# Linux iptables iptables -A INPUT -p tcp --dport 389 -j ACCEPT iptables -A INPUT -p udp --dport 389 -j ACCEPT # Ubuntu ufw ufw allow 389/tcp ufw allow 389/udp # firewalld firewall-cmd --permanent --add-port=389/tcp && firewall-cmd --reload firewall-cmd --permanent --add-port=389/udp && firewall-cmd --reload # MikroTik /ip firewall filter add chain=input protocol=tcp dst-port=389 action=accept place-before=0 comment="port 389" /ip firewall filter add chain=input protocol=udp dst-port=389 action=accept place-before=0 comment="port 389" # Windows (PowerShell) New-NetFirewallRule -DisplayName "Port 389 TCP" -Direction Inbound -Protocol TCP -LocalPort 389 -Action Allow New-NetFirewallRule -DisplayName "Port 389 UDP" -Direction Inbound -Protocol UDP -LocalPort 389 -Action Allow
Only for your addresses
# allow only one address or network (replace 203.0.113.0/24) iptables -A INPUT -p tcp --dport 389 -s 203.0.113.0/24 -j ACCEPT iptables -A INPUT -p udp --dport 389 -s 203.0.113.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 389 -j DROP iptables -A INPUT -p udp --dport 389 -j DROP ufw allow from 203.0.113.0/24 to any port 389 proto tcp ufw allow from 203.0.113.0/24 to any port 389 proto udp /ip firewall filter add chain=input protocol=tcp dst-port=389 src-address=203.0.113.0/24 action=accept /ip firewall filter add chain=input protocol=udp dst-port=389 src-address=203.0.113.0/24 action=accept /ip firewall filter add chain=input protocol=tcp dst-port=389 action=drop /ip firewall filter add chain=input protocol=udp dst-port=389 action=drop
If the server is behind a router, you also need a port forward (dst-nat). Behind ISP CGNAT (100.64.0.0/10 on the WAN) forwarding will not help: you need a public IP or a VPN.
What is listening
Check on the server
# what listens on the port ss -lntup | grep ':389 ' netstat -ano | findstr :389 # Windows lsof -i :389 # macOS # test from another machine nc -vz example.com 389