UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

102 lines (65 loc) 6.11 kB
**Важно:** Использование блокировки по IP защитит только от тривиальных атак, но для работы потребуется дополнительный демон и правильно настроенное логирование (раздел /var может переполниться, особенно если злоумышленник целенаправленно ломает сервер). К тому же, если злоумышленники узнают ваш IP адрес, они могут послать пакеты с подменёнными заголовками отправителя и отберут у вас доступ к серверу. [SSH keys](/index.php/SSH_keys "SSH keys") предоставляют элегантное решение проблемы брут форса без перечисленных проблем. [Fail2ban](http://www.fail2ban.org/wiki/index.php/Main_Page) сканирует различные текстовые лог-файлы и блокирует IP, которые делают слишком много ошибок ввода пароля, обновляя правила файрвола для отклонения IP-адреса, сходно с [Sshguard](/index.php/Sshguard "Sshguard"). **Важно:** Для корректной работы инструмент должен правильно парсить IP-адреса в лог-файлах. Всегда **проверяйте** лог-фильтры для каждого приложения, требующего защиты. ## Contents * [1 Установка](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0) * [1.1 systemd](#systemd) * [2 Укрепление](#.D0.A3.D0.BA.D1.80.D0.B5.D0.BF.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5) * [2.1 Возможности](#.D0.92.D0.BE.D0.B7.D0.BC.D0.BE.D0.B6.D0.BD.D0.BE.D1.81.D1.82.D0.B8) * [2.2 Filesystem Access](#Filesystem_Access) * [3 SSH jail](#SSH_jail) * [4 Смотрите также](#.D0.A1.D0.BC.D0.BE.D1.82.D1.80.D0.B8.D1.82.D0.B5_.D1.82.D0.B0.D0.BA.D0.B6.D0.B5) ## Установка Установите [fail2ban](https://www.archlinux.org/packages/?name=fail2ban) из [официальных репозиториев](/index.php/Official_repositories_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "Official repositories (Русский)"). Если вы хотите, чтобы Fail2ban отсылал письма, когда кто-то был забанен, вы должны настроить [SSMTP](/index.php/SSMTP "SSMTP") (к примеру). ### systemd Используйте юнит сервис `fail2ban.service`, в соответствии с инструкциями [systemd](/index.php/Systemd "Systemd"). ## Укрепление На данный момент fail2ban требует запуска от имени root, следовательно, вы можете дополнительно укрепить процесс с помощью systemd. Ссылка: [systemd for Administrators, Part XII](http://0pointer.de/blog/projects/security.html) ### Возможности For added security consider limiting fail2ban capabilities by specifying `CapabilityBoundingSet` in the [drop-in configuration file](/index.php/Systemd#Editing_provided_units "Systemd") for the provided `fail2ban.service`: `/etc/systemd/system/fail2ban.service.d/capabilities.conf` ``` [Service] CapabilityBoundingSet=CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW ``` In the example above, `CAP_DAC_READ_SEARCH` will allow fail2ban full read access, and `CAP_NET_ADMIN` and `CAP_NET_RAW` allow setting of firewall rules with [iptables](/index.php/Iptables "Iptables"). Additional capabilities may be required, depending on your fail2ban configuration. See [capabilities(7)](http://jlk.fjfi.cvut.cz/arch/manpages/man/capabilities.7) for more info. ### Filesystem Access Also considering limiting file system read and write access, by using *ReadOnlyDirectories* and *ReadWriteDirectories*, again under the `[Service]` section. For example: ``` ReadOnlyDirectories=/ ReadWriteDirectories=/var/run/fail2ban /var/lib/fail2ban /var/spool/postfix/maildrop /tmp ``` In the example above, this limits the file system to read-only, except for `/var/run/fail2ban` for pid and socket files, and `/var/spool/postfix/maildrop` for [postfix](/index.php/Postfix "Postfix") sendmail. Again, this will be dependent on you system configuration and fail2ban configuration. The `/tmp` directory is needed for some fail2ban actions. Note that adding `/var/log` is necessary if you want fail2ban to log its activity. ## SSH jail Edit `/etc/fail2ban/jail.conf` and modify the ssh-iptables section to enable it and configure the action. **Note:** Due to the possibility of the `jail.conf` file being overwritten or improved during a distribution update, it is recommended to provide customizations in a `jail.local` file, or separate *.conf* files under the `jail.d/` directory, e.g. `jail.d/ssh-iptables.conf`. If your firewall is iptables: ``` [ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com] logpath = /var/log/auth.log maxretry = 5 ``` Fail2Ban from version 0.9 can also read directly from the systemd journal by setting `backend = systemd`. If your firewall is shorewall: ``` [ssh-shorewall] enabled = true filter = sshd action = shorewall sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com] logpath = /var/log/auth.log maxretry = 5 ``` **Note:** You can set `BLACKLIST` to `ALL` in `/etc/shorewall/shorewall.conf` otherwise the rule added to ban an IP address will affect only new connections. Also do not forget to add/change: ``` LogLevel VERBOSE ``` in your `/etc/ssh/sshd_config`. Else, password failures are not logged correctly. ## Смотрите также * [sshguard](/index.php/Sshguard "Sshguard")