форум vBSupport.ru > В помощь веб-мастеру > Общие вопросы сайтостроения > Системное администрирование
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
ERT
Знаток
Default Немного о защите сервера. fail2ban
4

Fail2ban — это инструмент, который отслеживает попытки залогиниться к различным сервисам, таким, как SSH, FTP, SMTP, Apache и другим, и если он находит постоянно повторяющиеся неудачные попытки с одного и того же IP-адреса или хоста, fail2ban остановит дальнейшие попытки залогиниться с этого IP-адреса/хоста, блокируя их с помощью правила iptables.
Как-то не доходили руки заглянуть в логи ауентификации. Недавно зашел, посмотрел и увидел огромное количество желающих попасть "ко мне в гости без приглашения". Установил fail2ban - эдакую тюрьму для IP злоумышленников.
Установка простая. Для linux.
HTML Code:
apt-get install fail2ban
Правим jail.conf в /etc/fail2ban
HTML Code:
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 - IP которые будут игнорироваться
bantime  = 600 - время бана в секундах (можно 36000 = 10 часов)
maxretry = 3 - количество не удачных попыток подключения.
Бан SSH по умолчанию включен, но можно изменить максимальное количество не удачных попыток соединения
HTML Code:
maxretry = 6
Включаем SSH DDos
HTML Code:
[ssh-ddos]
enabled = true (false - отключить)
port    = ssh
filter  = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 6
Бан vsftpd либо proftpd (кто чем пользуется)
HTML Code:
[vsftpd]
enabled  = true (false - отключить)
port	 = ftp,ftp-data,ftps,ftps-data
filter   = vsftpd
logpath  = /var/log/vsftpd.log
# or overwrite it in jails.local to be
# logpath = /var/log/auth.log
# if you want to rely on PAM failed login attempts
# vsftpd's failregex should match both of those formats
maxretry = 6

[proftpd]
enabled  = true (false - отключить)
port	 = ftp,ftp-data,ftps,ftps-data
filter   = proftpd
logpath  = /var/log/proftpd/proftpd.log
maxretry = 6
Бан Mail servers
HTML Code:
[postfix]
enabled  = true (false - отключить)
port	 = smtp,ssmtp
filter   = postfix
logpath  = /var/log/mail.log

[couriersmtp]
enabled  = true (false - отключить)
port	 = smtp,ssmtp
filter   = couriersmtp
logpath  = /var/log/mail.log
Рестарт fail2ban
HTML Code:
/etc/init.d/fail2ban restart
Логи fail2ban находятся в /var/log/fail2ban.log.
Если Вы используете правила iptables для fail2ban, в логах будут ошибки:
HTML Code:
2011-11-03 15:36:18,402 fail2ban.jail   : INFO   Jail 'ssh-ddos' started
2011-11-03 15:36:18,410 fail2ban.jail   : INFO   Jail 'ssh' started
2011-11-03 15:51:41,522 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports ssh -j fail2ban-ssh-ddos
iptables -F fail2ban-ssh-ddos
iptables -X fail2ban-ssh-ddos returned 100
2011-11-03 15:51:41,523 fail2ban.jail   : INFO   Jail 'ssh-ddos' stopped
2011-11-03 15:51:42,450 fail2ban.actions.action: ERROR  iptables -D INPUT -p tcp -m multiport --dports ssh -j fail2ban-ssh
iptables -F fail2ban-ssh
iptables -X fail2ban-ssh returned 100
Фиксим эти ошибки.
Открываем /usr/bin/fail2ban-client. Находим:
HTML Code:
beautifier.setInputCmd(c)
и выше добавляем строку:
HTML Code:
time.sleep(0.1)
Должно выглядеть примерно так:
HTML Code:
    def __processCmd(self, cmd, showRet = True):
        beautifier = Beautifier()
        for c in cmd:
            time.sleep(0.1)
            beautifier.setInputCmd(c)
