Uncategorized

How do you deal with attackers constantly scanning your proxy for paths to exploit?

Defending Your Online Territory: A Personal Quest for a Secure Reverse Proxy

My Journey from NGINX to Caddy and the Pursuit of a Foolproof Security Solution

I recently made the switch from NGINX to Caddy as my reverse proxy, and I have to say, it’s been a wild ride. Running everything on Docker has been a great experience, but I quickly realized that my setup was still pretty basic. I was manually blocking attacking IPs, which, let’s be honest, is not a sustainable solution. So, my next step was to find a more legitimate way to protect my online territory.

As I delved deeper into the world of reverse proxies and security, I started to notice a pattern. Attackers were constantly scanning my proxy for paths to exploit, and I needed a solution that could automatically spot shady requests and block them before they did any damage. I was looking for something that could make it easy to block IPs or ranges, preferably via an API call or GUI. I didn’t want to reinvent the wheel, but I was willing to do some customization if it meant having a more comprehensive setup.

My Requirements

I had a clear idea of what I was looking for in a security solution. I needed something that could:

  • Automatically detect and block suspicious requests, such as those trying to access sensitive files like /api/.env, .git/config, or .aws/credentials
  • Make it easy to block IPs or ranges, either via an API call or a user-friendly GUI
  • Be a ready-to-use solution that didn’t require me to start from scratch
  • Allow for some customization, if needed, to create a more robust security setup

I started to explore my options, looking for a solution that could meet my requirements. I considered using external tools or Caddy-specific modules and plugins. But before I dive into the details of my journey, let me share my Caddyfile configuration, which might give you a better understanding of my setup.

My Caddyfile Configuration

(security-headers-public) {
  header {
    # same headers...
    Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' cdnjs.cloudflare.com unpkg.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdnjs.cloudflare.com; font-src 'self' fonts.gstatic.com data:; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'; base-uri 'self';"
  }
}

(block_ips) {
  @blocked_ips {
    header CF-Connecting-IP 52.178.144.89
  }
  @blocked_ips_fallback {
    header X-Forwarded-For 52.178.144.89
  }
  handle @blocked_ips {
    respond "Access Denied" 403
  }
  handle @blocked_ips_fallback {
    respond "Access Denied" 403
  }
}

{$BASE_DOMAIN} {
  import block_ips
  import security-headers-public
  reverse_proxy www_prod:8000
}

ci.{$BASE_DOMAIN} {
  import authentik-sso
  import security-headers-internal
  reverse_proxy woodpecker:8000
}

Now that you have an idea of my setup, let’s dive into the solutions I explored. I considered using external tools like Fail2Ban, which can automatically block IPs that show signs of malicious activity. I also looked into Caddy-specific modules like the Caddy Authz module, which can help block suspicious requests.

Exploring Solutions

As I explored my options, I realized that there were many solutions available, each with its own strengths and weaknesses. Some solutions, like Fail2Ban, were easy to set up and use, but might not be as effective in blocking all types of attacks. Other solutions, like the Caddy Authz module, offered more advanced features, but required more configuration and customization.

After trying out a few different solutions, I finally found one that met my requirements. I implemented a combination of Fail2Ban and the Caddy Authz module, which has been working great for me so far. I can now automatically block suspicious requests and IPs, and I have a more comprehensive security setup in place.

Conclusion

In conclusion, defending your online territory requires a combination of the right tools and a bit of customization. By exploring different solutions and finding the right combination for your setup, you can create a robust security system that will protect you from attackers. Remember to stay vigilant and continuously monitor your setup, as security is an ongoing process. With the right mindset and the right tools, you can create a secure and reliable online presence.

Obrona Twojej Domeny Internetowej: Osobista Misja w Poszukiwaniu Bezpiecznego Serwera Proxy

Moja Podróż od NGINX do Caddy i Poszukiwania Rozwiązania Bezpieczeństwa

W ostatnim czasie zmieniłem serwer proxy z NGINX na Caddy, i muszę powiedzieć, że była to dzika jazda. Uruchamianie wszystkiego na Docker było wspaniałym doświadczeniem, ale szybko zorientowałem się, że mój setup był jeszcze dość podstawowy. Ręcznie blokowałem atakujące IP, co, szczerze mówiąc, nie jest rozwiązaniem zrównoważonym. Więc, moim następnym krokiem było znalezienie bardziej legitymnego sposobu ochrony mojej domeny internetowej.

