<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Y-iT Simplified]]></title><description><![CDATA["Yerravalli IT Simplified" offers practical tutorials, security insights, and consulting on IT security, DevOps, Infrastructure, Linux for modern tech teams. Th]]></description><link>https://it-forge.yerravalliitsimplified.com</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1759684016691/eafe84a5-d9f4-458c-874e-8ac364a15bf9.png</url><title>Y-iT Simplified</title><link>https://it-forge.yerravalliitsimplified.com</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 03:22:11 GMT</lastBuildDate><atom:link href="https://it-forge.yerravalliitsimplified.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[🛡️ Incident Response Workflow]]></title><description><![CDATA[-🔍 What is Incident and Response?

Incident refers to any unexpected event that disrupts normal operations, especially in IT or security.

Response is the structured approach to detect, contain, and recover from that incident.

Effective incident re...]]></description><link>https://it-forge.yerravalliitsimplified.com/incident-response-workflow</link><guid isPermaLink="true">https://it-forge.yerravalliitsimplified.com/incident-response-workflow</guid><dc:creator><![CDATA[Rajesh kumar Yerravalli]]></dc:creator><pubDate>Wed, 31 Dec 2025 10:57:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1765447775973/19c19d63-114c-4be3-9ba9-739fc740bc7a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-what-is-incident-and-response">-🔍 What is Incident and Response?</h2>
<ul>
<li><p><strong>Incident</strong> refers to any unexpected event that disrupts normal operations, especially in IT or security.</p>
</li>
<li><p><strong>Response</strong> is the structured approach to detect, contain, and recover from that incident.</p>
</li>
<li><p>Effective incident response minimizes damage, reduces recovery time, and strengthens future resilience.</p>
</li>
<li><p>It involves preparation, detection, analysis, containment, eradication, recovery, and post-incident review.</p>
</li>
</ul>
<h2 id="heading-the-golden-hour-of-cybersecurity">⏱️ The Golden Hour of Cybersecurity</h2>
<ul>
<li><p>When a cyberattack strikes, the first 60 minutes are crucial.</p>
</li>
<li><p>This “golden hour” decides whether your team contains the threat, preserves evidence, and limits damage — or suffers costly downtime and data loss.</p>
</li>
<li><p>Quick, structured action is the key to survival and recovery.</p>
</li>
<li><p>Here’s a practical, step-by-step guide to help IT teams respond effectively within that first hour.</p>
</li>
</ul>
<h2 id="heading-minute-010-detect-and-validate-the-incident">⏱️ Minute 0–10: Detect and Validate the Incident</h2>
<ul>
<li><p>🔍 <strong>Monitor Security Alerts</strong> <strong>:</strong> Continuously monitor alerts from SIEM, EDR, firewall, and antivirus systems to detect potential security threats in real time.</p>
<p>  Analyze and correlate alerts from multiple sources to identify suspicious patterns or unauthorized activities. Ensure timely response to critical alerts to minimize the impact of security incidents.</p>
</li>
<li><p>✅ <strong>Confirm It’s a Real Incident, Not a False Positive</strong>: Verify whether the alert represents a genuine security incident or a false positive. Correlate data from multiple sources to validate the authenticity of the threat. Ensure accurate incident confirmation before escalating or taking remediation actions.</p>
</li>
<li><p>🧩 <strong>Identify Affected Systems and Users — Isolate the Scope Quickly</strong> : Determine which systems, networks, or user accounts are impacted by the incident. Quickly isolate affected assets to prevent further spread or damage. Define the scope of compromise to guide effective containment and recovery actions.</p>
</li>
</ul>
<blockquote>
<p>🔍 Tip: Use centralized logging and correlation tools to speed up validation.</p>
</blockquote>
<h2 id="heading-minute-1020-contain-the-threat">🔒 Minute 10–20: Contain the Threat</h2>
<ul>
<li><p><strong>Isolate compromised endpoints</strong> from the network: Immediately disconnect compromised endpoints to stop the attack’s spread. Use network segmentation or EDR tools to quarantine infected devices. Preserve forensic evidence while ensuring containment of the threat.</p>
</li>
<li><p>👥 <strong>Disable Affected User Accounts or Revoke Suspicious Access Tokens</strong>: Temporarily disable compromised user accounts to prevent unauthorized access. Revoke suspicious access tokens or sessions to block ongoing threats. Restore account access only after confirming the environment is secure.</p>
</li>
<li><p>🌐 <strong>Block Malicious IPs, Domains, or Ports at the Firewall or Proxy Level</strong>: Block identified malicious IP addresses, domains, and ports to cut off attacker communication. Apply firewall or proxy rules to prevent further infiltration or data exfiltration. Continuously update blacklists based on new threat intelligence.</p>
</li>
</ul>
<blockquote>
<p>⚠️ Avoid shutting down systems abruptly — it may destroy forensic evidence.</p>
</blockquote>
<h2 id="heading-minute-2030-notify-internal-stakeholders">📣 Minute 20–30: Notify Internal Stakeholders</h2>
<ul>
<li><p>🛠️ <strong>Inform IT/Security Leadership and Activate Your Incident Response Team</strong>: Notify IT and security leadership immediately about the confirmed incident. Activate the incident response team to coordinate containment and remediation efforts. Ensure clear communication channels for rapid decision-making and status updates.</p>
</li>
<li><p>📝 <strong>Document Initial Findings: What Was Detected, When, and How:</strong> Record the details of the detection, including what triggered the alert. Note the exact time and method of discovery for accurate tracking.</p>
<p>  Maintain thorough documentation to support investigation and future analysis.</p>
</li>
<li><p>👥 <strong>Assign roles for containment, investigation, and communication</strong> Clearly define team roles for containment, investigation, and internal/external communication. Ensure responsibilities are assigned to prevent overlap and delays during the incident. Streamline coordination to enable efficient and effective incident response.</p>
</li>
</ul>
<blockquote>
<p>🧠 Clear internal communication prevents confusion and duplication of effort.</p>
</blockquote>
<h2 id="heading-minute-3040-begin-documentation">📝 Minute 30–40: Begin Documentation</h2>
<ul>
<li><p><strong>🕒 Start a Timeline of Events</strong> <strong>of events and actions taken:</strong> Create a chronological timeline of all detected events and response actions. Track each step to understand the incident’s progression and impact.</p>
<p>  Use the timeline for reporting, analysis, and post-incident review.</p>
</li>
<li><p><strong>📝 Record Tools, Commands &amp; Evidence, collected:</strong> Document all tools, scripts, and commands used during the investigation. Record any evidence collected from systems, logs, or network devices. Maintain detailed records to support forensic analysis and compliance requirements.</p>
</li>
<li><p><strong>🧠 Preserve Logs &amp; Memory Dumps for forensic analysis:</strong> Secure and retain system logs and memory dumps for thorough forensic examination. Ensure evidence integrity by following proper chain-of-custody procedures. Use preserved data to identify attack methods, affected systems, and threat actors.</p>
</li>
</ul>
<blockquote>
<p>🗂️ Use a shared incident response log or ticketing system to centralize notes.</p>
</blockquote>
<h2 id="heading-minute-4050-plan-next-steps">🔄 Minute 40–50: Plan Next Steps</h2>
<ul>
<li><p><strong>🔄 Decide on Recovery Actions</strong>: patching, restoring backups, or re-imaging systems : Determine the best recovery approach: applying patches, restoring from backups, or re-imaging affected systems. Prioritize actions to minimize downtime and prevent reinfection. Ensure systems are fully secured and tested before returning to production.</p>
</li>
<li><p><strong>📢 Prepare External Notifications if required (legal, regulatory, customer):</strong> Identify stakeholders who must be informed, including legal, regulatory, or affected customers. Draft clear and accurate notifications detailing the incident and mitigation steps. Ensure compliance with laws and regulations while maintaining transparency and trust.</p>
</li>
<li><p><strong>⚖️ Engage Forensic &amp; Legal Teams if the breach involves sensitive data:</strong> Involve forensic experts to analyze the breach and preserve critical evidence. Consult legal teams to ensure compliance with data protection laws and regulations. Coordinate actions to mitigate risk and support potential investigations or litigation.</p>
</li>
</ul>
<blockquote>
<p>📞 Have legal and PR contacts ready in case public disclosure is needed.</p>
</blockquote>
<h2 id="heading-minute-5060-avoid-common-mistakes">🚫 Minute 50–60: Avoid Common Mistakes</h2>
<ul>
<li><p><strong>⚠️ Don’t Shut Down Systems Prematurely:</strong> Avoid powering down systems too early to preserve volatile data for investigation. Keep affected systems running under controlled conditions to aid forensic analysis.</p>
</li>
<li><p><strong>🚨 Don’t Ignore Logs or Alerts:</strong> Always review logs and alerts to detect early signs of potential threats.</p>
<p>  Ignoring them can allow incidents to escalate undetected, increasing risk. Don’t delay internal communication.</p>
</li>
<li><p><strong>📚 Don’t Skip Documentation:</strong> Maintain detailed records of all actions, findings, and decisions during an incident. Skipping documentation can hinder investigations, reporting, and future prevention efforts.</p>
</li>
</ul>
<blockquote>
<p>✅ A calm, methodical response beats panic every time.</p>
</blockquote>
<h2 id="heading-lesson-learned-after-a-breach">🧩 Lesson Learned After a Breach</h2>
<ul>
<li><p>🧠<strong>Post-Mortem Review:</strong></p>
<ul>
<li><p>Review what went wrong and identify gaps in detection or response.</p>
</li>
<li><p>Every incident reveals gaps — patch them before the next strike.</p>
</li>
<li><p>Conduct team debriefs and share lessons to improve future readiness.</p>
</li>
</ul>
</li>
<li><p><strong>📘 IR Plan Update:</strong></p>
<ul>
<li><p>Formally revise your Incident Response Playbook based on recent findings.</p>
</li>
<li><p>Update stronger security policies, smarter tools, better monitoring, and faster response procedures.</p>
</li>
<li><p>These are non-negotiable for modern threat defense.</p>
</li>
<li><p>Strengthen user awareness and training to prevent similar incidents.</p>
</li>
</ul>
</li>
</ul>
<h2 id="heading-key-precautions-against-it-incidents">🧭 <strong>Key Precautions Against IT Incidents</strong></h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Type</strong></td><td><strong>Control / Precaution</strong></td><td><strong>Quick Description</strong></td></tr>
</thead>
<tbody>
<tr>
<td>🌿 <strong>Natural / Preventive</strong></td><td><strong>Regular Data Backups</strong></td><td>Keep secure on-site &amp; cloud backups to recover from disasters or attacks.</td></tr>
<tr>
<td>🧑‍💼 <strong>Administrative Control</strong></td><td><strong>Security Policies &amp; User Awareness</strong></td><td>Train users on phishing, data handling, and enforce clear IT policies.</td></tr>
<tr>
<td>🧱 <strong>Technical Control</strong></td><td><strong>Access Control &amp; MFA</strong></td><td>Limit privileges and use multi-factor authentication to prevent unauthorized access.</td></tr>
<tr>
<td>⚙️ <strong>Technical Control</strong></td><td><strong>Continuous Monitoring &amp; SIEM/EDR</strong></td><td>Detect, log, and respond to threats in real time.</td></tr>
<tr>
<td>🌀 <strong>Administrative + Technical</strong></td><td><strong>Disaster Recovery &amp; Business Continuity Plan</strong></td><td>Ensure readiness for both natural disasters and cyber incidents.</td></tr>
</tbody>
</table>
</div><h2 id="heading-a-few-examples-of-recent-incidents">🧨 A Few Examples Of Recent incidents</h2>
<h3 id="heading-1-third-party-vendor-breach-affected-amazon-employee-data">1. 🔐 Third-Party Vendor Breach: affected Amazon employee data</h3>
<ul>
<li><p>In <strong>November 2024</strong>, Amazon confirmed that employee work-contact info (emails, desk phone numbers, building locations) was exposed due to a security event at one of Amazon’s property-management vendors.</p>
</li>
<li><p>Amazon asserted that its own core systems (including AWS) were not compromised, and no sensitive data such as financial or Social Security information was affected. <a target="_blank" href="https://www.indiatoday.in/technology/news/story/amazon-confirms-employee-data-exposed-in-third-party-data-breach-what-we-know-2631983-2024-11-12?utm_source=chatgpt.com">India Today+1</a></p>
</li>
<li><p><strong>Lesson:</strong> Vendor or third-party risk is real — <mark>even if your systems are secure, exposure can occur via partners.</mark></p>
</li>
</ul>
<h3 id="heading-2-global-exploit-microsoft-sharepoint-globalscale-serversoftware-breach">2. 🌐 Global Exploit: Microsoft SharePoint Global‐scale server/software Breach</h3>
<ul>
<li><p>In <strong>July 2025</strong>, three Chinese-linked hacking groups exploited a vulnerability in on-premises SharePoint servers, affecting ~100 organizations (including U.S. federal agencies).</p>
</li>
<li><p><a target="_blank" href="https://www.politico.com/news/2025/07/22/microsoft-sharepoint-hack-china-federal-agencies-00467254?utm_source=chatgpt.com">The</a> attack targeted self-hosted versions of the software, showing how legacy / on-prem systems still carry outsized risk.</p>
</li>
<li><p><strong>Lesson:</strong> <mark>Infrastructure software, especially when self-hosted or less frequently updated</mark>, can become high-impact attack surfaces with wide ripple effects.</p>
</li>
</ul>
<h3 id="heading-3-major-aws-outage-october-2025">3. 🌩️ Major AWS Outage: October 2025</h3>
<ul>
<li><p>On around <strong>October 20 2025</strong>, AWS (specifically its US-EAST-1 region) experienced a large‐scale outage, disrupting many services globally (including sites like Snapchat, Reddit, Venmo, and even Amazon’s own services). <a target="_blank" href="https://www.reuters.com/business/retail-consumer/amazons-cloud-unit-reports-outage-several-websites-down-2025-10-20/?utm_source=chatgpt.com">3Reuters</a></p>
</li>
<li><p>The root cause was attributed to a DNS / health-monitoring subsystem failure in the EC2 internal network — not a cyberattack. <a target="_blank" href="https://www.livemint.com/technology/amazon-says-aws-outage-fully-mitigated-after-major-global-disruption-hits-snapchat-venmo-reddit-10-updates-11761003575421.html?utm_source=chatgpt.com">mint+1</a></p>
</li>
<li><p><strong>Lesson:</strong> <mark>Even when not under attack, operational or infrastructure failures can cause major incidents; </mark> resilience and backup planning matter.</p>
</li>
</ul>
<h2 id="heading-check-list-for-incident-response">📋Check list for Incident Response</h2>
<p><strong>Download check list for next 60 min.</strong> <a target="_blank" href="https://drive.google.com/file/d/188qhct7f2win12PXX8t4qTGsqvFzmsM0/view"><strong>CheckLlist-1</strong></a><strong>,</strong> <a target="_blank" href="https://drive.google.com/file/d/1vIFx0bULPY6WHNOli5962QOt56H5XYga/view"><strong>CheckList-2</strong></a><strong>.</strong></p>
<p>✅ Confirm the incident (validate alerts, logs, and system behavior)</p>
<p>✅ Identify affected systems and scope of impact</p>
<p>✅ Isolate compromised endpoints and disable suspicious accounts</p>
<p>✅ Block malicious IPs, ports, or domains</p>
<p>✅ Notify internal stakeholders and activate IR team</p>
<p>✅ Begin documentation: timeline, actions, tools, evidence</p>
<p>✅ Preserve forensic data (avoid premature shutdowns)</p>
<p>✅ Plan next steps: recovery, external notifications, legal review</p>
<p>✅ Maintain clear communication throughout the process</p>
<p>✅ Review and refine IR workflow post-incident</p>
<h2 id="heading-conclusion-speed-structure-and-clarity-save-systems">✅ Conclusion: Speed, Structure, and Clarity Save Systems</h2>
<p>The first hour after a cyberattack isn’t just about reacting — it’s about responding with precision. A well-defined incident response workflow empowers IT teams to contain threats, preserve evidence, and maintain trust. Whether you're managing a small business or a global infrastructure, the steps you take in those first 60 minutes can shape the outcome of the entire breach.</p>
<p>By following this checklist, documenting every move, and avoiding common mistakes, your team can turn chaos into control. And remember: the best time to prepare is before an incident ever occurs.</p>
<p><strong>Build your plan. Train your team. Test your response.</strong> Because when seconds count, preparation is everything.</p>
<h2 id="heading-watch-the-full-video">🎥 Watch the Full Video</h2>
<h3 id="heading-y-it-simplified-incident-work-flowhttpsyoutubentyyp29nde8">👉Y-iT Simplified - <a target="_blank" href="https://youtu.be/NtyYP29Nde8">Incident Work Flow</a></h3>
<h3 id="heading-call-to-action">🔔 Call-to-Action</h3>
<p>💬 Share your questions in the comments.</p>
<p>👍 If you found this useful, follow me here on <a target="_blank" href="https://it-forge.yerravalliitsimplified.com/">Blogs</a>.</p>
<p>🎥 Don’t forget to watch the full tutorial on my <strong><mark>YouTube</mark></strong> channel:</p>
<p><strong>Incident Work Flow: A Step-by-Step Guide for</strong> What to Do in the First 60 Minutes and Precautions.</p>
<h2 id="heading-about-the-author">👨‍💻 About the Author</h2>
<p>I’m <strong>Rajesh Yerravalli</strong>, the creator of <strong>Yerravalli IT Simplified</strong>.</p>
<p>With over 20 <strong>years of experience in IT</strong>—covering IT Infrastructure, Linux, Windows, Networking, Servers, Cloud, and Cybersecurity—I’m passionate about breaking down complex technical topics into simple, hands-on tutorials.</p>
<p>📺 Watch tutorials on YouTube: <a target="_blank" href="https://www.youtube.com/@YerravalliITSimplified">Yerravalli IT Simplified</a> (<strong>Y-iT Simplified)</strong></p>
<p>✍️ Read more guides here on Hashnode.</p>
]]></content:encoded></item><item><title><![CDATA[🛡️ SSH బ్రూట్ ఫోర్స్ డిఫెన్స్: మీ లైనక్స్ సర్వర్‌ను పటిష్టం చేయడాని
🛡️ SSH Brute Force Defense: A Step-by-Step Guide to Hardening Your Linux Server]]></title><description><![CDATA[Secure Shell (SSH) is the backbone of remote server management. However, its default exposed state makes it a prime target for automated brute-force attacks, where bots attempt to guess your login credentials.
సెక్యూర్ షెల్ (SSH) అనేది రిమోట్ సర్వర్ ...]]></description><link>https://it-forge.yerravalliitsimplified.com/ssh-ssh-brute-force-defense-a-step-by-step-guide-to-hardening-your-linux-server</link><guid isPermaLink="true">https://it-forge.yerravalliitsimplified.com/ssh-ssh-brute-force-defense-a-step-by-step-guide-to-hardening-your-linux-server</guid><category><![CDATA[#SSH #CyberSecurity #Linux #ServerHardening #Fail2ban #SysAdmin #DevOps #Telugu #Tutorial #SSHKeys]]></category><dc:creator><![CDATA[Rajesh kumar Yerravalli]]></dc:creator><pubDate>Wed, 08 Oct 2025 17:11:16 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1760460858156/6252522e-c76f-4c8e-9552-a78f62516eef.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Secure Shell (SSH) is the backbone of remote server management. However, its default exposed state makes it a prime target for automated <strong>brute-force attacks</strong>, where bots attempt to guess your login credentials.</p>
<p>సెక్యూర్ షెల్ (SSH) అనేది రిమోట్ సర్వర్ నిర్వహణకు వెన్నెముక. అయితే, దాని డిఫాల్ట్ బహిర్గత స్థితి ఆటోమేటెడ్ <strong>బ్రూట్-ఫోర్స్ దాడులకు</strong> ప్రధాన లక్ష్యంగా మారుతుంది, ఇక్కడ బాట్‌లు మీ లాగిన్ ఆధారాలను ఊహించడానికి ప్రయత్నిస్తాయి.</p>
<p>Protecting your server isn't difficult—it just requires a few crucial steps. This guide will walk you through the essential techniques to lock down your server and significantly reduce the risk of compromise.</p>
<p>మీ సర్వర్‌ను రక్షించడం కష్టం కాదు—దీనికి కొన్ని ముఖ్యమైన దశలు మాత్రమే అవసరం. మీ సర్వర్‌ను సురక్షితం చేయడానికి మరియు రాజీ పడే ప్రమాదాన్ని గణనీయంగా తగ్గించడానికి అవసరమైన పద్ధతులను ఈ గైడ్ మీకు చూపుతుంది.</p>
<h2 id="heading-1-prerequisites">1. Prerequisites</h2>
<p>Before we begin, you'll need:</p>
<ul>
<li><p>A Linux server (e.g., Ubuntu, Debian, CentOS, RHEL).</p>
</li>
<li><p><strong>Root or sudo access</strong> to the server.</p>
</li>
<li><p><strong>Basic familiarity</strong> with the Linux command line and text editors like <code>nano</code> or <code>vim</code>.</p>
</li>
</ul>
<p>మనం ప్రారంభించే ముందు, మీకు ఇవి అవసరం:</p>
<ul>
<li><p>ఒక లైనక్స్ సర్వర్ (ఉదా. Ubuntu, Debian, CentOS, RHEL).</p>
</li>
<li><p>సర్వర్‌కు <strong>రూట్ లేదా sudo యాక్సెస్</strong>.</p>
</li>
<li><p>లైనక్స్ కమాండ్ లైన్ మరియు <code>nano</code> లేదా <code>vim</code> వంటి టెక్స్ట్ ఎడిటర్‌లతో <strong>ప్రాథమిక పరిచయం</strong>.</p>
</li>
</ul>
<h2 id="heading-2-step-1-switch-to-key-based-authentication">2. Step 1: Switch to Key-Based Authentication 🔑</h2>
<h2 id="heading-2-1">2. దశ 1: కీ-ఆధారిత ప్రమాణీకరణకు మారండి 🔑</h2>
<p>The single most effective defense is to disable password logins entirely and rely on <strong>SSH Key Pairs</strong>. This makes brute-force attacks virtually impossible, as guessing a key is mathematically infeasible.</p>
<p>పాస్‌వర్డ్ లాగిన్‌లను పూర్తిగా నిలిపివేసి, <strong>SSH కీ జతలపై</strong> ఆధారపడటం అత్యంత ప్రభావవంతమైన రక్షణ. కీని ఊహించడం గణితపరంగా అసాధ్యం కాబట్టి, ఇది బ్రూట్-ఫోర్స్ దాడులను ఆచరణాత్మకంగా అసాధ్యం చేస్తుంది.</p>
<h3 id="heading-a-generate-your-key-pair-on-your-local-machine">A. Generate Your Key Pair (On Your Local Machine)</h3>
<h3 id="heading-a">A. మీ కీ జతను రూపొందించండి (మీ స్థానిక యంత్రంలో)</h3>
<p>If you don't already have one, generate an ED25519 key pair. This is more secure and faster than RSA.</p>
<p>మీకు ఇప్పటికే లేకపోతే, ED25519 కీ జతను రూపొందించండి. ఇది RSA కంటే సురక్షితమైనది మరియు వేగవంతమైనది.</p>
<pre><code class="lang-bash">ssh-keygen -t ed25519
</code></pre>
<hr />
<ul>
<li><p>You'll be prompted to save the key. The default locations (<code>~/.ssh/id_ed25519</code> for the <strong>private key</strong> and <code>~/.ssh/id_</code><a target="_blank" href="http://ed25519.pub"><code>ed25519.pub</code></a> for the <strong>public key</strong>) are usually fine.</p>
</li>
<li><p><strong>Set a strong passphrase</strong> for your private key.</p>
</li>
<li><p>కీని సేవ్ చేయమని మీరు ప్రాంప్ట్ చేయబడతారు. డిఫాల్ట్ స్థానాలు (<strong>ప్రైవేట్ కీ</strong> కోసం <code>~/.ssh/id_ed25519</code> మరియు <strong>పబ్లిక్ కీ</strong> కోసం <code>~/.ssh/id_</code><a target="_blank" href="http://ed25519.pub"><code>ed25519.pub</code></a>) సాధారణంగా సరిపోతాయి.</p>
</li>
<li><p>మీ ప్రైవేట్ కీ కోసం <strong>బలమైన పాస్‌ఫ్రేజ్‌ను సెట్ చేయండి</strong>.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759244949975/84ce6e8c-cbde-4a99-9342-86a22228d07f.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-b-copy-the-public-key-to-the-server">B. Copy the Public Key to the Server</h3>
<h3 id="heading-b">B. పబ్లిక్ కీని సర్వర్‌కు కాపీ చేయండి</h3>
<p>Use ssh-copy-id to easily transfer your public key to your server:.</p>
<p>మీ పబ్లిక్ కీని మీ సర్వర్‌కు సులభంగా బదిలీ చేయడానికి <code>ssh-copy-id</code> ఉపయోగించండి:</p>
<pre><code class="lang-bash">ssh-copy-id -i ~/.ssh/id_ed25519.pub your_username@your_server_ip
</code></pre>
<ul>
<li><p>You will be asked for your <strong>password</strong> one last time.</p>
</li>
<li><p>మీరు చివరిసారిగా మీ <strong>పాస్‌వర్డ్</strong> కోసం అడగబడతారు.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759244914555/df657f1f-dcbf-4a3e-aff5-cb4711a41717.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-c-test-key-based-login">C. Test Key-Based Login</h3>
<h3 id="heading-c">C. కీ-ఆధారిత లాగిన్‌ను పరీక్షించండి</h3>
<p>Log out and try to log back in using your key:</p>
<p>లాగ్ అవుట్ చేసి, మీ కీని ఉపయోగించి తిరిగి లాగిన్ చేయడానికి ప్రయత్నించండి:</p>
<pre><code class="lang-bash">ssh your_username@your_server_ip
</code></pre>
<ul>
<li><p>If successful, you should be prompted for your key's <strong>passphrase</strong> instead of your server password.</p>
</li>
<li><p>విజయవంతమైతే, మీ సర్వర్ పాస్‌వర్డ్‌కు బదులుగా మీ కీ యొక్క <strong>పాస్‌ఫ్రేజ్</strong> కోసం మీరు ప్రాంప్ట్ చేయబడతారు.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759244802964/d53244d6-4fc9-4fad-9509-4a8e74e3d93d.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-3-step-2-disable-password-authentication">3. Step 2: Disable Password Authentication</h2>
<h3 id="heading-3-2">3. దశ 2: పాస్‌వర్డ్ ప్రమాణీకరణను నిలిపివేయండి</h3>
<p>Once you confirm key-based login works, you must disable password logins to close the door on brute-force attackers.</p>
<p>కీ-ఆధారిత లాగిన్ పనిచేస్తుందని మీరు నిర్ధారించిన తర్వాత, బ్రూట్-ఫోర్స్ దాడిదారుల నుండి తలుపు మూసివేయడానికి మీరు పాస్‌వర్డ్ లాగిన్‌లను నిలిపివేయాలి.</p>
<h3 id="heading-a-edit-the-ssh-configuration-file">A. Edit the SSH Configuration File</h3>
<p>Open the SSH daemon configuration file, typically located at <code>/etc/ssh/sshd_config</code>.</p>
<p>సాధారణంగా <code>/etc/ssh/sshd_config</code> వద్ద ఉన్న SSH డెమోన్ కాన్ఫిగరేషన్ ఫైల్‌ను తెరవండి.</p>
<pre><code class="lang-bash">sudo nano /etc/ssh/sshd_config
</code></pre>
<h3 id="heading-b-apply-hardening-changes">B. Apply Hardening Changes</h3>
<h3 id="heading-b-1">B. పటిష్టం చేసే మార్పులను వర్తింపజేయండి</h3>
<p>Find and modify (or add) the following lines:</p>
<p>కింది పంక్తులను కనుగొని సవరించండి (లేదా జోడించండి):</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Directive</td><td>Recommended Setting</td><td>Purpose</td></tr>
</thead>
<tbody>
<tr>
<td><code>PasswordAuthentication</code></td><td><code>no</code></td><td><strong>Crucial:</strong> Disables all password logins.</td></tr>
<tr>
<td><code>PermitRootLogin</code></td><td><code>no</code></td><td>Prevents direct login as the <strong>root</strong> user.</td></tr>
<tr>
<td><code>X11Forwarding</code></td><td><code>no</code></td><td>Disable if you don't use graphical applications over SSH.</td></tr>
</tbody>
</table>
</div><p>Your changes should look like this:</p>
<p>మీ మార్పులు ఇలా ఉండాలి:</p>
<pre><code class="lang-ini"><span class="hljs-comment"># /etc/ssh/sshd_config</span>
PasswordAuthentication no
PermitRootLogin no
X11Forwarding no"
</code></pre>
<h3 id="heading-c-restart-the-ssh-service">C. Restart the SSH Service</h3>
<h3 id="heading-c-ssh">C. SSH సర్వీస్‌ను పునఃప్రారంభించండి</h3>
<p>Apply the changes by restarting the SSH service:</p>
<p>SSH సర్వీస్‌ను పునఃప్రారంభించడం ద్వారా మార్పులను వర్తింపజేయండి:</p>
<p><strong>On Debian/Ubuntu:</strong></p>
<pre><code class="lang-bash">sudo systemctl restart ssh
</code></pre>
<p><strong>On CentOS/RHEL:</strong></p>
<pre><code class="lang-bash">sudo systemctl restart sshd
</code></pre>
<h2 id="heading-4-step-3-change-the-default-ssh-port">4. Step 3: Change the Default SSH Port 🚪</h2>
<h3 id="heading-4-3-ssh">4. దశ 3: డిఫాల్ట్ SSH పోర్ట్‌ను మార్చండి 🚪</h3>
<p>Brute-force bots typically target the <strong>default SSH port, 22</strong>. Changing this to a non-standard, high-numbered port (e.g., 2222, 58491) won't stop a determined attacker, but it will eliminate the vast majority of automated scanning noise.</p>
<p>బ్రూట్-ఫోర్స్ బాట్‌లు సాధారణంగా <strong>డిఫాల్ట్ SSH పోర్ట్, 22</strong>ని లక్ష్యంగా చేసుకుంటాయి. దీన్ని నాన్-స్టాండర్డ్, అధిక సంఖ్య గల పోర్ట్‌కు (ఉదా. 2222, 58491) మార్చడం వలన నిర్ణీత దాడిదారు ఆగిపోరు, కానీ ఇది ఆటోమేటెడ్ స్కానింగ్ శబ్దంలో ఎక్కువ భాగాన్ని తొలగిస్తుంది.</p>
<h3 id="heading-a-edit-the-ssh-configuration-file-1">A. Edit the SSH Configuration File</h3>
<h3 id="heading-a-ssh">A. SSH కాన్ఫిగరేషన్ ఫైల్‌ను సవరించండి</h3>
<p>Open <code>/etc/ssh/sshd_config</code> again:</p>
<p><code>/etc/ssh/sshd_config</code>ను మళ్లీ తెరవండి:</p>
<pre><code class="lang-bash">sudo nano /etc/ssh/sshd_config
</code></pre>
<h3 id="heading-b-change-the-port">B. Change the Port</h3>
<h3 id="heading-b-2">B. పోర్ట్‌ను మార్చండి</h3>
<p>Find the line for <code>Port</code> and change it to a port between 1024 and 65535. For example, we'll use <code>2222</code>.</p>
<p><code>Port</code> కోసం పంక్తిని కనుగొని, దానిని 1024 మరియు 65535 మధ్య ఉన్న పోర్ట్‌కు మార్చండి. ఉదాహరణకు, మనం <code>2222</code>ను ఉపయోగిస్తాము.</p>
<pre><code class="lang-ini"><span class="hljs-comment"># /etc/ssh/sshd_config</span>
Port 2222
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759235978467/146ebc8e-0b48-4b58-8c20-503a6d738a79.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-c-open-the-new-port-in-the-firewall">C. Open the New Port in the Firewall</h3>
<h3 id="heading-c-1">C. ఫైర్‌వాల్‌లో కొత్త పోర్ట్‌ను తెరవండి</h3>
<p>You <strong>must</strong> open the new port in your server's firewall <em>before</em> restarting SSH. Otherwise, you will lock yourself out!</p>
<p>మీరు SSHను పునఃప్రారంభించే <em>ముందు</em> మీ సర్వర్ యొక్క ఫైర్‌వాల్‌లో కొత్త పోర్ట్‌ను <strong>తప్పక</strong> తెరవాలి. లేకపోతే, మీరు లాక్ అవుట్ అవుతారు!</p>
<p><strong>Using UFW (Ubuntu/Debian):</strong></p>
<p><strong>UFW ఉపయోగించి (Ubuntu/Debian):</strong></p>
<pre><code class="lang-bash">sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp  <span class="hljs-comment"># Remove old port access</span>
</code></pre>
<p><strong>Using firewalld (CentOS/RHEL):</strong></p>
<p><strong>firewalld ఉపయోగించి (CentOS/RHEL):</strong></p>
<pre><code class="lang-bash">sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759236099893/5a673fb2-fd4b-4ef5-abf0-35dd693b2bc4.png" alt class="image--center mx-auto" /></p>
<p><strong>D. Restart the SSH Service</strong></p>
<p><strong>D. SSH సర్వీస్‌ను పునఃప్రారంభించండి</strong></p>
<pre><code class="lang-bash">sudo systemctl restart ssh
</code></pre>
<h3 id="heading-e-connecting-to-the-new-port">E. Connecting to the New Port</h3>
<h3 id="heading-e">E. కొత్త పోర్ట్‌కు కనెక్ట్ చేయడం</h3>
<p>From now on, you'll need to specify the port when connecting:</p>
<p>ఇకపై, మీరు కనెక్ట్ చేస్తున్నప్పుడు పోర్ట్‌ను పేర్కొనాలి:</p>
<pre><code class="lang-bash">ssh -p 2222 your_username@your_server_ip
</code></pre>
<p>Successfully logged in the server with the customized port (sometimes restart may require)</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759241362185/3e97f1ef-6e28-4b88-a38f-b54ed9e5f1ac.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-41-troubleshooting-ssh-key-authentication-issues">🔧 4.1 Troubleshooting: SSH Key Authentication Issues</h2>
<h3 id="heading-41-ssh">🔧4.1 ట్రబుల్షూటింగ్: ఇతర యంత్రాలలో SSH కీ ప్రమాణీకరణ సమస్యలు</h3>
<p>Switching to key-based login is secure, but you might run into connection errors when logging in from a new computer or after copying your key. Here are the most common issues and their fixes.</p>
<p>కీ-ఆధారిత లాగిన్‌కు మారడం సురక్షితం, కానీ కొత్త కంప్యూటర్ నుండి లాగిన్ అయినప్పుడు లేదా మీ కీని కాపీ చేసిన తర్వాత కనెక్షన్ లోపాలను ఎదుర్కొనే అవకాశం ఉంది. ఇక్కడ సాధారణ సమస్యలు మరియు వాటి పరిష్కారాలు ఉన్నాయి.</p>
<h3 id="heading-a-permission-denied-public-key">A. Permission Denied (Public Key)</h3>
<h3 id="heading-a-permission-denied-public-key-1">A. పర్మిషన్ నిరాకరణ (Permission Denied - Public Key)</h3>
<p>The most frequent error is <strong>"Permission denied (publickey)."</strong> This usually means the server either can't find your key or the local machine's permissions are too open.</p>
<p>అత్యంత తరచుగా వచ్చే లోపం <strong>"Permission denied (publickey)."</strong> దీని అర్థం సర్వర్ మీ కీని కనుగొనలేకపోయింది లేదా స్థానిక యంత్రం యొక్క అనుమతులు చాలా ఓపెన్‌గా ఉన్నాయి</p>
<h4 id="heading-on-your-local-machine-the-machine-you-are-connecting-from"><strong>On Your Local Machine (The machine you are connecting from):</strong></h4>
<h3 id="heading-kirgsk7gsyag4lc44lgn4lcl4lc4lco4lc4lcviocwrcwgucwpocxjecwsocwgucwsucxiyao4lcu4lga4lcw4lgbiocwlecwqocxhucwlecxjecwncxjsdgsjrgsyfgsljgsy3gsktgsyhgskjgsy3gskgg4lcv4lcc4lck4lgn4lcw4lccktoqkg"><strong>మీ స్థానిక యంత్రంలో (మీరు కనెక్ట్ చేస్తున్న యంత్రం):</strong></h3>
<ul>
<li><p><strong>సమస్య:</strong> మీ ప్రైవేట్ కీ ఫైల్ (<code>id_ed25519</code> లేదా <code>id_rsa</code>) తప్పు అనుమతులను కలిగి ఉంది. SSHకి చాలా కఠినమైన, సురక్షితమైన అనుమతులు అవసరం.</p>
</li>
<li><p><strong>పరిష్కారం:</strong> మీ ప్రైవేట్ కీని మీరు మాత్రమే చదవగలరని నిర్ధారించుకోండి.</p>
</li>
<li><p><strong>Issue:</strong> Your private key file (<code>id_ed25519</code> or <code>id_rsa</code>) has incorrect permissions. SSH requires very strict, secure permissions.</p>
</li>
<li><p><strong>Fix:</strong> Ensure only you can read the private key.</p>
<pre><code class="lang-bash">  chmod 400 ~/.ssh/id_ed25519
</code></pre>
</li>
</ul>
<h4 id="heading-on-the-server-the-machine-you-are-connecting-to">On the Server (The machine you are connecting to):</h4>
<h4 id="heading-kirgsljgsldgsy3gslxgsldgsy3igizgsllgsysgkocwrucxgocwsocxgsdgsjxgskjgsybgsjxgsy3gsjgsy0g4lcf4lc14lgb4lck4lgb4lco4lgn4lcoiocwrcwgucwpocxjecwsocwgik6kio"><strong>సర్వర్‌లో (మీరు కనెక్ట్ అవుతున్న యంత్రం):</strong></h4>
<ul>
<li><p><strong>సమస్య:</strong> సర్వర్‌లోని <code>.ssh</code> డైరెక్టరీ లేదా <code>authorized_keys</code> ఫైల్ తప్పు అనుమతులను కలిగి ఉంది.</p>
</li>
<li><p><strong>పరిష్కారం:</strong> సర్వర్‌లోని కీ ఫైల్‌ల కోసం ఈ సురక్షిత అనుమతులను ఉపయోగించండి:</p>
</li>
<li><p><strong>Issue:</strong> The <code>.ssh</code> directory or the <code>authorized_keys</code> file on the server has incorrect permissions.</p>
</li>
<li><p><strong>Fix:</strong> Use these secure permissions for the key files on the server:</p>
<pre><code class="lang-bash">  <span class="hljs-comment"># Secure the .ssh directory</span>
  chmod 700 ~/.ssh

  <span class="hljs-comment"># Secure the authorized_keys file</span>
  chmod 600 ~/.ssh/authorized_keys
