Yandex Outage: Data Shows That Instead Of Going Dark, Malicious Bots Went On The Move
Hey folks, welcome back to Self-Hosted Tech. If you’ve been running a homelab or self-hosting your applications for any amount of time, you know that the internet is a noisy place. Your logs are constantly filling up with random requests from unknown IP addresses trying to log into your SSH server, hit your admin panels, or exploit vulnerabilities you didn’t even know existed.
But have you ever noticed that sometimes, out of nowhere, the noise gets significantly louder?
Recently, we saw a major outage with Yandex, the Russian multinational tech giant often referred to as the “Google of Russia.” Yandex provides a massive array of services, from search and email to cloud hosting and APIs. When their infrastructure went down, you’d expect the internet to get a little quieter, right? If a major cloud provider and search engine goes offline, the traffic should drop.
Well, recent data shows the exact opposite happened. Instead of going dark, malicious bots went on the move. And unfortunately for us, their new targets are often the self-hosted servers sitting in our basements and closets.
Let’s break down why this happens, why your homelab is suddenly in the crosshairs, and most importantly, how we can build a practical defense to keep these wandering bots out.
The Anatomy of a Bot Migration
To understand why an outage causes a surge in attacks elsewhere, we need to understand how modern malicious bots operate. They aren’t just simple scripts running on a single server anymore. They are distributed, resilient, and highly automated.
When a major provider like Yandex experiences an outage, a few things happen simultaneously:
- C2 Server Failover: Many botnets use cloud providers to host their Command and Control (C2) servers. If a bot’s primary C2 server is hosted on Yandex Cloud and goes offline, the bot malware is often programmed to seek out fallback IP addresses or domains. This causes a sudden, synchronized wave of bots reconnecting to new servers, which often triggers a burst of new attack commands.
- Target Discovery Shifts: Bots frequently use search engines (like Yandex, Google, or Shodan) to find vulnerable targets using specific dork queries (e.g.,
inurl:"/admin/login.php"). When Yandex search went down, bots programmed to rely on it didn’t just stop; they pivoted to alternative scanning methods, like aggressive direct IP port scanning or querying other databases like Censys or ZoomEye. - The Whack-a-Mole Effect: When a massive chunk of the internet goes dark, the remaining infrastructure absorbs the overflow traffic. Bots that were hammering Yandex-hosted services suddenly found nothing to hit, so they expanded their scanning ranges to fill the time, hitting random IP blocks—many of which belong to residential ISPs and cloud providers where our self-hosted apps live.
Why Self-Hosters Are the Low-Hanging Fruit
When bots go on the move, they look for the path of least resistance. While enterprise networks have dedicated security teams and expensive firewalls, self-hosted environments are often managed by individuals who are prioritizing functionality over security (we’re all guilty of it!).
We spin up a Nextcloud instance to sync our files, a Home Assistant to control our lights, or a Guacamole server to access our desktops remotely. To make these accessible, we port forward 80 and 443 on our routers.
Here is why the bots love us:
- Default Credentials: We forget to change the default admin password on that new Docker container.
- Unpatched Software: We set it and forget it. Six months later, a critical RCE (Remote Code Execution) vulnerability is disclosed, and our instance is still running the old version.
- Exposed Management Ports: We expose phpMyAdmin, Portainer, or direct database ports to the public internet because it’s easier than setting up a VPN.
When the bots migrate, they scan vast ranges of IPs looking for these exact mistakes.
Practical Walkthrough: Hardening Your Homelab Fortress
So, how do we protect ourselves when the bot hordes come knocking? We can’t stop them from scanning, but we can make sure our doors are locked, reinforced, and monitored. Let’s walk through a practical, beginner-friendly setup to secure your self-hosted stack using a reverse proxy, a modern intrusion prevention system, and automated updates.
Step 1: Put Everything Behind a Reverse Proxy
Never expose your application ports directly to the internet. Instead, use a reverse proxy. A reverse proxy sits between the internet and your internal services. It handles incoming web traffic (ports 80 and 443), terminates SSL, and forwards the traffic to your internal containers.
We highly recommend Caddy for beginners. It is incredibly easy to configure and handles HTTPS certificates automatically via Let’s Encrypt.
Here is a basic Caddyfile setup to protect a Nextcloud instance:
| |
With this in place, the outside world only interacts with Caddy. If an attacker tries to access nextcloud.yourdomain.com:8080 directly, they’ll fail, because your router is only forwarding ports 80 and 443 to Caddy.
Step 2: Deploy CrowdSec (The Modern Bouncer)
A reverse proxy is a great door, but you need a bouncer to kick out the troublemakers. While Fail2Ban has been the standard for years, CrowdSec is the modern, collaborative alternative that is perfect for homelabs.
CrowdSec reads your logs (Nginx, Caddy, SSH, etc.), detects malicious behavior (like brute-force attacks or port scanning), and bans the IP. The best part? It shares those banned IPs with the global CrowdSec community. If a bot attacks a server in France, that IP is shared, and your homelab in the US will block it preemptively.
Let’s deploy CrowdSec and its bouncer for Caddy using Docker Compose.
| |
Note: You will need to register an API key inside the CrowdSec container using cscli bouncers add -n caddy-bouncer and paste it into the environment variable above.
Now, if a bot tries to brute-force your login page, CrowdSec will see it in the Caddy logs, ban the IP, and the Caddy bouncer will immediately drop any further connections from that IP, returning a 403 Forbidden.
Step 3: Block Unnecessary Geographic Regions
If you are running a personal Nextcloud or a media server for friends and family in North America, you probably don’t need traffic from every country in the world. A massive amount of bot traffic comes from specific regions.
If you are using Cloudflare as your DNS provider, you can easily set up WAF (Web Application Firewall) rules to block traffic from countries you don’t expect to be accessing your services.
If you prefer to keep everything strictly self-hosted, you can use a tool like xtables-addons with geoip modules on a Linux router, or simply rely on CrowdSec’s community blocklists, which effectively acts as a dynamic geo-block for known bad actors.
Step 4: Automate Your Updates
The most common way bots get in is through known vulnerabilities. If you aren’t updating your Docker containers, you are leaving the front door wide open.
You can use a tool like Watchtower to automatically update your running Docker containers when a new image is pushed.
| |
This command runs Watchtower and schedules it to check for updates at 4:00 AM every day. The --cleanup flag ensures old images are deleted to save disk space.
Pro-tip: If you are running critical databases, you might want to exclude them from automatic updates to prevent breaking changes. You can do this by adding a label to your database container: com.centurylinklabs.watchtower.enable=false.
Monitoring: Knowing When They Knock
You can’t defend what you can’t see. When a major outage happens and the bots start moving, your logs will tell the story. You’ll see a sudden spike in 404 errors, 401 Unauthorized responses, and strange requests for .env files or /wp-admin/.
Deploy Uptime Kuma to monitor your services. It won’t stop the bots, but it will notify you immediately if your reverse proxy goes down or if a service crashes under the load of an unexpected attack wave.
| |
Set up a monitor for your Caddy reverse proxy. If you get a notification that your server is unresponsive at 3 AM, you know it’s time to check your CrowdSec dashboard and see what kind of traffic just rolled in.
Summary
Major outages like the recent Yandex disruption don’t just affect the users of those services; they cause ripple effects across the entire internet. Malicious bots are programmed for resilience. When their primary targets or infrastructure go dark, they pivot, scanning new IP ranges and looking for vulnerable services to exploit.
As self-hosters, we are often the targets of these migrations. But by putting our services behind a secure reverse proxy like Caddy, deploying a modern intrusion prevention system like CrowdSec, and keeping our containers automatically updated, we can build a fortress that turns those wandering bots away.
Call to Action
Have you noticed a spike in bot traffic on your homelab recently? What tools are you using to keep the bad guys out? Drop a comment below and let us know!
If you found this walkthrough helpful, make sure to smash that like button and subscribe to the Self-Hosted Tech channel for more practical guides on securing your homelab, running local AI, and taking back control of your data. Until next time, keep your ports closed and your logs clean!