Iptables перекидывание порта/подмена источника/цели

Народ. помогите разобраться с iptables.

Есть десяток компов. До сих пор эти компы были по openVPN в общей локалке и заморачиваться с доступом к ним небыло смысла. Ко всем службам доступ был прямой.

Однако сейчас рутовый шелл передается другим людям. И нужно из соображений секурности все намеки на VPN удалить.

Доступ к нужным портам сейчас происходит через ssh -L :
:127.0.0.1: -L ... через ссервак.

Осталось только сбор логов настроить.

До этого все компы стучались напрямую на сервак через vpn. Сервак же разруливал - какие логи куда ложить.

Решил действовать по аналогии со службами на хостах, перекинуть все через ssh командой

ssh host$N -R 127.0.0.1:514:127.0.0.1:514 -L ....
А на сервере слушать syslog-ng-ом 127.0.0.1:514. Получилось не так как хотелось бы. Логи собираются. Но syslog-ng определяет host по ip-адресу с которого льются логи. А поскольку все логи льются с localhost - получилась полная каша.

Тогда решил сделать по-другому. Вешать каждый хост на свой отдельный порт на localhost на сервере.

ssh host$N -R 127.0.0.1:514:127.0.0.1:$((500+$N)) -L ....

И уже на сервере при помощи iptables скармливать syslog-у якобы с разных IP.

Кто-нибудь может обьяснить как правильно это надо было делать?
Брожения по вики и howto-шкам привели к следующему(не работающему) варианту

#!/bin/bash

IPTABLES=`which iptables`
iptables(){
        echo "iptables $*"
        $IPTABLES $*
}
echo "Маркируем входящие пакеты на порты 501-510"
for m in $(seq 1 10); do
        echo "================="
        iptables -t mangle -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -p tcp --dport $((500+$m)) -j MARK --set-mark $((64+$m))
        echo "---"
        #echo "этим же пакетам и переделываем источник"
        iptables -t nat -A POSTROUTING -m mark --mark $((64+$m)) -j SNAT -p tcp --to-source 10.100.100.${m}
        echo "================="
        #echo "Маркируем исходящие пакеты от syslog-ng"
        iptables -t mangle -A OUTPUT -s 10.100.100.1 -p tcp --sport 514 -d 10.100.100.$((30+$m)) -j MARK --set-mark $((96+$m))
        echo "---"
        #echo "этим же пакетам и переделываем src и sport"
        iptables -t nat -A POSTROUTING -m mark --mark $((96+$m)) -j SNAT -p tcp --to-source 127.0.0.1:$((501+$m))
done
echo "================="
echo "Теперь всем ЭТИМ пакетам (с меткой 0-31) меняем dst"
iptables -t nat -A PREROUTING -m mark --mark 64/$(( 0xffff - 31 )) -j DNAT -p tcp --to-destination 10.100.100.1:514
echo "================="
echo "меняем пакетам идущим от syslog dst на 127.0.0.1"
iptables -t nat -A PREROUTING -m mark --mark 96/$(( 0xffff - 31 )) -j DNAT -p tcp --to-destination 127.0.0.1

Судя по тому что выдает lsof, и отсутствии следов в логах, проблема в возврате пакетов от syslog и обратном преобразовании ИП в 127.0.0.1 с привязкой по портам

Ничего не понял

Ничего не понял

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Ничего не понял

Дано:
НА СЕРВЕРЕ
ssh host1 -R 127.0.0.1:514:127.0.0.1:501 ## слушает на host1 127.0.0.1:514 и пересылает это все на порт localhost-а 501
ssh host2 -R 127.0.0.1:514:127.0.0.1:502
...
ssh host10 -R 127.0.0.1:514:127.0.0.1:510

syslog-ng слушает на сервере интрефейс:порт 10.100.100.1:514

Надо:
Перенаправить эти соединения на сервере так, чтоб syslog-ng воспринимал это как соединение с...
host1 (10.100.100.31)
host2 (10.100.100.32)
...
host10 (10.100.100.40)

Зачем:
Если напрямую толкать все эти соединения на 10.100.100.1:514 через команды
ssh hostN -R 127.0.0.1:514:10.100.100.1:514 - то получим что syslog будет считать это все соединением с IP 10.100.100.1. Его и будет считать host-ом на котором произошло событие, т.е. вместо структурированных логов получаем кашу из всех логов приходящих ото всех машин без возможности как-то это разпарсить.

Кроме как iptables-ом на сервере, как я понимаю тут ничего не сделать. И как мне кажется надо NAT-ить.

С уважением и всё такое

А, понял, что ничего не

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

Насколько я понимаю, стоит задача логгирования 10 хостов, при этом рутовые шеллы на этих машинах вам единолично неподконтрольны.
В этом случае, товарищь КО и, я бы даже сказал адмирал ЯП, намекают, что при деструктивных действиях самого рута вы все равно НИЧЕГО не увидете, кроме болта :) в логах.

Также рекомендую иногда все таки посещать курс "операционные системы" и "Комьютерная безопасность" , где вам в доступной форме
Скажу только, что в рамках модели DAC задача невыполнима

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".