<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: SHUBHENDU SHUBHAM</title>
    <description>The latest articles on Forem by SHUBHENDU SHUBHAM (@sivolko).</description>
    <link>https://forem.com/sivolko</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F288681%2F86551a66-137a-46ab-9f3b-4634c0472c2b.jpg</url>
      <title>Forem: SHUBHENDU SHUBHAM</title>
      <link>https://forem.com/sivolko</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sivolko"/>
    <language>en</language>
    <item>
      <title>5 Tips I Wish I Knew Earlier as a Security Architect</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Sun, 05 Oct 2025 15:00:55 +0000</pubDate>
      <link>https://forem.com/sivolko/5-tips-i-wish-i-knew-earlier-as-a-security-architect-42ih</link>
      <guid>https://forem.com/sivolko/5-tips-i-wish-i-knew-earlier-as-a-security-architect-42ih</guid>
      <description>&lt;p&gt;Look, I'm not going to sugarcoat it. My last year as a security architect was rough. Really rough. I spent countless nights second-guessing other architects work, reading their documentation and sometimes second-guessing my decisions dealing with messy solutions proposed by other architects or my previous architects. Anyway, it was learning lessons hard way. &lt;/p&gt;

&lt;p&gt;Here's the thing about this field-we all make mistakes. The key is learning from them before they cost your organisation millions or worse, land you on the front page of TechCrunch for all the wrong reasons. &lt;br&gt;
Now I have finally figured out some things that would have saved me countless headaches. So grab your coffee, and let me share the five lessons that fundamentally changed  how I approach security architecture. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Perfect is the enemy of Done (and Security)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Early in my career, I designed what I thought was the most beautiful security architecture for a financial services client. Multi-layered defenses, microsegmentation everywhere, strict zero-trust policies down to the individual file access level. On paper, it was gorgeous. In reality? It never got implemented.&lt;/p&gt;

&lt;p&gt;The development teams revolted. The timeline slipped by six months. The budget exploded. And you know what happened during those six months we spent arguing about the perfect solution? We got breached through a vulnerability that my "phase one" plan would have actually caught.&lt;/p&gt;

&lt;p&gt;Here's what I learned: an &lt;em&gt;80% solution implemented today beats a 100% solution implemented never&lt;/em&gt;. I'm not saying to compromise on critical controls, but I am saying that waiting for the perfect IAM solution while your developers are storing Azure credentials in Git repos is insane.&lt;/p&gt;

&lt;p&gt;Now, I approach architecture in phases. Quick wins first – MFA, basic network segmentation, logging enabled. Then we iterate. Last quarter, we rolled out a "good enough" microsegmentation strategy that took three weeks instead of three months. Did it cover every edge case? No. Did it reduce our blast radius by 70%? Absolutely. We refined it over the next two quarters, but we had protection from day one.&lt;/p&gt;

&lt;p&gt;The key question I ask myself now: "What's the minimum viable security architecture that meaningfully reduces our risk?" Then I build and iterate. Your threat actors aren't waiting for your perfect architecture to be done before they attack.&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;Business Context Isn't Optional – It's Everything&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one still makes me cringe. Two years ago, I mandated that all database connections had to go through a specific secure gateway. Made perfect sense from a security standpoint – centralized monitoring, policy enforcement, the works. Know what I didn't account for? The legacy trading system that processed millions of transactions per day and couldn't handle the 3ms latency my gateway introduced.&lt;/p&gt;

&lt;p&gt;BFSI customer software went ballistic, causing failed transactions, financial blockages. The principal Architect pulled me into call, and let me tell you, that wasn't a fun conversation. we had to roll back the change and I had to redesign the whole approach. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;The hard truth: If your security architecture breaks the business, you're not securing anything – you're becoming the problem that people route around.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I learned to start every architecture discussion with these questions: **What does this business unit actually do? What are their critical workflows? What's their tolerance for latency, downtime, or process changes? **I actually shadow people now before I design solutions for their areas.&lt;/p&gt;

&lt;p&gt;For example, before rolling out our zero-trust implementation for the DevOps team last year, I spent two days just watching how they worked. Turns out, they had automated deployment pipelines that ran hundreds of API calls per minute. If I'd implemented my original plan with strict per-request authentication, their deployments would have gone from 10 minutes to 2 hours. Instead, we designed a solution using short-lived tokens with strong initial authentication that worked with their workflow. Deployment time actually improved by 15% because we optimized some other bottlenecks we discovered during the observation.&lt;/p&gt;

