<?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>Firewall on Dhoomketu</title>
    <link>https://dhoomketu.net.in/categories/firewall/</link>
    <description>Recent content in Firewall on Dhoomketu</description>
    <image>
      <title>Dhoomketu</title>
      <url>https://dhoomketu.net.in/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://dhoomketu.net.in/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.151.0</generator>
    <language>mr</language>
    <lastBuildDate>Fri, 10 Oct 2025 02:54:00 +0530</lastBuildDate>
    <atom:link href="https://dhoomketu.net.in/categories/firewall/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Using nftables for dynamic rules</title>
      <link>https://dhoomketu.net.in/2025/10/using-nftables-for-dynamic-rules/</link>
      <pubDate>Thu, 09 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://dhoomketu.net.in/2025/10/using-nftables-for-dynamic-rules/</guid>
      <description>&lt;h1 id=&#34;create-ruleset&#34;&gt;Create ruleset&lt;/h1&gt;
&lt;h2 id=&#34;file-nftablesconf&#34;&gt;File &lt;code&gt;nftables.conf&lt;/code&gt;&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-nft&#34; data-lang=&#34;nft&#34;&gt;table inet mytable {
    set block_network {
        type ipv4_addr
        timeout 1h
        flags interval
    }
    set block_network6 {
        type ipv6_addr
        timeout 1h
        flags interval
    }

    chain input {
        type filter hook input priority 0;
        ip saddr @block_network drop
        ip6 saddr @block_network6 drop
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;load-ruleset&#34;&gt;Load ruleset&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft -f nftables.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;list-ruleset&#34;&gt;List ruleset&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft list ruleset
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;add-element&#34;&gt;Add element&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add element ip my_filter block_network &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; 192.0.2.0/24&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft add element ip6 my_filter block_network6 &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; 2001:db8::/32&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;delete-element&#34;&gt;Delete element&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete element ip my_filter block_network &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; 192.0.2.0/24&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete element ip6 my_filter block_network6 &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; 2001:db8::/32&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;flush-set&#34;&gt;Flush set&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft flush ip my_filter block_network
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft flush ip6 my_filter block_network6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;backup&#34;&gt;Backup&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft list ruleset &amp;gt; nftables.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;restore&#34;&gt;Restore&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft restore &amp;lt; nftables.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;delete&#34;&gt;Delete&lt;/h1&gt;
&lt;h2 id=&#34;table&#34;&gt;Table&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete table inet mytable
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;set&#34;&gt;Set&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; ip my_filter block_network
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; ip6 my_filter block_network6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;rule&#34;&gt;Rule&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete rule ip my_filter INPUT ip saddr @block_network drop
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nft delete rule ip6 my_filter INPUT ip6 saddr @block_network6 drop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Using ipset for dynamic rules</title>
      <link>https://dhoomketu.net.in/2025/06/using-ipset-for-dynamic-rules/</link>
      <pubDate>Wed, 25 Jun 2025 00:00:00 +0000</pubDate>
      <guid>https://dhoomketu.net.in/2025/06/using-ipset-for-dynamic-rules/</guid>
      <description>&lt;h1 id=&#34;create-set&#34;&gt;Create set&lt;/h1&gt;
&lt;h2 id=&#34;ipv4&#34;&gt;IPv4&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset create block_network hash:net family inet
ipset create block_network hash:net timeout 3600 family inet
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;ipv6&#34;&gt;IPv6&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset create block_network6 hash:net family inet6
ipset create block_network6 hash:net timeout 3600 family inet6
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;create-firewall-rules&#34;&gt;Create firewall rules&lt;/h1&gt;
&lt;h2 id=&#34;ipv4-1&#34;&gt;IPv4&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;iptables -I INPUT -m set --match-set block_network src -j DROP
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;ipv6-1&#34;&gt;IPv6&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ip6tables -I INPUT -m set --match-set block_network6 src -j DROP
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;block-network&#34;&gt;Block network&lt;/h1&gt;
&lt;h2 id=&#34;ipv4-2&#34;&gt;IPv4&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset add block_network 192.0.2.0/24
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;ipv6-2&#34;&gt;IPv6&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset add block_network6 2001:db8::/32
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;unblock-network&#34;&gt;Unblock network&lt;/h1&gt;
&lt;h2 id=&#34;ipv4-3&#34;&gt;IPv4&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset del block_network 192.0.2.0/24
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;ipv6-3&#34;&gt;IPv6&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset del block_network6 2001:db8::/32
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;flush-set&#34;&gt;Flush set&lt;/h1&gt;
&lt;h2 id=&#34;ipv4-4&#34;&gt;IPv4&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset flush block_network
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;ipv6-4&#34;&gt;IPv6&lt;/h2&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset flush block_network6
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;delete-set&#34;&gt;Delete set&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset destroy block_network
ipset destroy block_network6
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;backup&#34;&gt;Backup&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset save block_network &amp;gt; block_network.ipset
ipset save block_network6 &amp;gt; block_network6.ipset
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;restore&#34;&gt;Restore&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ipset restore &amp;lt; block_network.ipset
ipset restore &amp;lt; block_network6.ipset
&lt;/code&gt;&lt;/pre&gt;&lt;h1 id=&#34;delete-firewall&#34;&gt;Delete firewall&lt;/h1&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;iptables -D INPUT -m set --match-set block_network src -j DROP
ip6tables -D INPUT -m set --match-set block_network6 src -j DROP
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
  </channel>
</rss>