После рестарт fail2ban:
HTML Code:
/etc/init.d/fail2ban restart
Смотрим логи теперь, в котором уже есть заблокированные IP :
HTML Code:
2011-10-30 03:08:50,185 fail2ban.jail   : INFO   Jail 'vsftpd' stopped
2011-10-30 03:08:51,091 fail2ban.jail   : INFO   Jail 'apache-noscript' stopped
2011-10-30 03:08:51,293 fail2ban.jail   : INFO   Jail 'ssh-ddos' stopped
2011-10-30 03:08:51,402 fail2ban.jail   : INFO   Jail 'ssh' stopped
2011-10-30 03:08:51,500 fail2ban.jail   : INFO   Jail 'named-refused-tcp' stopped
2011-10-30 03:08:51,501 fail2ban.server : INFO   Exiting Fail2ban
2011-10-30 03:08:52,258 fail2ban.server : INFO   Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.4-SVN
2011-10-30 03:08:52,358 fail2ban.jail   : INFO   Creating new jail 'apache-noscript'
2011-10-30 03:08:52,359 fail2ban.jail   : INFO   Jail 'apache-noscript' uses poller
2011-10-30 03:08:52,470 fail2ban.filter : INFO   Added logfile = /var/log/apache2/error.log
2011-10-30 03:08:52,570 fail2ban.filter : INFO   Set maxRetry = 250
2011-10-30 03:08:52,873 fail2ban.filter : INFO   Set findtime = 600
2011-10-30 03:08:52,973 fail2ban.actions: INFO   Set banTime = 36000
2011-10-30 03:08:54,184 fail2ban.jail   : INFO   Creating new jail 'vsftpd'
2011-10-30 03:08:54,184 fail2ban.jail   : INFO   Jail 'vsftpd' uses poller
2011-10-30 03:08:54,285 fail2ban.filter : INFO   Added logfile = /var/log/vsftpd.log
2011-10-30 03:08:54,386 fail2ban.filter : INFO   Set maxRetry = 6
2011-10-30 03:08:54,688 fail2ban.filter : INFO   Set findtime = 600
2011-10-30 03:08:54,789 fail2ban.actions: INFO   Set banTime = 36000
2011-10-30 03:08:55,999 fail2ban.jail   : INFO   Creating new jail 'ssh-ddos'
2011-10-30 03:08:55,999 fail2ban.jail   : INFO   Jail 'ssh-ddos' uses poller
2011-10-30 03:08:56,101 fail2ban.filter : INFO   Added logfile = /var/log/auth.log
2011-10-30 03:08:56,202 fail2ban.filter : INFO   Set maxRetry = 6
2011-10-30 03:08:56,504 fail2ban.filter : INFO   Set findtime = 600
2011-11-01 03:49:47,223 fail2ban.actions: WARNING [vsftpd] Ban 64.59.72.176
2011-11-01 06:40:54,290 fail2ban.actions: WARNING [ssh] Ban 58.62.173.159
2011-11-02 02:17:28,560 fail2ban.actions: WARNING [ssh] Ban 87.204.34.123
2011-11-02 06:02:45,437 fail2ban.actions: WARNING [ssh] Ban 180.139.138.178
2011-11-02 11:10:45,424 fail2ban.actions: WARNING [ssh] Ban 196.22.160.48
2011-11-02 20:20:45,118 fail2ban.actions: WARNING [ssh] Ban 184.164.158.82
2011-11-03 08:35:48,926 fail2ban.actions: WARNING [ssh] Ban 174.46.89.102
2011-11-03 11:22:25,276 fail2ban.actions: WARNING [ssh] Ban 122.72.19.96
Все работает. Актуально для версии iptables v1.4.8 и Fail2ban v0.8.4-SVN.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
netwind
Гуру
 
netwind's Avatar
Default
0

Quote:
Originally Posted by ERT View Post
Как-то не доходили руки заглянуть в логи ауентификации. Недавно зашел, посмотрел и увидел огромное количество желающих попасть "ко мне в гости без приглашения".
Конечно, смотреть в логи полезно, но выводы, которые ты сделал их этого лога для большинства арендующих сервера и vps совершенно непрактичны.
Ну долбят и что? у тебя там разве простые пароли?
 
 
ERT
Знаток
Default
0

