வழிகாட்டி

Fail2ban: SSH-ஐ கடவுச்சொல் ஊகத்திலிருந்து பாதுகாக்கும் அமைப்பு

புதுப்பிக்கப்பட்டது: · Skillaria.Top

Fail2ban சேவைகளின் பதிவுகளைப் படித்து, மீண்டும் மீண்டும் தோல்வியடையும் உள்நுழைவு முயற்சிகளைக் கண்டறிந்து, தாக்குபவரின் IP முகவரியை firewall வழியாக தற்காலிகமாகத் தடுக்கிறது. SSH-ஐப் பாதுகாக்க தொகுப்பை நிறுவி, /etc/fail2ban/jail.local கோப்பில் [sshd] பிரிவை (enabled = true, maxretry, findtime, bantime) உருவாக்கி சேவையை மறுதொடக்கம் செய்தால் போதும்; நிலையை fail2ban-client status sshd கட்டளையால் சரிபார்க்கலாம்.

Fail2ban என்பது சேவைகளின் பதிவுகளைக் கண்காணிக்கும் ஒரு டீமன்: மீண்டும் மீண்டும் தோல்வியடையும் உள்நுழைவு முயற்சிகளைக் கண்டறிந்து, அவை வந்த IP முகவரியை சிறிது நேரம் தடுக்கிறது. SSH-க்கு இது கடவுச்சொல் ஊகத்துக்கு எதிரான எளிய பாதுகாப்பு: சில தவறுகளுக்குப் பிறகு பாட்கள் சேவையகத்தைத் தட்டுவதை நிறுத்துகின்றன. கீழே நிறுவலிலிருந்து தடைகளைச் சரிபார்ப்பது வரையிலும், பொதுவான பிழைகள் வரையிலும் fail2ban அமைப்பு.

SSH சாவிகள் இருந்தால் fail2ban ஏன் தேவை

22-ஆம் போர்ட் திறந்த எந்த சேவையகமும் தொடங்கிய சில நிமிடங்களில் பாட்களிடமிருந்து உள்நுழைவு முயற்சிகளைப் பெறத் தொடங்கும். நீங்களே பாருங்கள்:

$ sudo journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
412

கடவுச்சொல் உள்நுழைவு முடக்கப்பட்டு சாவிகள் மட்டும் பயன்பட்டால் அணுகலை ஊகிப்பது கிட்டத்தட்ட சாத்தியமில்லை. ஆனாலும் fail2ban பயனுள்ளது: அது பதிவுகளிலிருந்து இரைச்சலை நீக்குகிறது, ஆயிரக்கணக்கான இணைப்புகளின் சுமையைக் குறைக்கிறது, கடவுச்சொல் உள்நுழைவு தவறுதலாக மீண்டும் இயக்கப்பட்டால் பாதுகாக்கிறது. இது சாவிகளுக்கு மாற்று அல்ல, இரண்டாவது அடுக்கு பாதுகாப்பு.

fail2ban எப்படி வேலை செய்கிறது

தர்க்கம் மூன்று பகுதிகளைக் கொண்டது:

  • வடிகட்டி (filter) — பதிவில் தோல்வியடைந்த முயற்சியைக் குறிக்கும் வரிகளைக் கண்டறிந்து அவற்றிலிருந்து IP-ஐ எடுக்கும் regular expression-களின் தொகுப்பு. வடிகட்டிகள் /etc/fail2ban/filter.d/-இல் உள்ளன.
  • செயல் (action) — விதிமீறுபவருடன் என்ன செய்வது: iptables, nftables, ufw அல்லது firewalld-இல் விதியைச் சேர்ப்பது. செயல்கள் /etc/fail2ban/action.d/-இல் உள்ளன.
  • சிறை (jail) — வடிகட்டி, செயல், பதிவு மூலம் மற்றும் வரம்புகளின் இணைப்பு. எடுத்துக்காட்டாக sshd jail SSH பதிவைக் கண்காணிக்கிறது.

findtime நேரத்துக்குள் ஒரு IP-இலிருந்து maxretry பொருத்தங்கள் சேர்ந்தால், அந்த முகவரி bantime நேரத்துக்குத் தடுக்கப்படுகிறது. காலம் முடிந்ததும் தடை தானாக நீங்கும்.

fail2ban நிறுவல்