</code></pre>
</li>
</ul>
<h3 id="heading-b-key-agent-issues-key-not-found">B. Key Agent Issues (Key Not Found)</h3>
<h3 id="heading-b-key-agent-issues-key-not-found-1">B. కీ ఏజెంట్ సమస్యలు (Key Agent Issues - Key Not Found)</h3>
<p>If you are using a new local machine or are prompted for a password instead of your key's passphrase, the system might not be aware of your key.</p>
<ul>
<li><p><strong>Issue:</strong> Your key is not loaded into the <strong>SSH agent</strong>, which manages your keys in memory.</p>
</li>
<li><p><strong>Fix:</strong> Manually start the agent and add your key:</p>
</li>
</ul>
<p>మీరు కొత్త స్థానిక యంత్రాన్ని ఉపయోగిస్తున్నట్లయితే లేదా మీ కీ యొక్క పాస్‌ఫ్రేజ్‌కు బదులుగా పాస్‌వర్డ్ కోసం ప్రాంప్ట్ చేయబడినట్లయితే, సిస్టమ్‌కు మీ కీ గురించి తెలియకపోవచ్చు.</p>
<ul>
<li><p><strong>సమస్య:</strong> మీ కీ <strong>SSH ఏజెంట్‌లో</strong> లోడ్ చేయబడలేదు.</p>
</li>
<li><p><strong>పరిష్కారం:</strong> ఏజెంట్‌ను మాన్యువల్‌గా ప్రారంభించి, మీ కీని జోడించండి:</p>
</li>
</ul>
<pre><code class="lang-bash"><span class="hljs-comment"># Start the SSH agent</span>
<span class="hljs-built_in">eval</span> <span class="hljs-string">"<span class="hljs-subst">$(ssh-agent -s)</span>"</span>

