{"id":14337,"date":"2025-12-30T10:49:17","date_gmt":"2025-12-30T05:19:17","guid":{"rendered":"https:\/\/www.youstable.com\/blog\/?p=14337"},"modified":"2025-12-30T10:49:19","modified_gmt":"2025-12-30T05:19:19","slug":"how-to-monitor-secure-fail2ban-on-linux-server","status":"publish","type":"post","link":"https:\/\/www.youstable.com\/blog\/how-to-monitor-secure-fail2ban-on-linux-server","title":{"rendered":"How to Monitor &amp; Secure Fail2ban on Linux Server &#8211; Complete Guide"},"content":{"rendered":"\n<p><strong>To monitor and secure Fail2ban on a Linux server<\/strong>, regularly check jail status and logs, tune jail.local with sane defaults (findtime, maxretry, bantime), enable alerts, and audit firewall actions. Use fail2ban client for visibility, create service-specific filters, deploy recidive and incremental bans, and integrate Prometheus or email notifications for proactive monitoring.<\/p>\n\n\n\n<p>Fail2ban is a powerful intrusion prevention framework for Linux servers. In this guide, you\u2019ll learn exactly how to monitor and secure Fail2ban on a Linux server with proven, production ready practices. We\u2019ll cover monitoring commands, logging, alerting, optimal jail.local settings, performance tuning with nftables\/ipset, and practical troubleshooting steps.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-is-fail2ban-and-how-it-protects-your-linux-server\"><strong>What is Fail2ban and How It Protects Your Linux Server<\/strong><\/h2>\n\n\n\n<p>Fail2ban scans logs for suspicious authentication attempts and automatically bans offending IPs using your system firewall. It\u2019s lightweight, flexible, and a must-have for public-facing services such as SSH, Nginx, Apache, Postfix, Dovecot, Pure-FTPd, and more.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"filters-jails-and-actions-explained\"><strong>Filters, Jails, and Actions Explained<\/strong><\/h3>\n\n\n\n<p><strong>&#8211; Filters:<\/strong> Regex rules that match malicious log entries (e.g., repeated SSH failures).<br><strong>&#8211; Jails:<\/strong> Service-specific policies combining filters, log paths, and ban parameters.<br><strong>&#8211; Actions:<\/strong> What to do when a ban triggers (e.g., add a firewall rule, email an alert).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"iptables-nftables-and-firewalld\"><strong>iptables, nftables, and firewalld<\/strong><\/h3>\n\n\n\n<p>Fail2ban can manage bans through iptables, nftables, or firewalld. On modern distributions, nftables or firewalld is recommended for performance and maintainability. Pick an action that matches your firewall stack (e.g., nftables, firewallcmd-rich-rules, or iptables-ipset).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"quick-start-monitor-fail2ban-in-real-time\"><strong>Quick Start: Monitor Fail2ban in Real Time<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"essential-fail2ban-client-commands\"><strong>Essential fail2ban-client Commands<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Is Fail2ban running?\nsudo systemctl status fail2ban\nsudo fail2ban-client ping\n\n# List all jails\nsudo fail2ban-client status\n\n# Check a specific jail (e.g., sshd)\nsudo fail2ban-client status sshd\n\n# Ban and unban manually (for testing)\nsudo fail2ban-client set sshd banip 203.0.113.10\nsudo fail2ban-client set sshd unbanip 203.0.113.10\n\n# Reload configuration safely after edits\nsudo fail2ban-client reload\n\n# Dump the effective configuration (great for debugging)\nsudo fail2ban-client -d<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"read-logs-and-increase-verbosity\"><strong>Read Logs and Increase Verbosity<\/strong><\/h3>\n\n\n\n<p>By default, Fail2ban logs to \/var\/log\/fail2ban.log or the systemd journal. Increase verbosity while debugging and revert to normal once stable.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Tail Fail2ban logs\nsudo tail -f \/var\/log\/fail2ban.log\n# If using systemd backend\nsudo journalctl -u fail2ban -f\n\n# Temporarily increase log level to DEBUG (then restart)\n# In \/etc\/fail2ban\/fail2ban.local or jail.local:\n&#91;DEFAULT]\nloglevel = DEBUG<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"watch-the-firewall-rules-in-action\"><strong>Watch the Firewall Rules in Action<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># iptables\nsudo iptables -S | grep f2b\nsudo iptables -L -n --line-numbers | grep f2b\n\n# nftables\nsudo nft list ruleset | grep -i fail2ban\n\n# firewalld (rich rules)\nsudo firewall-cmd --list-rich-rules<\/code><\/pre>\n\n\n\n<p>This confirms that bans are being applied and removed as intended.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"secure-configuration-best-practice-jail-local\"><strong>Secure Configuration: Best-Practice jail.local<\/strong><\/h2>\n\n\n\n<p>Never edit jail.conf. Create \/etc\/fail2ban\/jail.local to override defaults and keep upgrades safe. Below is a strong baseline to monitor and secure Fail2ban on a Linux server.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"baseline-sshd-jail\"><strong>Baseline SSHD Jail<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \/etc\/fail2ban\/jail.local\n&#91;DEFAULT]\n# Whitelist your management IPs and private networks\nignoreip = 127.0.0.1\/8 ::1 192.0.2.0\/24 198.51.100.0\/24\n\n# Reasonable defaults\nbantime = 1h\nfindtime = 10m\nmaxretry = 5\nbantime.increment = true\nbantime.factor = 1.5\nbantime.maxtime = 1d\n\n# Use systemd for robust log handling (where supported)\nbackend = systemd\n\n# Choose action that matches your firewall\n# For nftables:\nbanaction = nftables-multiport\n# Or for firewalld:\n# banaction = firewallcmd-rich-rules\n# Or for iptables (with ipset for performance):\n# banaction = iptables-ipset-proto4\n\n# Email alerts with whois and log excerpts (set destemail and sender)\ndestemail = admin@example.com\nsender = fail2ban@example.com\naction = %(action_mwl)s\n\n&#91;sshd]\nenabled = true\nport    = ssh\nfilter  = sshd\nlogpath = %(sshd_log)s\nmaxretry = 5\nfindtime = 10m\nbantime  = 2h\n<\/code><\/pre>\n\n\n\n<p>Tip: For hardened environments, set bantime = -1 for permanent bans after recidivism, and manage exceptions with ignoreip.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"enable-recidive-and-incremental-bans\"><strong>Enable Recidive and Incremental Bans<\/strong><\/h3>\n\n\n\n<p>Attackers often return. The recidive jail bans IPs that trigger multiple jails over time. With bantime.increment enabled, repeat offenders get progressively longer bans.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;recidive]\nenabled  = true\nlogpath  = \/var\/log\/fail2ban.log\nfilter   = recidive\nbantime  = 1d\nfindtime = 1d\nmaxretry = 10\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"ignore-trusted-ips-and-networks\"><strong>Ignore Trusted IPs and Networks<\/strong><\/h3>\n\n\n\n<p>Add your office ranges, VPN subnets, and monitoring systems to ignoreip to prevent accidental lockouts. Maintain this list centrally and version-control your jail.local where possible.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"backend-and-logrotate-safety\"><strong>Backend and Logrotate Safety<\/strong><\/h3>\n\n\n\n<p>Using backend = systemd helps avoid missing log lines during log rotation. If you consume files directly, ensure logrotate uses copytruncate or signals the service correctly. Test by rotating logs, then verifying bans still trigger.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"monitoring-and-alerting-options\"><strong>Monitoring &amp; Alerting Options<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"email-alerts\"><strong>Email Alerts<\/strong><\/h3>\n\n\n\n<p>Use action = %(action_mwl)s for email notifications including whois and log snippets. Ensure a working MTA (Postfix\/Exim\/SSMTP) or relay via your provider. Keep subject lines consistent to integrate with ticketing or SIEM tools.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"prometheus-and-dashboards\"><strong>Prometheus and Dashboards<\/strong><\/h3>\n\n\n\n<p>For advanced observability, deploy a Fail2ban Prometheus exporter and visualize ban counts per jail, top offenders, and ban rates in Grafana. Alert on anomalies (e.g., sudden spikes of SSH bans or zero activity during known attack windows).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"systemd-health-checks-and-auto-restart\"><strong>Systemd Health Checks and Auto-Restart<\/strong><\/h3>\n\n\n\n<p>Ensure Fail2ban survives reboots and crashes.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Enable on boot and confirm status\nsudo systemctl enable --now fail2ban\nsystemctl is-active fail2ban &amp;&amp; systemctl is-enabled fail2ban\n\n# Add a simple timer\/cron health check (example cron)\n* * * * * \/usr\/bin\/fail2ban-client ping &gt;\/dev\/null 2&gt;&amp;1 || \/usr\/bin\/systemctl restart fail2ban<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"scaling-and-performance-tips\"><strong>Scaling and Performance Tips<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"use-sets-ipset-or-nft-sets\"><strong>Use Sets: ipset or nft sets<\/strong><\/h3>\n\n\n\n<p>Large ban lists can slow packet processing if each ban becomes its own rule. Prefer actions that use ipset (iptables-ipset) or nft sets (nftables-multiport). This keeps firewall rules compact and scales to thousands of IPs efficiently.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"tune-findtime-and-bantime-for-your-attack-surface\"><strong>Tune findtime and bantime for Your Attack Surface<\/strong><\/h3>\n\n\n\n<p>SSH on a public port faces steady attacks. A typical starting point is maxretry 5, findtime 10m, bantime 1\u20132h, with incremental bans for repeat offenders. For web apps, tune per service and ensure your filters match real log lines.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"cloud-proxies-and-real-client-ips\"><strong>Cloud, Proxies, and Real Client IPs<\/strong><\/h3>\n\n\n\n<p>If you\u2019re behind a reverse proxy or CDN (e.g., Nginx + Cloudflare), restore the real client IP in logs. Otherwise, Fail2ban may ban the proxy IPs instead of attackers. Configure real_ip_header\/X-Forwarded-For on Nginx\/Apache and update filters accordingly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"troubleshooting-fail2ban-like-a-pro\"><strong>Troubleshooting Fail2ban Like a Pro<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"test-filters-with-fail2ban-regex\"><strong>Test Filters with fail2ban-regex<\/strong><\/h3>\n\n\n\n<p>When a jail doesn\u2019t ban as expected, verify that the filter matches actual log lines.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Compare a logfile against a filter\nsudo fail2ban-regex \/var\/log\/auth.log \/etc\/fail2ban\/filter.d\/sshd.conf\n\n# Test a single example line (helpful for custom filters)\necho \"Jul  1 12:34:56 server sshd&#91;1234]: Failed password for root from 203.0.113.50 port 54321 ssh2\" | \\\nsudo fail2ban-regex - \/etc\/fail2ban\/filter.d\/sshd.conf<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"common-pitfalls-and-fixes\"><strong>Common Pitfalls and Fixes<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>No bans appearing:<\/strong> Check the filter name, logpath, and backend. Confirm logs contain matching entries.<\/li>\n\n\n\n<li><strong>False positives:<\/strong> Relax regex or add ignoreip for trusted automation\/monitoring IPs.<\/li>\n\n\n\n<li><strong>Firewall conflicts:<\/strong> Ensure your chosen banaction matches your firewall (nftables\/firewalld\/iptables).<\/li>\n\n\n\n<li><strong>Log rotation issues: <\/strong>Prefer backend = systemd or configure logrotate with copytruncate.<\/li>\n\n\n\n<li><strong>Proxy\/CDN setups:<\/strong> Restore real client IPs in logs to avoid banning the proxy.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"protect-more-than-ssh-nginx-apache-mail-and-ftp\"><strong>Protect More Than SSH: Nginx, Apache, Mail, and FTP<\/strong><\/h2>\n\n\n\n<p>Enable additional jails as needed:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Nginx\/Apache:<\/strong> Protect WordPress wp-login.php, xmlrpc.php, 404 scans, and known bot patterns with hardened filters.<\/li>\n\n\n\n<li><strong>Postfix\/Dovecot:<\/strong> Defend against SMTP\/IMAP\/POP brute-force attempts.<\/li>\n\n\n\n<li><strong>FTP\/FTPS:<\/strong> Shield vsftpd or Pure-FTPd from credential stuffing.<\/li>\n<\/ul>\n\n\n\n<p>Always test each jail with fail2ban-regex against your actual logs because log formats vary by distro and service version.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"step-by-step-from-zero-to-production\"><strong>Step-by-Step: From Zero to Production<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Install and start:<\/strong> apt\/dnf install fail2ban, then systemctl enable &#8211;now fail2ban.<\/li>\n\n\n\n<li>Create jail.local, set backend, banaction, ignoreip, and defaults.<\/li>\n\n\n\n<li>Enable sshd and other service jails. Reload Fail2ban.<\/li>\n\n\n\n<li>Verify with fail2ban-client status and status &lt;jail&gt;.<\/li>\n\n\n\n<li>Simulate bad auth to confirm bans. Check firewall rules.<\/li>\n\n\n\n<li>Enable alerts (email\/Prometheus). Add health checks.<\/li>\n\n\n\n<li>Scale with ipset\/nft sets, recidive, and incremental bans.<\/li>\n\n\n\n<li><strong>Review weekly:<\/strong> top offenders, ban durations, false positives, and filter accuracy.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"faqs\"><strong>FAQ&#8217;s<\/strong><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1765954449466\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"1-how-do-i-check-if-fail2ban-is-working-on-my-linux-server\">1. <strong>How do I check if Fail2ban is working on my Linux server?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Run sudo fail2ban-client ping and sudo fail2ban-client status. Then check a jail: sudo fail2ban-client status sshd. Trigger a test (e.g., failed SSH logins) and confirm a ban appears in status and your firewall rules (iptables, nftables, or firewalld).<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765954461722\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"2-what-are-recommended-bantime-findtime-and-maxretry-values-for-ssh\">2. <strong>What are recommended bantime, findtime, and maxretry values for SSH?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>A common baseline: maxretry 5, findtime 10m, bantime 1\u20132h, with bantime.increment enabled. For persistent attackers, add a recidive jail and consider permanent bans for repeat offenders after due diligence.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765954470739\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"3-can-fail2ban-send-email-alerts-when-an-ip-is-banned\">3. <strong>Can Fail2ban send email alerts when an IP is banned?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. Set destemail, sender, and action = %(action_mwl)s in jail.local. Ensure an MTA is configured or relay emails via your provider. Test with a manual ban: sudo fail2ban-client set sshd banip.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765954487560\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"4-does-fail2ban-work-with-nftables-firewalld-and-ufw\">4. <strong>Does Fail2ban work with nftables, firewalld, and UFW?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Fail2ban supports nftables (nftables-multiport), firewalld (firewallcmd-rich-rules), iptables, and UFW (ufw). Choose the appropriate banaction for your firewall stack to ensure bans are applied correctly.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765954520322\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"5-how-do-i-unban-or-whitelist-an-ip-safely\">5. <strong>How do I unban or whitelist an IP safely?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Unban with sudo fail2ban-client set &lt;jail&gt; unbanip &lt;IP&gt;. For whitelisting, add the IP or CIDR to ignoreip in [DEFAULT] inside jail.local and reload Fail2ban. Always document whitelists and review them periodically.<\/p>\n<p>With these practices, you can confidently monitor and secure Fail2ban on a Linux server, minimize false positives, and keep attackers at bay\u2014proactively and at scale.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>To monitor and secure Fail2ban on a Linux server, regularly check jail status and logs, tune jail.local with sane defaults [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":16669,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[350],"tags":[],"class_list":["post-14337","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledgebase"],"acf":[],"featured_image_src":"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/How-to-Monitor-Secure-Fail2ban-on-Linux-Server.jpg","author_info":{"display_name":"Prahlad Prajapati","author_link":"https:\/\/www.youstable.com\/blog\/author\/prahladblog"},"_links":{"self":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/14337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/comments?post=14337"}],"version-history":[{"count":4,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/14337\/revisions"}],"predecessor-version":[{"id":16671,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/14337\/revisions\/16671"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media\/16669"}],"wp:attachment":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media?parent=14337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/categories?post=14337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/tags?post=14337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}