Проверка доступности локальных Unix-сервисов: nc -U и curl --unix-socket
Не все сервисы в Linux слушают TCP-порты. Многие приложения работают только через UNIX-сокеты - локальные каналы связи между процессами.
Например:
/run/docker.sock
/run/php/php-fpm.sock
/run/containerd/containerd.sock
Снаружи такие сервисы не видны через обычный nmap, но внутри системы они могут иметь важное значение.
▪️Найти активные UNIX-сокеты
ss -xl
Пример:
u_str LISTEN 0 128 /run/docker.sock
Теперь можно проверить, отвечает ли сервис.
▪️Проверка через nc
Netcat умеет подключаться к UNIX-сокетам:
nc -U /run/docker.sock
Если соединение установлено - сокет доступен.
Для HTTP-сервисов можно отправить запрос вручную:
printf "GET / HTTP/1.0\r\n\r\n" | nc -U /run/service.sock
▪️Проверка HTTP API через curl
Многие локальные API работают через UNIX-сокеты:
curl --unix-socket /run/docker.sock http://localhost/version
Здесь localhost не используется как сетевой адрес - он нужен только для формирования HTTP-запроса.
▪️Пример с Docker
Вместо:
docker version
можно напрямую обратиться к API:
curl --unix-socket /var/run/docker.sock \
http://localhost/_ping
Ответ:
OK
означает, что Docker daemon доступен.
▪️Проверка прав доступа
Даже если сервис работает, доступ может быть ограничен:
ls -l /run/docker.sock
Например:
srw-rw---- root docker docker.sock
Только пользователи группы docker смогут подключиться.
▪️Почему это важно
UNIX-сокеты часто остаются вне стандартного мониторинга. Администратор проверяет открытые порты, но забывает про локальные API и IPC-каналы.
Проверка через ss, nc -U и curl --unix-socket помогает быстро понять:
жив ли сервис;
кто имеет к нему доступ;
отвечает ли локальное API;
нет ли неожиданного открытого канала между процессами.
BashTex 📱 #sort
Не все сервисы в Linux слушают TCP-порты. Многие приложения работают только через UNIX-сокеты - локальные каналы связи между процессами.
Например:
/run/docker.sock
/run/php/php-fpm.sock
/run/containerd/containerd.sock
Снаружи такие сервисы не видны через обычный nmap, но внутри системы они могут иметь важное значение.
▪️Найти активные UNIX-сокеты
ss -xl
Пример:
u_str LISTEN 0 128 /run/docker.sock
Теперь можно проверить, отвечает ли сервис.
▪️Проверка через nc
Netcat умеет подключаться к UNIX-сокетам:
nc -U /run/docker.sock
Если соединение установлено - сокет доступен.
Для HTTP-сервисов можно отправить запрос вручную:
printf "GET / HTTP/1.0\r\n\r\n" | nc -U /run/service.sock
▪️Проверка HTTP API через curl
Многие локальные API работают через UNIX-сокеты:
curl --unix-socket /run/docker.sock http://localhost/version
Здесь localhost не используется как сетевой адрес - он нужен только для формирования HTTP-запроса.
▪️Пример с Docker
Вместо:
docker version
можно напрямую обратиться к API:
curl --unix-socket /var/run/docker.sock \
http://localhost/_ping
Ответ:
OK
означает, что Docker daemon доступен.
▪️Проверка прав доступа
Даже если сервис работает, доступ может быть ограничен:
ls -l /run/docker.sock
Например:
srw-rw---- root docker docker.sock
Только пользователи группы docker смогут подключиться.
▪️Почему это важно
UNIX-сокеты часто остаются вне стандартного мониторинга. Администратор проверяет открытые порты, но забывает про локальные API и IPC-каналы.
Проверка через ss, nc -U и curl --unix-socket помогает быстро понять:
жив ли сервис;
кто имеет к нему доступ;
отвечает ли локальное API;
нет ли неожиданного открытого канала между процессами.
BashTex 📱 #sort