Quote:
Originally Posted by netwind View Post
Ну долбят и что? у тебя там разве простые пароли?
А что в этом хорошего? Поставь время бана на сутки, на неделю, чтобы вообще отбить желание "долбить". Да еще коннект по SSH настрой, MaxAuthTries 2, чтобы сбрасывало после второй, не правильной, попытки ввода пароля. А так же в iptables добавь правила для sshguard и защиту от ddos атак:
HTML Code:
## Создание цепочки правил sshguard
# Максимум 2 новых запроса в минуту для одного ip
$IPT -N sshguard
# Вкл. лог по желанию
$IPT -A sshguard -m state --state NEW -m recent --name SSH --rcheck --seconds 60 --hitcount 2 -j LOG --log-prefix "SSH-shield:"
$IPT -A sshguard -m state --state NEW -m recent --name SSH --update --seconds 60 --hitcount 2 -j DROP
$IPT -A sshguard -m state --state NEW -m recent --name SSH --set -j ACCEPT
$IPT -A sshguard -j ACCEPT
## Применение для трафика ssh цепочку sshguard
$IPT -A INPUT -p tcp --dport 22 -j sshguard
# Защита от DDOS
$IPT -I INPUT 1 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 15 --connlimit-mask 32 -j DROP
$IPT -A INPUT -s х.х.х.х -j DROP
$IPT -A INPUT -p tcp -m tcp --dport 80 -m string --string "GET / HTTP" --algo kmp --to 1024 -m recent --set --name httpddos --rsource 
$IPT -A INPUT -p tcp -m tcp --dport 80 -m string --string "GET / HTTP" --algo kmp --to 1024 -m recent --update --seconds 10 --hitcount 2 --name httpddos --rsource -j DROP
Лишняя защита никогда не помешает. Что плохого в дополнительной безопасности сервера?
 
 
netwind
Гуру
 
netwind's Avatar
Default
0

Quote:
Originally Posted by ERT View Post
Лишняя защита никогда не помешает. Что плохого в дополнительной безопасности сервера?
это непрактично. к тому же однажды помешает зайти тебе на сервер не вспомнив пароль за 3 попытки, то есть вообще убийственно.
 
 
ERT
Знаток
Default
1

Как защита сервера может быть не практичной? Защита от DDos'a - это не практично или защита ssh от Bruteforce? Защита почтового сервиса - это тоже не практично? Как однажды тебе это может помешать зайти на сервер не вспомнив пароль?
Quote:
ignoreip = 127.0.0.1 - IP которые будут игнорироваться
netwind, я Вас прошу, прежде чем комментировать читайте все полностью.
P.S. Я никому, ничего, не навязываю. Сервер положат однозначно, если кому-то очень нужно будет. Но добавив некоторые правила в iptables и установив дополнительную защиту - вы избавитесь от "баловства" всяких недорослей, которые будут мешать нормальной работе вашего веб сервера.
 
 
netwind
Гуру
 
netwind's Avatar
Default
0

Quote:
Originally Posted by ERT View Post
Как однажды тебе это может помешать зайти на сервер не вспомнив пароль?
ну вот пытаешься ты удаленно через GPRS что-то починить находясь в поезде в совершенно новом месте да еще и забыв пароль. В принципе с десятого раза ты бы его вспомнил и вошел бы, но скрипты уже забанили этого gprs-провайдера.
Quote:
Originally Posted by ERT View Post
"баловства" всяких недорослей, которые будут мешать нормальной работе вашего веб сервера.
так и без защиты мне не мешают.
 
 
ERT
Знаток
Default
0

А Вы все пароли в голове держите? Или у Вас он везде один и тот же? Лично я в txt файле, на флешке, на случай если забуду (у меня их просто дофига).
Я думаю, что серьезные работы с сервером, находясь в поезде, делать не стоит.
Эта дискуссия может длиться до бесконечности. Вы свое мнение выразили - я свое. Остальные пусть решают - стоит им дополнительно защитить свой сервер или нет.
P.S. Два, последних вопроса. У вас есть свои, личные, серьезные проекты? Вас ddos'или?
Меня да.
 
 
хрюк
Гость
Default

Quote:
Originally Posted by ERT View Post
Лично я в txt файле, на флешке
Спасибо, записал ))
 
 
ERT
Знаток
Default
0

Я понял. Флешку не потеряйте.
А комментарий крутой. Это все? А Вы вообще поняли о чем идет речь?
По поводу хранения паролей.
У меня три сервера в инете, причем ни где-то там арендованных, а лично моих, которые я сам же и собирал. У root и пользователей разные пароли + порядка 15 баз банных, в которых пароли сгенерированы.

Last edited by ERT : 11-03-2011 at 09:58 PM.
 
 
netwind
Гуру
 
netwind's Avatar
Default
0

Quote:
Originally Posted by ERT View Post
Вы свое мнение выразили - я свое.
Ok. На этом и остановимся. И никаких P.S.
 

Tags
fail2ban, ftp, ssh


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 11:12 AM.


Powered by vBulletin® Version 3.0.16
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...