<span class="hljs-comment"># Add your key to the agent</span>
ssh-add ~/.ssh/id_ed25519
<span class="hljs-comment"># You will be prompted for your key's passphrase here.</span>
</code></pre>
<p>If you have multiple keys, try running <code>ssh-add -l</code> to see which keys are loaded.</p>
<h3 id="heading-c-key-mismatch-or-identity-not-specified">C. Key Mismatch or Identity Not Specified</h3>
<h3 id="heading-c-key-mismatch-or-identity-not-specified-1">C. కీ సరిపోలకపోవడం లేదా గుర్తింపు పేర్కొనబడకపోవడం (Key Mismatch or Identity Not Specified)</h3>
<p>Sometimes, the SSH client tries to use the wrong key or doesn't know which key to use for a specific server.</p>
<p>కొన్నిసార్లు, SSH క్లయింట్ తప్పు కీని ఉపయోగించడానికి ప్రయత్నిస్తుంది లేదా నిర్దిష్ట సర్వర్ కోసం ఏ కీని ఉపయోగించాలో తెలియదు.</p>
<ul>
<li><p><strong>Issue:</strong> You are not using the default key name (like <code>id_ed25519</code>) or you have multiple keys.</p>
</li>
<li><p><strong>Fix:</strong> Explicitly tell the client which key file to use with the <code>-i</code> flag:</p>
</li>
<li><p><strong>సమస్య:</strong> మీరు డిఫాల్ట్ కీ పేరును (ఉదా. <code>id_ed25519</code>) ఉపయోగించడం లేదు లేదా మీకు బహుళ కీలు ఉన్నాయి.</p>
</li>
<li><p><strong>పరిష్కారం:</strong> ఏ కీ ఫైల్‌ను ఉపయోగించాలో <code>-i</code> ఫ్లాగ్‌తో క్లయింట్‌కు స్పష్టంగా చెప్పండి:</p>
</li>
</ul>
<pre><code class="lang-bash">ssh -i ~/.ssh/my_special_server_key -p 2222 your_username@your_server_ip
</code></pre>
<p>(గమనిక: మీరు దశ 3ని అనుసరించినట్లయితే, <code>2222</code>ని మీ కస్టమ్ పోర్ట్‌తో భర్తీ చేయండి.)</p>
<p>(Note: Replace <code>2222</code> with your custom port if you followed Step 3.)</p>
<h2 id="heading-5-step-4-install-and-configure-fail2ban">5. Step 4: Install and Configure Fail2ban 🤖</h2>
<h3 id="heading-5-4-fail2ban">5. దశ 4: Fail2banను ఇన్‌స్టాల్ చేసి కాన్ఫిగర్ చేయండి 🤖</h3>
<p>Even with key-based authentication, you'll still see bots knocking on your door. <strong>Fail2ban</strong> is an intrusion prevention software that scans log files (like your SSH logs) for repetitive failed login attempts and dynamically bans the corresponding IP addresses using the firewall.</p>
<p>కీ-ఆధారిత ప్రమాణీకరణతో కూడా, మీ తలుపు తట్టే బాట్‌లను మీరు చూస్తూనే ఉంటారు. <strong>Fail2ban</strong> అనేది ఒక చొరబాటు నివారణ సాఫ్ట్‌వేర్, ఇది పునరావృతమయ్యే విఫలమైన లాగిన్ ప్రయత్నాల కోసం లాగ్ ఫైల్‌లను (మీ SSH లాగ్‌ల వంటివి) స్కాన్ చేస్తుంది మరియు ఫైర్‌వాల్ ఉపయోగించి సంబంధిత IP చిరునామాలను డైనమిక్‌గా నిషేధిస్తుంది.</p>
<h3 id="heading-a-installation">A. Installation</h3>
<p><strong>A. ఇన్‌స్టాలేషన్</strong></p>
<p><strong>On Debian/Ubuntu:</strong></p>
<pre><code class="lang-bash">sudo apt update
sudo apt install fail2ban
</code></pre>
<p><strong>On CentOS/RHEL:</strong></p>
<pre><code class="lang-bash">sudo yum install fail2ban
sudo systemctl <span class="hljs-built_in">enable</span> fail2ban
</code></pre>
<h3 id="heading-b-basic-configuration">B. Basic Configuration</h3>
<h3 id="heading-b-3">B. ప్రాథమిక కాన్ఫిగరేషన్</h3>
<p>Fail2ban uses configuration files called <strong>jails</strong>. Do <strong>not</strong> edit the main configuration file (<code>/etc/fail2ban/jail.conf</code>). Instead, create a copy for your local overrides:</p>
<p>Fail2ban <strong>జైల్స్</strong> అని పిలువబడే కాన్ఫిగరేషన్ ఫైల్‌లను ఉపయోగిస్తుంది. ప్రధాన కాన్ఫిగరేషన్ ఫైల్ (<code>/etc/fail2ban/jail.conf</code>)ను సవరించవద్దు. బదులుగా, మీ స్థానిక ఓవర్‌రైడ్‌ల కోసం ఒక కాపీని సృష్టించండి:</p>
<pre><code class="lang-bash">sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
</code></pre>
<h3 id="heading-c-modify-jail-settings">C. Modify Jail Settings</h3>
<p><strong>C. జైల్ సెట్టింగ్‌లను సవరించండి</strong></p>
<p>Under the <code>[DEFAULT]</code> section, check/modify the following:</p>
<p><code>[DEFAULT]</code> విభాగం కింద, కింది వాటిని తనిఖీ చేయండి/సవరించండి:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Setting</td><td>Default/Example</td><td>Purpose</td></tr>
</thead>
<tbody>
<tr>
<td><code>bantime</code></td><td><code>1h</code> (or <code>3600</code>)</td><td>How long an IP is banned (1 hour).</td></tr>
<tr>
<td><code>findtime</code></td><td><code>10m</code> (or <code>600</code>)</td><td>Time window for failed attempts (10 minutes).</td></tr>
<tr>
<td><code>maxretry</code></td><td><code>5</code></td><td>Number of failed attempts before a ban.</td></tr>
</tbody>
</table>
</div><h3 id="heading-d-enable-the-ssh-jail">D. Enable the SSH Jail</h3>
<p><strong>D. SSH జైల్‌ను ప్రారంభించండి</strong></p>
<p>Find the SSH-specific jail, which is typically called <code>[sshd]</code>, and ensure it is enabled.</p>
<p>సాధారణంగా <code>[sshd]</code> అని పిలువబడే SSH-నిర్దిష్ట జైల్‌ను కనుగొని, అది ప్రారంభించబడిందని నిర్ధారించుకోండి.</p>
<pre><code class="lang-ini"><span class="hljs-section">[sshd]</span>
<span class="hljs-attr">enabled</span> = <span class="hljs-literal">true</span>
<span class="hljs-attr">port</span>    = <span class="hljs-number">2222</span>  <span class="hljs-comment"># IMPORTANT: Use your custom port!</span>
<span class="hljs-attr">logpath</span> = %(sshd_log)s
<span class="hljs-attr">backend</span> = systemd
</code></pre>
<p>E. <strong>Start and Enable Fail2ban</strong></p>
<p>E. Fail2banను ప్రారంభించి ఎనేబుల్ చేయండి</p>
<pre><code class="lang-bash">sudo systemctl start fail2ban
sudo systemctl <span class="hljs-built_in">enable</span> fail2ban
sudo systemctl status fail2ban
</code></pre>
<p>To see which IPs are currently banned, use:</p>
<p>ప్రస్తుతం ఏ IPలు నిషేధించబడ్డాయో చూడటానికి, ఉపయోగించండి:</p>
<pre><code class="lang-bash">sudo fail2ban-client status sshd
</code></pre>
<h2 id="heading-summary-of-hardening-steps">Summary of Hardening Steps</h2>
<h3 id="heading-4lcq4lcf4lc4lc34lgn4lcf4lcciocwmucxhcwuocxhydgskbgslbgslig4lc44lc4lcw4lc4lcc4lc24lcc">పటిష్టం చేసే దశల సారాంశం</h3>
<p>By implementing these four steps, you've created a robust defense:</p>
<ol>
<li><p><strong>Eliminated the weakest link:</strong> Disabled password authentication.</p>
</li>
<li><p><strong>Secured the front door:</strong> Disabled direct root login.</p>
</li>
<li><p><strong>Achieved security through obscurity:</strong> Changed the default SSH port.</p>
</li>
<li><p><strong>Automated attack defense:</strong> Installed and configured Fail2ban.</p>
</li>
</ol>
<p>ఈ నాలుగు దశలను అమలు చేయడం ద్వారా, మీరు బలమైన రక్షణను సృష్టించారు:</p>
<ol>
<li><p><strong>బలహీనమైన లింక్‌ను తొలగించారు:</strong> పాస్‌వర్డ్ ప్రమాణీకరణను నిలిపివేశారు.</p>
</li>
<li><p><strong>ముందు తలుపును సురక్షితం చేశారు:</strong> డైరెక్ట్ రూట్ లాగిన్‌ను నిలిపివేశారు.</p>
</li>
<li><p><strong>గుప్తత ద్వారా భద్రతను సాధించారు:</strong> డిఫాల్ట్ SSH పోర్ట్‌ను మార్చారు.</p>
</li>
<li><p><strong>ఆటోమేటెడ్ దాడి రక్షణ:</strong> Fail2banను ఇన్‌స్టాల్ చేసి కాన్ఫిగర్ చేశారు.</p>
</li>
</ol>
<p>Your Linux server is now significantly hardened against the most common type of attack: the SSH brute-force bot. Stay secure! 🔒</p>
<p>మీ లైనక్స్ సర్వర్ ఇప్పుడు అత్యంత సాధారణ రకం దాడికి: SSH బ్రూట్-ఫోర్స్ బాట్‌కు వ్యతిరేకంగా గణనీయంగా పటిష్టం చేయబడింది. సురక్షితంగా ఉండండి! 🔒</p>
<h2 id="heading-ssh-hardening-checklist">✅ SSH Hardening Checklist</h2>
<ul>
<li><p>[x] Change default SSH port</p>
</li>
<li><p>[x] Disable root login</p>
</li>
<li><p>[x] Use key-based authentication</p>
</li>
<li><p>[x] Restrict access by IP</p>
</li>
<li><p>[x] Install Fail2Ban</p>
</li>
<li><p>[x] Monitor logs regularly</p>
</li>
</ul>
<h2 id="heading-conclusion">📣 Conclusion</h2>
<p>SSH is powerful but vulnerable if left unprotected. By following these steps, you’ll greatly reduce the risk of brute force attacks and improve your server’s security posture.</p>
<p><strong>Telugu:</strong> ఈ చర్యలు తీసుకోవడం ద్వారా మీ Linux సర్వర్‌ను brute force దాడుల నుండి రక్షించవచ్చు. మరిన్ని bilingual tutorials కోసం Y-IT Simplified ని ఫాలో అవ్వండి.</p>
<h2 id="heading-watch-the-full-video">🎥 Watch the Full Video</h2>
<h3 id="heading-y-it-simplified-ssh-hardening-tutorialhttpsyoutubeeooj87grwfs">👉Y-iT Simplified - <a target="_blank" href="https://youtu.be/EooJ87GRWFs">SSH Hardening Tutorial</a></h3>
<h3 id="heading-call-to-action">🔔 Call-to-Action</h3>
<p>💬 Share your questions in the comments.</p>
<p>👍 If you found this useful, follow me here on <a target="_blank" href="https://it-forge.yerravalliitsimplified.com/">Blogs</a>.</p>
<p>🎥 Don’t forget to watch the full tutorial on my <strong><mark>YouTube</mark></strong> channel:</p>
<p><strong>SSH Brute Force Defense: A Step-by-Step Guide to Hardening Your Linux Server</strong></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/EooJ87GRWFs?si=K0hSRthUSYSyxVxc"></iframe>

