SSD Nodes Learn
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-07-25

Ubuntu 24.04 లో Fail2ban install చేయడం SSH bots ఆపడం

Ubuntu 24.04 లో apt install ఒక్కటే చేస్తే SSH brute force ఆపుతుంది. fail2ban-client status sshd output తో నిరూపణ, Total failed 0 గా ఉంటే పరిష్కారం కూడా ఉంది.

Fail2ban వాస్తవానికి ఏమి చేస్తుంది

Fail2ban అనేది లాగ్‌లను చదివే డెమోన్. ఇది మీ SSH ప్రామాణీకరణ సందేశాలను పరిశీలిస్తుంది. ఒక చిన్న విండోలో ఒకే చిరునామా నుండి కొన్ని వైఫల్యాలు రావడంతో, ఇది ఒక ఫైర్‌వాల్ కమాండ్‌ను అమలు చేస్తుంది. ఆ కమాండ్ ఆ చిరునామాను కొంతసేపటికి నిరోధిస్తుంది. ఇది మొత్తం ఆలోచన. ఇది ఒక ఫైల్‌లో దాదాపు ముప్పై లైన్ల కాన్ఫిగరేషన్. Ubuntu 24.04లో ఇన్‌స్టాలేషన్ ఒకే ఒక apt కమాండ్. మీరు ఏదీ సవరించే లోపలే ఇది మిమ్మల్ని రక్షిస్తుంది.

ఇది ఏమి చేస్తుందో, ఏమి చేయదో స్పష్టంగా తెలుసుకోండి. Fail2ban ఎవరినీ ప్రామాణీకరించదు. ఏదీ ఎన్‌క్రిప్ట్ చేయదు. ఒకే మూలం నుండి వచ్చే పునరావృత ప్రయత్నాలను మాత్రమే ఆపుతుంది, ఒక నిర్దిష్ట లాగిన్ ప్రయత్నాన్ని కాదు. ఇది ఒక నాయిస్ ఫిల్టర్, రేట్ లిమిటర్, లాక్ కాదు. దీని పని port 22 యొక్క నిరంతర బ్యాక్‌గ్రౌండ్ స్కానింగ్ మీ CPU, మీ బ్యాండ్‌విడ్త్, మీ లాగ్ స్పేస్‌ను వృథా చేయకుండా ఆపడం. ఒకే సమయంలో ఒక చిరునామా నుండి రావలసిన దాడి చేసేవారిని నెమ్మదిస్తుంది.

Fail2ban దేనికి ప్రత్యామ్నాయం కాదు

Fail2ban మూడవ పొర, మొదటిది కాదు. మీ సర్వర్ ఇప్పటికీ SSH పాస్‌వర్డ్‌లను అంగీకరిస్తే, వేలాది చిరునామాల్లో విస్తరించిన బాట్‌నెట్ అంచనా వేస్తూనే ఉంటుంది. దీనికి కారణం ప్రతి చిరునామా మీ నిషేధపు పరిమితి కంటే తక్కువగా ఉండటం, కాబట్టి అది ఆ పరిమితిని దాటదు. దానికి నిజమైన రక్షణ కీ-ఆధారిత ప్రామాణీకరణ. ఇది ఎంత ప్రయత్నాలు చేసినా పాస్‌వర్డ్ అంచనాను అసాధ్యం చేస్తుంది. కీ-ఆధారిత ప్రామాణీకరణపై Fail2ban రెండు ఉపయోగకరమైన పనులు చేస్తుంది. అవి: మీ లాగ్‌ల నుండి బ్రూట్-ఫోర్స్ రద్దీని తొలగిస్తుంది, స్కానర్‌లను ముందుగానే బయటకు పంపుతుంది తద్వారా అవి పోర్ట్‌ను నిరంతరం హమ్మర్ చేయడం ఆగిపోతుంది. దీన్ని లోతైన రక్షణగా పరిగణించండి. ఇది కీ ప్రామాణీకరణకు, ఫైర్‌వాల్‌కు వెనుక ఉంటుంది, ఎప్పుడూ ముందు ఉండదు.

ముందస్తు అవసరాలు, మరియు Ubuntu 24.04 వాస్తవికత

మీకు root లేదా sudo తో నడుస్తున్న Ubuntu 24.04 VPS కావాలి, మరియు SSH ఇప్పటికే పనిచేస్తూ ఉండాలి — సరైనది కీ ప్రామాణీకరణ. Fail2ban తక్కువ వనరులను వినియోగిస్తుంది: కొన్ని పదుల మెగాబైట్ల RAM, పరిమితులను సవరించాల్సిన అవసరం లేదు.

