NEWBravos is availableCreate your account
The Knowledge Base
19 min read

Critical Services, Exposed Ports, and Default Authentication

Discover how misconfigured services with default or no authentication can expose your infrastructure to attacks. This comprehensive guide reveals default ports, authentication states, and hardening tips for Redis, Kafka, Kubernetes, and other critical services.

Your infrastructure is only as secure as its weakest link. Many modern services are deployed with default settings that prioritize functionality over security, leaving critical ports exposed and unauthenticated. This comprehensive analysis examines:

  • Default ports where attackers begin their reconnaissance
  • Authentication status of popular services out-of-the-box
  • Attack vectors through unauthenticated services
  • Hardening techniques to secure these services properly

This guide focuses on critical infrastructure components that are frequently overlooked in security assessments but represent significant attack vectors when misconfigured.


Why Default Configurations Are Dangerous

  1. Ease of Deployment ≠ Security

Default configurations prioritize quick setup and developer convenience, often at the expense of security. Many services ship with:

  • Authentication disabled
  • Default credentials
  • Binding to all network interfaces (0.0.0.0)
  • Unnecessary port exposure
  1. Reconnaissance Value

Open, unauthenticated services provide attackers with:

  • Valuable insights into your infrastructure
  • Lateral movement opportunities
  • Data exposure without requiring exploitation
  • Service identification through port scanning
  1. Scale of Risk

As containerization and microservices architectures proliferate, organizations deploy more services than ever before, creating an expanded attack surface with overlooked security configurations.


Service Analysis: Default Ports and Authentication Status

Redis

PortProtocolDefault AuthCVE ExamplesRisk Level
6379TCPNO AUTHCVE-2022-0543, CVE-2023-28425HIGH

Redis, an in-memory data structure store, is notorious for its lack of authentication by default. When deployed with default settings, anyone who can reach port 6379 can:

  • Access and modify all data
  • Execute arbitrary Lua scripts (potential RCE)
  • Write to disk via config commands
  • Access potentially sensitive information

Attack Scenario: Attackers commonly search for exposed Redis instances to write SSH keys to authorized_keys files or create scheduled tasks for persistence after initial discovery.

Hardening Required:

  • Enable authentication with a strong password (requirepass directive)
  • Bind to localhost only when possible
  • Implement network segmentation
  • Disable dangerous commands

Apache Kafka

PortProtocolDefault AuthCVE ExamplesRisk Level
9092TCPNO AUTHCVE-2018-1288, CVE-2019-12399HIGH
9093TCP (SSL)OPTIONAL
2181TCP (ZooKeeper)NO AUTHCVE-2021-21409HIGH

Kafka, a distributed event streaming platform, defaults to no authentication for client communications. The ecosystem involves multiple components, each with potential security issues:

  • Brokers (9092) - No authentication by default
  • ZooKeeper (2181) - No authentication by default
  • JMX (Various) - Often exposed without authentication

Attack Scenario: Unauthenticated Kafka access allows attackers to read sensitive data streams, publish malicious messages, or disrupt operations by creating/deleting topics.

Hardening Required:

  • Implement SASL authentication
  • Configure TLS/SSL for encryption
  • Implement ACLs for authorization
  • Secure ZooKeeper with authentication

Kubernetes API Server

PortProtocolDefault AuthCVE ExamplesRisk Level
6443TCP (HTTPS)PARTIALCVE-2018-1002105, CVE-2019-11253CRITICAL
8080TCP (HTTP)NO AUTHCRITICAL

Kubernetes API server provides the primary control plane for clusters. Authentication is now typically enabled in most distributions, but:

  • Port 8080 - Insecure port with NO authentication (deprecated but still found in the wild)
  • Port 6443 - Secure port with authentication, but default configurations may use self-signed certificates

Attack Scenario: Access to an unauthenticated Kubernetes API server grants complete control over workloads, potentially leading to container escapes and host compromise.

Hardening Required:

  • Disable insecure port (8080) completely
  • Implement RBAC policies
  • Use proper PKI for API server certificates
  • Enable audit logging
  • Use NetworkPolicies to restrict pod-to-pod communication

Docker API