&lt;p&gt;Security architecture isn't about what's theoretically best – it's about what actually works in your specific business context. And if people are finding workarounds to your security controls, you've failed as an architect.&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;Your Threat Model is Probably Wrong (And That's Okay)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Remember when everyone was obsessed with defending the perimeter? Yeah, I built architectures around that concept. Fancy firewalls, DMZs, the works. Then I watched helplessly as an intern clicked a phishing link and gave attackers access to our internal network. None of my beautiful perimeter defenses mattered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's what nobody tells you: You will never have a perfect threat model&lt;/strong&gt;. Threats evolve. Your business changes. New technologies emerge. The adversary gets a vote. The best you can do is be honest about your assumptions and build in resilience.&lt;/p&gt;

&lt;p&gt;These days, I assume breach. Always. It's not pessimism; it's realism. When I designed the security architecture for our cloud migration, I didn't start with "How do we keep attackers out?" I started with "What happens when they get in?"&lt;/p&gt;

&lt;p&gt;This mindset shift changed everything. Instead of spending 80% of our budget on prevention, we redistributed it: 40% on prevention, 40% on detection and response, and 20% on recovery capabilities. We implemented proper network segmentation so a breach in one area doesn't cascade everywhere. We built in kill switches. We ensured our logging was tamper-evident and stored separately from the systems being logged.&lt;/p&gt;

&lt;p&gt;Last year, we did get breached – phishing attack, nothing exotic. But because we'd designed for breach, we detected it within 4 hours, contained it within 8, and fully remediated within 24. Total damage? One compromised workstation. Five years ago, that same breach would have been catastrophic because my architecture assumed it wouldn't happen.&lt;/p&gt;

&lt;p&gt;Also, I update our threat model quarterly now. Every quarter, the team sits down and asks: "What changed? What are we seeing in the wild? What did we miss?" It's a living document, not a one-time exercise. Last quarter, we realized we'd completely underestimated the threat from supply chain attacks. We're adjusting our architecture accordingly, adding deeper vendor assessment processes and code signing requirements.&lt;/p&gt;

&lt;p&gt;4.&lt;strong&gt;Complexity is a Security Vulnerability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You know what's worse than a known vulnerability? A security architecture so complex that nobody understands it. I learned this the painful way when I left my first sec architect role and my replacement needed three months to understand what I'd built. Three months where critical security decisions were delayed because people were afraid to touch something they didn't fully understand&lt;/p&gt;

&lt;p&gt;I once inherited a security architecture with 47 different tools, each solving a specific niche problem. Sounds comprehensive, right? It was a nightmare. The tools didn't integrate properly. We had 12 different dashboards. Alert fatigue was crushing the SOC team. And the kicker? There were massive blind spots because some tools' coverage overlapped while other areas were ignored entirely.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Simpler architectures are more maintainable, more understandable, and ultimately more secure. Now I follow what I call the "3am test" – if I get a call at 3am about a security incident, can whoever is on call understand our architecture well enough to respond effectively? If the answer is no, the architecture is too complex.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I led a consolidation effort. We went from 35 security tools to 18. Yes, we lost some niche capabilities. But our detection rate actually improved by 30% because the SOC team could finally see the whole picture. Our mean time to respond dropped from 6 hours to 2.5 hours. And our annual licensing costs dropped by $400K, which we reinvested in actually training people.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I also started documenting architectures with a "why" focus. Not just "we use X tool to do Y" but "we chose X tool because our threat model prioritized Y, and we explicitly decided not to address Z because the risk is acceptable." Future you (and your successor) will thank present you.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;5.&lt;strong&gt;Relationships Matter More Than You Think&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the one that took me longest to learn, and honestly, it's the most important. You can have the most brilliant security architecture in the world, but if the developers hate you, the business units don't trust you, and the infrastructure team thinks you're obstructionist, it's all worthless.&lt;/p&gt;

&lt;p&gt;My breakthrough moment came during a post-incident review. We'd had a configuration error that exposed some customer data. During the review, a senior developer said something that hit me hard: "We knew that configuration was risky, but we were afraid to ask security for help because you always say no." That stung. But it was true.&lt;/p&gt;

&lt;p&gt;I'd spent so much time being the "security guardian" that I'd become the person people avoided. They weren't coming to me for advice; they were finding ways around me. And that made everything less secure, not more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security architecture is fundamentally a people problem, not a technology problem&lt;/strong&gt;. Now I spend probably 40% of my time on relationship building. I have regular coffee chats with development leads. I attend sprint planning meetings, not to audit them, but to understand what they're building and offer security advice early. I've started a "security office hours" where anyone can drop by with questions, no judgment.&lt;/p&gt;

&lt;p&gt;The results have been remarkable. Last quarter, three different teams came to me proactively while designing new features, asking "How do we make this secure?" Two years ago, they would have built it first and I would have found out during a compliance review. We caught and fixed potential issues at design time instead of after deployment, which saved huge amounts of rework.&lt;/p&gt;

&lt;p&gt;I also learned to speak the language of whoever I'm talking to. With developers, I talk about threat modeling and secure SDLC. With finance, I talk about risk reduction and ROI. With executives, I talk about business enablement and competitive advantage. Same security architecture, different framing&lt;/p&gt;

&lt;p&gt;And when I have to say no (which still happens), I don't just say no – I explain why and offer alternatives. "We can't do X because of Y risk, but we can achieve your business goal with Z approach instead." People can work with that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Real Secret&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's the thing nobody tells you when you start out as a security architect: This job isn't really about firewalls, encryption algorithms, or zero-trust frameworks. It's about understanding risk, enabling business value, and building systems that are resilient when (not if) they fail.&lt;/p&gt;

&lt;p&gt;The best security architecture I ever designed wasn't the most technically sophisticated. It was the one that balanced real risk reduction with business enablement, that the organization actually implemented and maintained, and that made security a natural part of how people worked instead of an obstacle to route around.&lt;/p&gt;

&lt;p&gt;Would I have made different decisions if I knew then what I know now? Absolutely. But that's the nature of this field. We're constantly learning, adapting, and improving. The threats evolve, the technology changes, and we evolve with it.&lt;/p&gt;

&lt;p&gt;My advice to anyone starting out in security architecture: Give yourself permission to be imperfect. Build relationships. Understand the business. Design for resilience, not perfection. And please, for the love of all that is holy, document why you made the decisions you made.&lt;/p&gt;

&lt;p&gt;Your future self will thank you. And so will whoever inherits your architecture when you move on to your next challenge.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What lessons have you learned as a security architect? What do you wish someone had told you earlier? Drop a comment below – I'm always learning from this community.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>securityarchitect</category>
      <category>architect</category>
      <category>security</category>
      <category>enterprisearchitect</category>
    </item>
    <item>
      <title>Fixing Bluetooth Issues in Kali Linux</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Sun, 17 Aug 2025 10:42:58 +0000</pubDate>
      <link>https://forem.com/sivolko/fixing-bluetooth-issues-in-kali-linux-3enn</link>
      <guid>https://forem.com/sivolko/fixing-bluetooth-issues-in-kali-linux-3enn</guid>
      <description>&lt;p&gt;I recently ran into a frustrating problem on my Lenovo Ideapad 5 Pro running Kali Linux — Blueman refused to start, throwing the dreaded “Connection to BlueZ failed” error. It turned out my Bluetooth service wasn’t even running. Here’s how I diagnosed and fixed it.&lt;/p&gt;

&lt;p&gt;error Photo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frp944lwnho9dpduwx6nk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frp944lwnho9dpduwx6nk.png" alt=" " width="551" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 – Confirm the Adapter is Detected&lt;/strong&gt;&lt;br&gt;
First, I checked whether my Bluetooth hardware was visible to the system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;lsusb | grep -i bluetooth

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ylwg8e3tamplm1gutj7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ylwg8e3tamplm1gutj7.png" alt=" " width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 – Check the Bluetooth Service&lt;/strong&gt;&lt;br&gt;
Next, I checked the status of the Bluetooth daemon:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl status bluetooth

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkn948o1pktrgg9txxc4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkn948o1pktrgg9txxc4.png" alt=" " width="800" height="123"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 – Enable and Start the Service&lt;/strong&gt;&lt;br&gt;
To fix it, I simply enabled and started the service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl enable bluetooth
sudo systemctl start bluetooth
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnnf5mh0jx6qg1i0surn8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnnf5mh0jx6qg1i0surn8.png" alt=" " width="800" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then I confirmed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl status bluetooth

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwlfc0gssqdtu1xle00o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpwlfc0gssqdtu1xle00o.png" alt=" " width="800" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kalilinux</category>
      <category>bluetooth</category>
      <category>security</category>
      <category>linux</category>
    </item>
    <item>
      <title>The Docker Diet: How I Lost 1.1GB in 5 Steps</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Thu, 24 Jul 2025 02:06:44 +0000</pubDate>
      <link>https://forem.com/sivolko/the-docker-diet-how-i-lost-11gb-in-5-steps-1d3i</link>
      <guid>https://forem.com/sivolko/the-docker-diet-how-i-lost-11gb-in-5-steps-1d3i</guid>
      <description>&lt;p&gt;Last week, I was staring at a 1.2GB Docker image wondering where I went wrong. The build took forever, deployments were slow, and my registry storage costs were through the roof. Sound familiar?&lt;br&gt;
After some serious container weight loss surgery, I managed to get that same image down to 98MB. Here's exactly how I did it.&lt;/p&gt;

&lt;p&gt;Let's break down "Docker Diet" into 5 simpler steps:- &lt;/p&gt;

&lt;p&gt;Phase 1: The Alpine Cleanse &lt;br&gt;
Phase 2: Multi-stage Meal Prep&lt;br&gt;
Phase 3: Cache Detox &lt;br&gt;
Phase 4: Layer Liposuction &lt;br&gt;
Phase 5: Final Weigh-IN &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Starting Point: My Chunky Container&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My original Dockerfile looked innocent enough:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node:22
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple, right? But this little guy was packing 1.2GB of unnecessary baggage. Time for an intervention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: The Alpine Cleanse&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First step was ditching the bloated base image. Ubuntu-based Node images are huge. Alpine Linux? Tiny and efficient.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node:22-alpine
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: Down to 680MB. Not bad, but we're just getting started.&lt;br&gt;
The difference is massive - Alpine gives you a full Linux distro in about 5MB instead of 100MB+. Your app doesn't care what's underneath as long as Node runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Multi-Stage Meal Prep&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where the magic happens. Think of it like meal prepping - you do all the messy cooking in one kitchen, then serve the clean final product.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Build stage - the messy kitchen
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

# Runtime stage - the clean serving plate
FROM node:22-alpine AS runtime
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY src/ ./src/
COPY package*.json ./
EXPOSE 3000
CMD ["node", "src/server.js"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: Down to 320MB. We're getting somewhere!&lt;br&gt;
The builder stage contains all the npm install mess, but the final image only gets the clean node_modules folder. All the npm cache and intermediate files? Gone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: Cache Detox&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Time to clean house. Package managers love to hoard cache files, and we need to evict them in the same layer they're created.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production &amp;amp;&amp;amp; npm cache clean --force

FROM node:22-alpine AS runtime
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY src/ ./src/
COPY package*.json ./
EXPOSE 3000
CMD ["node", "src/server.js"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: Down to 180MB. The cache cleanup made a bigger difference than expected.&lt;br&gt;
Docker creates a new layer for each RUN command. If you install packages in one RUN and clean cache in another, the cache still exists in that earlier layer. Combining them into one RUN command actually removes the cache from the final image&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 4: Layer Liposuction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now we get surgical. Every COPY and RUN creates a layer. Time to be strategic about what goes where.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json package-lock.json ./
RUN npm ci --only=production &amp;amp;&amp;amp; npm cache clean --force

FROM node:22-alpine AS runtime
RUN addgroup -g 1001 -S nodejs &amp;amp;&amp;amp; adduser -S nodeapp -u 1001
WORKDIR /app
COPY --from=builder --chown=nodeapp:nodejs /app/node_modules ./node_modules
COPY --chown=nodeapp:nodejs src/ ./src/
COPY --chown=nodeapp:nodejs package*.json ./
USER nodeapp
EXPOSE 3000
CMD ["node", "src/server.js"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: Down to 120MB. Plus bonus security points for non-root user.&lt;br&gt;
The --chown flag sets ownership without needing extra RUN commands. Less layers = smaller image. And running as non-root? That's just good manners.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 5: The Final Weigh-In&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Last step - a proper .dockerignore diet. This file is like telling Docker "don't even look at this stuff."&lt;/p&gt;

&lt;p&gt;Create .&lt;strong&gt;dockerignore&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node_modules
npm-debug.log
.git
.gitignore
README.md
.env
.nyc_output
coverage
.nyc_cache
docs/
tests/
*.test.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Final result: 98MB. Mission accomplished.&lt;/p&gt;

&lt;p&gt;Now coming to the main question &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why This Matters?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Beyond the obvious storage savings, smaller images mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster builds and deployments&lt;/li&gt;
&lt;li&gt;Lower registry costs&lt;/li&gt;
&lt;li&gt;Reduced attack surface&lt;/li&gt;
&lt;li&gt;Happier developers (nobody likes waiting for slow pulls)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The multi-stage approach is the real game-changer here. It lets you have your cake and eat it too - use all the build tools you need, then ship only what actually runs your app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One More Thing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're working with compiled languages like Go, the size reduction can be even more dramatic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o main .

FROM scratch
COPY --from=builder /app/main /main
EXPOSE 8080
CMD ["/main"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That Go app? It'll probably be under 20MB.&lt;/p&gt;

&lt;p&gt;The Docker diet isn't about starving your containers - it's about feeding them only what they actually need. And trust me, they'll thank you for it.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>cloudnative</category>
      <category>containers</category>
      <category>dockercaptain</category>
    </item>
    <item>
      <title>No More Secrets in State! Write-Only Arguments in Terraform 1.11</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Thu, 17 Jul 2025 04:11:48 +0000</pubDate>
      <link>https://forem.com/sivolko/no-more-secrets-in-state-write-only-arguments-in-terraform-111-43n2</link>
      <guid>https://forem.com/sivolko/no-more-secrets-in-state-write-only-arguments-in-terraform-111-43n2</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Favsys2sxpfgmmcjb1zbc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Favsys2sxpfgmmcjb1zbc.png" alt=" " width="800" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve been working with Terraform for a while, you’ve probably run into this frustrating situation: you need to pass a password or API token to a resource, but you don’t want that sensitive data sitting in your state file for everyone to see. Maybe you’ve tried creative workarounds with external data sources or complex scripting, but let’s be honest – it always felt like a hack.&lt;/p&gt;

&lt;p&gt;Well, good news! Terraform 1.11 introduces write-only arguments, and they’re about to change how we handle secrets in our infrastructure code. Think of them as a secure handoff mechanism – you can pass sensitive data to resources during deployment, but Terraform immediately forgets about it once the job is done.&lt;/p&gt;

&lt;p&gt;What Are Write-Only Arguments?&lt;/p&gt;

&lt;p&gt;Write-only arguments are exactly what they sound like: arguments that you can write to (pass values to) but Terraform never stores anywhere. No state file, no plan file, no logs – nowhere. It’s like whispering a secret that gets forgotten the moment it’s used.&lt;/p&gt;

&lt;p&gt;Here’s the key insight: most of the time, we don’t actually need Terraform to remember passwords and tokens. We just need to pass them to the cloud provider during resource creation or updates. Once the resource is created, the cloud provider handles the secret internally.&lt;/p&gt;

&lt;p&gt;The Problem This Solves&lt;/p&gt;

&lt;p&gt;Before write-only arguments, here’s what typically happened:&lt;/p&gt;

&lt;p&gt;`# The old way - DON'T do this!&lt;/p&gt;

&lt;p&gt;resource "aws_db_instance" "example" {&lt;br&gt;
  instance_class = "db.t3.micro"&lt;br&gt;
  allocated_storage = "5"&lt;br&gt;
  engine = "postgres"&lt;br&gt;
  username = "dbuser"&lt;br&gt;
  password = "super-secret-password"  # This ends up in state!&lt;br&gt;
  skip_final_snapshot = true&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;That password would sit in your state file, readable by anyone with access to it. Not great for security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Write-Only Arguments Work&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With Terraform 1.11, providers can now mark certain arguments as write-only. The AWS provider, for example, introduces password_wo (write-only) arguments for database resources:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;resource "aws_db_instance" "example" {&lt;br&gt;
  instance_class = "db.t3.micro"&lt;br&gt;
  allocated_storage = "5"&lt;br&gt;
  engine = "postgres"&lt;br&gt;
  username = "dbuser"&lt;br&gt;
  password_wo = "super-secret-password"  # Never stored!&lt;br&gt;
  password_wo_version = 1&lt;br&gt;
  skip_final_snapshot = true&lt;br&gt;
}&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Notice two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The password_wo argument – this is write-only&lt;/li&gt;
&lt;li&gt;The password_wo_version argument – this is how we trigger updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learn in detailed here &lt;a href="https://hugs4bugs.me/no-more-secrets-in-terraform-statefile-write-only-arguments/" rel="noopener noreferrer"&gt;Blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>iaac</category>
      <category>devops</category>
      <category>sre</category>
    </item>
    <item>
      <title>My Firebase Webapp almost got pwned by a bot. Then another bot saved it.</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Tue, 15 Jul 2025 03:45:16 +0000</pubDate>
      <link>https://forem.com/sivolko/my-firebase-webapp-almost-got-pwned-by-a-bot-then-another-bot-saved-it-2gll</link>
      <guid>https://forem.com/sivolko/my-firebase-webapp-almost-got-pwned-by-a-bot-then-another-bot-saved-it-2gll</guid>
      <description>&lt;p&gt;My Firebase Webapp almost got pwned by a bot. Then another bot saved it. &lt;/p&gt;

&lt;p&gt;Running Firebase 9.22.1 in prod → hashtag#Snyk bot drops a PR → "Just another dependency update" I thought. WRONG.&lt;/p&gt;

&lt;p&gt;Hidden 4 levels deep: SNYK-JS-GRPCGRPCJS-7242922 - a DoS vulnerability that could've nuked my entire app with crafted gRPC messages.&lt;/p&gt;

&lt;p&gt;The bot found it. Fixed it. Explained it. All automated.&lt;/p&gt;

&lt;p&gt;Last week, I got an unexpected visitor to my GitHub repository. Not a human contributor, but Snyk's automated security bot, flagging a critical vulnerability in my Firebase project. What started as a routine dependency check turned into a fascinating case study of how modern security tools can catch threats that even experienced developers might miss.&lt;br&gt;
The culprit? An uncontrolled resource consumption vulnerability lurking in the @grpc/grpc-js library, buried deep within Firebase's dependency chain. With a severity score of 559 and the identifier SNYK-JS-GRPCGRPCJS-7242922, this wasn't just another minor security hiccup—it was a legitimate denial of service risk sitting in production code.&lt;/p&gt;

&lt;p&gt;Learn More about here :- &lt;br&gt;
&lt;a href="https://hugs4bugs.me/snyk-saved-my-project-ft-uncontrolled-resource-consumptionn/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;

</description>
      <category>snyk</category>
      <category>appsec</category>
      <category>sast</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Resolving Docker Socket and Daemon Conflicts: Unifying CLI and Docker Desktop on kali Linux</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Sun, 23 Mar 2025 05:48:23 +0000</pubDate>
      <link>https://forem.com/sivolko/resolving-docker-socket-and-daemon-conflicts-unifying-cli-and-docker-desktop-on-kali-linux-5bol</link>
      <guid>https://forem.com/sivolko/resolving-docker-socket-and-daemon-conflicts-unifying-cli-and-docker-desktop-on-kali-linux-5bol</guid>
      <description>&lt;p&gt;If you're using Docker Desktop on Linux and facing issues like conflicting results between docker ps and sudo docker ps, containers not appearing in Docker Desktop, or volume permission errors, this detailed guide will walk you through resolving these problems. We'll cover everything you need to know to harmonize Docker CLI and Docker Desktop under a unified context (desktop-linux) while troubleshooting common issues.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker ps&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo docker ps&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and you're getting different results. Then you're at the right place. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding the Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;Different Results for docker ps vs sudo docker ps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When you run docker ps, you might see no containers, but sudo docker ps displays running containers.&lt;/li&gt;
&lt;li&gt;This happens because docker and sudo docker may be pointing to different Docker socket files (DOCKER_HOST endpoints).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2.&lt;strong&gt;Containers Not Showing in Docker Desktop:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Even if &lt;em&gt;sudo docker ps&lt;/em&gt; displays running containers, they might not appear in the Docker Desktop UI. This occurs when the Docker daemon's configuration or context is not aligned with Docker Desktop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3.&lt;strong&gt;Root Causes&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DOCKER_HOST&lt;/strong&gt; environment variable overriding the context.&lt;/li&gt;
&lt;li&gt;Docker CLI using &lt;strong&gt;/var/run/docker.sock&lt;/strong&gt; while Docker Desktop uses &lt;strong&gt;~/.docker/desktop/docker.sock.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Misconfigured permissions on directories and files used in volume mappings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step-by-Step Troubleshooting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 1: Identify the Active Contexts&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To diagnose the issue, check which Docker context is active and ensure it matches the expected configuration for Docker Desktop.&lt;/p&gt;

&lt;p&gt;List Docker Contexts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker context ls

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;eg output: &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;NAME&lt;/th&gt;
&lt;th&gt;TYPE&lt;/th&gt;
&lt;th&gt;DESCRIPTION&lt;/th&gt;
&lt;th&gt;DOCKER ENDPOINT&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;default     *&lt;/td&gt;
&lt;td&gt;moby&lt;/td&gt;
&lt;td&gt;Current DOCKER_HOST-based configuration&lt;/td&gt;
&lt;td&gt;unix:///var/run/docker.sock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;desktop-linux&lt;/td&gt;
&lt;td&gt;moby&lt;/td&gt;
&lt;td&gt;Docker Desktop&lt;/td&gt;
&lt;td&gt;unix:///home/user/.docker/desktop/docker.sock&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The * indicates the active context. If &lt;strong&gt;default&lt;/strong&gt; is active but you’re using Docker Desktop, you need to switch to &lt;strong&gt;desktop-linux&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 2: Unset the &lt;strong&gt;DOCKER_HOST&lt;/strong&gt; Environment Variable&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When &lt;strong&gt;DOCKER_HOST&lt;/strong&gt; is set, it overrides the active context. To fix this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check DOCKER_HOST:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo $DOCKER_HOST

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If set (e.g., unix:///var/run/docker.sock), proceed to unset it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unset Temporarily:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;unset DOCKER_HOST

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Remove Permanently:
Edit your shell configuration file:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nano ~/.bashrc

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Remove or comment out any DOCKER_HOST line:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# export DOCKER_HOST=unix:///var/run/docker.sock

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Reload the shell:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source ~/.bashrc

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Step 3: Align Docker CLI with Docker Desktop&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ensure that the Docker CLI points to the desktop-linux context:&lt;/p&gt;

&lt;p&gt;1.Set &lt;strong&gt;desktop-linux&lt;/strong&gt; as Active Context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker context use desktop-linux

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.Verify Context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker context ls

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected Output:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;NAME&lt;/th&gt;
&lt;th&gt;TYPE&lt;/th&gt;
&lt;th&gt;DESCRIPTION&lt;/th&gt;
&lt;th&gt;DOCKER ENDPOINT&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;default&lt;/td&gt;
&lt;td&gt;moby&lt;/td&gt;
&lt;td&gt;Current DOCKER_HOST-based configuration&lt;/td&gt;
&lt;td&gt;unix:///var/run/docker.sock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;desktop-linux *&lt;/td&gt;
&lt;td&gt;moby&lt;/td&gt;
&lt;td&gt;Docker Desktop&lt;/td&gt;
&lt;td&gt;unix:///home/user/.docker/desktop/docker.sock&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbb7iy025nturuu0iy7yb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbb7iy025nturuu0iy7yb.png" alt="Image description" width="800" height="101"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnu4ef95t67wfox8gp1lk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnu4ef95t67wfox8gp1lk.png" alt="Image description" width="338" height="65"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.Test docker ps: Run docker ps to confirm it now shows running containers managed by Docker Desktop&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 4: Debug &lt;strong&gt;docker ps&lt;/strong&gt; vs &lt;strong&gt;sudo docker ps&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If docker ps and sudo docker ps still show different results, the issue lies with permission conflicts on the Docker socket file&lt;/p&gt;

&lt;p&gt;1.Check Socket Permissions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ls -l /var/run/docker.sock

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example Output:&lt;br&gt;
&lt;code&gt;srw-rw---- 1 root docker 0 Mar 22 10:00 /var/run/docker.sock&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
2.Grant User Access to Docker Group:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add your user to the Docker group:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo usermod -aG docker $USER

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Log out and log back in to apply the group change.&lt;/p&gt;

&lt;p&gt;3.Re-test &lt;strong&gt;docker ps&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2kyhwxitrs8lt97bssfw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2kyhwxitrs8lt97bssfw.png" alt="Image description" width="800" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This should now show the same output as sudo docker ps.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 5: Resolve Missing Containers in Docker Desktop&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If containers are visible in docker ps but not in Docker Desktop, verify and restart Docker Desktop services.&lt;/p&gt;

&lt;p&gt;1.Restart Docker Desktop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl --user restart docker-desktop

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.Check Status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl --user status docker-desktop

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3.Ensure Unified Context: Confirm docker ps aligns with Docker Desktop's context:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker context ls

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 6: Test and Validate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, test your setup to ensure all components are working correctly:&lt;/p&gt;

&lt;p&gt;1.Run a Test Container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --rm hello-world

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.Inspect Running Containers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3.Verify in &lt;strong&gt;Docker Desktop&lt;/strong&gt;: Check the Docker Desktop UI to confirm the container is listed.&lt;/p&gt;

&lt;p&gt;in my case I have directly spined wazuh docker single node &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feitwwhr4fhl911070wh6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feitwwhr4fhl911070wh6.png" alt="Image description" width="800" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ENJOY DOCKER DESKTOP 🖥️ ON KALI MACHINE &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fukaj1d2w230tr8j70iiw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fukaj1d2w230tr8j70iiw.jpg" alt="Image description" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By following these steps, you can unify Docker CLI and Docker Desktop on Linux, resolve docker ps vs sudo docker ps conflicts, and fix permission issues for a seamless development experience. With the desktop-linux context configured, Docker will run harmoniously across CLI and Docker Desktop.&lt;/p&gt;

&lt;p&gt;Keep learning, keep Troubleshooting ! &lt;/p&gt;

</description>
      <category>docker</category>
      <category>linux</category>
      <category>dockerdesktop</category>
      <category>container</category>
    </item>
    <item>
      <title>Missing Dark Mode in Wazuh ?</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Sun, 23 Mar 2025 04:12:03 +0000</pubDate>
      <link>https://forem.com/sivolko/missing-dark-mode-in-wazuh--2k5f</link>
      <guid>https://forem.com/sivolko/missing-dark-mode-in-wazuh--2k5f</guid>
      <description>&lt;p&gt;Working on Wazuh in a bright interface can sometimes strain your eyes, especially during those long sessions. Luckily, Wazuh offers a sleek dark mode! Here’s a straightforward guide to enable it if you’re running Wazuh in a single-node Docker setup.&lt;/p&gt;

&lt;p&gt;Steps to turn On Dark Mode:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Access the Dashboard Open your Wazuh web interface and log in.&lt;/li&gt;
&lt;li&gt;Navigate to Dashboard Management Click on the hamburger menu (those three horizontal lines in the top-left corner). From there, select Dashboard Management.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fca1zxbtk7bl3589i2pvl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fca1zxbtk7bl3589i2pvl.png" alt="Image description" width="310" height="616"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find Advanced Settings In the Management Menu, scroll down until you see Advanced Settings. Click on it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjdxkx77qguoeiod7ugmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjdxkx77qguoeiod7ugmm.png" alt="Image description" width="319" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Change Appearance Settings In the Advanced Settings section:&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Look for the Appearance category.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5oo9qcx8488t84z4ngfc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5oo9qcx8488t84z4ngfc.png" alt="Image description" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You’ll see an option for Dark Mode with a toggle labeled theme:darkMode.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable Dark Mode Switch the toggle to On. A quick page refresh might be required for the new theme to take effect.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>wazuh</category>
      <category>darkmode</category>
      <category>siem</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Clear command not found inside docker container ?</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Thu, 20 Mar 2025 16:19:59 +0000</pubDate>
      <link>https://forem.com/sivolko/clear-command-not-found-inside-docker-container--53o7</link>
      <guid>https://forem.com/sivolko/clear-command-not-found-inside-docker-container--53o7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fczjzo25kpq3h7z3yql5b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fczjzo25kpq3h7z3yql5b.png" alt="Image description" width="359" height="89"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;if you're inside docker container using cli trying to modify files and wanna clear yout terminal , you tried ctl + l or clear command but getting response like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bash: clear: command not found

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;don't worry it's due to container nature, since it always install bare minimum utilities so we can manually install linux utility to work smoothly . &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find out container os image
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bash-5.2# cat /etc/os-release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffvrajasuecu5h9q8an63.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffvrajasuecu5h9q8an63.png" alt="Image description" width="551" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;here in my case Wazuh Manager container is running on &lt;strong&gt;Amazon Linux&lt;/strong&gt;, which is based on &lt;strong&gt;Fedora&lt;/strong&gt;, the package manager to use is &lt;strong&gt;dnf&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;now we can install clear utility in you container by following steps &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Install util-linux package it contains the clear command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dnf install util-linux -y

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjfm3i45rrrl89q13kvdl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjfm3i45rrrl89q13kvdl.png" alt="Image description" width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or else you can install ncurses &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7nk50ufdpiub182i8m4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7nk50ufdpiub182i8m4b.png" alt="Image description" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See Clear command will work now . &lt;/p&gt;

&lt;p&gt;before &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5bfgip50swlpv1binih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5bfgip50swlpv1binih.png" alt="Image description" width="800" height="88"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foazwjhyqdbo2ekcx7yzi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foazwjhyqdbo2ekcx7yzi.png" alt="Image description" width="249" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;keep Learning, Keep Troubleshooting ! &lt;/p&gt;

</description>
      <category>docker</category>
      <category>container</category>
      <category>wazuh</category>
      <category>bash</category>
    </item>
    <item>
      <title>Upgrading wazuh 4.11.0 using docker in single node</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Wed, 19 Mar 2025 16:25:57 +0000</pubDate>
      <link>https://forem.com/sivolko/upgrading-wazuh-4110-using-docker-in-single-node-1eki</link>
      <guid>https://forem.com/sivolko/upgrading-wazuh-4110-using-docker-in-single-node-1eki</guid>
      <description>&lt;p&gt;In Feb Wazuh released V4.11.0 let's understand what are the major updates and how to upgrade it using docker in single node. &lt;/p&gt;

&lt;p&gt;Instead of writing changes in bullet points it's better to visualise through mind map. &lt;br&gt;
&lt;a href="https://wazuh.com/blog/introducing-wazuh-4-11-0/" rel="noopener noreferrer"&gt;Official Blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyv7esqz7isi6wl1d2fp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyv7esqz7isi6wl1d2fp.png" alt="Image description" width="800" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now Let's do technical part to upgrade it &lt;/p&gt;

&lt;p&gt;Step 1: Backup your Data&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6yxw30kph85ecgjwx6v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa6yxw30kph85ecgjwx6v.png" alt="Image description" width="800" height="88"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker compose down

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9u46e47kghvv0tqtbc6i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9u46e47kghvv0tqtbc6i.png" alt="Image description" width="800" height="89"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Download the latest Wazuh Docker compose files&lt;/p&gt;

&lt;p&gt;Navigate to your wazuh Docker directory and pull the latest version&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd /path/to/your/wazuh-docker
git fetch --all --tags

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc49r4qfthlbm3kpn7g5k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc49r4qfthlbm3kpn7g5k.png" alt="Image description" width="735" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout v4.10.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbfj8rj1aoee2ijyk0j4o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbfj8rj1aoee2ijyk0j4o.png" alt="Image description" width="800" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;if you have custom configurations, ensure they are compatible with the new version&lt;/p&gt;

&lt;p&gt;Step 4: Start the New Wazuh version&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8jtqi1uvwal3gbu7p28n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8jtqi1uvwal3gbu7p28n.png" alt="Image description" width="800" height="127"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0kbz21j5dcqttwvup04i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0kbz21j5dcqttwvup04i.png" alt="Image description" width="474" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 5: Check the latest version&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; docker ps 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy4ydjnn3eiex7t2u3709.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy4ydjnn3eiex7t2u3709.png" alt="Image description" width="800" height="97"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wazuh</category>
      <category>docker</category>
      <category>cybersecurity</category>
      <category>siem</category>
    </item>
    <item>
      <title>Fix It Before They Break It: The True Role of Vulnerability Management</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Tue, 11 Mar 2025 14:41:29 +0000</pubDate>
      <link>https://forem.com/sivolko/fix-it-before-they-break-it-the-true-role-of-vulnerability-management-12oo</link>
      <guid>https://forem.com/sivolko/fix-it-before-they-break-it-the-true-role-of-vulnerability-management-12oo</guid>
      <description>&lt;p&gt;Before we start let's understand a few keywords &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vulnerability&lt;/strong&gt;: Vulnerability is always defined by the ISO 27002 and VM is a weakness of an asset or group of assets that can be exploited by 1 or more threats. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Assets&lt;/strong&gt;:  Anything that needs to be monitored and protected is known as assets , eg data, systems, Hardware, S/w or process. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Threat&lt;/strong&gt;: The potential actor or event that can exploit the vulnerability  eg.  Malware, Hacker&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Risk&lt;/strong&gt;: The Potential damage or loss caused if the threat exploits the vulnerability eg. financial loss due to data breach.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's understand the those keywords with the realtime eg &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A banking app with weak password policies (vulnerability) could be targeted by phishing attacks (threat), resulting in unauthorized access to customer accounts (risk)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Who categories &amp;amp; ranks Vulnerability?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Common Vulnerability Scoring System (CVSS) is a free and open industry standard that provides a standardized way to access and communicate the severity and characteristics of s/w vulnerabilities. &lt;/p&gt;

&lt;p&gt;The National Vulnerability Database (NVD) adds a severity rating for CVSS scores. NVD maintains an updated library of common vulnerabilities and exposures (CVEs) with rankings and related details like vendor and product information. Originating from the MITRE Corporation in 1999, this list is synced with NVD and offers basic insights into each vulnerability.&lt;/p&gt;

&lt;p&gt;The CVSS Base Score ranges from 0.0 to 10.0&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0.0: No impact (None)&lt;/li&gt;
&lt;li&gt;0.1–3.9: Low severity&lt;/li&gt;
&lt;li&gt;4.0–6.9: Medium severity&lt;/li&gt;
&lt;li&gt;7.0–8.9: High severity&lt;/li&gt;
&lt;li&gt;9.0–10.0: Critical severity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's understand with the real world eg &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The 2021 Log4Shell vulnerability (CVSS score: 10.0) in the popular Log4j library posed critical risks to organizations globally, as attackers could remotely execute code on affected systems.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The Vulnerability Management Lifecycle&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An effective vulnerability management program involves five key stages, each critical for ensuring a robust security posture:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Assess:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Identify vulnerabilities across assets using tools like network scans or agent-based systems.&lt;/li&gt;
&lt;li&gt;Example: A company scans its servers with a vulnerability scanner to detect weak points like unpatched software.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Prioritize:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Rank vulnerabilities based on their CVSS scores, threat exposure, and business impact.&lt;/li&gt;
&lt;li&gt;Example: A healthcare provider prioritizes vulnerabilities in its patient data system over an internal HR tool.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Act:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Apply one of the following actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accept: Acknowledge the risk but take no action for non-critical issues.&lt;/li&gt;
&lt;li&gt;Mitigate: Reduce risk through controls like firewalls.&lt;/li&gt;
&lt;li&gt;Remediate: Fix the vulnerability entirely, such as by applying patches.&lt;/li&gt;
&lt;li&gt;Example: Patching a critical operating system vulnerability in servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Reassess:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Verify the effectiveness of remediation actions and ensure no new vulnerabilities have emerged.&lt;/li&gt;
&lt;li&gt;Example: After patching software, the IT team conducts another scan to confirm the issue is resolved.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Improve:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use lessons learned to refine processes and tools for future vulnerabilities.&lt;/p&gt;

&lt;p&gt;Example: Automating patch deployment to reduce manual errors and delays.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u8qkn6ie7ca5ggq910b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u8qkn6ie7ca5ggq910b.png" alt="Image description" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;for mindmap &lt;br&gt;
&lt;a href="https://sivolko.github.io/mindmaps/" rel="noopener noreferrer"&gt;https://sivolko.github.io/mindmaps/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>vulnerabilities</category>
      <category>vapt</category>
      <category>threathunting</category>
    </item>
    <item>
      <title>How to troubleshoot a Disconnected Wazuh Agent in a Docker Single-Node Environment?</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Thu, 06 Mar 2025 05:38:25 +0000</pubDate>
      <link>https://forem.com/sivolko/how-to-troubleshoot-a-disconnected-wazuh-agent-in-a-docker-single-node-environment-1njj</link>
      <guid>https://forem.com/sivolko/how-to-troubleshoot-a-disconnected-wazuh-agent-in-a-docker-single-node-environment-1njj</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18z3ur3guannpltypukb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18z3ur3guannpltypukb.png" alt="Image description" width="800" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this blog post, we'll walk through the steps to troubleshoot and resolve a disconnected Wazuh agent when using a Docker single-node setup. Wazuh is a powerful security monitoring tool, and it's essential to ensure that all agents are properly connected to the Wazuh manager for effective monitoring. We'll cover checking logs, verifying configurations, and ensuring network connectivity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Verify Docker Container Status&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First, ensure that all relevant Docker containers are running. Use the following command to list all running containers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check for the Wazuh manager, indexer, and dashboard containers. Example output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CONTAINER ID   IMAGE                           COMMAND                  CREATED         STATUS                      PORTS                                                                                                                                                                 NAMES
22825f91974b   wazuh/wazuh-dashboard:4.10.0    "/entrypoint.sh"         7 weeks ago     Up 9 days                   443/tcp, 0.0.0.0:443-&amp;gt;5601/tcp, [::]:443-&amp;gt;5601/tcp                                                                                                                    single-node-wazuh.dashboard-1
e951f7c6be71   wazuh/wazuh-manager:4.10.0      "/init"                  7 weeks ago     Up 9 days                   0.0.0.0:1514-1515-&amp;gt;1514-1515/tcp, [::]:1514-1515-&amp;gt;1514-1515/tcp, 0.0.0.0:514-&amp;gt;514/udp, [::]:514-&amp;gt;514/udp, 0.0.0.0:55000-&amp;gt;55000/tcp, [::]:55000-&amp;gt;55000/tcp, 1516/tcp   single-node-wazuh.manager-1
1a20bb195d5b   wazuh/wazuh-indexer:4.10.0      "/entrypoint.sh open…"   7 weeks ago     Up 9 days                   0.0.0.0:9200-&amp;gt;9200/tcp, [::]:9200-&amp;gt;9200/tcp                                                                                                                           single-node-wazuh.indexer-1

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2: Check Wazuh Manager Logs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check the logs of the Wazuh manager container for any errors or warnings. This can provide insights into why the agent might be disconnected:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker logs e951f7c6be71
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvw42ljuzci3u3c0tw1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvw42ljuzci3u3c0tw1v.png" alt="Image description" width="696" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Verify Agent Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ensure that the Wazuh agent configuration file (/var/ossec/etc/ossec.conf) on the agent machine is correctly configured with the manager's IP address.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the agent configuration file:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /var/ossec/etc/ossec.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Verify the  section has the correct manager IP address:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;client&amp;gt;
    &amp;lt;server&amp;gt;
        &amp;lt;address&amp;gt;xxx.xx.x.x&amp;lt;/address&amp;gt;
        &amp;lt;port&amp;gt;1514&amp;lt;/port&amp;gt;
    &amp;lt;/server&amp;gt;
&amp;lt;/client&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4: Re-register the Agent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the agent is listed as disconnected, re-register it with the Wazuh manager. First, remove the existing agent registration from the Wazuh manager:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker exec -it e951f7c6be71 /var/ossec/bin/manage_agents -r 001
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Re-register the agent using the following command on the agent machine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo /var/ossec/bin/agent-auth -m xxx.xx.x.x -A kali

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 5: Restart Wazuh Agent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After updating the configuration and re-registering the agent, restart the Wazuh agent service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl restart wazuh-agent

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 6: Check Network Connectivity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ensure that the agent machine can communicate with the Wazuh manager. Use ping and telnet to test connectivity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ping xxx.xx.x.x
telnet xxx.xx.x.x 1514
telnet xxx.xx.x.x 1515

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 7: Verify Agent Status&lt;/p&gt;

&lt;p&gt;Check the status of the agent from the Wazuh manager container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker exec -it e951f7c6be71 /var/ossec/bin/agent_control -l

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwh3b0lr30736gydstfl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwh3b0lr30736gydstfl.png" alt="Image description" width="702" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verify over Wazuh Dashboard UI &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpy424vl3xgu1qgc4lah.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpy424vl3xgu1qgc4lah.png" alt="Image description" width="786" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading, Keep troubleshooting! &lt;/p&gt;

</description>
      <category>docker</category>
      <category>wazuh</category>
      <category>security</category>
      <category>linux</category>
    </item>
    <item>
      <title>Mitigating vs Eliminating Threats</title>
      <dc:creator>SHUBHENDU SHUBHAM</dc:creator>
      <pubDate>Sat, 01 Mar 2025 04:23:23 +0000</pubDate>
      <link>https://forem.com/sivolko/mitigating-vs-eliminating-threats-471b</link>
      <guid>https://forem.com/sivolko/mitigating-vs-eliminating-threats-471b</guid>
      <description>&lt;p&gt;In security industry I have often seen people getting confused or thinking both as same Mitigating Threats vs Eliminating Threats. Let's discuss as security Threat Modeling POV. &lt;/p&gt;

&lt;p&gt;When it comes to securing systems, there are four main ways we can address threats: &lt;strong&gt;Mitigating threats, Eliminating threats, Transferring threats, and Accepting the risks&lt;/strong&gt;. In this blog, let's focus on the first two: Mitigating and Eliminating threats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mitigating Threats&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mitigating threats means taking steps to make it harder for potential threats to be exploited. Think of it as adding barriers or safeguards to protect your system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passwords for Login Control&lt;/strong&gt;: By requiring passwords, you control who can access your system, mitigating the threat of spoofing (someone pretending to be someone else).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Password Controls&lt;/strong&gt;: Enforcing complexity requirements (e.g., a mix of letters, numbers, and symbols) and expiration policies makes it less likely that a password can be guessed or misused if stolen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eliminating Threats&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Eliminating threats involves removing the threat entirely. This is usually done by eliminating features that introduce vulnerabilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Administrative Access via URL:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mitigation&lt;/strong&gt;: Use passwords or other authentication methods to secure the URL.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Obfuscation:&lt;/strong&gt; Change the URL to something less obvious (e.g., /j8e8vg21euwq/) to make it harder to find.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Elimination:&lt;/strong&gt; Remove the web interface altogether and handle administration through a more secure method, like the command line.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Moving Away from HTTP&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Switching from HTTP to a more secure protocol reduces the attack surface, making it easier to manage and mitigate threats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Considerations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Threat Analysis&lt;/strong&gt;: Identify which threats can be mitigated and which need to be eliminated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feasibility&lt;/strong&gt;: Consider how likely and practical it is to address each threat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comprehensive Models&lt;/strong&gt;: Ensure your threat model covers various scenarios, even those that seem unlikely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visualizing Threat Mitigation and Elimination&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Below is a simple chart to help visualize the process of mitigating and eliminating threats:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;| Strategy         | Example                                              | Description                                                      |
|------------------|------------------------------------------------------|------------------------------------------------------------------|
| Mitigating       | Passwords for Login Control                          | Controls access to the system, reducing spoofing threats.        |
|                  | Password Complexity Requirements                     | Makes passwords harder to guess or misuse.                       |
| Eliminating      | Administrative Access via URL                        | Remove web interface; use command line for administration.       |
|                  | Moving Away from HTTP                                | Reduces attack surface by using a more secure protocol.          |

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mitigating threats adds layers of protection, making it harder for vulnerabilities to be exploited. Eliminating threats removes the vulnerabilities altogether, reducing the potential attack surface. Both strategies are essential for effective threat modeling and securing systems.&lt;/p&gt;

&lt;p&gt;By understanding and applying these concepts, organizations can better protect their systems from potential threats and vulnerabilities.&lt;/p&gt;

&lt;p&gt;Thanks for reading! &lt;/p&gt;

</description>
      <category>thratmodeling</category>
      <category>cybersecurity</category>
      <category>threats</category>
      <category>security</category>
    </item>
  </channel>
</rss>
