Иногда нужно знать, кто подключается к вашей системе - особенно если это сервер с внешним доступом. Мы можем написать лёгкий Bash-демон, который будет отслеживать входящие соединения в реальном времени, логировать и даже уведомлять при подозрительной активности.
Скрипт будет запускаться в фоне, опрашивать ss или netstat, фильтровать новые IP-адреса, логировать соединения и уведомлять о каждом новом.
📱 Пример скрипта-демона
#!/bin/bash
LOG="/var/log/connwatch.log"
KNOWN="/tmp/known_ips.txt"
INTERVAL=10
touch "$KNOWN"
log() {
echo "[$(date '+%F %T')] $1" >> "$LOG"
}
while true; do
# Получаем список активных IP-адресов (входящие TCP)
ss -tn src :22 | awk 'NR>1 {print $5}' | cut -d: -f1 | sort -u > /tmp/current_ips.txt
# Находим новые IP-адреса
comm -13 "$KNOWN" /tmp/current_ips.txt > /tmp/new_ips.txt
while read -r ip; do
[[ -n "$ip" ]] || continue
log "Новое подключение: $ip"
# Telegram уведомление (опционально)
TOKEN="your_token"
CHAT_ID="your_chat_id"
MSG="Новое SSH-соединение: $ip"
curl -s -X POST https://api.telegram.org/bot$TOKEN/sendMessage \
-d chat_id="$CHAT_ID" -d text="$MSG" > /dev/null
done < /tmp/new_ips.txt
mv /tmp/current_ips.txt "$KNOWN"
sleep "$INTERVAL"
done
▪️ Настройка автозапуска как systemd-сервиса
# /etc/systemd/system/connwatch.service
[Unit]
Description=Connection Watcher
[Service]
ExecStart=/usr/local/bin/connwatch.sh
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable --now connwatch.service
Такой простой демон может стать способом аудита и обнаружения попыток взлома в реальном времени, особенно на серверах без продвинутого мониторинга.
BashTex 📱 #bash #utils