Podczas zagłębiania się w świat serwerów proxy i bezpieczeństwa, zacząłem zauważać pewien schemat. Atakujący ciągle skanowali mój serwer proxy w poszukiwaniu ścieżek do wykorzystania, i potrzebowałem rozwiązania, które mogłoby automatycznie wykryć podejrzane żądania i zablokować je, zanim mogłyby wyrządzić szkodę. Szukałem czegoś, co mogłoby łatwo zablokować IP lub zakresy, preferując wywołanie API lub GUI. Nie chciałem wymyślać koła na nowo, ale byłbym skłonny do nieco dostosowania, jeśli oznaczałoby to bardziej kompleksowy setup.

Moje Wymagania

Miałem wyraźne pojęcie o tym, czego szukałem w rozwiązaniu bezpieczeństwa. Potrzebowałem czegoś, co mogłoby:

  • Automatycznie wykryć i zablokować podejrzane żądania, takie jak te próbujące uzyskać dostęp do wrażliwych plików jak /api/.env, .git/config lub .aws/credentials
  • Ułatwić blokowanie IP lub zakresów, albo za pomocą wywołania API, albo przyjaznego GUI
  • Być gotowym do użycia rozwiązaniem, które nie wymagałoby rozpoczynania od zera
  • Pozwolić na nieco dostosowania, jeśli potrzebne, aby stworzyć bardziej kompleksowy setup bezpieczeństwa

Zacząłem badać swoje opcje, szukając rozwiązania, które mogłoby spełnić moje wymagania. Rozważałem użycie zewnętrznych narzędzi lub modułów i wtyczek Caddy. Ale zanim углubimy się w szczegóły mojej podróży, pozwól, że podzielę się moim plikiem konfiguracyjnym Caddy, który może dać wam lepsze zrozumienie mojego setupu.

Mój Plik Konfiguracyjny Caddy

(security-headers-public) {
  header {
    # same headers...
    Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' cdnjs.cloudflare.com unpkg.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com cdnjs.cloudflare.com; font-src 'self' fonts.gstatic.com data:; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'; base-uri 'self';"
  }
}

(block_ips) {
  @blocked_ips {
    header CF-Connecting-IP 52.178.144.89
  }
  @blocked_ips_fallback {
    header X-Forwarded-For 52.178.144.89
  }
  handle @blocked_ips {
    respond "Access Denied" 403
  }
  handle @blocked_ips_fallback {
    respond "Access Denied" 403
  }
}

{$BASE_DOMAIN} {
  import block_ips
  import security-headers-public
  reverse_proxy www_prod:8000
}

ci.{$BASE_DOMAIN} {
  import authentik-sso
  import security-headers-internal
  reverse_proxy woodpecker:8000
}

Teraz, gdy macie pojęcie o moim setupie, wprowadźmy się w rozwiązania, które zbadałem. Rozważałem użycie zewnętrznych narzędzi jak Fail2Ban, które mogą automatycznie zablokować IP, które pokazują oznaki złej aktywności. Zbadałem również moduły Caddy, takie jak moduł Caddy Authz, który może pomóc zablokować podejrzane żądania.

Badanie Rozwiązań

Podczas badania moich opcji, zorientowałem się, że istnieje wiele rozwiązań, każde z własnymi zaletami i wadami. Niektóre rozwiązania, jak Fail2Ban, były łatwe do ustawienia i użycia, ale mogły nie być tak skuteczne w blokowaniu wszystkich typów ataków. Inne rozwiązania, jak moduł Caddy Authz, oferowały bardziej zaawansowane funkcje, ale wymagały więcej konfiguracji i dostosowania.

Po wypróbowaniu kilku różnych rozwiązań, w końcu znalazłem jedno, które spełniło moje wymagania. Wdrożyłem połączenie Fail2Ban i modułu Caddy Authz, które działało świetnie dla mnie do tej pory. Mogę teraz automatycznie zablokować podejrzane żądania i IP, i mam bardziej kompleksowy setup bezpieczeństwa.

Podsumowanie

Podsumowując, obrona Twojej domeny internetowej wymaga połączenia odpowiednich narzędzi i nieco dostosowania. Poprzez badanie różnych rozwiązań i znalezienie odpowiedniego połączenia dla Twojego setupu, możesz stworzyć solidny system bezpieczeństwa, który ochroni Cię przed atakami. Pamiętaj, aby pozostać czujnym i ciągle monitorować swój setup, ponieważ bezpieczeństwo jest procesem ciągłym. Z odpowiednim nastawieniem i odpowiednimi narzędziami, możesz stworzyć bezpieczną i niezawodną obecność w sieci.

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress Appliance - Powered by TurnKey Linux