Домашний сервер на Ubuntu

Настройка защиты

I. Firewall - защищает систему от нежелательных подключений (как извне, так и изнутри системы).


1. Показ существующих правил: iptables -S .

2. Сброс существующих правил: iptables -F .

3. Включение/стоп фаервола: ufw enable [disable] .

4. С учетом предыдущего раздела, настройки фаервола целесообразно прописывается в файл: /etc/iptables.up.rules .
  • :INPUT DROP [0:0] {блокирование всего входного, что прямо не прописано далее}
  • :FORWARD DROP [0:0] {блокирование всего роутинга, который прямо не прописан далее}
  • :OUTPUT ACCEPT [0:0] {разрешение всего исходящего}
  • -A INPUT -p icmp -j ACCEPT {разрешение пингов}
  • -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT {разрешение ssh}
  • -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT {разрешение веб-сервера}
  • -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT {разрешение веб-сервера по протоколу SSL}
  • -A INPUT -p tcp -m tcp --dport 548 -j ACCEPT {разрешение работы по AFP, например, нужен для работы Time Machine}
  • -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT {разрешение webmin}
  • -A INPUT -p udp -m udp --dport 1024:65535 --sport 53 -j ACCEPT {разрешение получения информации от внешних DNS по протоколу UDP}
  • -A INPUT -p tcp -m tcp --dport 1024:65535 --sport 53 -j ACCEPT {разрешение получения информации от внешних DNS по протоколу TCP}
  • -A INPUT -i lo -j ACCEPT {разрешены входящие запросы от lookback интерфейса}
  • -A INPUT -i eth1 -j ACCEPT {разрешение всех входящих запросов от внутренней сети}
  • -A INPUT -i eth0 -m state --state ESTABLISHED -j ACCEPT {разрешение входящих запросов от внешней сети, если они относятся к уже установленному соединению}
  • -A INPUT -i eth0 -m state --state RELATED -j ACCEPT {разрешение входящих запросов от внешней сети, если они относятся к соединению, относящемуся к уже установленному}
  • -A FORWARD -i eth1 -o eth0 -j ACCEPT {роутинг от внутренней сети к внешней}
  • -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED -j ACCEPT {роутинг от внешней к внутренней, если пакеты относятся к уже установленному соединению}
  • -A FORWARD -i eth0 -o eth1 -m state --state RELATED -j ACCEPT {роутинг от внешней к внутренней, если пакеты относятся к соединению, относящемуся к уже установленному}


II. Для защиты от перебора паролей используется утилита fail2ban, которая позволяет автоматически банить пользователя после нескольких неудачных попыток авторизации.

5. Установка: sudo apt-get install fail2ban . К работе готова сразу после установки.

6. Настройки прописываются в файле /etc/fail2ban/jail.conf:
  • bantime - время бана в секундах;
  • maxretry - количество попыток подключения до бана;
  • для защиты от перебора паролей конкретной службы нужно поставить значение true напротив enable в блоке настроек, посвященных соответствующей службе. По умолчанию защита включена только для SSH.

7. Перезапуск утилиты с новыми параметрами: sudo /etc/init.d/fail2ban restart .

8. Логи утилиты: /var/log/fail2ban.log.