PortProtocolDefault AuthCVE ExamplesRisk Level
2375TCP (HTTP)NO AUTHCVE-2019-5736, CVE-2020-15257CRITICAL
2376TCP (HTTPS)CERT-BASEDHIGH

The Docker API allows remote management of Docker daemon. Many developers enable the remote API for convenience, often without realizing the security implications:

  • Port 2375 - Unencrypted with no authentication
  • Port 2376 - Encrypted but requires proper certificate configuration

Attack Scenario: An exposed Docker API allows attackers to create containers that mount the host filesystem, leading to full host compromise.

Hardening Required:

  • Never expose Docker API to public networks
  • Use TLS with client certificate authentication
  • Implement authorization plugins
  • Use Unix socket instead of TCP when possible

Elasticsearch

PortProtocolDefault AuthCVE ExamplesRisk Level
9200TCP (HTTP)NO AUTH (Pre 8.0)CVE-2015-1427, CVE-2021-22137HIGH
9300TCPNO AUTH (Pre 8.0)HIGH

Elasticsearch is a search and analytics engine commonly deployed in ELK stacks (Elasticsearch, Logstash, Kibana). Before version 8.0:

  • No authentication was enabled by default
  • Exposed REST API allowed full index control
  • JavaScript code execution via search templates

Since version 8.0, security features are enabled by default, but many deployments still run older versions.

Attack Scenario: Attackers target exposed Elasticsearch instances to extract sensitive data from logs and indexes or to execute code via search template injection.

Hardening Required:

  • Upgrade to Elasticsearch 8.x+ with default security
  • Enable X-Pack security on older versions
  • Implement proper authentication and authorization
  • Network segmentation to limit access

cAdvisor

PortProtocolDefault AuthCVE ExamplesRisk Level
8080TCP (HTTP)NO AUTHCVE-2019-11250MEDIUM

cAdvisor (Container Advisor) provides container users with resource usage and performance metrics. By default:

  • No authentication is required
  • Exposes detailed system information
  • Reveals container names, images, and configurations

Attack Scenario: Attackers use exposed cAdvisor instances to gather intelligence on container deployments, identify potential targets, and plan more sophisticated attacks.

Hardening Required:

  • Place behind reverse proxy with authentication
  • Use network policies to restrict access
  • Consider running as a DaemonSet in Kubernetes with proper RBAC

Prometheus

PortProtocolDefault AuthCVE ExamplesRisk Level
9090TCP (HTTP)NO AUTHCVE-2019-3826MEDIUM

Prometheus is an open-source monitoring and alerting toolkit designed for reliability and scalability. Out of the box:

  • No authentication mechanisms are enabled
  • Administrative APIs are exposed
  • Query interface can reveal sensitive system information

Attack Scenario: Exposed Prometheus servers reveal detailed metrics about infrastructure, which attackers use for reconnaissance and to identify vulnerabilities.

Hardening Required:

  • Implement authentication via reverse proxy
  • Configure TLS for encrypted communications
  • Use network segmentation
  • Implement strict firewall rules

etcd

PortProtocolDefault AuthCVE ExamplesRisk Level
2379TCP (Client)NO AUTHCVE-2020-15115CRITICAL
2380TCP (Peer)NO AUTHCRITICAL

etcd is a distributed key-value store used as Kubernetes' primary datastore for all cluster data. When improperly configured:

  • No authentication is required
  • Contains complete Kubernetes cluster state
  • Stores secrets (though encrypted in newer versions)

Attack Scenario: Access to an unauthenticated etcd instance can provide attackers with Kubernetes secrets, certificates, and complete cluster configuration.

Hardening Required:

  • Enable authentication with strong credentials
  • Configure TLS for client and peer communication
  • Implement proper network security controls
  • Regular credential rotation

RabbitMQ

PortProtocolDefault AuthCVE ExamplesRisk Level
5672TCP (AMQP)DEFAULT CREDSCVE-2021-32718HIGH
15672TCP (HTTP)DEFAULT CREDSHIGH

RabbitMQ is a message broker that implements AMQP. Unlike some other services, it does require authentication but ships with:

  • Default credentials (guest/guest)
  • Management interface on port 15672
  • Default credentials only work from localhost in newer versions

