<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Projects on Ankit Maurya</title>
    <link>https://ankitmaurya.pages.dev/projects/</link>
    <description>Recent content in Projects on Ankit Maurya</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sat, 15 Jun 2024 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://ankitmaurya.pages.dev/projects/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MCP Monitoring Tool</title>
      <link>https://ankitmaurya.pages.dev/projects/mcp-monitoring/</link>
      <pubDate>Sat, 15 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://ankitmaurya.pages.dev/projects/mcp-monitoring/</guid>
      <description>&lt;p&gt;This project is a proxy-based monitoring system for inspecting LLM context during conversations. It provides visibility into what&amp;rsquo;s being sent to and from AI models.&lt;/p&gt;&#xA;&lt;h2 id=&#34;features&#34;&gt;Features&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Context Inspection&lt;/strong&gt;: Monitor all prompts and responses going to LLM APIs&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Security Logging&lt;/strong&gt;: Capture and store interaction data for security analysis&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Real-time Monitoring&lt;/strong&gt;: Live view of active conversations&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Data Export&lt;/strong&gt;: Export conversation logs for analysis&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;The tool sits as a proxy between your application and the LLM API, intercepting all traffic for inspection.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Secure Cloudflare Tunnel &#43; Nginx</title>
      <link>https://ankitmaurya.pages.dev/projects/cloudflare-tunnel/</link>
      <pubDate>Mon, 20 May 2024 00:00:00 +0000</pubDate>
      <guid>https://ankitmaurya.pages.dev/projects/cloudflare-tunnel/</guid>
      <description>&lt;p&gt;A comprehensive guide to exposing self-hosted services securely using Cloudflare Tunnel and Nginx reverse proxy.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-this-setup&#34;&gt;Why This Setup?&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;No need to open ports on your firewall&lt;/li&gt;&#xA;&lt;li&gt;Automatic SSL/TLS encryption&lt;/li&gt;&#xA;&lt;li&gt;DDoS protection from Cloudflare&lt;/li&gt;&#xA;&lt;li&gt;Access control via Cloudflare Access&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;architecture-overview&#34;&gt;Architecture Overview&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;User --&amp;gt; Cloudflare --&amp;gt; Tunnel --&amp;gt; Nginx --&amp;gt; Service&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;configuration-steps&#34;&gt;Configuration Steps&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Create a Cloudflare account and add your domain&lt;/li&gt;&#xA;&lt;li&gt;Install cloudflared on your server&lt;/li&gt;&#xA;&lt;li&gt;Configure the tunnel with your services&lt;/li&gt;&#xA;&lt;li&gt;Set up Nginx as a reverse proxy&lt;/li&gt;&#xA;&lt;li&gt;Configure SSL certificates&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;nginx-configuration&#34;&gt;Nginx Configuration&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;listen&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;443&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;ssl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;service.example.com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_certificate&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/etc/ssl/certs/cert.pem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_certificate_key&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/etc/ssl/private/key.pem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;proxy_pass&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://localhost:8080&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;Host&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;proxy_set_header&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;X-Real-IP&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$remote_addr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;security-considerations&#34;&gt;Security Considerations&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Enable authenticated origin pulls&lt;/li&gt;&#xA;&lt;li&gt;Use Cloudflare Access for sensitive services&lt;/li&gt;&#xA;&lt;li&gt;Implement rate limiting&lt;/li&gt;&#xA;&lt;li&gt;Log all access attempts&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>n8n AI Automation System</title>
      <link>https://ankitmaurya.pages.dev/projects/n8n-automation/</link>
      <pubDate>Wed, 10 Apr 2024 00:00:00 +0000</pubDate>
      <guid>https://ankitmaurya.pages.dev/projects/n8n-automation/</guid>
      <description>&lt;p&gt;Building an AI-powered automation system using n8n for security operations and workflow management.&lt;/p&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;This system automates security tasks using n8n workflows, AI integrations, and various notification channels.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-components&#34;&gt;Key Components&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;n8n Engine&lt;/strong&gt;: Core workflow automation&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Telegram Bot&lt;/strong&gt;: Alert notifications and commands&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Webhook Triggers&lt;/strong&gt;: Integration with external services&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;AI Processing&lt;/strong&gt;: GPT-based analysis and responses&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;workflow-examples&#34;&gt;Workflow Examples&lt;/h2&gt;&#xA;&lt;h3 id=&#34;security-alert-pipeline&#34;&gt;Security Alert Pipeline&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Receive webhook from security tool&lt;/li&gt;&#xA;&lt;li&gt;Parse alert data&lt;/li&gt;&#xA;&lt;li&gt;Send to AI for classification&lt;/li&gt;&#xA;&lt;li&gt;Route based on severity (Telegram/Email)&lt;/li&gt;&#xA;&lt;li&gt;Log to database&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;telegram-integration&#34;&gt;Telegram Integration&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// n8n Telegram node configuration&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;chatId&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;TELEGRAM_CHAT_ID&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Security Alert: {{ $json.alert_type }}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;parse_mode&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;HTML&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;benefits&#34;&gt;Benefits&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Automated incident response&lt;/li&gt;&#xA;&lt;li&gt;Reduced manual monitoring&lt;/li&gt;&#xA;&lt;li&gt;Faster alert routing&lt;/li&gt;&#xA;&lt;li&gt;Integration with existing tools&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>JWT Security Analysis</title>
      <link>https://ankitmaurya.pages.dev/projects/jwt-analysis/</link>
      <pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://ankitmaurya.pages.dev/projects/jwt-analysis/</guid>
      <description>&lt;p&gt;Tools and techniques for analyzing JWT tokens for authentication vulnerabilities.&lt;/p&gt;&#xA;&lt;h2 id=&#34;jwt-overview&#34;&gt;JWT Overview&lt;/h2&gt;&#xA;&lt;p&gt;JSON Web Tokens (JWT) are commonly used for authentication but can introduce security issues if not implemented correctly.&lt;/p&gt;&#xA;&lt;h2 id=&#34;common-vulnerabilities&#34;&gt;Common Vulnerabilities&lt;/h2&gt;&#xA;&lt;h3 id=&#34;algorithm-confusion-alg-none&#34;&gt;Algorithm Confusion (alg: none)&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Exploit: Change alg to &amp;#34;none&amp;#34; and remove signature&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;header&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;alg&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;none&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;typ&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;JWT&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;payload&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;sub&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1234567890&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;role&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;admin&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;key-confusion-rs256-to-hs256&#34;&gt;Key Confusion (RS256 to HS256)&lt;/h3&gt;&#xA;&lt;p&gt;If the server uses RS256 but the library accepts HS256 with the public key as the secret.&lt;/p&gt;&#xA;&lt;h2 id=&#34;analysis-tools&#34;&gt;Analysis Tools&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;JWT.io for manual inspection&lt;/li&gt;&#xA;&lt;li&gt;Custom Python scripts for batch analysis&lt;/li&gt;&#xA;&lt;li&gt;Burp Suite extension for runtime inspection&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;validation-checklist&#34;&gt;Validation Checklist&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Verify signature with correct algorithm&lt;/li&gt;&#xA;&lt;li&gt;Check token expiration (exp claim)&lt;/li&gt;&#xA;&lt;li&gt;Validate audience (aud claim)&lt;/li&gt;&#xA;&lt;li&gt;Ensure proper key management&lt;/li&gt;&#xA;&lt;li&gt;Use strong secret keys (256-bit minimum)&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;best-practices&#34;&gt;Best Practices&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Always validate algorithm expected by your application&lt;/li&gt;&#xA;&lt;li&gt;Use asymmetric algorithms (RS256) when possible&lt;/li&gt;&#xA;&lt;li&gt;Implement token rotation&lt;/li&gt;&#xA;&lt;li&gt;Set appropriate expiration times&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
