/hackcomp
zemenjo
·
2 years ago
Как защититься от Shodan и Censys | Обеспечение безопасности серверов
Обеспечение безопасности сервера - одна из важнейших задач для грамотного администрирования.
Помимо хакеров, которые анализируют открытые порты, уязвимости системы и пытаются атаковать, существуют такие поисковые системы как "Shodan" и "Censys", ну вы наверное это и так знаете.
А если нет, то вот вам краткое объяснение:
Shodan — поисковая система, позволяющая пользователям искать различные типы серверов, подключённых к сети Интернет, с использованием различных фильтров.
Censys — новый поисковик по интернету вещей. Подобно Shodan, он опрашивает все публично доступные IP-адреса и протоколирует их отклики.
Благодаря данным проектам, хакерам стало проще искать уязвимые системы и информацию о них.
Камеры видео-наблюдения, домашние компьютеры, смартфоны, системы безопасности, сервера и т.п. - всё это возможно найти в Shodan и взломать.
Сегодня мы с вами посмотрим, как можно защитить свой сервер от этих поисковиков, но вы должны помнить, что это не защищает вас на 100% от хакерских атак. Помимо этих действий вы ещё должны безопасно настроить сам сервер и убедиться в безопасности сети сервера
Нам необходимо блокировать всех, кто пытается достучаться на любой незанятый порт, чтобы избежать сканирования портов.
Для этого нам понадобятся:
1. iptables;
2. ipset;
3. rsyslog.
План:
1. Настроить iptables так, чтобы он разрешал то, что должно работать, а остальное логировал с определённым тэгом;
2. Настроить rsyslog так, чтобы он отфильтровывал сообщения по тэгу, вырезал из них адреса IP и писал их в файл/пайп;
3. Создать список в ipset, куда мы будем наваливать адреса IP из пайпа, а iptables будет блокировать всё в этом списке;
4. Написать софт, который будет читать пайп и добавлять IP в список ipset'а.
Настройка iptables:
#!/bin/bash
ipset create -exist whitelist hash:net comment
ipset create -exist blacklist hash:ip hashsize 32768 maxelem 1000000 timeout 86400
# Очищаем все правила
iptables -P INPUT ACCEPT
iptables -F INPUT
# Пропускаем все локальные соединения и уже установленные:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
# Например разрешить весь трафик из вашей корпоративной VPN и с определённых IP
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -s 8.8.8.8 -j ACCEPT
# Разрешить все IP из whitelist
iptables -A INPUT -m set --match-set whitelist src -j ACCEPT
# Дропать все пакеты от IP из блэклиста
iptables -A INPUT -m set --match-set blacklist src -j DROP
# Разрешить пинги
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# Разрешить подключения к вашему веб-серверу, так же настраиваете все остальные сервисы
iptables -A INPUT -p tcp --dport 443 -m comment --comment "nginx" -j ACCEPT
# А потом логируем всё остальное:
iptables -A INPUT -j LOG --log-prefix "iptables-log: "
Настройка rsyslog:
Создаём файл /etc/rsyslog.d/10-iptables.conf со следующим содержанием:
$ActionQueueType Direct
$template SrcIp,"%msg:R,ERE,1:.* SRC=([0-9\.]+) --end%\n"
:msg, contains, "iptables-log: " |/var/log/iptables.pipe;SrcIp
& stop
Потом создаём пайп с помощью mkfifo /var/log/iptables.pipe  и перезапускаем rsyslog (например с помощью systemctl restart rsyslog).
После этого вы можете запустить  cat /var/log/iptables.pipe  и ждать листинга айпи-адресов атакующих прямо в консоль.
Настройка ipset:
1 comment