Iptables перекидывание порта/подмена источника/цели
Народ. помогите разобраться с iptables.
Есть десяток компов. До сих пор эти компы были по openVPN в общей локалке и заморачиваться с доступом к ним небыло смысла. Ко всем службам доступ был прямой.
Однако сейчас рутовый шелл передается другим людям. И нужно из соображений секурности все намеки на VPN удалить.
Доступ к нужным портам сейчас происходит через ssh -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 ;)