Сканирование на вредоносное ПО и руткиты: rkhunter и ClamAV
Защитите Linux-сервер от вредоносного ПО и руткитов. Установка rkhunter и ClamAV, настройка сканирования, интерпретация результатов, планирование сканирований и реагирование на инциденты.
Концепции NAT, правила DNAT/SNAT, проброс портов с iptables и nftables, маскарадинг и сценарии использования: игровые серверы, веб-серверы за NAT.
Проброс портов и NAT (Network Address Translation) — фундаментальные инструменты управления сетевым трафиком. Вы используете эти техники для открытия сервисов за сервером наружу, настройки игровых серверов или управления несколькими сервисами через один IP.
NAT (Network Address Translation) — сетевая техника, изменяющая адреса источника или назначения IP-пакетов. Есть два основных типа:
# Включить временно
sudo sysctl -w net.ipv4.ip_forward=1
# Включить постоянно
sudo nano /etc/sysctl.conf
# Добавить строку:
# net.ipv4.ip_forward=1
# Применить изменения
sudo sysctl -p
# Проверить
cat /proc/sys/net/ipv4/ip_forward
# Вывод: 1
# Перенаправить внешний порт 80 на внутренний сервер
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
# Перенаправить внешний порт 443 на внутренний сервер
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.1.10:443
# Перенаправить на другой номер порта (внешний 8080 → внутренний 80)
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
# Разрешить перенаправленный трафик
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 443 -j ACCEPT
# Проброс UDP-порта для игрового сервера
sudo iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
sudo iptables -A FORWARD -p udp -d 192.168.1.30 --dport 27015 -j ACCEPT
# Masquerade — для динамического IP
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# SNAT — для статического IP (эффективнее)
sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1
# 1. Очистить существующие правила
sudo iptables -F
sudo iptables -t nat -F
# 2. Политики по умолчанию
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# 3. Loopback и установленные соединения
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# 4. SSH-доступ
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 5. Правила проброса портов
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.1.10:443
sudo iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
# 6. Правила FORWARD
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 443 -j ACCEPT
sudo iptables -A FORWARD -p udp -d 192.168.1.30 --dport 27015 -j ACCEPT
# 7. Masquerade
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 8. Сохранить правила
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
#!/usr/sbin/nft -f
flush ruleset
table ip nat {
chain prerouting {
type nat hook prerouting priority -100;
tcp dport 80 dnat to 192.168.1.10:80
tcp dport 443 dnat to 192.168.1.10:443
udp dport 27015 dnat to 192.168.1.30:27015
}
chain postrouting {
type nat hook postrouting priority 100;
oif eth0 masquerade
}
}
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related accept
tcp dport 22 accept
}
chain forward {
type filter hook forward priority 0; policy drop;
ct state established,related accept
ip daddr 192.168.1.10 tcp dport { 80, 443 } accept
ip daddr 192.168.1.30 udp dport 27015 accept
}
chain output {
type filter hook output priority 0; policy accept;
}
}
# Сервер CS2
sudo iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
sudo iptables -t nat -A PREROUTING -p tcp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
sudo iptables -A FORWARD -d 192.168.1.30 -p udp --dport 27015 -j ACCEPT
# Сервер Minecraft
sudo iptables -t nat -A PREROUTING -p tcp --dport 25565 -j DNAT --to-destination 192.168.1.31:25565
sudo iptables -A FORWARD -d 192.168.1.31 -p tcp --dport 25565 -j ACCEPT
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.10:443
sudo iptables -A FORWARD -i eth0 -d 192.168.1.10 -p tcp -m multiport --dports 80,443 -j ACCEPT
# Просмотр таблицы NAT
sudo iptables -t nat -L -n -v
# Просмотр таблицы отслеживания соединений
sudo conntrack -L
# Мониторинг трафика на конкретном порту
sudo tcpdump -i eth0 port 80
# Проверка IP-пересылки
cat /proc/sys/net/ipv4/ip_forward
После добавления правил проброса портов не забудьте добавить как правила PREROUTING (DNAT), так и FORWARD. Добавления только правила DNAT недостаточно — трафик также должен быть разрешён в цепочке FORWARD.
Проброс портов и NAT — фундаментальные компоненты управления сетью Linux. Правильно настроив правила DNAT, SNAT и masquerade с помощью iptables или nftables, вы можете открыть игровые серверы, веб-сервисы и другие приложения из-за NAT.
Проверьте по порядку: 1) Включена ли IP-пересылка? (cat /proc/sys/net/ipv4/ip_forward), 2) Есть ли правило PREROUTING DNAT? (sudo iptables -t nat -L -n -v), 3) Есть ли правило FORWARD? (sudo iptables -L FORWARD -n -v), 4) Запущен ли целевой сервер и слушает ли он порт?
Masquerade динамически использует IP-адрес исходящего интерфейса — идеально для IP, меняющихся через DHCP. SNAT указывает фиксированный IP-адрес и более эффективен. SNAT предпочтителен для серверов со статическими IP.
Нет, один внешний порт может быть перенаправлен только на один внутренний адрес. Используйте разные внешние порты: например, внешний 8080 → внутренний сервер 1:80, внешний 8081 → внутренний сервер 2:80. Или используйте балансировщик нагрузки.
Да, правила iptables по умолчанию временные. Сделайте их постоянными с помощью 'sudo netfilter-persistent save' или 'sudo iptables-save > /etc/iptables/rules.v4'. Для nftables используйте файл /etc/nftables.conf.
Нет, правила PREROUTING не применяются к интерфейсу loopback. Для доступа к пробрасываемому порту через localhost добавьте правило DNAT в цепочке OUTPUT.
Защитите Linux-сервер от вредоносного ПО и руткитов. Установка rkhunter и ClamAV, настройка сканирования, интерпретация результатов, планирование сканирований и реагирование на инциденты.
Защитите сервер от SSH брутфорс-атак с помощью Fail2Ban. Установка, настройка jail.local, джейлы для Nginx/Apache, белый список IP, мониторинг блокировок и email-уведомления.
Настройте VPN-сервер WireGuard: генерация ключей, конфигурация сервера и клиента, IP-пересылка, правила брандмауэра и настройка клиентов Windows/Linux/Android.