<h2 id="heading-about-the-author">👨‍💻 About the Author</h2>
<p>I’m <strong>Rajesh Yerravalli</strong>, the creator of <strong>Yerravalli IT Simplified</strong>.</p>
<p>With over 20 <strong>years of experience in IT</strong>—covering IT Infrastructure, Linux, Windows, Networking, Servers, Cloud, and Cybersecurity—I’m passionate about breaking down complex technical topics into simple, hands-on tutorials.</p>
<p>📺 Watch tutorials on YouTube: <a target="_blank" href="https://www.youtube.com/@YerravalliITSimplified">Yerravalli IT Simplified</a> (<strong>Y-iT Simplified)</strong></p>
<p>✍️ Read more guides here on Hashnode.</p>
]]></content:encoded></item><item><title><![CDATA[🛡️SSH Brute Force Defense: A Step-by-Step Guide to Hardening Your Linux Server]]></title><description><![CDATA[Secure Shell (SSH) is the backbone of remote server management. However, its default exposed state makes it a prime target for automated brute-force attacks, where bots attempt to guess your login credentials.
Protecting your server isn't difficult—i...]]></description><link>https://it-forge.yerravalliitsimplified.com/ssh-brute-force-defense-a-step-by-step-guide-to-hardening-your-linux-server</link><guid isPermaLink="true">https://it-forge.yerravalliitsimplified.com/ssh-brute-force-defense-a-step-by-step-guide-to-hardening-your-linux-server</guid><category><![CDATA[#SSH #CyberSecurity #Linux #ServerHardening #Fail2ban #SysAdmin #DevOps #Telugu #Tutorial #SSHKeys]]></category><dc:creator><![CDATA[Rajesh kumar Yerravalli]]></dc:creator><pubDate>Wed, 08 Oct 2025 17:09:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1760460900918/da31579c-9181-4680-b4e8-4b21bcae38ed.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Secure Shell (SSH) is the backbone of remote server management. However, its default exposed state makes it a prime target for automated <strong>brute-force attacks</strong>, where bots attempt to guess your login credentials.</p>
<p>Protecting your server isn't difficult—it just requires a few crucial steps. This guide will walk you through the essential techniques to lock down your server and significantly reduce the risk of compromise.</p>
<h2 id="heading-1-prerequisites">1. Prerequisites</h2>
<p>Before we begin, you'll need:</p>
<ul>
<li><p>A Linux server (e.g., Ubuntu, Debian, CentOS, RHEL).</p>
</li>
<li><p><strong>Root or sudo access</strong> to the server.</p>
</li>
<li><p><strong>Basic familiarity</strong> with the Linux command line and text editors like <code>nano</code> or <code>vim</code>.</p>
</li>
</ul>
<h2 id="heading-section-2-step-1-key-based-authentication">Section 2: Step 1 (Key-Based Authentication)</h2>
<h2 id="heading-2-step-1-switch-to-key-based-authentication">2. Step 1: Switch to Key-Based Authentication 🔑</h2>
<p>The single most effective defense is to disable password logins entirely and rely on <strong>SSH Key Pairs</strong>. This makes brute-force attacks virtually impossible, as guessing a key is mathematically infeasible.</p>
<h3 id="heading-a-generate-your-key-pair-on-your-local-machine">A. Generate Your Key Pair (On Your Local Machine)</h3>
<p>If you don't already have one, generate an ED25519 key pair. This is more secure and faster than RSA.</p>
<pre><code class="lang-bash">ssh-keygen -t ed25519
</code></pre>
<hr />
<ul>
<li><p>You'll be prompted to save the key. The default locations (<code>~/.ssh/id_ed25519</code> for the <strong>private key</strong> and <code>~/.ssh/id_</code><a target="_blank" href="http://ed25519.pub"><code>ed25519.pub</code></a> for the <strong>public key</strong>) are usually fine.</p>
</li>
<li><p><strong>Set a strong passphrase</strong> for your private key.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759244949975/84ce6e8c-cbde-4a99-9342-86a22228d07f.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-b-copy-the-public-key-to-the-server">B. Copy the Public Key to the Server</h3>
<p>Use ssh-copy-id to easily transfer your public key to your server:.</p>
<pre><code class="lang-bash">ssh-copy-id -i ~/.ssh/id_ed25519.pub your_username@your_server_ip
</code></pre>
<ul>
<li>You will be asked for your <strong>password</strong> one last time.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759244914555/df657f1f-dcbf-4a3e-aff5-cb4711a41717.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-c-test-key-based-login">C. Test Key-Based Login</h3>
<p>Log out and try to log back in using your key:</p>
<pre><code class="lang-bash">ssh your_username@your_server_ip
</code></pre>
<ul>
<li>If successful, you should be prompted for your key's <strong>passphrase</strong> instead of your server password.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759244802964/d53244d6-4fc9-4fad-9509-4a8e74e3d93d.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-3-step-2-disable-password-authentication">3. Step 2: Disable Password Authentication</h2>
<p>Once you confirm key-based login works, you must disable password logins to close the door on brute-force attackers.</p>
<h3 id="heading-a-edit-the-ssh-configuration-file">A. Edit the SSH Configuration File</h3>
<p>Open the SSH daemon configuration file, typically located at <code>/etc/ssh/sshd_config</code>.</p>
<pre><code class="lang-bash">sudo nano /etc/ssh/sshd_config
</code></pre>
<h3 id="heading-b-apply-hardening-changes">B. Apply Hardening Changes</h3>
<p>Find and modify (or add) the following lines:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Directive</td><td>Recommended Setting</td><td>Purpose</td></tr>
</thead>
<tbody>
<tr>
<td><code>PasswordAuthentication</code></td><td><code>no</code></td><td><strong>Crucial:</strong> Disables all password logins.</td></tr>
<tr>
<td><code>PermitRootLogin</code></td><td><code>no</code></td><td>Prevents direct login as the <strong>root</strong> user.</td></tr>
<tr>
<td><code>X11Forwarding</code></td><td><code>no</code></td><td>Disable if you don't use graphical applications over SSH.</td></tr>
</tbody>
</table>
</div><p>Your changes should look like this:</p>
<pre><code class="lang-ini"><span class="hljs-comment"># /etc/ssh/sshd_config</span>
PasswordAuthentication no
PermitRootLogin no
X11Forwarding no"
</code></pre>
<h3 id="heading-c-restart-the-ssh-service">C. Restart the SSH Service</h3>
<p>Apply the changes by restarting the SSH service:</p>
<p><strong>On Debian/Ubuntu:</strong></p>
<pre><code class="lang-bash">sudo systemctl restart ssh
</code></pre>
<p><strong>On CentOS/RHEL:</strong></p>
<pre><code class="lang-bash">sudo systemctl restart sshd
</code></pre>
<h2 id="heading-4-step-3-change-the-default-ssh-port">4. Step 3: Change the Default SSH Port 🚪</h2>
<p>Brute-force bots typically target the <strong>default SSH port, 22</strong>. Changing this to a non-standard, high-numbered port (e.g., 2222, 58491) won't stop a determined attacker, but it will eliminate the vast majority of automated scanning noise.</p>
<h3 id="heading-a-edit-the-ssh-configuration-file-1">A. Edit the SSH Configuration File</h3>
<p>Open <code>/etc/ssh/sshd_config</code> again:</p>
<pre><code class="lang-bash">sudo nano /etc/ssh/sshd_config
</code></pre>
<h3 id="heading-b-change-the-port">B. Change the Port</h3>
<p>Find the line for <code>Port</code> and change it to a port between 1024 and 65535. For example, we'll use <code>2222</code>.</p>
<pre><code class="lang-ini"><span class="hljs-comment"># /etc/ssh/sshd_config</span>
Port 2222
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759235978467/146ebc8e-0b48-4b58-8c20-503a6d738a79.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-c-open-the-new-port-in-the-firewall">C. Open the New Port in the Firewall</h3>
<p>You <strong>must</strong> open the new port in your server's firewall <em>before</em> restarting SSH. Otherwise, you will lock yourself out!</p>
<p><strong>Using UFW (Ubuntu/Debian):</strong></p>
<pre><code class="lang-bash">sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp  <span class="hljs-comment"># Remove old port access</span>
</code></pre>
<p><strong>Using firewalld (CentOS/RHEL):</strong></p>
<pre><code class="lang-bash">sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759236099893/5a673fb2-fd4b-4ef5-abf0-35dd693b2bc4.png" alt class="image--center mx-auto" /></p>
<p><strong>D. Restart the SSH Service</strong></p>
<pre><code class="lang-bash">sudo systemctl restart ssh
</code></pre>
<h3 id="heading-e-connecting-to-the-new-port">E. Connecting to the New Port</h3>
<p>From now on, you'll need to specify the port when connecting:</p>
<pre><code class="lang-bash">ssh -p 2222 your_username@your_server_ip
</code></pre>
<p>Successfully logged in the server with the customized port (sometimes restart may require)</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759241362185/3e97f1ef-6e28-4b88-a38f-b54ed9e5f1ac.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-41-troubleshooting-ssh-key-authentication-issues">🔧 4.1 Troubleshooting: SSH Key Authentication Issues</h2>
<p>Switching to key-based login is secure, but you might run into connection errors when logging in from a new computer or after copying your key. Here are the most common issues and their fixes.</p>
<h3 id="heading-a-permission-denied-public-key">A. Permission Denied (Public Key)</h3>
<p>The most frequent error is <strong>"Permission denied (publickey)."</strong> This usually means the server either can't find your key or the local machine's permissions are too open.</p>
<h4 id="heading-on-your-local-machine-the-machine-you-are-connecting-from"><strong>On Your Local Machine (The machine you are connecting from):</strong></h4>
<ul>
<li><p><strong>Issue:</strong> Your private key file (<code>id_ed25519</code> or <code>id_rsa</code>) has incorrect permissions. SSH requires very strict, secure permissions.</p>
</li>
<li><p><strong>Fix:</strong> Ensure only you can read the private key.</p>
<pre><code class="lang-bash">  chmod 400 ~/.ssh/id_ed25519
</code></pre>
</li>
</ul>
<h4 id="heading-on-the-server-the-machine-you-are-connecting-to">On the Server (The machine you are connecting to):</h4>
<ul>
<li><p><strong>Issue:</strong> The <code>.ssh</code> directory or the <code>authorized_keys</code> file on the server has incorrect permissions.</p>
</li>
<li><p><strong>Fix:</strong> Use these secure permissions for the key files on the server:</p>
<pre><code class="lang-bash">  <span class="hljs-comment"># Secure the .ssh directory</span>
  chmod 700 ~/.ssh

  <span class="hljs-comment"># Secure the authorized_keys file</span>
  chmod 600 ~/.ssh/authorized_keys
</code></pre>
</li>
</ul>
<h3 id="heading-b-key-agent-issues-key-not-found">B. Key Agent Issues (Key Not Found)</h3>
<p>If you are using a new local machine or are prompted for a password instead of your key's passphrase, the system might not be aware of your key.</p>
<ul>
<li><p><strong>Issue:</strong> Your key is not loaded into the <strong>SSH agent</strong>, which manages your keys in memory.</p>
</li>
<li><p><strong>Fix:</strong> Manually start the agent and add your key:</p>
</li>
</ul>
<pre><code class="lang-bash"><span class="hljs-comment"># Start the SSH agent</span>
<span class="hljs-built_in">eval</span> <span class="hljs-string">"<span class="hljs-subst">$(ssh-agent -s)</span>"</span>

<span class="hljs-comment"># Add your key to the agent</span>
ssh-add ~/.ssh/id_ed25519
<span class="hljs-comment"># You will be prompted for your key's passphrase here.</span>
</code></pre>
<p>If you have multiple keys, try running <code>ssh-add -l</code> to see which keys are loaded.</p>
<h3 id="heading-c-key-mismatch-or-identity-not-specified">C. Key Mismatch or Identity Not Specified</h3>
<p>Sometimes, the SSH client tries to use the wrong key or doesn't know which key to use for a specific server.</p>
<ul>
<li><p><strong>Issue:</strong> You are not using the default key name (like <code>id_ed25519</code>) or you have multiple keys.</p>
</li>
<li><p><strong>Fix:</strong> Explicitly tell the client which key file to use with the <code>-i</code> flag:</p>
</li>
</ul>
<pre><code class="lang-bash">ssh -i ~/.ssh/my_special_server_key -p 2222 your_username@your_server_ip
</code></pre>
<p>(Note: Replace <code>2222</code> with your custom port if you followed Step 3.)</p>
<h2 id="heading-5-step-4-install-and-configure-fail2ban">5. Step 4: Install and Configure Fail2ban 🤖</h2>
<p>Even with key-based authentication, you'll still see bots knocking on your door. <strong>Fail2ban</strong> is an intrusion prevention software that scans log files (like your SSH logs) for repetitive failed login attempts and dynamically bans the corresponding IP addresses using the firewall.</p>
<h3 id="heading-a-installation">A. Installation</h3>
<p><strong>On Debian/Ubuntu:</strong></p>
<pre><code class="lang-bash">sudo apt update
sudo apt install fail2ban
</code></pre>
<p><strong>On CentOS/RHEL:</strong></p>
<pre><code class="lang-bash">sudo yum install fail2ban
sudo systemctl <span class="hljs-built_in">enable</span> fail2ban
</code></pre>
<h3 id="heading-b-basic-configuration">B. Basic Configuration</h3>
<p>Fail2ban uses configuration files called <strong>jails</strong>. Do <strong>not</strong> edit the main configuration file (<code>/etc/fail2ban/jail.conf</code>). Instead, create a copy for your local overrides:</p>
<pre><code class="lang-bash">sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
</code></pre>
<h3 id="heading-c-modify-jail-settings">C. Modify Jail Settings</h3>
<p>Under the <code>[DEFAULT]</code> section, check/modify the following:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Setting</td><td>Default/Example</td><td>Purpose</td></tr>
</thead>
<tbody>
<tr>
<td><code>bantime</code></td><td><code>1h</code> (or <code>3600</code>)</td><td>How long an IP is banned (1 hour).</td></tr>
<tr>
<td><code>findtime</code></td><td><code>10m</code> (or <code>600</code>)</td><td>Time window for failed attempts (10 minutes).</td></tr>
<tr>
<td><code>maxretry</code></td><td><code>5</code></td><td>Number of failed attempts before a ban.</td></tr>
</tbody>
</table>
</div><h3 id="heading-d-enable-the-ssh-jail">D. Enable the SSH Jail</h3>
<p>Find the SSH-specific jail, which is typically called <code>[sshd]</code>, and ensure it is enabled.</p>
<pre><code class="lang-ini"><span class="hljs-section">[sshd]</span>
<span class="hljs-attr">enabled</span> = <span class="hljs-literal">true</span>
<span class="hljs-attr">port</span>    = <span class="hljs-number">2222</span>  <span class="hljs-comment"># IMPORTANT: Use your custom port!</span>
<span class="hljs-attr">logpath</span> = %(sshd_log)s
<span class="hljs-attr">backend</span> = systemd
</code></pre>
<p>E. <strong>Start and Enable Fail2ban</strong></p>
<pre><code class="lang-bash">sudo systemctl start fail2ban
sudo systemctl <span class="hljs-built_in">enable</span> fail2ban
sudo systemctl status fail2ban
</code></pre>
<p>To see which IPs are currently banned, use:</p>
<pre><code class="lang-bash">sudo fail2ban-client status sshd
</code></pre>
<h2 id="heading-summary-of-hardening-steps">Summary of Hardening Steps</h2>
<p>By implementing these four steps, you've created a robust defense:</p>
<ol>
<li><p><strong>Eliminated the weakest link:</strong> Disabled password authentication.</p>
</li>
<li><p><strong>Secured the front door:</strong> Disabled direct root login.</p>
</li>
<li><p><strong>Achieved security through obscurity:</strong> Changed the default SSH port.</p>
</li>
<li><p><strong>Automated attack defense:</strong> Installed and configured Fail2ban.</p>
</li>
</ol>
<p>Your Linux server is now significantly hardened against the most common type of attack: the SSH brute-force bot. Stay secure! 🔒</p>
<h2 id="heading-ssh-hardening-checklisthttpsdocsyerravalliitsimplifiedcomdefault-guidechecklistssh-hardening">✅ SSH Hardening <a target="_blank" href="https://docs.yerravalliitsimplified.com/default-guide/checklist/ssh-hardening">Checklist</a></h2>
<ul>
<li><p>[x] Use key-based authentication</p>
</li>
<li><p>[x] Disable root login</p>
</li>
<li><p>[x] Disable PasswordAuthentication</p>
</li>
<li><p>[x] Change default SSH port</p>
</li>
<li><p>[x] Restrict access by IP</p>
</li>
<li><p>[x] Install Fail2Ban</p>
</li>
<li><p>[x] Complexity Passwdqc</p>
</li>
<li><p>[x] Monitor logs regularly</p>
</li>
</ul>
<h2 id="heading-conclusion">📣 Conclusion</h2>
<p>SSH is powerful but vulnerable if left unprotected. By following these steps, you’ll greatly reduce the risk of brute force attacks and improve your server’s security posture.</p>
<h2 id="heading-watch-the-full-video">🎥 Watch the Full Video</h2>
<h3 id="heading-y-it-simplified-ssh-hardening-tutorialhttpsyoutubeeooj87grwfs">👉Y-iT Simplified - <a target="_blank" href="https://youtu.be/EooJ87GRWFs">SSH Hardening Tutorial</a></h3>
<h3 id="heading-call-to-action">🔔 Call-to-Action</h3>
<p>💬 Share your questions in the comments.</p>
<p>👍 If you found this useful, follow me here on <a target="_blank" href="https://it-forge.yerravalliitsimplified.com/">Blogs</a>.</p>
<p>🎥 Don’t forget to watch the full tutorial on my <strong><mark>YouTube</mark></strong> channel:</p>
<p><strong>SSH Brute Force Defense: A Step-by-Step Guide to Hardening Your Linux Server</strong></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/EooJ87GRWFs?si=wS64J-8QwYsd1Cw6"></iframe>

<h2 id="heading-about-the-author">👨‍💻 About the Author</h2>
<p>I’m <strong>Rajesh Yerravalli</strong>, the creator of <strong>Yerravalli IT Simplified</strong>.</p>
<p>With over 20 <strong>years of experience in IT</strong>—covering IT Infrastructure, Linux, Windows, Networking, Servers, Cloud, and Cybersecurity—I’m passionate about breaking down complex technical topics into simple, hands-on tutorials.</p>
<p>📺 Watch tutorials on YouTube: <a target="_blank" href="https://www.youtube.com/@YerravalliITSimplified">Yerravalli IT Simplified</a> (<strong>Y-iT Simplified)</strong></p>
<p>✍️ Read more guides here on Hashnode.</p>
]]></content:encoded></item><item><title><![CDATA[Top 5 Security Mistakes Small Businesses Make—and How to Fix Them]]></title><description><![CDATA[Whether you're running a retail shop in Warangal or managing a consultancy in Hyderabad, cybersecurity is no longer optional—it’s essential. Small businesses are often targeted not because they’re high-value, but because they’re under protected.
Cybe...]]></description><link>https://it-forge.yerravalliitsimplified.com/top-5-security-mistakes-small-businesses-makeand-how-to-fix-them</link><guid isPermaLink="true">https://it-forge.yerravalliitsimplified.com/top-5-security-mistakes-small-businesses-makeand-how-to-fix-them</guid><category><![CDATA[cybersecurity, small-business, IT-security, Telugu, awareness]]></category><dc:creator><![CDATA[Rajesh kumar Yerravalli]]></dc:creator><pubDate>Sat, 27 Sep 2025 13:07:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1758428563139/c5f1f514-2942-47ce-9270-353462b96c7a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Whether you're running a retail shop in Warangal or managing a consultancy in Hyderabad, cybersecurity is no longer optional—it’s essential. Small businesses are often targeted not because they’re high-value, but because they’re under protected.</p>
<p>Cybersecurity isn’t just for big corporations. Small businesses are increasingly targeted by attackers—often because they’re easier to breach. Let’s explore five common mistakes how to fix them, step by step.</p>
<hr />
<h1 id="heading-1-weak-passwords">1. 🔐 Weak Passwords</h1>
<h3 id="heading-mistake-using-simple-or-repeated-passwords-like-admin123"><strong>Mistake:</strong> Using simple or repeated passwords like “admin123”.</h3>
<p><strong>Fix:</strong></p>
<ul>
<li><p><strong>Use strong passwords with symbols and numbers:</strong> <em>Use strong passwords with symbols, numbers, and mixed-case letters to make them harder to guess. Avoid common words or patterns—random combinations are your best defense.</em></p>
</li>
<li><p><strong>Enable Multi-Factor Authentication (MFA):</strong> <em>Enable Multi-Factor Authentication (MFA) to add an extra layer of protection beyond passwords. Even if credentials are stolen, MFA helps block unauthorized access by requiring a second verification step</em>.</p>
</li>
<li><p><strong>Use password managers:</strong> <em>Use password managers to securely store and generate complex passwords for all your accounts. They reduce the risk of reuse and make it easier to follow strong password practices without memorizing everything.</em></p>
</li>
</ul>
<hr />
<h1 id="heading-2-unpatched-systems">2. 🧩 Unpatched Systems</h1>
<h3 id="heading-mistake-ignoring-software-updates"><strong>Mistake:</strong> Ignoring software updates.</h3>
<p><strong>Fix:</strong></p>
<ul>
<li><p><strong>Enable auto-updates:</strong> <em>Enable auto-updates to ensure your systems receive the latest security patches without delay. This reduces manual effort and protects against newly discovered vulnerabilities before attackers can exploit them.</em></p>
</li>
<li><p><strong>Maintain a patch schedule:</strong> <em>Maintain a patch schedule to regularly update all systems, applications, and devices. A consistent routine ensures no critical updates are missed and helps reduce exposure to known vulnerabilities</em>.</p>
</li>
<li><p><strong>Stable versions:</strong> <em>Maintain stable versions of operating systems and software to reduce compatibility issues and unexpected bugs. Avoid using beta or unsupported releases in production environments unless thoroughly tested</em>.</p>
</li>
</ul>
<hr />
<h1 id="heading-3-poor-firewall-configuration">3. 🔥 Poor Firewall Configuration</h1>
<h3 id="heading-mistake-leaving-default-settings-or-open-ports"><strong>Mistake:</strong> Leaving default settings or open ports.</h3>
<p><strong>Fix:</strong></p>
<ul>
<li><p><strong>Regular port scan:</strong> <em>Perform regular port scans to identify open or vulnerable ports that attackers could exploit. This helps ensure your firewall and network configurations remain secure and aligned with best practices.</em></p>
</li>
<li><p><strong>Default deny policy:</strong> <em>Apply a default deny policy to block all traffic by default and only allow what’s explicitly needed. This minimizes exposure by ensuring unauthorized access is automatically rejected unless specifically permitted</em>.</p>
</li>
<li><p><strong>Review firewall rules:</strong> <em>Review firewall rules regularly to ensure only necessary traffic is allowed and outdated permissions are removed. This helps maintain a secure perimeter and prevents accidental exposure of internal systems</em>.</p>
<hr />
</li>
</ul>
<h1 id="heading-4-no-incident-response-plan">4. 🚨 No Incident Response Plan</h1>
<h3 id="heading-mistake-no-plan-for-cyberattacks"><strong>Mistake:</strong> No plan for cyberattacks.</h3>
<p><strong>Fix:</strong></p>
<ul>
<li><p><strong>Create a simple response playbook:</strong> <em>Create a simple response playbook that outlines what to do during a cyber incident—step by step. It should include key contacts, escalation paths, and immediate actions to contain and recover from threats</em>.</p>
</li>
<li><p><strong>Assign roles and escalation paths:</strong> <em>Assign clear roles and escalation paths so every team member knows their responsibility during a cyber incident. This ensures faster decision-making, reduces confusion, and helps contain threats efficiently</em></p>
</li>
<li><p><strong>Conduct mock drills:</strong> <em>Conduct mock drills to simulate cyber incidents and test your team’s readiness. These practice runs help identify gaps in your response plan and build confidence in handling real threats.</em></p>
</li>
</ul>
<hr />
<h1 id="heading-5-lack-of-security-awareness">5. 🧠 Lack of Security Awareness</h1>
<h3 id="heading-mistake-employees-unaware-of-phishing-or-cyber-hygiene"><strong>Mistake:</strong> Employees unaware of phishing or cyber hygiene.</h3>
<p><strong>Fix:</strong></p>
<ul>
<li><p><strong>Share real-world examples:</strong> <em>Share real-world examples of cyberattacks and conduct phishing simulations to help employees recognize threats. Practical exposure builds awareness and prepares your team to respond confidently to suspicious emails or links.</em></p>
</li>
<li><p><strong>Conduct awareness training:</strong> <em>Conduct awareness training to educate employees about common cyber threats like phishing, malware, and social engineering. Regular sessions help build a security-first mindset and reduce the risk of human error.</em></p>
</li>
<li><p><strong>Encourage open reporting:</strong> <em>Encourage or reward open reporting of suspicious activity to build a culture of transparency and vigilance. Recognizing employees who speak up—whether through praise or small incentives—helps surface threats early and fosters team-wide accountability.</em></p>
</li>
</ul>
<hr />
<h2 id="heading-final-thoughts">💡 Final Thoughts</h2>
<p>Cybersecurity is not optional—it’s essential for every business, big or small. Fixing these common mistakes strengthens your defenses, builds customer trust, and ensures long-term resilience against evolving threats.</p>
<p>👉 Visit <a target="_blank" href="https://it-forge.yerravalliitsimplified.com">Yerravalli IT Simplified</a> for tutorials, consulting, and more.</p>
<h2 id="heading-whats-next">🔗 What’s Next?</h2>
<p><strong>SSH Brute Force Defense: Ubuntu Server Management and Security Hardening</strong></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/EooJ87GRWFs?si=0YdTjSFoD2d-R_jt"></iframe>

