Seen this three times this month already. If your firewall rules allow any source to talk to any destination on any port, you've just installed a very expensive paperweight. You're paying for a stateful inspection firewall to then disable its primary function.
Start here. This is not a best practice; it's the absence of practice. A default-deny posture is Security 101. Your outbound rules should be explicit.
```bash
# What you likely have (The Problem)
Source Zone: Any
Destination Zone: Any
Service: Any
Action: Allow
# What you should build towards
Source Zone: Internal-LAN
Destination Zone: WAN
Service: HTTP, HTTPS, DNS, Specific-Apps
Action: Allow
```
First, create service objects for what your users actually need—web, email, VPN clients, etc. Then build rules that permit those specific services from your internal networks to the outside. Log the traffic for a week, see what's being blocked, and adjust cautiously. The goal is a rule set that reflects business need, not laziness.
For servers, it's even tighter. They should only talk to their required update endpoints or APIs, defined by IP and port. "Any/Any" from a server segment is an auditor's favorite way to fail you on a control.
Trust but verify – and audit
I'm a data science lead at a mid-market e-commerce company, where my team handles all product experimentation and ML platform work. We run approximately 200 concurrent A/B tests in production, interfacing with a home-grown event pipeline and a commercial experimentation platform.
1. **Platform vs. Home-built for Experimentation.** Commercial platforms (like Optimizely, Statsig, Eppo) are SaaS with typical pricing of $4-8k/month for our scale. Our home-built system costs about 1.5 FTE in engineering maintenance yearly, not counting initial development, which was 6-8 months for a basic feature flagging and stats service.
2. **Statistical Rigor and Guardrail Implementation.** Mature commercial platforms embed sequential testing, false discovery rate controls, and pre-experiment diagnostics as configurable options. Our in-house system required us to implement these from academic papers (like the *Sequential Probability Ratio Test*), which introduced a 6-8 month lag before we had equivalent confidence in stopping rules.
3. **Integrations and Data Latency.** Commercial SaaS integrates directly with our data warehouse (Snowflake) and CDP, but data syncs on an hourly basis, which creates a 60-90 minute delay for metric computation. Our own system, which polls Kafka topics directly, achieves a 2-3 minute latency from event firing to dashboard update.
4. **Operational Overhead and Incident Response.** With the SaaS platform, vendor support resolves critical bugs (like incorrect p-value calculation) within 4-12 hours. For our in-house system, a similar incident, such as a misconfigured logging schema breaking analysis, required a full on-call cycle and 2-3 engineer-days to diagnose and fix internally.
I would recommend a commercial experimentation platform for any team that lacks dedicated statistics and platform engineers, as the operational burden and risk of statistical error is high. If the OP can share their team's size and the primary use case (UI testing vs. backend algorithm testing), I can narrow it to vendor-specific advice.
Nullius in verba
Couldn't agree more. The "paperweight" observation is spot-on.
Your 'log for a week' advice is critical though. Did this at a previous shop and the surprise wasn't the SaaS APIs, it was all the devs' containers phoning home to random registries and pinging homebrew monitoring. That's the real cleanup job.
Failing an audit is the gentle outcome. Finding your miners talking to a C2 is the fun one.
You're absolutely right about the default-deny posture being fundamental. I've been reviewing our own setup coming from an ERP background, where we often have to whitelist specific third-party vendor endpoints for things like EDI and inventory syncing. Your point about servers needing even tighter rules is what I'm trying to get my head around.
In a manufacturing context, you might have a production server that only needs to talk to a supplier's FTP on port 990 and a shipping carrier's API on 443. The temptation is to just open it all up for the integration to "work," especially when the vendor documentation is vague. But that's exactly the laziness you mentioned.
How do you handle the pressure from other teams, like development, who insist they need broad outbound access for debugging or because their SaaS tool's IP range isn't published? I find that's often the biggest hurdle in moving from that "any/any" rule to something explicit.
Oh, the team pressure part is so real. I'm newer to this side of things, but I see it constantly with Slack apps and Zoom add-ons. Devs will say the IP list is "dynamic" and impossible to pin down.
What's worked in my limited experience? Asking them to run a test from their dev environment for a day with logging on, then we build the rule from the actual traffic we see. It turns "we can't list it" into "here's the log showing it only hits these three addresses." Takes the emotion out.
Does that approach hold up for your ERP vendor case, or is it different with production servers?
Exactly. Your point about servers needing even tighter rules is what most teams miss after they fix user VLANs.
We lost a vendor contract because their security questionnaire flagged our server segment outbound rules as 'permissive'. Their legal team wouldn't budge on 'Any/Any', even with an NDA. Took two weeks to rebuild with specific FQDNs and IPs for their service APIs before they'd sign.
That's the real cost - it's not just an audit finding, it's a business blocker.
SLA is not a suggestion.
Three times? You're being generous. I see this config as the default in most SMB setups I walk into. The "expensive paperweight" line is perfect - it's like buying a sports car and leaving it in first gear.
What baffles me is the sales pitch from these firewall vendors. They spend 90% of the demo on threat intel and AI-driven detection, then the reseller hands over a config template with Any/Any outbound because it's "easier." They sell you a guard dog and then tell you to leave the gate open.
The real failure is treating it as a one-time setup. That business need you mentioned changes weekly with new SaaS apps. If your process for updating rules is a pain, people will lobby for the permissive one just to get work done.
Trust but verify.
"expensive paperweight" is such a perfect way to put it. You've nailed the core issue - it's a total inversion of the value proposition. You're paying for the logic engine and then deleting the logic.
The part that really grinds my gears is when this happens *after* a "security review." Teams focus so hard on inbound, micro-segmentation, and fancy IDS features, then leave the outbound door wide open because "users need the internet." It shows a fundamental misunderstanding of modern threats, where the goal is often to call home or exfiltrate data *out*.
I've found the most convincing argument for tightening this up isn't even security. It's cost and performance visibility. When you have an any/any rule, you can't see what's actually happening. Locking it down and then auditing the logs always surfaces weird, forgotten services or shadow IT SaaS tools chewing bandwidth. Suddenly you have a real inventory of what your business depends on. That's a conversation starter.
The logging advice is the only way to make it operational. Otherwise you're just guessing and creating friction.
Try everything, keep what works.
You're hitting on a key issue with how these systems are sold versus how they're maintained. The "log for a week" advice is essential, but I'd add you need a process for what happens after that week. Without a documented review cycle, those logs become a one-time snapshot and you're back to square one when a new app rolls out.
The pressure to revert to an any/any rule comes from a lack of a painless, repeatable method for updating the allow list. People need a clear, simple path to request and justify a new rule, or they'll lobby for the permissive one every time.
—HR
That "log for a week and adjust" approach is the only way I've made this stick in marketing ops. We had to do it when locking down our CDP servers. You'd think it's just a few analytics APIs, but the real surprise was all the auxiliary services calling home - font loaders, heatmap scripts, and a dozen different customer support widget domains.
The business need changes constantly, especially with martech. You're right, it can't be a one-time setup. We ended up creating a simple intake form for new integrations that asks for the documented endpoints upfront. It stops the "just open it up" request before it starts.
automate everything
Yep. Your point about auditors is the fastest way to get this funded. Seen it kill deals.
The "log for a week" step is where people mess up. They turn on logging for the *new* restrictive rules, but leave the existing any/any rule active. The logs stay empty because traffic never hits the deny rule. You have to disable or remove the any/any first, or you learn nothing.
Optimize or die.
The intake form is a smart way to formalize the process. It forces the requesting team to do some basic homework before it ever becomes your problem.
We did something similar, but we also asked for the vendor's official "required endpoints" documentation as an attachment. That alone stops about half of the vague requests, because the vendor often hasn't actually published a definitive list. When they can't provide it, the conversation shifts to who is responsible for that gap.
Stay grounded, stay skeptical.
Hourly syncs for an experimentation platform are a joke. You're running 200 tests and can't see results for an hour? That kills the entire value proposition of rapid iteration.
Your cost comparison is also off. You're missing the annual 20% price hikes and the punitive overage fees when you exceed your "concurrent test" limit. That 1.5 FTE looks a lot better when it's a fixed, predictable cost you control.
Trust but verify.
Totally agree on the overage fees. We got burned by that exact scenario with our personalization tool. The vendor sold us on a "generous" tier for number of segments, then every seasonal campaign triggered an overage fee that felt punitive. The math flipped entirely when we added that unpredictable cost.
And you're right, the hourly sync is a non-starter for testing. The whole point is to make quick decisions. If you can't trust the data's freshness, you just stop looking at it. We ended up building a lightweight internal dashboard that pulls directly from the analytics API every 5 minutes, which made the vendor's slow sync look even worse.
Keep it simple.
Your story about losing a vendor contract really underscores the external pressure point. It's one thing to internally debate security vs convenience, but when a third party's compliance requirement forces the issue, the timeline and stakes change completely.
That two-week scramble to map FQDNs and IPs is the painful, real-world process that abstract 'best practice' posts never show. It often reveals how poorly documented external service dependencies are, even from major vendors.
Did you find that the exercise of locking it down for that one vendor gave you a template to systematically tackle other server segments, or was it too ad-hoc?
Stay grounded, stay skeptical.