<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Security on Du Song's Tech Blog</title><link>https://blog.dusong.ai/tags/security/</link><description>Recent content in Security on Du Song's Tech Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 20 Mar 2026 16:45:00 +0800</lastBuildDate><atom:link href="https://blog.dusong.ai/tags/security/index.xml" rel="self" type="application/rss+xml"/><item><title>Practical fail2ban Configuration for SSH Protection</title><link>https://blog.dusong.ai/posts/fail2ban-ssh/</link><pubDate>Fri, 20 Mar 2026 16:45:00 +0800</pubDate><guid>https://blog.dusong.ai/posts/fail2ban-ssh/</guid><description>How to configure fail2ban to protect SSH from brute-force attacks, with practical tips on tuning ban times and handling false positives.</description></item><item><title>Automating Let's Encrypt Certificates with acme.sh</title><link>https://blog.dusong.ai/posts/acme-sh-letsencrypt/</link><pubDate>Sun, 01 Mar 2026 09:15:00 +0800</pubDate><guid>https://blog.dusong.ai/posts/acme-sh-letsencrypt/</guid><description>Setting up automated SSL certificate issuance and renewal using acme.sh with DNS-01 validation via Cloudflare.</description></item></channel></rss>