<h3 id="heading-call-to-action">🔔 Call-to-Action</h3>
<p>💬 Share your questions in the comments.</p>
<p>👍 If you found this useful, follow me here <a target="_blank" href="https://it-forge.yerravalliitsimplified.com/">on <strong>Blog</strong></a><a target="_blank" href="https://www.notion.so/End-of-the-EachAritcle-2747f71515da8043973fc08499dd3fa0?pvs=21">.</a></p>
<p>🎥 Don’t forget to watch the full tutorial on my YouTube channel:</p>
<p><a target="_blank" href="https://youtu.be/WUpYaIlCRcQ">Top 5 Security Mistakes Small Businesses Make—and How to Fix Them</a></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/WUpYaIlCRcQ?si=icBK6KsK8ke9CzMp"></iframe>

<h2 id="heading-about-the-author">👨‍💻 About the Author</h2>
<p>I’m <strong>Rajesh Kumar Yerravalli</strong>, the creator of <strong>Yerravalli IT Simplified</strong>.</p>
<p>With over 20 <strong>years of experience in IT</strong>—covering Linux, Windows, Networking, Servers, Cloud, and Cybersecurity—I’m passionate about breaking down complex technical topics into simple, hands-on tutorials.</p>
<p>📺 Watch tutorials on YouTube: <a target="_blank" href="https://www.youtube.com/@YerravalliITSimplified">Yerravalli IT Simplified</a></p>
]]></content:encoded></item><item><title><![CDATA[How to Configure SSH and Networking in Ubuntu Server on VirtualBox]]></title><description><![CDATA[TL;DR
This guide continues from the Ubuntu Server installation. You’ll install and enable OpenSSH, configure VirtualBox networking modes (NAT, Bridged, Host-Only, Internal), optionally set up port forwarding, and assign a static IP on Ubuntu using Ne...]]></description><link>https://it-forge.yerravalliitsimplified.com/how-to-configure-ssh-and-networking-in-ubuntu-server-on-virtualbox</link><guid isPermaLink="true">https://it-forge.yerravalliitsimplified.com/how-to-configure-ssh-and-networking-in-ubuntu-server-on-virtualbox</guid><category><![CDATA[Ubuntu Server, VirtualBox, SSH configuration, NAT, Host-Only, Bridged Network, Linux tutorials]]></category><dc:creator><![CDATA[Rajesh kumar Yerravalli]]></dc:creator><pubDate>Fri, 19 Sep 2025 16:21:41 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1758371724653/9503042e-80d3-4c37-93a5-da3cf5648fbd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-tldr">TL;DR</h2>
<p>This guide continues from the Ubuntu Server installation. You’ll install and enable OpenSSH, configure VirtualBox networking modes (NAT, Bridged, Host-Only, Internal), optionally set up port forwarding, and assign a static IP on Ubuntu using Netplan so you can reliably SSH into the VM.</p>
<p>👉 If you haven’t installed Ubuntu Server yet, start here: <a target="_blank" href="https://blog.yerravalliitsimplified.com/how-to-install-ubuntu-server-on-virtualbox">How to Install Ubuntu Server on VirtualBox</a><br />👉 Next tutorial in the series: <a class="post-section-overview" href="#">Ubuntu Server Management and Security Hardening</a></p>
<hr />
<h2 id="heading-what-youll-need-prerequisites">What you’ll need (Prerequisites)</h2>
<ul>
<li><p>VirtualBox installed on your host (Windows / macOS / Linux).</p>
</li>
<li><p>An Ubuntu Server VM already installed (recap video or installation guide).</p>
</li>
<li><p>Basic comfort with the terminal (copy/paste commands provided).</p>
</li>
<li><p>Optional: Administrator/owner access to the host machine (for VirtualBox settings).</p>
</li>
</ul>
<hr />
<h2 id="heading-quick-overview-of-virtualbox-network-modes-one-liner">Quick overview of VirtualBox network modes (one-liner)</h2>
<ul>
<li><p><strong>NAT:</strong> Easiest — VM can access the internet. Host cannot connect to VM directly unless you add port forwarding.</p>
</li>
<li><p><strong>NAT Network:</strong> Multiple VMs can talk to each other and reach the internet; host cannot access VMs unless you configure port forwarding.</p>
</li>
<li><p><strong>Bridged:</strong> VM is on the same LAN as your host — good for servers that need direct LAN access.</p>
</li>
<li><p><strong>Host-Only:</strong> Host and VMs can reach each other — great for lab networks but no internet (unless you add another adapter).</p>
</li>
<li><p><strong>Internal:</strong> VMs only communicate among themselves (isolated).</p>
</li>
</ul>
<h2 id="heading-step-by-step">Step by step</h2>
<h3 id="heading-1-recap-confirm-your-vm-is-running">1) Recap — confirm your VM is running</h3>
<p>Start VirtualBox and power on your Ubuntu Server VM.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758247798230/913a344c-f85b-4e82-91fa-a28baf916e5e.png" alt="Figure 1 — VirtualBox network adapter settings." class="image--center mx-auto" /></p>
<h3 id="heading-2-install-amp-enable-openssh-on-ubuntu">2) Install &amp; enable OpenSSH on Ubuntu</h3>
<p>Open a terminal in the VM (or use the VirtualBox console).</p>
<pre><code class="lang-plaintext"># update packages
sudo apt update

