LINUX.ORG.RU

Мониторинг ssh через 1 или 2 хопа

 ,


0

1

Сап, ЛОР. Есть одна тян Есть один камплюктер, до которого можно достучаться вот так

ssh root@172.23.1.231 -p 3598  -t ssh 10.254.10.252 

Установить агент нет возможности, поэтому настраиваю через SSH-agent. Собственно что делаю:

  1. До первого хоста (172.23.1.231) и сам ССХ агент легко добирается. Проверяю этот факт результатом команды hostname -f, а также вижу в логах открытие сессии и правильный автоматический ввод пароля
  2. До второго хопа доходит, но пишет, что Cannot read data from SSH server. Это я в Executed Scripts в веб морде указал ssh 10.254.10.252 hostname. Timeout (/etc/zabbix/zabbix-server.conf) поменял на 10, потом на 20, после на 30 - всё бестолку. Походу не в таймауте дело. Хотя сессия открывается и авторизация проходит успешно (опять же, вижу это в логах).
  3. Удивительно, что journalctl -f -u zabbix_server_mysql.service вообще не расположен к общению. То есть я не вижу там ничего, кроме того что сервер успешно запущен и клёво функционирует.
  4. Пытался сделать проверку через внешний скрипт, но он как будто бы вообще игнорируется. Сам скрипт здесь. Во первых, у меня не оказалось директории /usr/share/zabbix/externalscripts/ , поэтому я её сам создал, назначил права на исполнение и указал оную в конфиге заббикс сервера.
[root@arch-zabbix externalscripts]# pwd
/usr/share/zabbix/externalscripts
[root@arch-zabbix externalscripts]# ls -la
total 12
drwxr-xr-x 2 root root 4096 Sep 28 16:20 .
drwxr-xr-x 3 root root 4096 Sep 28 15:51 ..
-rwxr-xr-x 1 root root  690 Sep 28 16:20 test.sh
[root@arch-zabbix externalscripts]# 

Никаких ошибок, просто ноль результата.

Щито делать, посоны? Мне нужно, чтобы дата модификации одного файлика мониторилась, а заббикс не хочет. Нет ли здесь следов не дружественной политики?

что мешает запускать по ключу на 172.23.1.231 сразу ssh на следующий хост?

В authorized_keys можно указать команду которая выполнится вместо shell.

В некоторых случаях '-t' как раз вреден, а иногда нужно в явном виде указать '-T'.

Тут еще кто-то про jump host вспоминал.

vel ★★★★★
()

Попробуй добраться до второго хопа так:

ssh -J root@172.23.1.231:3598 10.254.10.252

Если работает, добавь в ~/.ssh/config вот это:

Host bastion
  Hostname 172.23.1.231
  Port 3598
  User root

Host to-be-monitored
  Hostname 10.254.10.252
  ProxyJump bastion

и потом настрой zabbix, чтобы он мониторил хост to-be-monitored.

AEP ★★★★★
()

Поддержу два совета про туннель выше. И добавлю, что это не только удобнее, но и безопаснее. Промежуточный хост, которому ты, судя по задаче, даже не хочешь давать ключи, в твоей схеме всё равно будет иметь доступ к mitm-у этого транзитного трафика, то есть если его взломают то взломщик автоматом получит доступ и к 10.254.10.252. В схеме же с туннелем, хоть через -J хоть через -L - взлом промежуточного хоста никакие другие хосты под угрозу не поставит, ему будет виден только зашифрованный транзитный трафик.

firkax ★★★★★
()
Ответ на: комментарий от SpaceRanger

на «доступном сервере» 172.23.1.231

# перенаправить пакет пришедший на 172.23.1.231:8953 на адрес 10.254.10.252:22

iptables -t nat -I PREROUTING -p tcp -d 172.23.1.231 --dport 8953 -j DNAT --to-destination 10.254.10.252:22

# заменить адрес отправителя на адрес "доступного сервера", чтобы втророй сервер знал куда возвращать ответ

iptables -t nat -I POSTROUTING -p tcp --dport 22 -d 10.254.10.252 -j SNAT --to-source 172.23.1.231

где-то так

net.ipv4.ip_forward=1 (это в файле /etc/sysctl.conf)

zabbix обращается к 172.23.1.231:8953, а на самом деле попадает к 10.254.10.252:22

futurama ★★★★★
()
Последнее исправление: futurama (всего исправлений: 2)
Ответ на: комментарий от futurama
[root@TEST ~]# iptables -t nat -L -n 
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            172.23.1.231        tcp dpt:3598 to:10.254.10.238:22 

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       tcp  --  0.0.0.0/0            10.254.10.238       tcp dpt:22 to:172.23.1.231:3598 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

А что то не работает. Я верно понимаю, что коннект теперь должен быть ssh root@172.23.1.231? Просто висит команда и приглашения воода пароля нет.

SpaceRanger ★★
() автор топика
Ответ на: комментарий от futurama
└─[$] ssh root@172.23.1.231 -p3598                                                                                                                                                                                                                                                                               [12:27:32]
ssh: connect to host 172.23.1.231 port 3598: No route to host

ВВодил следующее

iptables -t nat -I POSTROUTING -p tcp --dport 22 -d 10.254.10.238 -j SNAT --to-source 172.23.1.231:3598
iptables -t nat -I PREROUTING -p tcp -d 172.23.1.231 --dport 3598 -j DNAT --to-destination 10.254.10.238:22

Изучив коману с DNAT, я подумал, что и для SNAT надо указать порт для 172.23.1.231. Не?

SpaceRanger ★★
() автор топика
Ответ на: комментарий от futurama
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    DNAT       tcp  --  0.0.0.0/0            172.23.1.231        tcp dpt:3598 to:10.254.10.238:22 

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    SNAT       tcp  --  0.0.0.0/0            10.254.10.238       tcp dpt:22 to:172.23.1.231 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
[root@JAHONT-KUBAN-TELECOM ~]# 

Ну так тоже пишет

└─[$] ssh root@172.23.1.231 -p3598                                                                                                                                                                                                                                                                               [12:34:54]
ssh: connect to host 172.23.1.231 port 3598: No route to host
SpaceRanger ★★
() автор топика
Ответ на: комментарий от futurama
[root@TEST ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736

Тут всё норм с виду

SpaceRanger ★★
() автор топика