Debian மற்றும் Ubuntu-வில்:

sudo apt update
sudo apt install fail2ban

RHEL, Rocky, AlmaLinux-இல் தொகுப்பு EPEL களஞ்சியத்தில் உள்ளது:

sudo dnf install epel-release
sudo dnf install fail2ban

தானியங்கி தொடக்கத்தை இயக்கி சேவையின் நிலையைச் சரிபாருங்கள்:

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

Debian மற்றும் Ubuntu-வில் SSH jail /etc/fail2ban/jail.d/defaults-debian.conf மூலம் இயல்பாகவே இயக்கப்பட்டிருக்கும். RHEL குடும்பத்தில் நிறுவிய பின் எதுவும் இயக்கப்பட்டிருக்காது — சிறைகளை கைமுறையாகச் செயல்படுத்த வேண்டும்.

அமைப்புகள் எங்கே: jail.conf மற்றும் jail.local

முதன்மைக் கோப்பு /etc/fail2ban/jail.conf, ஆனால் அதை திருத்தக்கூடாது: தொகுப்பு புதுப்பிக்கப்படும்போது அது மேலெழுதப்படும். சொந்த அமைப்புகளை /etc/fail2ban/jail.local-இலோ அல்லது தனி /etc/fail2ban/jail.d/*.local கோப்புகளிலோ வைக்கிறார்கள். Fail2ban கோப்புகளை பின்வரும் வரிசையில் படிக்கிறது; ஒவ்வொன்றும் முந்தையதை மேலெழுதுகிறது:

  1. jail.conf
  2. jail.d/*.conf
  3. jail.local
  4. jail.d/*.local

முழு jail.conf-ஐ jail.local-க்கு நகலெடுக்காதீர்கள் — அது பழைய இயல்பு மதிப்புகளை உறைய வைக்கும். jail.local-இல் நீங்கள் மாற்றுவதை மட்டுமே எழுதுங்கள்.

SSH-க்கான fail2ban அமைப்பு: குறைந்தபட்ச jail.local

கோப்பை உருவாக்குங்கள்:

sudo nano /etc/fail2ban/jail.local

அதில் சேர்க்கவும்:

[DEFAULT]
# ஒருபோதும் தடுக்கக் கூடாத உங்கள் முகவரிகள்
ignoreip = 127.0.0.1/8 ::1 203.0.113.10
bantime  = 1h
findtime = 10m
maxretry = 5
# பதிவுகளை எங்கிருந்து எடுப்பது: systemd பதிவேடு அல்லது கோப்புகள்
backend  = systemd

[sshd]
enabled  = true
port     = ssh
maxretry = 3

சேவையை மறுதொடக்கம் செய்து சிறை தொடங்கியதா என்று பாருங்கள்:

$ sudo systemctl restart fail2ban
$ sudo fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

அளவுருக்களின் பொருள்

அளவுருபொருள்எடுத்துக்காட்டு
enabledசிறை இயக்கத்தில் உள்ளதாtrue
portவிதிமீறுபவருக்குத் தடுக்க வேண்டிய போர்ட்(கள்)ssh, 2222, ssh,2222
maxretryதடைக்கு முன் எத்தனை தவறுகள் அனுமதி3
findtimeதவறுகள் கணக்கிடப்படும் சாளரம்10m
bantimeதடையின் காலம்; -1 — என்றென்றும்1h, 1d
ignoreipதடை இல்லாமல் விட வேண்டிய முகவரிகளும் துணைப் பிணையங்களும்10.0.0.0/8
backendபதிவுகளின் மூலம்systemd, auto
logpathகோப்பு backend-இல் பதிவுக் கோப்பின் பாதை/var/log/auth.log
banactionதடைக்கு எந்த firewall பயன்படுவதுnftables-multiport, ufw

நேரத்தை பின்னொட்டுகளுடன் எழுதலாம்: s, m, h, d, w. பின்னொட்டு இல்லாத எண்கள் வினாடிகளாகக் கருதப்படுகின்றன.

backend: systemd அல்லது கோப்பு

நவீன Debian 12 மற்றும் Ubuntu 24.04-இல் rsyslog நிறுவப்படாவிட்டால் /var/log/auth.log கோப்பு இருக்காது: SSH பதிவுகள் systemd பதிவேட்டில் மட்டுமே இருக்கும். அப்போது backend = systemd தேவை, இல்லையென்றால் பதிவுக் கோப்பு கிடைக்கவில்லை என்ற பிழையுடன் fail2ban தொடங்காது. rsyslog இருந்தால் கோப்பு வகையை வைத்துக்கொள்ளலாம்:

[sshd]
enabled  = true
backend  = auto
logpath  = /var/log/auth.log

RHEL அமைப்புகளில் இதற்குச் சமமான கோப்பு — /var/log/secure.

நிலையற்ற போர்ட்டில் SSH

sshd எடுத்துக்காட்டாக 2222-ஆம் போர்ட்டில் கேட்டால், அதை சிறையில் குறிப்பிடுங்கள் — இல்லையென்றால் fail2ban 22-ஐ தடுக்கும், தாக்குதல் 2222-இல் தொடரும்:

[sshd]
enabled = true
port    = 2222

விதிமீறுபவருக்கு எல்லா போர்ட்களையும் ஒரே நேரத்தில் தடுக்க, banaction அளவுருவின் மூலம் iptables-allports அல்லது nftables-allports செயலைப் பயன்படுத்தலாம்.

firewall தேர்வு: iptables, nftables, ufw, firewalld

Debian-இல் இயல்பாக banaction = nftables பயன்படுகிறது (பழைய பதிப்புகளில் iptables), RHEL-இல் — firewalld. சேவையகத்தில் ufw அமைக்கப்பட்டிருந்தால், தடைகள் அதிலேயே தெரிவது வசதி:

[DEFAULT]
banaction = ufw

firewalld-க்கு:

[DEFAULT]
banaction = firewallcmd-rich-rules

விதிகள் உண்மையில் வந்தனவா என்று sudo nft list ruleset | grep f2b அல்லது sudo iptables -L -n | grep f2b மூலம் பார்க்கலாம்: fail2ban f2b- முன்னொட்டுடன் சங்கிலிகளை உருவாக்குகிறது.

வேலை செய்கிறதா என்று சரிபார்ப்பது: fail2ban-client status

முக்கிய நிர்வாகக் கருவி — fail2ban-client. குறிப்பிட்ட சிறையின் நிலை:

$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 2
|  |- Total failed:     147
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 4
   |- Total banned:     38
   `- Banned IP list:   45.148.10.12 92.118.39.7 185.224.128.40 218.92.0.112

இங்கே தற்போதைய சாளரத்தில் எத்தனை தவறுகள் உள்ளன, எத்தனை IP தடுக்கப்பட்டுள்ளன, எவை என்பது தெரியும். பாதுகாப்பை நேரடியாகச் சோதிக்க, வேறொரு கணினியிலிருந்து (ignoreip-இல் உள்ளதிலிருந்து அல்ல) தவறான கடவுச்சொல்லுடன் சில முறை உள்நுழைய முயலுங்கள் — மூன்றாவது முயற்சிக்குப் பிறகு இணைப்பு ஏற்படாது.

fail2ban-இன் சொந்த பதிவு /var/log/fail2ban.log-இல் உள்ளது:

$ sudo tail -n 3 /var/log/fail2ban.log
2026-10-14 09:12:41,118 fail2ban.filter  [812]: INFO    [sshd] Found 218.92.0.112
2026-10-14 09:12:44,302 fail2ban.filter  [812]: INFO    [sshd] Found 218.92.0.112
2026-10-14 09:12:47,551 fail2ban.actions [812]: NOTICE  [sshd] Ban 218.92.0.112

fail2ban-இல் IP-ஐ விடுவிப்பது எப்படி

நீங்களே அல்லது சக ஊழியரே தவறுதலாகத் தடுக்கப்பட்டிருந்தால், சேவையகத்தின் கன்சோலிலிருந்து (வழங்குநரின் பேனல் அல்லது வேறு IP மூலம்) தடையை நீக்குங்கள்:

sudo fail2ban-client set sshd unbanip 203.0.113.25

எல்லா சிறைகளிலும் எல்லா தடைகளையும் நீக்க:

sudo fail2ban-client unban --all

வடிகட்டி தூண்டுவதற்குக் காத்திருக்காமல் ஒரு முகவரியை கைமுறையாகத் தடுக்க:

sudo fail2ban-client set sshd banip 198.51.100.7

அதே சம்பவம் மீண்டும் நடக்காமல் இருக்க, உங்கள் நிலையான முகவரிகளையோ அலுவலக துணைப் பிணையத்தையோ ignoreip-இல் சேருங்கள்.

மீண்டும் மீண்டும் விதிமீறுபவர்களுக்கு அதிகரிக்கும் தடை

பல பாட்கள் தடை நீங்கியவுடனே திரும்பி வரும். பதிப்பு 0.11 முதல் fail2ban மீண்டும் மீண்டும் விதிமீறுபவர்களுக்குத் தடையின் காலத்தை அதிகரிக்கிறது:

[DEFAULT]
bantime = 1h
bantime.increment = true
bantime.factor = 2
bantime.maxtime = 4w

ஒரே IP-க்கு ஒவ்வொரு அடுத்த தடையும் முந்தையதை விட நீளமாக இருக்கும், ஆனால் நான்கு வாரங்களுக்கு மேல் போகாது. பழைய பதிப்புகளுக்கான மாற்று — recidive சிறை: அது fail2ban-இன் சொந்தப் பதிவைப் படித்து, பலமுறை சிக்கிய முகவரிகளை நீண்ட நேரம் தடுக்கிறது:

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

வடிகட்டியைச் சரிபார்ப்பது: fail2ban-regex

சிறை வேலை செய்கிறது, ஆனால் யாரையும் தடுக்கவில்லை என்றால், வடிகட்டி பதிவில் வரிகளைக் கண்டறிகிறதா என்று பாருங்கள். கோப்பு பதிவுக்கு:

sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

systemd பதிவேட்டுக்கு:

sudo fail2ban-regex systemd-journal sshd

வெளியீட்டில் Lines: ... matched வரியைப் பாருங்கள். பொருத்தம் பூஜ்யம் என்றால் வடிகட்டி பதிவுகளின் வடிவத்துக்குப் பொருந்தவில்லை, அல்லது தவறான மூலம் குறிப்பிடப்பட்டுள்ளது. மறுதொடக்கத்துக்கு முன் முழு அமைப்பின் தொடரியலையும் சரிபார்ப்பது நல்லது:

sudo fail2ban-client -t

பொதுவான பிழைகள்

  • சேவை தொடங்கவில்லை: «Have not found any log file for sshd jail». /var/log/auth.log இல்லை. backend = systemd அமைக்கவும் அல்லது rsyslog நிறுவவும்.
  • நிலையில் தடைகள் உள்ளன, ஆனால் தாக்குதல் தொடர்கிறது. தவறான போர்ட் குறிக்கப்பட்டுள்ளது (SSH மாற்றப்பட்டுள்ளது) அல்லது firewall விதிகள் முந்தைய அனுமதி விதியால் மறைக்கப்படுகின்றன. port மற்றும் nft list ruleset வெளியீட்டைச் சரிபாருங்கள்.
  • மாற்றங்கள் நடைமுறைக்கு வரவில்லை. jail.conf-ஐ திருத்தினீர்கள், ஆனால் jail.local அல்லது jail.d/*.local-இல் வேறு மதிப்பு உள்ளது. இறுதி மதிப்பைப் பாருங்கள்: sudo fail2ban-client get sshd maxretry.
  • உங்களையே தடுத்துக்கொண்டீர்கள். கன்சோல் வழியாக தடையை நீக்கி, IP-ஐ ignoreip-இல் சேருங்கள்.
  • Docker-இல் உள்ள fail2ban தாக்குதல்களைப் பார்க்கவில்லை. கொள்கலன் போர்ட்கள் INPUT-ஐத் தாண்டும் DOCKER சங்கிலி வழியாக வெளியிடப்படுகின்றன. இத்தகைய சேவைகளுக்கு செயலில் chain = DOCKER-USER பயன்படுத்தவும்.

SSH-ஐப் பாதுகாக்க வேறு என்ன செய்யலாம்

Fail2ban /etc/ssh/sshd_config-இல் உள்ள அடிப்படை நடவடிக்கைகளுடன் நன்றாக வேலை செய்கிறது:

PasswordAuthentication no
PermitRootLogin no
MaxAuthTries 3

மாற்றிய பின் sudo sshd -t மூலம் கட்டமைப்பைச் சரிபார்த்து சேவையை மறுதொடக்கம் செய்யுங்கள். சாவி மூலம் உள்நுழைவு வேலை செய்கிறது என்று புதிய அமர்வில் உறுதியாகும் வரை தற்போதைய அமர்வை மூடாதீர்கள். கூடுதலாக, firewall மூலம் SSH அணுகலை தேவையான முகவரிகளுக்கு மட்டும் கட்டுப்படுத்தலாம்.

சுருக்கம்

Fail2ban அமைப்பு சில படிகளுக்குள் அடங்கும்: தொகுப்பை நிறுவுதல், [sshd] பிரிவுடன் jail.local உருவாக்குதல், சரியான backend மற்றும் போர்ட்டைத் தேர்ந்தெடுத்தல், maxretry, findtime, bantime அமைத்தல், உங்கள் முகவரிகளை ignoreip-இல் சேர்த்தல், fail2ban-client status sshd மூலம் சரிபார்த்தல். சாவிகளால் மட்டும் உள்நுழைவுடன் சேர்த்தால் இது SSH-ஐ கடவுச்சொல் ஊகத்திலிருந்து நம்பகமாகப் பாதுகாக்கிறது. சேவையகப் பாதுகாப்பும் fail2ban-உம் Linux பாடநெறியில் நடைமுறையுடன் விளக்கப்பட்டுள்ளன.

அடிக்கடி கேட்கப்படும் கேள்விகள்

கடவுச்சொல் உள்நுழைவு முடக்கப்பட்டிருந்தால் fail2ban தேவையா?

கட்டாயமில்லை, ஆனால் பயனுள்ளது: ஆயிரக்கணக்கான குப்பை முயற்சிகளை பதிவுகளிலிருந்து நீக்குகிறது, சுமையைக் குறைக்கிறது, கடவுச்சொல் உள்நுழைவு தவறுதலாக மீண்டும் இயக்கப்பட்டால் பாதுகாக்கிறது.

எல்லா சிறைகளிலும் தடுக்கப்பட்ட எல்லா IP-களையும் எப்படிப் பார்ப்பது?

sudo fail2ban-client banned கட்டளையை இயக்குங்கள் — அது ஒவ்வொரு சிறையிலும் தடுக்கப்பட்ட முகவரிகளின் பட்டியலைக் காட்டும். ஒரு சிறைக்கு fail2ban-client status sshd பயன்படுத்துங்கள்.

சேவையகம் மறுதொடக்கம் செய்த பிறகும் தடைகள் நீடிக்குமா?

ஆம், fail2ban தடைகளை தனது SQLite தரவுத்தளத்தில் (/var/lib/fail2ban/fail2ban.sqlite3) சேமிக்கிறது; dbpurgeage அளவுரு அவற்றை முன்பே நீக்காவிட்டால் தொடக்கத்தில் செல்லுபடியாகும் தடைகளை மீட்டெடுக்கும்.

SSH-ஐ தவிர மற்ற சேவைகளையும் fail2ban பாதுகாக்க முடியுமா?

ஆம், தொகுப்பில் nginx, Apache, Postfix, Dovecot மற்றும் பிற சேவைகளுக்கான வடிகட்டிகள் உள்ளன. jail.local-இல் தேவையான சிறையை இயக்கினால் போதும், எடுத்துக்காட்டாக enabled = true உடன் [nginx-http-auth].

fail2ban மற்றும் firewall-இல் உள்ள கட்டுப்பாட்டுக்கு என்ன வேறுபாடு?

Firewall முகவரிகளை நிலையாக அனுமதிக்கிறது அல்லது தடுக்கிறது; fail2ban பதிவுகளில் சந்தேகத்துக்குரிய நடத்தை காட்டியவர்களை இயக்கமாகத் தடுக்கிறது. இரண்டையும் பெரும்பாலும் சேர்த்துப் பயன்படுத்துகிறார்கள்: firewall-இல் அனுமதிப் பட்டியல், மற்றவற்றுக்கு fail2ban.

இந்தத் தலைப்பை வீடியோவில் கற்றுக்கொள்ளுங்கள்

“Linux: с нуля до уверенного администрирования” பாடநெறியில் இந்தத் தலைப்பு பயிற்சியுடன் விரிவாக விளக்கப்பட்டுள்ளது.

பாடநெறிக்குச் செல்