Ubuntu 24.04-இல் Fail2ban நிறுவி SSH bots-ஐ தடுக்க
Ubuntu 24.04-இல் apt install செய்தாலே SSH brute force தடுக்கப்படும். fail2ban-client status sshd output-உடன் Total failed 0 ஆக இருந்தால் என்ன செய்வது என்பதற்கான fix இங்கே உள்ளது.
Fail2ban உண்மையில் என்ன செய்கிறது
Fail2ban என்பது ஒரு log-reading daemon. இது உங்கள் SSH அங்கீகாரச் செய்திகளைக் கவனிக்கிறது. ஒரு முகவரியிலிருந்து குறுகிய நேரத்திற்குள் சில தோல்விகள் நிகழ்ந்தால், ஒரு firewall கட்டளையை இயக்குகிறது. அந்த முகவரியை சிறிது நேரத்திற்குத் தடுக்கிறது. இதுதான் முழு யோசனையும். இது ஒரு கோப்பில் சுமார் முப்பது வரிகள் config ஆகும். Ubuntu 24.04-இல் நிறுவல் ஒரே ஒரு apt கட்டளையில் முடிகிறது. நீங்கள் எதையும் திருத்துவதற்கு முன்பே இது பாதுகாப்பைத் தருகிறது.
இது என்னவென்பதையும் என்னவல்லவென்பதையும் தெளிவாக அறிந்து கொள்ளுங்கள். Fail2ban யாரையும் அங்கீகரிப்பதில்லை. எதையும் encrypt செய்வதில்லை. ஒரே ஒரு உறுதியான login முயற்சியை நிறுத்தாது. ஒரே மூலத்திலிருந்து வரும் தொடர் முயற்சிகளை மட்டுமே நிறுத்துகிறது. இது ஒரு இரைச்சல் வடிகட்டி மற்றும் rate limiter. பூட்டு அல்ல. இதன் வேலை port 22-இன் தொடர் background ஸ்கேனிங் உங்கள் CPU, bandwidth மற்றும் log இடத்தை வீணாக்குவதை நிறுத்துவதாகும். ஒரே ஒரு முகவரியிலிருந்து ஒரு நேரத்தில் வர வேண்டிய எந்தத் தாக்குபவரையும் மெதுவாக்குவதும் இதன் வேலை.
Fail2ban மாற்றாக இல்லாதவை
Fail2ban மூன்றாவது பாதுகாப்பு அடுக்கு, முதல் அடுக்கு அல்ல. உங்கள் சேவையகம் இன்னும் SSH கடவுச்சொற்களை ஏற்றுக்கொண்டால், ஆயிரக்கணக்கான முகவரிகளில் பரவியிருக்கும் ஒரு botnet தொடர்ந்து யூகிக்கலாம். ஏனெனில் ஒவ்வொரு முகவரியும் உங்கள் தடுப்பு வரம்புக்குள்ளேயே இருக்கும், எனவே அது ஒருபோதும் அந்த வரம்பை மீறாது. இதற்கான உண்மையான தற்காப்பு வழி key-only authentication ஆகும். இது எத்தனை முயற்சிகள் மேற்கொள்ளப்பட்டாலும் கடவுச்சொல் யூகிப்பதை சாத்தியமற்றதாக்குகிறது. key-only auth இன் மேல் செயல்படும் Fail2ban இரண்டு பயனுள்ள செயல்களைச் செய்கிறது: இது உங்கள் பதிவுகளில் இருந்து brute-force ஒலியை நீக்குகிறது, மேலும் scanner-களை ஆரம்பத்திலேயே வெளியேற்றுகிறது, இதனால் அவை போர்ட்டை தொடர்ந்து தாக்குவதை நிறுத்துகின்றன. இதை ஆழமான பாதுகாப்பு எனக் கருதுங்கள். இது key authentication இற்குப் பின்னாலும் firewall இற்குப் பின்னாலும் இருக்கிறது, ஒருபோதும் அவற்றுக்கு முன்னால் இல்லை.
முன்தேவைகள், மற்றும் Ubuntu 24.04 நிஜநிலை
root அல்லது sudo அணுகலுடன் Ubuntu 24.04 இயங்கும் ஒரு VPS உங்களுக்குத் தேவை. SSH ஏற்கனவே இயங்கிக்கொண்டிருக்க வேண்டும் — முக்கியமாக key authentication மூலம். Fail2ban குறைவான வளங்களையே பயன்படுத்துகிறது: சில பத்து மெகாபைட்டுகள் RAM மட்டுமே தேவை, limits ஐ மாற்றத் தேவையில்லை.
இப்போது பழைய வழிகாட்டிகள் அனைத்தும் தவறாகச் சொல்லும் பகுதி. பல வருடங்களாக வழக்கமான ஆலோசனை "Fail2ban நிறுவு, பிறகு backend = systemd சேர், ஏனெனில் Ubuntu /var/log/auth.log எழுதுவதை நிறுத்திவிட்டது." இந்த ஆலோசனை ஒரு உண்மையான மாற்றத்தைக் குறிப்பிடுகிறது — நவீன server மற்றும் cloud images இல் rsyslog இருப்பதில்லை, எனவே SSH பதிவுகள் systemd journal இல் மட்டுமே செல்கின்றன, அந்த text file இல்லாமல் போய்விட்டது — ஆனால் Ubuntu 24.04 இல் Fail2ban package இதை ஏற்கனவே கணக்கில் எடுத்துக்கொள்கிறது. இந்த package /etc/fail2ban/jail.d/defaults-debian.conf ஐ உருவாக்குகிறது, மேலும் அந்த file தான் — upstream defaults அல்ல — உங்கள் server உண்மையில் இயக்குவது:
[DEFAULT]
banaction = nftables
banaction_allports = nftables[type=allports]
backend = systemd
[sshd]
enabled = trueஇதை கவனமாகப் படியுங்கள், ஏனெனில் நீங்கள் எதையும் தொடுவதற்கு முன்பே இது இரண்டு கேள்விகளைத் தீர்க்கிறது. backend = systemd என்பதன் பொருள் SSH jail journal ஐ படிக்கிறது, எனவே auth.log இல்லை என்பது பிரச்சினையில்லை. banaction = nftables என்பதன் பொருள் தடைகள் nftables மூலம் செயல்படுத்தப்படுகின்றன, இதுதான் Ubuntu 24.04 உண்மையில் பயன்படுத்தும் firewall, பழைய iptables அல்ல. மேலும் [sshd] enabled = true என்பதன் பொருள் jail முதல் boot முதலே இயக்கத்தில் உள்ளது. முடிவு: Ubuntu 24.04 இல் இயல்புநிலை apt install fail2ban SSH brute-force தாக்குதல்களை உடனே தடுக்கிறது. உங்கள் வேலைப்பகுதி பெரும்பாலும் இதை உறுதிப்படுத்துவது, policy ஐ சரிசெய்வது, மற்றும் நீங்கள் வெளியே பூட்டப்படாமல் பார்த்துக்கொள்வது ஆகியவையே.
பழைய auth.log பொறி மூன்று நிலைகளில் இன்னும் சிக்கலை உண்டாக்குகிறது, இவற்றை அறிந்துகொள்வது பயனுள்ளது: நீங்கள் Fail2ban ஐ apt க்கு பதிலாக pip மூலம் நிறுவிவிட்டீர்கள், எனவே defaults-debian.conf இல்லை; நீங்கள் systemd journal படிக்க முடியாத ஒரு unprivileged container க்குள் இயங்குகிறீர்கள்; அல்லது நீங்கள் ஒரு பழைய பயிற்சியைப் பின்பற்றி backend = auto ஐ உங்கள் jail.local க்குள் ஒட்டிவிட்டீர்கள், இது இயங்கும் இயல்புநிலையை மாற்றியமைக்கிறது. failure-modes பகுதி ஒவ்வொன்றும் எப்படித் தோற்றமளிக்கும் என்பதைத் துல்லியமாகக் காட்டுகிறது.
படி 1: நிறுவி, தடைசெய்தல் ஏற்கனவே நடப்பதை உறுதிப்படுத்துதல்
sudo apt update
sudo apt install -y fail2banUbuntu 24.04 இல் Fail2ban 1.0.2 உள்ளது. இந்த தொகுப்பு python3-systemd ஐ கட்டாய சார்புநிரலாக நிறுவுகிறது. எனவே journal பின்னணிக்குத் தேவையான அனைத்தும் கிடைக்கிறது. இந்த சேவை தானாகவே இயக்கப்பட்டு தொடங்கும்:
sudo systemctl status fail2banநீங்கள் active (running) வேண்டும். பிறகு ஏற்கனவே செயல்படும் jail ஐ பாருங்கள்:
sudo fail2ban-client status sshdசில நிமிடங்களாக அணுகக்கூடிய பொது VPS இல், தோல்விகள் கணக்கிடப்பட்டு முகவரிகள் தடைசெய்யப்பட்டதை நீங்கள் அடிக்கடி காண்பீர்கள். ஏனெனில் இணையம் தொடர்ந்து port 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 ஐ இங்கே உருவாக்கலாம், பின்னர் அதை கோப்பில் ஒட்டலாம்:
படி 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.66Fail2ban உண்மையில் உங்கள் உள்நுழைவுகளைப் படிக்கிறது என்பதை நிரூபிக்கும் எண் 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-லும் சில நிமிடங்களில் தானாகவே வந்து சேரும். ஒன்றைக் கவனிக்க, பதிவை tail செய்யவும்:
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 என்ற பெயரிடப்பட்ட ஒரு set-ஐ 10.0.0.66-ஐ கொண்டிருப்பதைக் காண்பீர்கள், மேலும் அந்த set-ல் உள்ள எந்த ஆதாரத்தையும் நிராகரிக்கும் ஒரு chain f2b-chain-ஐயும் காண்பீர்கள். fail2ban-client ஒரு முகவரி தடை செய்யப்பட்டதாகக் கூறினாலும் nft list-ல் எதுவும் தோன்றவில்லை என்றால், உங்கள் தடை செயல் உங்கள் ஃபயர்வாலுடன் பொருந்தவில்லை — தோல்வி நிலைகளில் உள்ள nftables/iptables குறிப்பைப் பார்க்கவும்.
படி 6: உங்களை நீக்கவும், பூட்டப்பட்டால் மீட்கவும்
நீங்கள் தவறுதலாக ஒரு முகவரியைத் தடை செய்திருந்தால் — குறிப்பாக உங்கள் சொந்த முகவரியை — அதை நீக்கவும்:
sudo fail2ban-client set sshd unbanip 10.0.0.66வெற்றி பெற்றால் இது 1 என்ன திருப்பித் தரும். ஒவ்வொரு jail-லும் உள்ள அனைத்துத் தடைகளையும் நீக்க:
sudo fail2ban-client unban --allஏற்கனவே திறக்கப்பட்ட SSH அமர்வு ஒன்று உங்களைக் காப்பாற்றும் என எதிர்பார்க்க வேண்டாம்: nftables தடை தடை செய்யப்பட்ட முகவரியிலிருந்து port 22-க்கு வரும் ஒவ்வொரு packet-ஐயும் நிராகரிக்கிறது — நிலைநிறுத்தப்பட்ட இணைப்புகள் உட்பட — எனவே தடை படும் அதே நொடியில் இருக்கும் அமர்வு உறைந்துவிடும். நீங்கள் உங்களைத் தடை செய்து, உங்களிடம் ignoreip உள்ளீடு இல்லையென்றால், தடை காலவாதம் முடியும் வரை நீங்கள் பூட்டப்பட்டிருப்பீர்கள் — SSH வழியாகச் செல்லாத உங்கள் provider-ன் web console (VNC அல்லது serial) மூலம் மீட்கவும், பின்னர் அங்கே ஒன்று 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 இயல்புநிலை அதை journal ஐச் சுட்டிக்காட்டும், அ்கு அவை தோன்றாது.
படி 8: இதனை key-only SSH உடன் இணைக்கவும், மேலும் சிறந்தது ஒரு VPN உடன் இணைக்கவும்
Fail2ban பயனுள்ளதாக இருப்பது key அங்கீகாரத்துடன் மட்டுமே. /etc/ssh/sshd_config.d/ கீழ் ஒரு drop-in கோப்பில் — உதாரணமாக /etc/ssh/sshd_config.d/00-hardening.conf — பின்வருவதை அமைக்கவும்:
PasswordAuthentication no
KbdInteractiveAuthentication noபிறகு sudo systemctl restart ssh. கடவுச்சொற்கள் முடக்கப்பட்டிருந்தால், brute force தாக்குதல் வெற்றிபெற முடியாது. எனவே Fail2ban பதிவு ஒலியைக் குறைக்கவும் scanner-களை ஆரம்பத்திலேயே நீக்கவும் மட்டுமே பயன்படுகிறது. இதை விட வலுவான வழி: SSH ஐ பொது இணையத்திலிருந்து முற்றிலும் விலக்கி வைப்பது. SSH ஐ ஒரு self-hosted WireGuard VPN-க்குப் பின்னால் வைக்கவும் மேலும் port 22 ஐ firewall செய்து அது tunnel-ல் மட்டுமே பதிலளிக்கும்படி செய்யவும். யாரும் அணுக முடியாத port ஐ brute-force செய்ய முடியாது. எனவே Fail2ban முன்னணியாக இல்லாமல் பின்னணிப் பாதுகாப்பாக மாறுகிறது.
Fail2ban என்பது SSH-க்கு மட்டும் அல்ல. தோல்வியுற்ற உள்நுழைவுகளைப் பதிவு செய்யும் எந்தச் சேவைக்கும் ஒரு jail கிடைக்கும் — ஒரு mail சேவையகம், ஒரு nginx தளம், அல்லது ஒரு self-hosted Vaultwarden கடவுச்சொல் மேலாளர் போன்றவை, அதன் web உள்நுழைவை credential stuffing தாக்குதலுக்கு திறந்து விட விரும்பாத சேவைகளுக்கும் இது பொருந்தும். ஒரு web செயலி Let's Encrypt சான்றிதழுடன் கூடிய ஒரு nginx தளத்திற்குப் பின்னால் வந்ததும், அதன் access log ஐ நோக்கி ஒரு Fail2ban filter ஐ சுட்டிக்காட்டவும். இது SSH jail ஆனது journal ஐ நோக்கி சுட்டிக்காட்டுவதைப் போன்றே செயல்படும்.
பிழை நிலைகள், நீங்கள் காணும் சரியான சரங்களுடன்
"Have not found any log file for sshd jail", மேலும் Fail2ban தொடங்காது. இது பழைய auth.log பிரச்சினை. Ubuntu 24.04-இல் இது நிகழும் ஒரே சூழல்: தொகுப்பின் இயல்புநிலை மாற்றப்பட்டிருந்தால் மட்டுமே — defaults-debian.conf இல்லாத pip நிறுவல், journal இல்லாத container, அல்லது நீங்கள் jail.local-இல் ஒட்டிய தேவையற்ற backend = auto. /var/log/auth.log இல்லாத file backend-இல், sshd jail அதன் பதிவைக் கண்டுபிடிக்க முடியாது; எனவே முழு daemon-ம் நிறுத்தப்படுகிறது. 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 உடைந்தது என்று பொருள்படுத்தாது — ஒரு jail அதன் பதிவைக் கண்டுபிடிக்க முடியாததால் அது தொடங்கவே இல்லை என்பதே பொருள். [DEFAULT]-இல் backend = systemd என அமைப்பது இரு செய்திகளையும் ஒரே நேரத்தில் சரிசெய்கிறது; Ubuntu தொகுப்பு இதை ஏற்கனவே உங்களுக்காகச் செய்துவிட்டது.
Jail செயலில் உள்ளது ஆனால் Total failed நகர்வதில்லை. daemon இயங்குகிறது; journal படிக்கப்படுகிறது. என்றாலும், உண்மையான தோல்விகள் journalctl -u ssh-இல் குவிகின்றன, ஆனால் எண்ணி 0-இலேயே நிற்கிறது. முதலில் வெளிப்படையான காரணத்தை நீக்குங்கள்: நீங்கள் ignoreip-இல் பட்டியலிடப்பட்ட முகவரியிலிருந்து சோதிக்கிறீர்கள்; எனவே உங்கள் சொந்தத் தோல்விகள் வடிவமைப்பின்படி விலக்கப்படுகின்றன. அதுவும் இல்லை என்றால், நீங்கள் ஒரு OpenSSH build-இல் உள்ளீர்கள்; அதில் ஒரு இணைப்புக்கான worker sshd-session ஆக இருக்கிறது (9.8 மற்றும் அதற்குப் பிறகு), அதன் journal _COMM ஆக sshd-session உள்ளது, sshd அல்ல; எனவே தரப்பட்ட match அதைத் தவறவிடுகிறது. [sshd] block-இல் match-ஐ விரிவாக்குங்கள்:
[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 action-இன் இயல்புநிலை reject தீர்ப்பு உங்கள் மீது தன் வேலையைச் செய்வதே. படி 6-இல் உள்ளபடி இதைச் சரிசெய்யுங்கள்: தடைசெய்யப்படாத வேறொரு முகவரியிலிருந்து ஒரு அமர்வில் தடையை நீக்குங்கள், அல்லது provider console-இலிருந்து நீக்குங்கள் — தடைசெய்யப்பட்ட முகவரியிலிருந்து ஏற்கனவே திறக்கப்பட்ட அமர்வும் உறைந்துவிடும். பிறகு இது மீண்டும் நிகழாதபடி உங்கள் முகவரியை ignoreip-இல் சேர்க்கவும்.
Fail2ban ஒரு முகவரி தடைசெய்யப்பட்டதாகக் கூறுகிறது, ஆனால் அது இன்னும் இணைக்க முடிகிறது. status sshd-இல் எண்ணி உயர்கிறது, ஆனால் அந்த முகவரி port 22-ஐ இன்னும் அடைகிறது. இது ban-action-க்கும் firewall-உக்கும் இடையிலான பொருத்தமின்மை. Ubuntu 24.04-இல் இது ஏறக்குறைய எப்போதும் இதையே பொருள்படுத்தும்: iptables அடுக்கு இல்லாத ஒரு பெட்டியில், பழைய வழிகாட்டியிலிருந்து நகலெடுக்கப்பட்ட banaction = iptables-multiport மூலம் செயல்படும் banaction = nftables-ஐ நீங்கள் மாற்றியுள்ளீர்கள். fail2ban.log காட்டுவது:
fail2ban.actions [812]: ERROR Failed to execute ban jail 'sshd' action 'iptables-multiport'அந்த மாற்றத்தை நீக்குங்கள்; தொகுப்பின் nftables action-ஐ அப்படியே விடுங்கள். அல்லது, நீங்கள் firewall-ஐ முழுமையாக ufw மூலம் நிர்வகித்து தடைகள் அங்கே தெரிய வேண்டும் என விரும்பினால், [DEFAULT]-இல் banaction = ufw என அமைக்கவும். மறுதொடக்கம் செய்யுங்கள்; விதி sudo nft list ruleset | grep f2b மூலம் தோன்றுவதை உறுதிப்படுத்துங்கள்.
jail.local-ஐ திருத்திய பிறகு Fail2ban தொடங்காது. ஒரு தட்டச்சுப் பிழை — தேவையற்ற தலைப்பு அல்லது தவறான நேர மதிப்பு — சேவையைத் தொடங்க மறுக்கச் செய்கிறது. Fail2ban-ஐ இயங்குவதற்கு முன்பு config-ஐ சரிபார்க்கச் சொல்லுங்கள்:
sudo fail2ban-client -tஇது பிரச்சினையுடன் கூடிய கோப்பின் பெயர் மற்றும் jail-ஐக் குறிப்பிடுகிறது, உதாரணமாக Errors in jail 'sshd'. Skipping...; எனவே நீங்கள் யூகிப்பதற்கு பதிலாக மூலத்தைச் சரிசெய்கிறீர்கள்.
FAQ
Ubuntu 24.04-இல் உள்ள இயல்புநிலை Fail2ban நிறுவல் SSH தாக்குதல்களை உண்மையில் தடுக்கிறதா?
ஆம். இந்த தொகுப்பு /etc/fail2ban/jail.d/defaults-debian.conf-ஐ வழங்குகிறது. இது sshd jail-ஐ இயக்குகிறது. backend = systemd-ஐ அமைக்கிறது, இதனால் இல்லாத /var/log/auth.log-க்கு பதிலாக systemd journal-ஐ படிக்கும். banaction = nftables-ஐ அமைக்கிறது, இதனால் தடைகள் Ubuntu-வின் உண்மையான firewall வழியாக செயல்படுத்தப்படும். சாதாரண apt install fail2ban முதல் துவக்கத்திலிருந்தே SSH-ஐ பாதுகாக்கிறது. sudo fail2ban-client status sshd கொண்டு இதை உறுதிப்படுத்தவும். பூஜ்யமற்ற Total failed மதிப்பைப் பார்க்கவும்.
என் சேவையகத்தில் Fail2ban எதையும் தடுக்கவில்லையா?
மூன்று பொதுவான காரணங்களை வரிசையாக விலக்கவும். நீங்கள் ignoreip-இல் உள்ள முகவரியிலிருந்து சோதித்துக் கொண்டிருக்கலாம்; இது வடிவமைப்பின்படி விலக்கப்பட்டது. பழைய வழிகாட்டியிலிருந்து backend = auto-ஐ jail.local-இல் ஒட்டியதன் மூலம் செயல்படும் இயல்புநிலையை நீங்கள் மேலெழுதியிருக்கலாம்; auth.log இல்லாத image-இல் இது journal வாசிப்பை உடைக்கிறது. அல்லது நீங்கள் வாசிக்க systemd journal ே இல்லாத ஒரு container-க்குள் இருக்கலாம். fail2ban-client status sshd-இல் Total failed-ஐ சரிபார்க்கவும்: journalctl -u ssh உண்மையான தோல்விகளைக் காட்டும்போது அது ஒருபோதும் அதிகரிக்கவில்லை என்றால், jail தவறான இடத்தை வாசிக்கிறது.
எனது சொந்த IP முகவரியை நான் எப்படி தடை நீக்கம் செய்வது?
sudo fail2ban-client set sshd unbanip YOUR.IP.HERE-ஐ இயக்கவும்; வெற்றியின் போது இது 1 தரும். அல்லது ஒவ்வொரு தடையையும் அகற்ற sudo fail2ban-client unban --all-ஐ இயக்கவும். SSH-இலிருந்து நீங்கள் பூட்டப்பட்டிருந்தால், அதே கட்டளையை இயக்க உங்கள் provider-இன் web அல்லது VNC console-ஐ பயன்படுத்தவும் — தடை உங்கள் முகவரியிலிருந்து port 22-க்கு வரும் ஒவ்வொரு packet-ஐயும் நிராகரிக்கிறது, எனவே ஏற்கனவே திறக்கப்பட்ட session கூட செயல்படுவதை நிறுத்துகிறது. பிறகு இது மீண்டும் நிகழாதபடி உங்கள் முகவரியை ignoreip-இல் சேர்க்கவும்.
jail.conf மற்றும் jail.local-க்கு இடையே உள்ள வேறுபாடு என்ன?
jail.conf Fail2ban-இன் upstream இயல்புநிலைகளைக் கொண்டுள்ளது. ஒவ்வொரு தொகுப்பு மேம்படுத்தலின் போதும் இது மேலெழுதப்படுகிறது, எனவே அங்கு செய்யப்படும் எந்த திருத்தமும் இறுதியில் இழக்கப்படும். Debian/Ubuntu தொகுப்பு அதன் சொந்த அமைப்புகளை jail.d/defaults-debian.conf வழியாக மேலடுக்கு செய்கிறது. உங்கள் மாற்றங்கள் jail.local-இல் இருக்க வேண்டும்; இது கடைசியாக வாசிக்கப்படுகிறது, இரண்டையும் விட வெல்கிறது, மேலும் மேம்படுத்தல்கள் இதை ஒருபோதும் தொடாது. jail.conf-ஐ படிக்க மட்டுமேயான குறிப்பாக விட்டுவிடவும்.
Fail2ban விசை அடிப்படையிலான SSH அங்கீகாரத்திற்கு மாற்றாக இருக்கிறதா?
இல்லை. Fail2ban ஒரே முகவரியிலிருந்து வரும் தொடர் தோல்விகளை வீதம் கட்டுப்படுத்துகிறது; ஒவ்வொரு முகவரியும் வரம்புக்குள் இருக்கும் மெதுவான, பரவலான யூகத்திற்கு இது ஒன்றும் செய்யாது. விசை மட்டுமே அங்கீகாரம் (PasswordAuthentication no) கடவுச்சொல் யூகத்தை முற்றிலும் சாத்தியமற்றதாக்குகிறது, பிறகு Fail2ban log இரைச்சலைக் குறைத்து scanner-களை ஆரம்பத்திலேயே வெளியேற்றுகிறது. இரண்டையும் இயக்கவும், மேலும் ஆதர்சபடுத்தப்பட்டபடி SSH-ஐ பொது இணையத்திலிருந்து முற்றிலும் விலக்கி வைக்கவும்.