Port / TCP
9100Printer raw / node_exporter
HP JetDirect raw printing on office networks, and the Prometheus node_exporter metrics endpoint on servers.
If it is internet-facing: Port 9100 is legitimate in the right place, but exposed carelessly it widens the attack surface noticeably.
Exposure
Trusted network only
Transport
Cleartext
Risk if public
Elevated
Exposure verdict
Port 9100 belongs on a trusted internal network. If a perimeter scan finds it answering, treat that as a firewall defect rather than a configuration preference.
Traffic crosses the network readable and modifiable. Anything sensitive on this port needs a tunnel, a VPN, or a different protocol.
Registered with IANA on request, but bindable by any unprivileged user. Registration records intent — it does not reserve the port, so collisions between products are common.
Grouped with the other network services ports so a rule written for one can be checked against its neighbours.
What actually goes wrong
2 notes- Raw printing accepts any data stream with no authentication, including PostScript that reprograms the printer.
- node_exporter publishes detailed host inventory — kernel version, filesystems, users, network interfaces.
Recommended firewall rule
Allow only from 10.0.0.0/8, drop the rest
Swap in the CIDR your administrators or application tier actually come from — the point is that the default answer is no.
ufw
sudo ufw allow from 10.0.0.0/8 to any port 9100 proto tcpiptables
sudo iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 9100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9100 -j DROPIf you do need it open to everyone
sudo ufw allow 9100/tcpWrite down why. An unexplained allow rule outlives the person who added it, and the next reviewer has no way to tell a deliberate exception from an accident.
Check what is really there
Listening locally
sudo ss -tlpn 'sport = :9100'The bind address is the answer that matters: 127.0.0.1 is local-only, 0.0.0.0 and :: mean every interface.
Listening (macOS)
sudo lsof -nP -iTCP:9100 -sTCP:LISTENmacOS ships lsof rather than ss; this names the owning process and user.
From outside
nmap -sV -Pn -p 9100 <host>A version probe confirms whether Printer raw / node_exporter is actually what answers, rather than trusting the number. Only scan hosts you are authorised to test.
Reachability
nc -vz <host> 9100The quick yes/no when you only need to know whether a path exists through the firewall.