Attack Scenario: Attackers with access to RabbitMQ can intercept messages, potentially capturing sensitive information or disrupting message delivery.

Hardening Required:

  • Remove default users
  • Create users with least privilege
  • Enable TLS for all connections
  • Restrict management plugin access

MongoDB

PortProtocolDefault AuthCVE ExamplesRisk Level
27017TCPNO AUTHCVE-2019-2788HIGH

MongoDB, a popular NoSQL database, has become infamous for ransomware attacks due to widespread misconfiguration:

  • No authentication required by default (pre-v3)
  • Newer versions require authentication but are often misconfigured
  • Commonly exposed directly to the internet

Attack Scenario: The "MongoDB Apocalypse" ransomware attacks of 2017 targeted thousands of exposed MongoDB instances, deleting data and demanding ransom for its return.

Hardening Required:

  • Enable authentication
  • Create dedicated users with appropriate privileges
  • Bind only to necessary interfaces
  • Implement network access controls

Memcached

PortProtocolDefault AuthCVE ExamplesRisk Level
11211TCP/UDPNO AUTHCVE-2018-1000115HIGH

Memcached, an in-memory key-value store, has been at the center of massive DDoS amplification attacks:

  • No authentication mechanism available in standard distributions
  • No encryption support natively
  • Commonly deployed with public exposure

Attack Scenario: Beyond data exposure, attackers exploit internet-facing Memcached servers for DDoS amplification, with amplification factors exceeding 50,000x.

Hardening Required:

  • Never expose to public networks
  • Bind to localhost or internal interfaces only
  • Implement network-level authentication
  • Consider SASL-enabled distributions if authentication is required

CouchDB

PortProtocolDefault AuthCVE ExamplesRisk Level
5984TCP (HTTP)NO AUTHCVE-2017-12635HIGH
6984TCP (HTTPS)NO AUTHHIGH

Apache CouchDB is a document-oriented NoSQL database with an HTTP API. By default:

  • Admin Party mode with no authentication (pre-3.0)
  • All visitors have administrative privileges
  • Version 3.0+ prompts for admin during setup

Attack Scenario: Unauthenticated CouchDB access allows attackers to read all documents, modify databases, and potentially execute code through design documents.

Hardening Required:

  • Create admin users immediately after installation
  • Enable HTTPS with valid certificates
  • Implement proper firewall rules
  • Use proxy authentication when applicable

Vulnerable Service Combinations: Compounding Risk

The risk posed by individual services increases dramatically when multiple vulnerable services are exposed in the same environment. Consider these high-risk combinations:

Service CombinationCompounded RiskAttack Path
Redis + Docker APICRITICALUse Redis to write SSH keys → gain system access → access Docker API → mount host filesystem
Kubernetes API + etcdCRITICALGain cluster configs from etcd → access Kubernetes API → deploy privileged containers
Elasticsearch + KibanaHIGHExtract sensitive data from Elasticsearch → use Kibana for code execution
Prometheus + cAdvisorHIGHMap infrastructure via Prometheus → target specific containers identified via cAdvisor

These combinations create complete attack chains that allow for efficient compromise with minimal exploitation required.


Detection and Monitoring

Detecting exposed services should be part of regular security assessments. Implement:

  1. External Port Scanning
    • Regular external scans from multiple geographic locations
    • Service fingerprinting to identify exposed components
    • Authentication testing to verify security controls
  1. Continuous Monitoring
    • Deploy canaries for sensitive services
    • Monitor for unexpected connection attempts
    • Alert on authentication failures
  1. Network Traffic Analysis
    • Baseline normal service communications
    • Detect unusual access patterns or data transfers
    • Monitor for typical attack patterns

Security Best Practices Across All Services

While each service has specific security requirements, these universal principles apply:

  1. Default Deny
    • Begin with all services inaccessible, then explicitly allow required access
    • Never expose administrative interfaces to public networks
  1. Defense in Depth
    • Layer security controls: network, authentication, authorization
    • Do not rely on single perimeter security
  1. Principle of Least Privilege
    • Create service-specific accounts with minimal permissions
    • Regularly audit and remove unnecessary privileges
  1. Network Segmentation
    • Implement proper segmentation for internal services
    • Use internal DNS to avoid hardcoded IPs
  1. Regular Assessments
    • Conduct internal and external security assessments
    • Verify security configurations after deployments or changes