ఇప్పుడు ప్రతి పాత గైడ్ తప్పుగా చెబుతున్న భాగం. సంవత్సరాలుగా ప్రామాణిక సలహా "Fail2ban ని ఇన్‌స్టాల్ చేయండి, తర్వాత backend = systemd ని జోడించండి, ఎందుకంటే Ubuntu /var/log/auth.log ని రాయడం ఆపివేసింది." ఆ సలహా ఒక నిజమైన మార్పును వివరిస్తుంది — ఆధునిక సర్వర్ మరియు క్లౌడ్ ఇమేజ్‌లు rsyslog లేకుండా వస్తాయి, కాబట్టి SSH లాగ్‌లు కేవలం systemd జర్నల్‌కే వెళ్తాయి మరియు ఆ టెక్స్ట్ ఫైల్ పోయింది — కానీ Ubuntu 24.04 లో Fail2ban ప్యాకేజీ దానిని ఇప్పటికే పరిగణనలోకి తీసుకుంటుంది. ఈ ప్యాకేజీ /etc/fail2ban/jail.d/defaults-debian.conf ని జోడిస్తుంది, మరియు అప్‌స్ట్రీమ్ డిఫాల్ట్‌లు కాకుండా, ఆ ఫైల్ మీ సర్వర్ నిజంగా నడుపుతుంది:

[DEFAULT]
banaction = nftables
banaction_allports = nftables[type=allports]
backend = systemd

[sshd]
enabled = true

దాన్ని జాగ్రత్తగా చదవండి, ఎందుకంటే మీరు ఏదైనా మార్చడానికి ముందు అది రెండు ప్రశ్నలను పరిష్కరిస్తుంది. backend = systemd అంటే SSH జెయిల్ జర్నల్‌ను చదువుతుంది, కాబట్టి లేని auth.log పట్టింపు లేదు. banaction = nftables అంటే నిషేధాలు nftables ద్వారా అమలు చేయబడతాయి, అది Ubuntu 24.04 నిజంగా ఉపయోగించే ఫైర్‌వాల్, పాత iptables కాదు. మరియు [sshd] enabled = true అంటే జెయిల్ మొదటి బూట్ నుండే చేతనంగా ఉంటుంది. ఫలితం: Ubuntu 24.04 లో స్టాక్ apt install fail2ban బాక్స్ నుండి SSH బ్రూట్-ఫోర్స్‌ను నిషేధిస్తుంది. మీ పనిలో ఎక్కువ భాగం దాన్ని నిర్ధారించడం, విధానాన్ని సవరించడం, మరియు మీరు బయటకు లాక్ అవ్వకుండా చూసుకోవడం.

పాత auth.log ఉచ్చు ఇప్పటికీ మూడు పరిస్థితుల్లో కాటు వేస్తుంది, మరియు వాటిని గుర్తించడం విలువైనది: మీరు Fail2ban ని pip తో apt కు బదులుగా ఇన్‌స్టాల్ చేశారు, కాబట్టి defaults-debian.conf లేదు; మీరు చదవడానికి systemd జర్నల్ లేని అన్‌ప్రివిలేజ్డ్ కంటైనర్ లోపల ఉన్నారు; లేదా మీరు ఒక పాత ట్యుటోరియల్ ను అనుసరించి backend = auto ను మీ స్వంత jail.local లోకి అతికించారు, పని చేసే డిఫాల్ట్‌ను భర్తీ చేశారు. వైఫల్య-రీతుల విభాగం ప్రతి ఒక్కటి ఎలా కనిపిస్తుందో ఖచ్చితంగా చూపిస్తుంది.

దశ 1: ఇన్‌స్టాల్ చేయండి మరియు ఇది ఇప్పటికే నిరోధిస్తోందని నిర్ధారించుకోండి

sudo apt update
sudo apt install -y fail2ban

Ubuntu 24.04 లో Fail2ban 1.0.2 అందించబడుతుంది. ఈ ప్యాకేజీ python3-systemd ను తప్పనిసరి డిపెండెన్సీగా లాగి తీసుకుంటుంది. కాబట్టి journal బ్యాకెండ్‌కు అవసరమైనవన్నీ ఉన్నాయి. ఈ సర్వీసు స్వయంచాలకంగా ప్రారంభమవుతుంది:

sudo systemctl status fail2ban

మీకు active (running) కావాలి. తర్వాత ఇప్పటికే పని చేస్తున్న జైల్‌ను చూడండి:

sudo fail2ban-client status sshd

కొన్ని నిమిషాల పాటు అందుబాటులో ఉన్న పబ్లిక్ VPS లో, విఫల ప్రయత్నాల సంఖ్య మరియు నిరోధించబడిన చిరునామాలు మీరు తరచుగా చూస్తారు. అంతర్జాలం పోర్ట్ 22 ను నిరంతరం స్కాన్ చేస్తుంది. ఇది స్టాక్ కాన్ఫిగరేషన్ పనిచేస్తుందని రుజువు. ఇక్కడ నుండి మీరు దాన్ని మెరుగుపరుస్తున్నారు, మొదటి నుండి నిర్మించడం కాదు.