# install OpenSSH server
sudo apt install -y openssh-server

# enable and start ssh service
sudo systemctl enable --now ssh

# check status
sudo systemctl status ssh --no-pager
</code></pre>
<p>You should see <code>active (running)</code>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758244880412/82f17321-ce15-471d-95c5-42f7805fa50b.png" alt="Figure 2 — VirtualBox network adapter settings." class="image--center mx-auto" /></p>
<blockquote>
<p>Tip: If <code>sshd</code> is not installed (very rare on server images), <code>sudo apt install openssh-server</code> fixes it.</p>
</blockquote>
<h3 id="heading-3-confirm-the-vms-network-interface-name-amp-ip-always-do-this-first">3) Confirm the VM’s network interface name &amp; IP (always do this first)</h3>
<p>Find the interface name and IP assigned to the VM:</p>
<pre><code class="lang-plaintext">ip a      # lists network interfaces and addresses
</code></pre>
<p>Look for an interface like <code>enp0s3</code>, <code>ensXXX</code>, or <code>eth0</code>. Note the <code>inet</code> address (e.g., <code>10.0.2.15</code> or <code>192.168.56.101</code>).</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758247529268/ab14e275-3633-4193-920f-e2cd0976c403.png" alt="Figure 3 — VirtualBox network adapter settings." class="image--center mx-auto" /></p>
<blockquote>
<h3 id="heading-4-how-to-connect-by-ssh-depending-on-network-mode">4) How to connect by SSH (depending on network mode)</h3>
<h4 id="heading-if-using-bridged-mode">If using <strong>Bridged</strong> mode</h4>
<p>The VM gets an IP from your LAN DHCP (same subnet as host). Connect from host:</p>
<pre><code class="lang-plaintext">ssh &lt;username&gt;@&lt;vm-ip&gt;
# e.g.
ssh rajesh@192.168.1.45
</code></pre>
<h4 id="heading-if-using-host-only-mode">If using <strong>Host-Only</strong> mode</h4>
<p>Host and VM are on a private host-only subnet (commonly <code>192.168.56.x</code>). Use the</p>
<p>host-only IP:</p>
<pre><code class="lang-plaintext">ssh &lt;username&gt;@192.168.56.101
</code></pre>
<h4 id="heading-if-using-nat-mode-default">If using <strong>NAT</strong> mode (default)</h4>
<p>VM can reach the internet but host cannot directly reach guest unless you add port forwarding.</p>
<ul>
<li><p>Power off VM.</p>
</li>
<li><p>VirtualBox → Select VM → <strong>Settings → Network → Adapter 1 → Advanced → Port Forwarding</strong>.</p>
</li>
<li><p>Add a rule: Host IP <code>127.0.0.1</code>, Host Port <code>2222</code>, Guest IP (leave empty or put guest IP), Guest Port <code>22</code>.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758247248361/d343f294-a038-4be4-b675-f224a886fbea.png" alt="Figure 4 — VirtualBox network adapter settings." class="image--center mx-auto" /></p>
<ul>
<li>Start VM. Connect from host:</li>
</ul>
<pre><code class="lang-plaintext">ssh -p 2222 &lt;username&gt;@127.0.0.1
# e.g.
ssh -p 2222 rajesh@127.0.0.1
</code></pre>
<ul>
<li><p>Option B — Port forwarding (VBoxManage CLI):</p>
</li>
<li><p>From the host terminal (replace <code>"UbuntuVM"</code> with your VM name):</p>
<pre><code class="lang-plaintext">  VBoxManage modifyvm "UbuntuVM" --natpf1 "guestssh,tcp,,2222,,22"
</code></pre>
</li>
<li><p>Then use <code>ssh -p 2222 user@127.0.0.1</code> to connect.</p>
<h4 id="heading-if-using-nat-network">If using <strong>NAT Network</strong></h4>
<p>  Similar to NAT — you can configure port forwarding for the NAT Network or use other networking (host-only) to allow host access. By default, host cannot access VMs on NAT Network without forwarding.</p>
</li>
</ul>
</blockquote>
<h3 id="heading-5-optional-set-a-static-ip-on-ubuntu-netplan-eg-for-host-only-or-bridged-static-ips">5) (Optional) Set a static IP on Ubuntu (Netplan) — e.g., for Host-Only or Bridged static IPs</h3>
<p>If you want the VM to always have the same IP (recommended for servers), configure netplan.</p>
<ol>
<li><p>Find the interface name: <code>ip a</code> (e.g., <code>enp0s3</code>).</p>
</li>
<li><p>Create or edit <code>/etc/netplan/01-netcfg.yaml</code> (filename may differ):</p>
</li>
</ol>
<pre><code class="lang-plaintext"># Example: static IP for Host-Only network (replace interface and addresses)
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.56.101/24]
      gateway4: 192.168.56.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
