Security
Fixing Open Ports without guessing
Fix unexpected public service exposure with an allowlist, a named firewall owner, one change at a time, and a rescan—not uptime folklore.
· by Sam Ortega

Guessing looks like deleting security-group rules until something breaks in production. SlaySlop's Open ports check "Reviews unexpected public service exposure." Fixing without guessing means starting from intent, matching public evidence, then closing or justifying each surprise.
Agency reality: the person who can edit cloud firewalls is not always on the launch call. Name them early. Process that survives launch week beats heroics.
Outcome you want
Public services match the allowlist, or exceptions are written with owners and review dates. A rescan on the production hostname agrees. Siblings stay on their own tickets. The portal note is boring enough to reuse next quarter without a Slack dig.
Boundaries
Only change network controls you own, manage, or have permission to operate. SlaySlop is read-only. Not a pentest. Not authorization to scan unrelated space. Defensive changes only—no exploit verification theater. Do not invent product plan details while you write the ticket.
Loading diagram.
Step 1: freeze intent
fix_ticket:
check: open-ports
definition: Reviews unexpected public service exposure.
allowlist: [tcp/443, tcp/80]
hostnames: [www.example.com, example.com]
owner: <cloud network>If the allowlist does not exist, write it before you touch rules. Unexpected is otherwise a mood.
Step 2: map evidence to a change
For each unexpected exposure, decide close vs justify. Closing means the firewall or cloud rule actually removes public reachability. Justifying means a business reason, an owner, and a date—not the word temporary alone. If the real issue is an admin path, open Exposed files and admin panels instead of pretending a security-group edit fixed HTML reachability.
# Permissioned orientation after a change you own
dig www.example.com +short
# Then rescan in SlaySlop — do not improvise attack probesStep 3: one layer, then rescan
Change the rule set that owns the exposure. Wait for cloud consistency. Rescan the same target. If nginx/web-server or exposed panels still fire, leave those tickets open. Confirm you edited production, not a similarly named staging project.
Step 4: handoff language
closed: <services>
exceptions: <service + reason + review_date>
rescan: <timestamp>Clients tolerate exceptions they can read. They do not tolerate silent leftovers. Put the note in the portal where the next shift will find it.
Pitfalls
Editing staging rules while production stays open. Using uptime as confirmation. Hiding a service behind obscurity while the port still answers. Merging admin-panel path issues into ports incorrectly. Skipping permission checks because the change "is just AWS." Closing a ticket without a rescan timestamp.
When the finding is really a sibling
If the surprise is a reachable admin console on 443, you may still need Exposed files and admin panels on the punch list even after ports look tidy. If the surprise is web-server misconfiguration on a discovered host, keep nginx/web-server open. Fixing without guessing includes naming the right check when mechanisms differ.
Related next step
Keep the allowlist in the portal above the latest Open ports evidence. Soft links: Open ports, Security and secrets, and Reports and portals. Soft close: a permissioned SlaySlop rescan is the confirmation I want before we call it done.