Conclusion

The explosion of specialized services in modern infrastructure has created a complex security landscape where default configurations often prioritize functionality over security. Understanding the default authentication state of critical services is essential for proper security hardening.

Key takeaways:

  • Most critical infrastructure services do not authenticate by default
  • Exposed services provide valuable reconnaissance information even when exploitation isn't possible
  • Combinations of vulnerable services create complete attack paths
  • Proper authentication configuration is the minimum baseline for security
  • Defense in depth requires additional security layers beyond authentication

By understanding these default configurations and implementing proper security controls, organizations can significantly reduce their attack surface and prevent common exploitation scenarios.

Remember: in security, defaults are dangerous—explicit configuration is essential.


Appendix: Comprehensive Service Port and Authentication Reference

The following table provides an extensive reference of 70+ critical services categorized by function, their common ports, authentication status, and the reasoning behind their default security configuration.

ServiceCommon Port(s)Unauthenticated by DefaultReason for Default Configuration
Infrastructure & Containerization
Redis6379YesDesigned for internal trusted networks; prioritizes performance and simplicity
Docker API2375YesDesigned for local development; remote API intended for trusted environments
Kubernetes API Server8080 (insecure)YesLegacy insecure port; originally designed for testing and internal communication
Kubernetes etcd2379, 2380YesDesigned as trusted backend component; assumes perimeter security
Kubernetes Kubelet10250YesIntended for internal cluster communication only
Kubernetes Dashboard30000-32767Yes (older versions)Created for ease of use in development environments
Docker Registry5000YesIntended for development environments; production use expected to add auth
Consul8500 (HTTP), 8501 (HTTPS)YesDesigned for service-to-service communication in trusted networks
Nomad4646YesDesigned for internal use with assumed network-level protections
Vagrant2222YesDevelopment tool; SSH key authentication handled separately
Databases
MongoDB27017Yes (pre-v3)Legacy design prioritized ease of use over security
CouchDB5984Yes (pre-v3)"Admin Party" mode for ease of setup and development
Elasticsearch9200, 9300Yes (pre-v8)Originally designed for trusted environments and internal use
Cassandra9042, 7000YesBuilt for trusted internal network deployment
InfluxDB8086Yes (pre-v2)Optimized for quick setup and metrics collection
MySQL3306NoUses username/password, but default users may exist
PostgreSQL5432NoRequires authentication but may have local trust configuration
Neo4j7474, 7687Yes (pre-v4)Designed for developer-friendly startup experience
RethinkDB8080, 28015YesPrioritized developer experience and internal use
ArangoDB8529YesWeb interface accessible without auth for easier setup
Message Brokers & Queues
Apache Kafka9092YesDesigned for internal network use with assumed security
RabbitMQ5672, 15672NoUses default credentials (guest/guest) instead of no auth
ActiveMQ61616, 8161MixedBroker requires auth, web console uses default credentials
NATS4222YesOptimized for performance in trusted environments
ZeroMQVariableYesSecurity handled at application layer, not transport
Apache Pulsar6650, 8080YesOriginal design assumed deployment in secure environments
NSQ4150, 4151YesDesigned for simplicity in internal deployments
EMQ X1883, 8083YesDesigned for IoT scenarios with auth at application layer
Caching & In-Memory Systems
Memcached11211YesNo authentication mechanism in core design; prioritizes speed
Hazelcast5701YesCluster communication designed for internal networks
Ehcache9998YesIntended as embedded or internal component
Monitoring & Metrics
Prometheus9090YesDesigned for internal metrics collection without overhead
Grafana3000NoUses default credentials (admin/admin)
cAdvisor8080YesDesigned as infrastructure component with assumed security
Nagios80NoWeb interface uses default credentials
Zabbix10051YesAgent-server protocol without auth; web interface has auth
InfluxDB Telegraf8125YesMetrics receiver designed for internal use
Graphite2003, 8080YesOriginal design focused on metrics collection, not security
StatsD8125YesOptimized for speed and internal metrics collection
Icinga5665YesAgent protocol designed for internal networks
API Gateways & Load Balancers
Nginx80, 443YesWeb server/proxy with no auth by default; auth configured per-site
HAProxy80, 443YesProxy layer; authentication implemented at application level
Traefik80, 8080YesDashboard exposed without auth for easier management
Kong8000, 8001YesAdmin API designed for protected internal access
Envoy9901YesAdmin interface assumes deployment in secure environment
Storage & File Services
MinIO9000NoUses access/secret keys similar to S3
NFS2049YesRelies on IP-based authentication and Unix permissions
Samba445NoUses username/password or domain authentication
GlusterFS24007YesDistributed storage designed for trusted networks
Ceph6800-7300YesInternal cluster communication assumes network security
WebDAV80, 443MixedProtocol supports auth but often deployed without it
DevOps & CI/CD Tools
Jenkins8080NoInitial setup requires unlock key, then creates admin user
GitLab80, 443NoRequires user creation during setup
GitHub Actions Runner80, 443NoUses tokens for authentication
TeamCity8111NoRequires setup of admin user
Artifactory8081NoUses default credentials (admin/password)
Nexus Repository8081NoUses default credentials (admin/admin123)
SonarQube9000NoUses default credentials (admin/admin)
Search Engines
Solr8983YesOriginally designed for embedded use with no auth
OpenSearch9200NoFork of Elasticsearch with security enabled by default
Sphinx9312, 9306YesDesigned as backend component with assumed security
Service Discovery
etcd2379, 2380YesKey-value store designed for trusted internal networks
Apache ZooKeeper2181YesDesigned for internal cluster coordination
Eureka8761YesInternal service registry for microservices
Nacos8848NoUses default credentials (nacos/nacos)
Configuration Management
Spring Cloud Config Server8888YesConfiguration server often deployed without auth in dev
Apache Apollo61680YesManagement web interface without default auth
Identity Services
Keycloak8080NoIdentity server with initial admin user creation
OpenLDAP389, 636NoDirectory service with mandatory authentication
FreeIPA80, 443NoIdentity management with mandatory authentication
Miscellaneous Services
RPC Bind111YesLegacy design from trusted network era
CUPS631YesPrint server with optional authentication
Strapi1337NoCMS requiring admin setup during installation
Jupyter Notebook8888YesDevelopment tool using token-based auth but easily disabled
Ghost2368NoCMS with setup wizard for admin user
Kibana5601Yes (pre-v8)Analytics UI for Elasticsearch following same security model
Apache Airflow8080NoUses default credentials (airflow/airflow)
phpMyAdmin80NoRequires database credentials
Portainer9000NoRequires admin setup on first launch
RStudio Server8787NoUses system authentication
Node-RED1880YesDevelopment tool designed for easier access
Home Assistant8123NoSmart home platform requiring user setup
Superset8088NoAnalytics platform with user authentication
WordPress80, 443NoCMS requiring admin setup
Drupal80, 443NoCMS requiring installation and admin setup
Joomla80, 443NoCMS requiring installation and admin setup

Why Services Often Lack Authentication By Default

Many critical services ship without authentication by default for several key reasons:

  1. Historical Context: Many services were designed during an era when internal networks were considered trusted, and external firewalls were the primary security control.
  1. Performance Considerations: Authentication adds overhead to every request. Services prioritizing high throughput or low latency often omit authentication.
  1. Developer Experience: Faster setup and easier debugging drive adoption. Authentication adds complexity during development.
  1. Internal Component Assumption: Many services were designed to be internal components protected by other layers of security, not directly exposed.
  1. Segregation of Concerns: Some services delegate authentication to frontend proxies or API gateways rather than implementing it themselves.
  1. Configuration Over Convention: Certain services expect operators to configure security based on their specific needs, rather than enforcing opinions.
  1. Backward Compatibility: Services maintain insecure defaults to avoid breaking existing deployments.

This explains why even modern infrastructure components often require explicit security hardening, creating an "insecure by default" problem that continues to plague many deployments.

Need help hardening your environment?

Talk to the Bugb security team directly.

Book a session