</code></pre>
<ol start="3">
<li>Apply the config:</li>
</ol>
<pre><code class="lang-plaintext">sudo netplan try      # test the config
# or
sudo netplan apply
</code></pre>
<ol start="4">
<li>Verify: <code>ip a</code> and <code>ping 8.8.8.8</code>.</li>
</ol>
<blockquote>
<p><strong>Important:</strong> Replace <code>enp0s3</code> with the interface name from <code>ip a</code>. Use correct gateway for your network (Host-Only default gateway often <code>192.168.56.1</code> in VirtualBox).</p>
</blockquote>
<h3 id="heading-6-make-sure-firewall-allows-ssh-ufw-example">6) Make sure firewall allows SSH (UFW example)</h3>
<p>If <code>ufw</code> is active, allow SSH:</p>
<pre><code class="lang-plaintext"># allow default OpenSSH profile
sudo ufw allow OpenSSH

# if you used host-side port-forward 2222:
sudo ufw allow 2222/tcp

# enable and check
sudo ufw enable
sudo ufw status
</code></pre>
<h3 id="heading-7-verify-connectivity-from-host">7) Verify connectivity from host</h3>
<ul>
<li><p>Ping the VM IP: <code>ping &lt;vm-ip&gt;</code></p>
</li>
<li><p>SSH test: <code>ssh user@&lt;vm-ip&gt;</code> or <code>ssh -p 2222 user@127.0.0.1</code>.</p>
</li>
<li><p>Use netcat to test port: <code>nc -vz &lt;vm-ip&gt; 22</code> (or <code>127.0.0.1 2222</code>).</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758246983399/5026ebaa-eeca-4573-b232-86de5e721bb4.png" alt="Figure 5 — VirtualBox network adapter settings." class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758247067327/92ddaa16-c403-418c-a2e6-b743cd3cfd92.png" alt="Figure 6 — VirtualBox network adapter settings." class="image--center mx-auto" /></p>
<h3 id="heading-8-useful-virtualbox-gui-checks-amp-tips">8) Useful VirtualBox GUI checks &amp; tips</h3>
<ul>
<li><p><strong>Cable connected:</strong> In VM → Settings → Network → ensure “Cable connected” checkbox is ON.</p>
</li>
<li><p><strong>Adapter type:</strong> Usually leave as Intel PRO/1000 (Default).</p>
</li>
<li><p><strong>Two adapters:</strong> You can add two adapters — e.g., Adapter 1 NAT (internet) + Adapter 2 Host-Only (host access). This gives VM internet + stable host access.</p>
</li>
<li><p><strong>Create NAT Network:</strong> If you want VM-to-VM comms with NAT (NAT Network), use VirtualBox global settings → Network → NAT Networks → Add and configure.</p>
</li>
</ul>
<h3 id="heading-9-example-lab-setups-amp-recommended-use">9) Example lab setups &amp; recommended use</h3>
<ul>
<li><p><strong>Quick internet access, minimal fuss:</strong> Use NAT. Use port forwarding to SSH from host.</p>
</li>
<li><p><strong>Server accessible on your LAN (others can reach it):</strong> Use Bridged. Good for test servers or services to be accessed by other machines on the LAN.</p>
</li>
<li><p><strong>Isolated lab where host must access VMs:</strong> Use Host-Only (or Host-Only + NAT for internet).</p>
</li>
<li><p><strong>Fully isolated multi-VM testing:</strong> Internal Network.</p>
</li>
</ul>
<h2 id="heading-common-troubleshooting-checklist">Common troubleshooting checklist</h2>
<ul>
<li><p>SSH says <strong>Connection refused</strong> → Ensure <code>sshd</code> is installed &amp; running: <code>sudo systemctl status ssh</code>.</p>
</li>
<li><p>SSH times out → Check firewall (<code>ufw status</code>) or VirtualBox port forwarding.</p>
</li>
<li><p>Wrong IP → Re-run <code>ip a</code> inside VM.</p>
</li>
<li><p>Port forwarding not working → VM must be powered off to change some NAT settings (use GUI or <code>VBoxManage</code>), and make sure host port is free.</p>
</li>
<li><p>Netplan config fails → Run <code>sudo netplan try</code> to rollback if something breaks. Use <code>ip a</code> to confirm interface names.</p>
</li>
</ul>
<h2 id="heading-wrapping-up">✅ Wrapping Up</h2>
<p>In this tutorial, we configured <strong>SSH access</strong> and set up <strong>networking in VirtualBox</strong> for Ubuntu Server. With this setup, you can now connect to your VM remotely and experiment with different networking modes (NAT, Bridged, Host-Only, etc.) just like in a real-world environment.</p>
<p>👉 If you missed the installation steps, check out the first part of this series:<br /><a target="_blank" href="https://blog101.yerravalliitsimplified.com"><strong>How to Install Ubuntu Server on VirtualBox (Step by Step)</strong></a></p>
<h2 id="heading-wrapping-up-1">✅ Wrapping Up</h2>
<p>In this tutorial, we configured <strong>SSH access</strong> and set up <strong>networking in Ubuntu Server on VirtualBox</strong>. With this setup, you can now connect remotely and experiment with different VirtualBox network modes just like in real-world environments.</p>
<hr />
<h2 id="heading-whats-next">🔗 What’s Next?</h2>
<p>Now that your VM can be accessed via SSH, the next step is to explore <strong>Ubuntu Server management and security hardening</strong>.</p>
<p>👉 If you missed the installation tutorial, start here:</p>
<p><a target="_blank" href="https://it-forge.yerravalliitsimplified.com/how-to-install-ubuntu-server-on-virtualbox"><strong>How to Install Ubuntu Server on VirtualBox</strong></a></p>
<p>👉 Continue to the next tutorial:</p>
<p><a target="_blank" href="https://www.notion.so/End-of-the-EachAritcle-2747f71515da8043973fc08499dd3fa0?pvs=21"><strong>Ubuntu Server Management and Security Hardening</strong></a></p>
<hr />
<h3 id="heading-call-to-action">🔔 Call-to-Action</h3>
<p>💬 Share your questions in the comments.</p>
<p>👍 If you found this useful, follow me here on <a target="_blank" href="https://it-forge.yerravalliitsimplified.com/"><strong>Blog</strong>.</a></p>
<p>🎥 Don’t forget to watch the full tutorial on my YouTube channel:</p>
<p><a target="_blank" href="https://youtu.be/PQv7o5gIh6o"><strong>How to Configure SSH and Networking in Ubuntu Server on VirtualBox</strong></a></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/PQv7o5gIh6o?si=PSHdSbfltcc5jFl5"></iframe>