దశ 2: jail.local సవరించండి, jail.conf కాదు

Fail2ban దాని అప్‌స్ట్రీమ్ డిఫాల్ట్‌లను /etc/fail2ban/jail.conf లో ఉంచుతుంది. ఆ ఫైల్‌ను సవరించవద్దు. ప్యాకేజీ యొక్క ప్రతి apt upgrade దానిని భర్తీ చేయగలదు, మరియు మీ మార్పులు ఎలాంటి హెచ్చరిక లేకుండా పోతాయి. Fail2ban ఫైల్‌లను ఒక నిర్దిష్ట క్రమంలో చదువుతుంది — ముందుగా jail.conf, తర్వాత jail.d/ లోని ప్రతిదీ, ఆపై jail.local — మరియు చివరి విలువ అమలులోకి వస్తుంది. .local ఫైల్ మీదే, మరియు ప్యాకేజీ అప్‌గ్రేడ్‌లు దానిని ఎప్పటికీ మార్చవు. ఫిల్టర్‌లకు కూడా ఇదే నియమం వర్తిస్తుంది, అక్కడ *.local ఫైల్ పంపిణీ చేయబడిన filter.d/*.conf ను భర్తీ చేస్తుంది.

కాబట్టి మీరు ఒక చిన్న jail.local ను వ్రాయండి, అది మీకు అవసరమైన కొన్ని సెట్టింగ్‌లను మాత్రమే భర్తీ చేస్తుంది, మరియు సూచన కోసం jail.conf మరియు ప్యాకేజీ చేసిన jail.d/defaults-debian.conf రెండింటినీ మార్చకుండా వదిలేయండి.

దశ 3: /etc/fail2ban/jail.local రాయండి

sudo nano /etc/fail2ban/jail.local

దీన్ని చేర్చండి, ignoreip వరుసలోని చిరునామాను మీ స్వంత పబ్లిక్ IPకి మార్చండి:

[DEFAULT]
# Ubuntu 24.04 already sets these two in jail.d/defaults-debian.conf.
# Pinning them here documents the dependency and survives if that
# file is ever removed or changed by an upgrade.
backend   = systemd
banaction = nftables

# Ban for one hour ...
bantime  = 1h
# ... if an address fails ...
maxretry = 5
# ... 5 times within 10 minutes.
findtime = 10m

# Never ban these. PUT YOUR OWN IP HERE.
ignoreip = 127.0.0.1/8 ::1 10.0.0.24

# Longer bans for repeat offenders: 1h, 2h, 4h ... up to a week.
bantime.increment = true
bantime.maxtime   = 1w

[sshd]
enabled = true

ప్రతి వరుసకు దాని స్థానం ఉంది:

  • bantime, findtime, maxretry విధానం. అందించిన డిఫాల్ట్ bantime కేవలం పది నిమిషాలు; గంట సహేతుకమైన కనిష్ట స్థాయి. పది నిమిషాల లోపల ఒకే చిరునామా నుండి ఐదు వైఫల్యాలు నిషేధానికి కారణమవుతాయి. నిజమైన వినియోగదారులు పాస్‌వర్డ్‌ను ఒకసారి లేదా రెండుసార్లు తప్పుగా టైప్ చేస్తారు; పది నిమిషాల్లో ఐదు వైఫల్యాలు అనేది ఒక స్క్రిప్ట్.
  • ignoreip మీ భద్రతా పట్టీ. మీరు ఎక్కడ నుండి కనెక్ట్ అవుతున్నారో ఆ పబ్లిక్ చిరునామాను ఇక్కడ పెట్టండి, తద్వారా Fail2ban మీ స్వంత సర్వర్‌లో మిమ్మల్ని ఎప్పటికీ లాక్ చేయదు. మారుతూ ఉండే IPతో హోమ్ కనెక్షన్ అనేది చివరలో ఉన్న VPN పద్ధతిని ఎంచుకోవడానికి కారణం, ఈ వరుసను దాటవేయడానికి కాదు.
  • bantime.increment = true ప్రతి పునరావృత నిషేధాన్ని మునుపటి కంటే ఎక్కువసేపు చేస్తుంది — ఒక గంట, తర్వాత రెండు, తర్వాత నాలుగు — bantime.maxtime వరకు. మళ్లీ మళ్లీ వచ్చే చిరునామాలు క్రమంగా నిషేధించబడతాయి.

మీరు SSH ఎక్కడ నుండి కనెక్ట్ అవుతున్నారో ఆ యంత్రం నుండి, సర్వర్ నుండి కాకుండా, వైట్‌లిస్ట్ చేయడానికి చిరునామాను కనుగొనండి:

curl -s ifconfig.me

మీ పోర్టులు మరియు నిషేధ విధానానికి అనుగుణంగా మార్చిన jail.local ను మీరు ఇక్కడ సృష్టించవచ్చు, తర్వాత దాన్ని ఫైల్‌లోకి అతికించండి:

ToolFail2ban jail generator

దశ 4: పునఃప్రారంభించండి మరియు జర్నల్‌ను చదువుతోందో లేదో ధృవీకరించండి

sudo fail2ban-client -t
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

-t ముందుగా ఆకృతీకరణ పరీక్షను నడుపుతుంది. కాబట్టి jail.local లో ఉన్న టైపో సర్వీస్‌ను ఆగిపోయేలా చేయకుండా ఇక్కడే స్పష్టంగా విఫలమవుతుంది. సరైన జైల్ స్థితి ఇలా ఉంటుంది:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     14
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 1
   |- Total banned:     3
   `- Banned IP list:   10.0.0.66

Fail2ban మీ లాగిన్‌లను నిజంగా చదువుతోందని నిరూపించే సంఖ్య Total failed. అది సున్నాకంటే ఎక్కువగా ఉంటే, లేదా మీరు మరొక మెషీన్ నుండి ఉద్దేశపూర్వకంగా లాగిన్ విఫలం చేసినప్పుడు పెరిగితే, జర్నల్ చదవబడుతోంది మరియు మీ పని పూర్తయింది. మీరు ఎన్నిసార్లు విఫలం చేసినా అది 0 వద్దే ఉంటే — మరియు మీరు ignoreip లో ఉన్న చిరునామా నుండి పరీక్షించడం లేదని మీకు ఖచ్చితంగా తెలిస్తే — దిగువ ఉన్న వైఫల్య రకాలకు వెళ్లండి.

Journal matches లైన్ ఇప్పటికీ sshd.service పేరును పేర్కొంటుంది గమనించండి. Ubuntu లో SSH యూనిట్ నిజానికి ssh.service, అయితే అందించిన ఫిల్టర్ _COMM=sshd తో కూడా సరిపోలుతుంది, మరియు 24.04 లో OpenSSH దాని వైఫల్యాలను sshd పేరున్న ప్రాసెస్ నుండి లాగ్ చేస్తుంది, కాబట్టి సరిపోలిక పనిచేస్తుంది. మీరు కొత్త OpenSSH (9.8 లేదా అంతకంటే తరువాత, అక్కడ ప్రతి-కనెక్షన్ వర్కర్ sshd-session) లో ఉంటే మాత్రమే ఆ వివరం ముఖ్యమవుతుంది; వైఫల్య రకాలు ఆ కేసును కవర్ చేస్తాయి.

దశ 5: ఒక నిజమైన నిషేధం అమలవడాన్ని చూడండి, లేదా పరీక్ష కోసం ఒకదాన్ని బలవంతంగా వర్తింపజేయండి

ఏదైనా పబ్లిక్ VPSలో నిజమైన నిషేధాలు కొన్ని నిమిషాల్లో స్వయంగా వస్తాయి. ఒకటి చూడటానికి, లాగ్‌ను టెయిల్ చేయండి:

sudo tail -f /var/log/fail2ban.log

ఒక నిషేధం ఇలా కనిపిస్తుంది:

2026-07-15 10:31:40,502 fail2ban.filter  [812]: INFO    [sshd] Found 10.0.0.66 - 2026-07-15 10:31:40
2026-07-15 10:31:44,118 fail2ban.actions [812]: NOTICE  [sshd] Ban 10.0.0.66

వేచి ఉండకుండా యంత్రాంగాన్ని మొత్తంగా నిరూపించడానికి, ఒక డాక్యుమెంటేషన్ చిరునామాను మీరే స్వయంగా నిషేధించండి — మీ స్వంత చిరునామాను ఎప్పుడూ కాదు:

sudo fail2ban-client set sshd banip 10.0.0.66

అది 1 అని ప్రింట్ చేస్తుంది, మరియు ఆ చిరునామా fail2ban-client status sshdలో Banned IP list కింద కనిపిస్తుంది. ఇప్పుడు ఆ బ్లాక్ నిజంగా ఫైర్‌వాల్‌లో ఉందో లేదో నిర్ధారించుకోండి. Ubuntu 24.04లో అది nftables, iptables కాదు:

sudo nft list table inet f2b-table

మీరు addr-set-sshd పేరుగల ఒక సెట్‌ను 10.0.0.66 కలిగి ఉండటాన్ని చూస్తారు, మరియు ఆ సెట్‌లో ఉన్న ఏ సోర్స్‌నైనా తిరస్కరించే ఒక చైన్ f2b-chain కనిపిస్తుంది. fail2ban-client ఒక చిరునామా నిషేధించబడిందని చెబితే nft listలో ఏమీ కనిపించకపోతే, మీ నిషేధ చర్య మీ ఫైర్‌వాల్‌తో సరిపోలడం లేదు — వైఫల్య రీతులలోని nftables/iptables గమనికను చూడండి.

దశ 6: మిమ్మల్ని మీరు నిషేధం నుండి తప్పించుకోండి, మరియు లాక్ అయితే పునరుద్ధరించండి

మీరు నిషేధించకూడని చిరునామాను — మీ స్వంత చిరునామాను — నిషేధిస్తే, దాన్ని తొలగించండి:

sudo fail2ban-client set sshd unbanip 10.0.0.66

విజయవంతమైతే అది 1 అని తిరిగి ఇస్తుంది. ప్రతి జైలులోని ప్రతి నిషేధాన్ని తొలగించడానికి:

sudo fail2ban-client unban --all

మిమ్మల్ని రక్షించడానికి ఇప్పటికే తెరిచిన SSH సెషన్‌పై ఆధారపడకండి: nftables నిషేధం నిషేధిత చిరునామా నుండి పోర్ట్ 22కి వచ్చే ప్రతి ప్యాకెట్‌ను తిరస్కరిస్తుంది — స్థాపిత కనెక్షన్‌లు కూడా కలిపి — కాబట్టి నిషేధం విధించగానే ఉన్న సెషన్ గడ్డకట్టిపోతుంది. మీరు మిమ్మల్ని మీరు నిషేధించుకుని, మీ వద్ద ignoreip ఎంట్రీ లేకపోతే, నిషేధం గడువు ముగిసే వరకు మీరు లాక్ అవుతారు — మీ ప్రొవైడర్ వెబ్ కన్సోల్ (VNC లేదా serial) ద్వారా పునరుద్ధరించండి, అది SSH ద్వారా వెళ్లదు, మరియు ఒకవేళ bantime గడువు గడిచే వరకు వేచి ఉండండి లేదా అక్కడ నిషేధం తొలగింపు ఆదేశాన్ని అమలు చేయండి.

దశ 7: నిషేధాలను శాశ్వతం చేయడం మరియు తీవ్రతను పెంచడం

Fail2ban క్రియాశీల నిషేధాలను /var/lib/fail2ban/fail2ban.sqlite3 వద్ద ఒక చిన్న SQLite డేటాబేస్‌లో నిల్వ చేస్తుంది. కాబట్టి అవి సర్వీస్ రీస్టార్ట్ లేదా రీబూట్ తర్వాత కూడా ఉంటాయి. మీరు వాటిని కోల్పోరు. మీరు ఇప్పటికే జోడించిన bantime.increment లైన్లు ప్రతి పునరావృత దోషిని వారికి తీవ్రమైన సమస్యగా మారుస్తాయి — ఒక గంట నుండి ఒక వారం వరకు దాదాపు రెట్టింపు అవుతుంది.

దానిపై సిస్టమ్-వ్యాప్త "మూడు ప్రయత్నాల" విధానం కోసం, Fail2ban ఒక recidive జైల్‌ను అందిస్తుంది. అది దాని స్వంత /var/log/fail2ban.log ను పరిశీలిస్తుంది. అన్ని జైళ్లలో పునరావృతంగా నిషేధించబడిన ఏ చిరునామాకైనా సుదీర్ఘ నిషేధాలను అందిస్తుంది. మీ [DEFAULT] ఇప్పుడు systemd బ్యాకెండ్‌ను ఉపయోగిస్తున్నందున, ఈ జైల్‌ను అది చదవడానికి రూపొందించబడిన లాగ్ ఫైల్‌కు అనుసంధానించండి:

[recidive]
enabled  = true
backend  = auto
logpath  = /var/log/fail2ban.log
bantime  = 1w
findtime = 1d
maxretry = 5

స్పష్టమైన logpath తో backend = auto, recidive సాదా fail2ban.log ను చదవడం కొనసాగిస్తుంది. అది లెక్కించే Ban లైన్లు వాస్తవానికి అక్కడే కనిపిస్తాయి — మీరు గ్లోబల్‌గా సెట్ చేసిన systemd డిఫాల్ట్ దాన్ని జర్నల్‌కు సూచిస్తుంది, అక్కడ అవి ఉండవు.

దశ 8: దీన్ని కీ-ఆధారిత SSHతో జతపరచండి, మరియు మరింత మెరుగైనది ఒక VPN

Fail2ban కీ ప్రామాణీకరణతో పాటు మాత్రమే పనిచేస్తుంది. /etc/ssh/sshd_config.d/ కింద ఒక డ్రాప్-ఇన్ ఫైలులో — ఉదాహరణకు /etc/ssh/sshd_config.d/00-hardening.conf — ఇలా సెట్ చేయండి:

PasswordAuthentication no
KbdInteractiveAuthentication no

తర్వాత sudo systemctl restart ssh. పాస్‌వర్డ్‌లు ఆఫ్ చేయబడితే, బ్రూట్ ఫోర్స్ విధానం ఎప్పుడూ విజయవంతం కాదు; అప్పుడు Fail2ban లాగ్ రద్దీని తగ్గించడానికి మరియు స్కానర్‌లను ముందుగానే బహిష్కరించడానికి ఉపయోగపడుతుంది. మరింత బలమైన పద్ధతి SSHని పబ్లిక్ ఇంటర్నెట్ నుండి పూర్తిగా దూరంగా ఉంచడం: SSHని స్వయం-హోస్ట్ చేసిన WireGuard VPN వెనుక ఉంచండి మరియు పోర్ట్ 22ని ఫైర్‌వాల్ చేయండి తద్వారా అది టనెల్‌పై మాత్రమే స్పందిస్తుంది. చేరుకోలేని పోర్ట్‌ని ఎవరూ బ్రూట్-ఫోర్స్ చేయలేరు, మరియు Fail2ban ముందు వరుస కాకుండా వెనుక భద్రతగా మారుతుంది.

Fail2ban కేవలం SSH కోసం మాత్రమే కాదు. విఫలమైన లాగిన్‌లను లాగ్ చేసే ఏ సేవకైనా ఒక జైల్ లభిస్తుంది — ఒక మెయిల్ సర్వర్, ఒక nginx సైట్, లేదా మీరు క్రెడెన్షియల్ స్టఫింగ్‌కు తెరచి ఉంచాలనుకోని స్వయం-హోస్ట్ చేసిన Vaultwarden పాస్‌వర్డ్ మేనేజర్. ఒక వెబ్ యాప్ Let's Encrypt సర్టిఫికేట్‌తో కూడిన nginx సైట్ వెనుక ఉన్నప్పుడు, SSH జైల్ జర్నల్‌ను సూచించిన అదే విధంగా దాని యాక్సెస్ లాగ్ వైపు ఒక Fail2ban ఫిల్టర్‌ను సూచించండి.

వైఫల్య రకాలు, మీరు చూసే సరైన స్ట్రింగ్‌లతో

"Have not found any log file for sshd jail", మరియు Fail2ban ప్రారంభం కాదు. ఇది పాత auth.log సమస్య. Ubuntu 24.04లో ప్యాకేజీ చేసిన డిఫాల్ట్‌ను ఏదైనా భర్తీ చేస్తే మాత్రమే మీరు దీన్ని ఎదుర్కొంటారు — defaults-debian.conf లేని pip ఇన్‌స్టాల్, జర్నల్ లేని కంటైనర్, లేదా మీరు jail.localలో పేస్ట్ చేసిన చెత్త backend = auto. /var/log/auth.log లేని ఫైల్ బ్యాకెండ్‌పై, sshd జైల్ దాని లాగ్‌ను కనుగొనలేకపోతుంది మరియు మొత్తం డెమాన్ నిలిచిపోతుంది. fail2ban.log చూపిస్తుంది:

ERROR   Failed during configuration: Have not found any log file for sshd jail

ఆ ఎర్రర్ ప్రాణాంతకం కాబట్టి, సర్వీస్ ఎప్పటికీ ప్రారంభం కాదు, మరియు fail2ban-client status అప్పుడు దిగువ లక్షణాన్ని నివేదిస్తుంది:

ERROR  Failed to access socket path: /var/run/fail2ban/fail2ban.sock. Is fail2ban running?

ఆ "socket path" లైన్ అంటే Fail2ban పాడైందని కాదు — ఒక జైల్ దాని లాగ్‌ను కనుగొనలేకపోవడం వల్ల అది ఎప్పటికీ ప్రారంభం కాలేదని అర్థం. [DEFAULT]లో backend = systemdను సెట్ చేయడం, దీన్ని Ubuntu ప్యాకేజీ ఇప్పటికే మీ కోసం చేస్తుంది, రెండు సందేశాలను ఒకేసారి పరిష్కరిస్తుంది.

జైల్ క్రియాశీలంగా ఉంది కానీ Total failed కదలదు. డెమాన్ నడుస్తోంది మరియు జర్నల్ చదవబడుతోంది, అయినప్పటికీ నిజమైన వైఫల్యాలు journalctl -u sshలో పేరుకుపోతున్నాయి, కౌంటర్ మాత్రం 0 వద్ద నిలిచిపోతోంది. ముందుగా స్పష్టమైనదాన్ని తళ్లిపారేయండి: మీరు ignoreipలో జాబితా చేయబడిన చిరునామా నుండి పరీక్షిస్తున్నారు, కాబట్టి మీ స్వంత వైఫల్యాలు రూపకల్పన ప్రకారం మినహాయించబడ్డాయి. అది కాకపోతే, మీరు ఒక OpenSSH బిల్డ్‌లో ఉన్నారు, అక్కడ ప్రతి-కనెక్షన్ వర్కర్ sshd-session (9.8 మరియు తరువాత), దాని జర్నల్ _COMM sshd-session, sshd కాదు, కాబట్టి పంపిన మ్యాచ్ దాన్ని కోల్పోతుంది. [sshd] బ్లాక్‌లో మ్యాచ్‌ను విస్తృతపరచండి:

[sshd]
enabled      = true
backend      = systemd
journalmatch = _SYSTEMD_UNIT=ssh.service + _COMM=sshd + _COMM=sshd-session

రీస్టార్ట్ చేయండి, ignoreipలో లేని చిరునామా నుండి ఉద్దేశపూర్వకంగా ఒక లాగిన్‌ను విఫలం చేయండి, మరియు Total failed చివరకు పెరుగుతుందో నిర్ధారించుకోండి.

మీరు మిమ్మల్ని మీరు నిషేధించుకున్నారు: Connection refused. మీ స్వంత చిరునామాను ignoreipలో చేర్చడం మర్చిపోయారు, కొన్ని చెత్త లాగిన్‌లను పరీక్షించారు, మరియు ఇప్పుడు:

ssh: connect to host 10.0.0.10 port 22: Connection refused

నిశ్శబ్ద టైమౌట్ కాకుండా తిరస్కారం, అనేది nftables యాక్షన్ యొక్క డిఫాల్ట్ reject తీర్పు దాని పనిని చేస్తున్నట్లు — మీపై. దశ 6లో చూపినట్లు దాన్ని పరిష్కరించండి: వేరే, నిషేధించబడని చిరునామాలోని సెషన్ నుండి, లేదా ప్రొవైడర్ కన్సోల్ నుండి నిషేధాన్ని తొలగించండి — నిషేధించబడిన చిరునామా నుండి ఇప్పటికే తెరిచిన సెషన్ కూడా స్తంభిస్తుంది. అప్పుడు అది మళ్లీ జరగకుండా ఉండటానికి మీ చిరునామాను ignoreipకి జోడించండి.

Fail2ban ఒక చిరునామా నిషేధించబడిందని చెబుతుంది, కానీ అది ఇప్పటికీ కనెక్ట్ అవ్వగలదు. status sshdలో కౌంటర్ పెరుగుతుంది, అయినప్పటికీ ఆ చిరునామా ఇప్పటికీ పోర్ట్ 22ను చేరుకుంటుంది. ఇది నిషేధ-యాక్షన్‌కు-ఫైర్‌వాల్‌కు మధ్య అసమానత, మరియు Ubuntu 24.04లో దీని అర్థం దాదాపు ఎల్లప్పుడూ మీరు పని చేసే banaction = nftablesను పాత గైడ్ నుండి కాపీ చేసిన banaction = iptables-multiportతో భర్తీ చేశారని, iptables లేయర్ లేని బాక్స్‌పై. fail2ban.log చూపిస్తుంది:

fail2ban.actions [812]: ERROR  Failed to execute ban jail 'sshd' action 'iptables-multiport'

ఆ భర్తీని తొలగించండి మరియు ప్యాకేజీ చేసిన nftables యాక్షన్‌ను ఉండనివ్వండి, లేదా, మీరు ఫైర్‌వాల్‌ను పూర్తిగా ufw ద్వారా నిర్వహించాలనుకుంటే మరియు నిషేధాలు అక్కడ కనిపించాలనుకుంటే, [DEFAULT]లో banaction = ufwను సెట్ చేయండి. రీస్టార్ట్ చేయండి మరియు నియమం sudo nft list ruleset | grep f2bతో కనిపిస్తుందో నిర్ధారించుకోండి.

jail.localను సవరించిన తర్వాత Fail2ban ప్రారంభం కాదు. ఒక టైపో — ఒక చెత్త హెడింగ్ లేదా చెత్త సమయ విలువ — సర్వీస్‌ను ప్రారంభం కాకుండా నిరాకరిస్తుంది. అమలు కాకముందే కాన్ఫిగ్‌ను తనిఖీ చేయమని Fail2banను అడగండి:

sudo fail2ban-client -t

ఇది సమస్యతో ఉన్న ఫైల్ మరియు జైల్‌ను పేర్కొంటుంది, ఉదాహరణకు Errors in jail 'sshd'. Skipping..., కాబట్టి ఊహించకుండా మీరు మూలాధారాన్ని పరిష్కరిస్తారు.

FAQ

Ubuntu 24.04 పై స్టాక్ Fail2ban ఇన్‌స్టాలేషన్ నిజంగా SSH దాడులను నిరోధిస్తుందా?

అవును. ఈ ప్యాకేజీ /etc/fail2ban/jail.d/defaults-debian.conf ను అందిస్తుంది. ఇది sshd జైల్‌ను ప్రారంభిస్తుంది. లేని /var/log/auth.log కు బదులుగా systemd జర్నల్‌ను చదవడానికి backend = systemd ను అమర్చుతుంది. నిరోధాలు Ubuntu వాస్తవ ఫైర్‌వాల్ ద్వారా అమలవుతాయి కాబట్టి banaction = nftables ను అమర్చుతుంది. సాధారణ apt install fail2ban మొదటి బూట్ నుండే SSH ను రక్షిస్తుంది. sudo fail2ban-client status sshd తో దాన్ని ధృవీకరించండి. సున్నా కాని Total failed కోసం చూడండి.

నా సిస్టమ్‌లో Fail2ban ఏదీ నిరోధించడం లేదు, ఎందుకు?

మూడు సాధారణ కారణాలను వరుసగా పరిశీలించండి. మీరు ignoreip లోని చిరునామా నుండి పరీక్షిస్తున్నారు కావచ్చు, ఇది రూపొందించిన ప్రకారం మినహాయింపు. పాత గైడ్ నుండి backend = auto ను jail.local లోకి అతికించడం ద్వారా పని చేసే డిఫాల్ట్‌ను మీరు భర్తీ చేసి ఉండవచ్చు. auth.log లేని ఇమేజ్‌లో ఇది జర్నల్ చదవడాన్ని విరమిస్తుంది. లేదా చదవడానికి systemd జర్నల్ లేని కంటైనర్ లోపల మీరు ఉండవచ్చు. fail2ban-client status sshd లో Total failed ను తనిఖీ చేయండి: journalctl -u ssh నిజమైన వైఫల్యాలను చూపినప్పుడు అది పెరగకపోతే, జైల్ తప్పు ప్రదేశాన్ని చదువుతోంది.

నా IP చిరునామాను నిరోధాన్ని ఎలా తొలగించగలను?

sudo fail2ban-client set sshd unbanip YOUR.IP.HERE ను అమలు చేయండి, ఇది విజయవంతమైతే 1 ను అందిస్తుంది. లేదా ప్రతి నిరోధాన్ని తొలగించడానికి sudo fail2ban-client unban --all ను ఉపయోగించండి. మీరు SSH నుండి లాక్ అయితే, అదే కమాండ్‌ను అమలు చేయడానికి మీ ప్రొవైడర్ యొక్క వెబ్ లేదా VNC కన్సోల్‌ను ఉపయోగించండి — ఈ నిరోధం పోర్ట్ 22 కు మీ చిరునామా నుండి ప్రతి ప్యాకెట్‌ను తిరస్కరిస్తుంది, కాబట్టి ఇప్పటికే తెరిచిన సెషన్ కూడా పని చేయడం మానేస్తుంది. అప్పుడు అది మళ్లీ జరగకుండా ఉండటానికి మీ చిరునామాను ignoreip కు జోడించండి.

jail.conf మరియు jail.local మధ్య తేడా ఏమిటి?

jail.conf Fail2ban యొక్క అప్‌స్ట్రీమ్ డిఫాల్ట్‌లను కలిగి ఉంటుంది. ప్రతి ప్యాకేజీ అప్‌గ్రేడ్‌పై ఇది ఓవర్‌రైట్ అవుతుంది, కాబట్టి అక్కడ చేసిన ఎడిట్ చివరికి పోతుంది. Debian/Ubuntu ప్యాకేజీ దాని స్వంత సెట్టింగులను jail.d/defaults-debian.conf ద్వారా పైన పొరలుగా అమర్చుతుంది. మీ మార్పులు jail.local లో ఉండాలి, ఇది చివరగా చదవబడుతుంది మరియు రెండింటిపైనా గెలుస్తుంది. అప్‌గ్రేడ్‌లు దీన్ని ఎప్పటికీ తాకవు. jail.conf ను చదవడానికి మాత్రమే అనుమతించు రిఫరెన్స్‌గా వదిలేయండి.

Fail2ban కీ-ఆధారిత SSH ప్రామాణీకరణను భర్తీ చేస్తుందా?

లేదు. Fail2ban ఒక చిరునామా నుండి పునరావృత వైఫల్యాలను రేట్-లిమిట్ చేస్తుంది; ప్రతి చిరునామా పరిమితికి లోబడి ఉండే నెమ్మదైన, పంపిణీ అనుమానాస్పద ప్రయత్నానికి ఇది ఏమీ చేయదు. కీ-ఆధారిత ప్రామాణీకరణ (PasswordAuthentication no) పాస్‌వర్డ్ అనుమానాన్ని ముందే అసాధ్యం చేస్తుంది. అప్పుడు Fail2ban లాగ్ నాయిస్‌ను తగ్గిస్తుంది మరియు స్కానర్‌లను త్వరగా బహిష్కరిస్తుంది. రెండింటినీ అమలు చేయండి. మరియు అంతిమంగా SSH ను పబ్లిక్ ఇంటర్నెట్ నుండి పూర్తిగా దూరంగా ఉంచండి.