<h2 id="heading-about-the-author">👨‍💻 About the Author</h2>
<p>I’m <strong>Rajesh Kumar</strong>, the creator of <strong>Yerravalli IT Simplified</strong>.</p>
<p>With over 20 <strong>years of experience in IT</strong>—covering Linux, Windows, Networking, Servers, Cloud, and Cybersecurity—I’m passionate about breaking down complex technical topics into simple, hands-on tutorials.</p>
<p>📺 Watch tutorials on YouTube: <a target="_blank" href="https://www.youtube.com/@YerravalliITSimplified">Yerravalli IT Simplified</a></p>
<hr />
<h2 id="heading-ubuntu-server-on-virtualbox-series">📚 Ubuntu Server on VirtualBox Series</h2>
<p>1️⃣ <a target="_blank" href="https://it-forge.yerravalliitsimplified.com/how-to-install-ubuntu-server-on-virtualbox">How to Install Ubuntu Server on VirtualBox</a></p>
<p>2️⃣ <a target="_blank" href="https://it-forge.yerravalliitsimplified.com/how-to-configure-ssh-and-networking-in-ubuntu-server-on-virtualbox">How to Configure SSH and Networking in Ubuntu Server on VirtualBox</a></p>
<p>3️⃣ <strong>SSH Brute Force</strong>: <a target="_blank" href="https://youtu.be/EooJ87GRWFs"><strong>Ubuntu Server Management and Security Hardening</strong></a></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/EooJ87GRWFs?si=xq9VG9V-V5Gm0xLw"></iframe>

<p>Stay tuned — new parts will be added here as the series continues! 🚀</p>
]]></content:encoded></item><item><title><![CDATA[How to Install Ubuntu Server on VirtualBox]]></title><description><![CDATA[TL;DR
This guide continues from the Ubuntu Server install. You’ll install and enable OpenSSH, pick and configure the right VirtualBox network mode (NAT, NAT Network, Bridged, Host-Only, Internal), optionally create port-forwarding (for NAT), and set ...]]></description><link>https://it-forge.yerravalliitsimplified.com/how-to-install-ubuntu-server-on-virtualbox</link><guid isPermaLink="true">https://it-forge.yerravalliitsimplified.com/how-to-install-ubuntu-server-on-virtualbox</guid><category><![CDATA[Ubuntu, VirtualBox, Linux, Server, Installation]]></category><dc:creator><![CDATA[Rajesh kumar Yerravalli]]></dc:creator><pubDate>Fri, 19 Sep 2025 03:02:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1758372478308/6c4fd09f-7654-487b-97ae-06436d1d46a6.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-tldr">TL;DR</h2>
<p>This guide continues from the Ubuntu Server install. You’ll install and enable OpenSSH, pick and configure the right VirtualBox network mode (NAT, NAT Network, Bridged, Host-Only, Internal), optionally create port-forwarding (for NAT), and set a static IP on Ubuntu with Netplan so you can reliably SSH into the VM.</p>
<h2 id="heading-what-youll-need-prerequisites">What you’ll need (Prerequisites)</h2>
<ul>
<li><p>Oracle VirtualBox installed (Windows, macOS, or Linux).</p>
</li>
<li><p>Ubuntu Server ISO (download from official Ubuntu site).</p>
</li>
<li><p>At least 2 GB RAM and 20 GB free disk space on your host system.</p>
</li>
</ul>
<h2 id="heading-step-1-download-ubuntu-server-iso">Step 1: Download Ubuntu Server ISO</h2>
<ol>
<li><p>Go to <a target="_blank" href="https://ubuntu.com/download/server">Ubuntu Downloads</a></p>
</li>
<li><p>Download the latest <strong>Ubuntu Server LTS ISO</strong> (e.g., 24.04 LTS).</p>
</li>
<li><p>Save it on your host machine.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758189603916/c9a4c374-5d40-4a85-ac2c-561ab8a4e485.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-step-2-create-a-new-virtual-machine-in-virtualbox">Step 2: Create a new Virtual Machine in VirtualBox</h2>
<ol>
<li><p>Open <strong>VirtualBox</strong> → Click <strong>New</strong>.</p>
</li>
<li><p>Name: <code>UbuntuServer</code></p>
</li>
<li><p>Type: <strong>Linux</strong> | Version: <strong>Ubuntu (64-bit)</strong></p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758193544464/169b2c97-d3da-4415-9ea4-302177927659.png" alt class="image--center mx-auto" /></p>
<ol start="4">
<li>Allocate Memory: <strong>2048 MB or higher</strong>.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758193438018/013238ae-f202-4e2b-ab86-9178b984d287.png" alt class="image--center mx-auto" /></p>
<ol start="5">
<li>Create a Virtual Hard Disk: <strong>20 GB VDI (dynamically allocated)</strong></li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758193477368/0ef60e63-64df-4c1a-ac3d-1bf33827b55a.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-step-3-attach-the-ubuntu-iso">Step 3: Attach the Ubuntu ISO</h2>
<ol>
<li><p>Select the new VM → <strong>Settings → Storage</strong>.</p>
</li>
<li><p>Under “Controller: IDE”, add the Ubuntu Server ISO as a virtual CD/DVD.</p>
</li>
<li><p>Save and close settings.</p>
</li>
<li><p>Skip unattended installation</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758193314074/417b55ed-0009-4601-906f-252bd7f807b9.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-step-4-configure-vm-settings-optional-but-recommended">Step 4: Configure VM Settings (Optional but recommended)</h2>
<ul>
<li><p><strong>Processors:</strong> Assign 2 CPUs if your host supports it.</p>
</li>
<li><p><strong>Network:</strong> Start with <strong>NAT</strong> (easiest for internet access).</p>
</li>
<li><p><strong>Display:</strong> Enable VMSVGA and 16 MB VRAM.</p>
</li>
</ul>
<h2 id="heading-step-5-start-the-vm-and-begin-installation">Step 5: Start the VM and begin installation</h2>
<ol>
<li><p>Start the VM.</p>
</li>
<li><p>Ubuntu installer will boot.</p>
</li>
<li><p>Follow the steps:</p>
<ul>
<li><p>Choose Language &amp; Keyboard Layout.</p>
</li>
<li><p>Configure network (auto via DHCP is fine for now).</p>
</li>
<li><p>Set hostname (e.g., <code>ubuntu-vm</code>).</p>
</li>
<li><p>Create user account &amp; password.</p>
</li>
<li><p>Select disk → Use entire disk → Install.</p>
</li>
<li><p>Wait for installation to finish.</p>
</li>
</ul>
</li>
</ol>
<p>    <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758191783866/c84620a1-16e7-497f-bdc9-32290c3efbf6.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-step-6-first-boot-and-login">Step 6: First boot and login</h2>
<ol>
<li><p>Remove the ISO (Settings → Storage → remove ISO).</p>
</li>
<li><p>Reboot VM.</p>
</li>
<li><p>Login with your new username and password.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758191629268/1dcf5905-d0c0-4d2a-9518-eff3c2e1724c.png" alt class="image--center mx-auto" /></p>
</li>
<li><p>Verify internet:</p>
<pre><code class="lang-plaintext"> ping google.com -c 3
</code></pre>
</li>
</ol>
<h2 id="heading-step-7-install-updates">Step 7: Install updates</h2>
<pre><code class="lang-plaintext">sudo apt update &amp;&amp; sudo apt upgrade -y
</code></pre>
<p>This ensures your server is secure and up to date.</p>
<h2 id="heading-troubleshooting-tips">Troubleshooting Tips</h2>
<ul>
<li><p><strong>No 64-bit option in VirtualBox:</strong> Enable virtualization (VT-x/AMD-V) in BIOS.</p>
</li>
<li><p><strong>Installer stuck on network:</strong> Switch VM adapter to NAT or Bridged.</p>
</li>
<li><p><strong>No boot after install:</strong> Ensure hard disk is set as the first boot device.</p>
</li>
</ul>
<h2 id="heading-wrapping-up">✅ Wrapping Up</h2>
<p>In this tutorial, we set up the Ubuntu Server installation on VirtualBox. With this setup, you can now experiment with different OS versions and modes, just like in real-world environments.</p>
<hr />
<h2 id="heading-whats-next">🔗 What’s Next?</h2>
<p>Now that your VM can be accessed via SSH, the next step is to explore <strong>Ubuntu Server management and security hardening</strong>.</p>
<p>👉 Continue to the next tutorial:</p>
<p><a target="_blank" href="https://it-forge.yerravalliitsimplified.com/how-to-configure-ssh-and-networking-in-ubuntu-server-on-virtualbox">How to Configure SSH and Networking in Ubuntu Server on VirtualBox</a></p>
<hr />
<h3 id="heading-call-to-action">🔔 Call-to-Action</h3>
<p>💬 Share your questions in the comments.</p>
<p>👍 If you found this useful, follow me here on <a target="_blank" href="https://it-forge.yerravalliitsimplified.com/"><strong>Blog</strong></a>.</p>
<p>🎥 Don’t forget to watch the full tutorial on my YouTube channel:</p>
<p><a target="_blank" href="https://youtu.be/KG_hz5nilBU">How to Install Ubuntu Server on VirtualBox</a></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/KG_hz5nilBU?si=yuE3nNXBcYyhHFE9"></iframe>

<h2 id="heading-about-the-author">👨‍💻 About the Author</h2>
<p>I’m <strong>Rajesh Kumar</strong>, the creator of <strong>Yerravalli IT Simplified</strong>.</p>
<p>With over 20 <strong>years of experience in IT</strong>—covering Linux, Windows, Networking, Servers, Cloud, and Cybersecurity—I’m passionate about breaking down complex technical topics into simple, hands-on tutorials.</p>
<p>📺 Watch tutorials on YouTube: <a target="_blank" href="https://www.youtube.com/@YerravalliITSimplified">Yerravalli IT Simplified</a></p>
<hr />
<h2 id="heading-ubuntu-server-on-virtualbox-series">📚 Ubuntu Server on VirtualBox Series</h2>
<p>1️⃣ <a target="_blank" href="https://it-forge.yerravalliitsimplified.com/how-to-install-ubuntu-server-on-virtualbox">How to Install Ubuntu Server on VirtualBox</a></p>
<p>2️⃣ <a target="_blank" href="https://it-forge.yerravalliitsimplified.com/how-to-configure-ssh-and-networking-in-ubuntu-server-on-virtualbox">How to Configure SSH and Networking in Ubuntu Server on VirtualBox</a></p>
<p>3️⃣ <strong>SSH Brute Force: Ubuntu Server Management and Security Hardening</strong></p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/EooJ87GRWFs?si=0YdTjSFoD2d-R_jt"></iframe>

<p>Stay tuned — new parts will be added here as the series continues! 🚀</p>
]]></content:encoded></item></channel></rss>