Настройка тайм-аута SSH сессий

Чтобы настроить тайм-аут SSH сессий, посмотрим где находится файл конфигурации SSH сервера:

sudo find / -name sshd_config

Откроем его в любом текстовом редакторе, например nano:

sudo nano /etc/ssh/sshd_config

Читать далее Настройка тайм-аута SSH сессий

Как отсоединить SSH пользователя

Допустим через SSH подключено несколько пользователей.

Сначала посмотрим список онлайн пользователей:

w

Допустим отобразилось следующая информация (где test — это логин пользователя):

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
test     tty1                      11:20    1:07   0.03s  0.03s -bash
test     pts/0    192.168.1.5      11:21   13.00s  0.02s  0.02s -bash
test     pts/1    192.168.1.3      11:21    0.00s  0.02s  0.00s w

tty1 — это клиент вошедший локально, то есть находится возле компьютера.
pts/1 — судя например по IP и WHAT, допустим что это мы, соответственно pts/0 это клиент которого мы хотим отсоединить.

Смотрим список процессов и их PID:

ps faux |grep sshd

У меня отобразилось:

root       946  0.0  0.5  65508  5368 ?        Ss   12:00   0:00 /usr/sbin/sshd -D
root      1147  0.0  0.6  92828  6920 ?        Ss   12:01   0:00  \_ sshd: test [priv]
test      1178  0.0  0.3  92828  3384 ?        S    12:01   0:00  |   \_ sshd: test@pts/0
root      1192  0.0  0.6  92828  6592 ?        Ss   12:02   0:00  \_ sshd: test [priv]
test      1223  0.0  0.3  92828  3532 ?        S    12:02   0:00      \_ sshd: test@pts/1
test      1248  0.0  0.0  15468   956 pts/1    S+   12:25   0:00              \_ grep --color=auto sshd

Находим test@pts/0 и соответственно 1178 — это нужный PID.

Завершаем процесс указав его ID, после чего пользователь сразу отсоединится:

sudo kill -9 1178

Смотрите также мои статьи:
Установка и настройка SSH
Настройка тайм-аута SSH сессий

Подключение к SSH с использованием ключей

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

На локальной машине генерируем ключи:

sudo ssh-keygen -t rsa

Копируем публичный ключ на удаленный сервер:

sudo ssh-copy-id -i ~/.ssh/id_rsa.pub -p PORT USER@HOST

Если возникает ошибка при копировании ключа, то можно вручную скопировать строку из id_rsa.pub на удаленный сервер в файл authorized_keys.

Указанные команды нужно выполнять от того пользователя, от которого будет выполнятся подключение.
Например если от root, то нужно перед двумя командами выше выполнить команду:

sudo -i

Убрать хост можно командой:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R [HOST]:22

Смотрите также:
Установка и настройка SSH

Мониторинг количества клиентов секторной Ubiquiti по SSH из Zabbix

На тесте приведу пример получения количества клиентов подключенных к обычной секторной антенне Ubiquiti AirMax Rocket M5.
Получать данные будем через SSH.

Для проверки один раз подключимся к устройству (первый раз при подключении наберем yes и нажмем enter):

sudo -u zabbix ssh -p 22 admin@192.168.0.55

Теперь в Zabbix добавим элемент данных к шаблону или хосту, например с именем «Template Ubiquiti Rocket M5 Sector»:

Имя: любое
Тип: SSH агент
Ключ: ssh.run[clients,,22,utf8]
Метод аутентификации: Пароль
Имя пользователя: ИМЯ
Пароль: ПАРОЛЬ
Выполняемый скрипт: команда выполняемая на устройстве (смотрите ниже)

Пример команды отображаемой количество подключенных клиентов:

wstalist |grep "mac" |wc -l

Соответственно создадим график элементу данных, а также триггер:

Имя: На секторной антенне  {HOST.NAME} > 40 клиентов
Выражение: {Template Ubiquiti Rocket M5 Sector:ssh.run[clients,,22,utff8].last(#1)}>40

Смотрите также:
Настройка SSH проверок в Zabbix

Настройка SSH проверок в Zabbix

Понадобилось как-то для некоторых Linux серверов настроить SSH проверки, чтобы не устанавливать на них Zabbix-agent.
Сам Zabbix-server у меня установлен на Ubuntu Server.

Ниже по порядку опишу как настроить SSH проверки в Zabbix.

Авторизацию по SSH настроим по ключу вместо пароля, для этого остановим zabbix-agent и zabbix-server:

sudo service zabbix-agent stop
sudo service zabbix-server stop

Создадим домашнюю директорию пользователя Zabbix (для хранения ssh ключей):

sudo usermod -m -d /home/zabbix zabbix
sudo chown zabbix:zabbix /home/zabbix
sudo chmod 700 /home/zabbix

Запустим обратно zabbix-agent и zabbix-server:

sudo service zabbix-agent start
sudo service zabbix-server start

Откроем конфигурационный файл /etc/zabbix/zabbix_server.conf (в редакторе nano комбинация клавиш Ctrl+O и Enter означает сохранение, Ctrl+X выход):

sudo nano /etc/zabbix/zabbix_server.conf

Раскомментируем строку SSHKeyLocation и укажем путь к директории с ключами:

SSHKeyLocation=/home/zabbix/.ssh

Перезапустим zabbix-server:

sudo service zabbix-server restart

Генерируем ssh ключ:

sudo -u zabbix ssh-keygen -t rsa
Нажмем Enter если предлагается путь /home/zabbix/.ssh/id_rsa
На предложение зашифровать файл ключа нажмем Enter чтобы не шифровать его или введем два раза любой пароль (им будет зашифрован файл ключа и при подключении его придется указывать)

Скопируем сгенерированый ключ на сервер за которым будем наблюдать:

sudo -u zabbix ssh-copy-id -i /home/zabbix/.ssh/id_rsa.pub -p 22 root@192.168.0.55

Если возникает ошибка при копировании ключа, то можно вручную скопировать строку из id_rsa.pub на удаленный сервер в файл authorized_keys.

И попробуем подключится к удаленному серверу без ввода пароля командой:

sudo -u zabbix ssh -p 22 root@192.168.0.55

Теперь в Zabbix добавим элемент данных к шаблону или хосту:
Имя: любое
Тип: SSH агент
Ключ: ssh.run[описание,ip,порт,кодировка] (например ssh.run[cpu,192.168.0.55,22,utf8]
Метод аутентификации: Публичный ключ
Имя пользователя (на удаленном хосте): root
Файл публичного ключа: id_rsa.pub
Файл приватного ключа: id_rsa
Фраза-пароль ключа: оставим пустым если не шифровали ключ паролем
Выполняемый скрипт: команда выполняемая на удаленном сервер, примеры ниже

Приведу ниже пример команд для Linux которые можно выполнить и получить различную информацию.
Загрузка процессора за 1мин/5мин/15мин:

cat /proc/loadavg |cut -d " " -f1
cat /proc/loadavg |cut -d " " -f2
cat /proc/loadavg |cut -d " " -f3

Количество текущих запущенных процессов указанной программы:

pgrep apache2|wc -l
pgrep -c sshd

Свободное пространство в точке монтирования «/» (в мегабайтах):

df -m|grep "/$"|awk '{print $4}'

Занятое пространство в точке монтирования «/» (в процентах):

df|grep "/$"|awk '{print $5}'|tr -d "%"

Получено байт на сетевой интерфейс eth0:

cat /proc/net/dev|grep eth0|awk '{print $2}'

Отправлено байт на сетевой интерфейс eth0:

cat /proc/net/dev|grep eth0|awk '{print $10}'

Количество свободной оперативной памяти:

free |grep "Память:"|awk '{print $4}'
free |grep "Mem:"|awk '{print $4}'

Смотрите также:
Подключение к SSH с использованием ключей

Как изменить порт SSH в Ubuntu

На тесте изменю порт SSH в Ubuntu Server 14.0.4 LTS и Ubuntu Server 16.0.4 LTS.

Откроем конфигурацию SSH например в текстовом редакторе nano (в nano клавиши Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/ssh/sshd_config

Найдем строчку «Port 22» и изменим её например на «Port 58222«.

Чтобы применить изменения перезапустим ssh (на разных системах он может перезагружаться по разному, по этому приведу список возможных команд):

sudo service ssh restart
sudo /etc/init.d/ssh restart
sudo /etc/init.d/sshd restart

После перезапуска SSH, он станет доступен по новому порту, а текущая сессия на старом останется активной, по этому не отключаясь для проверки попробуем подключится по новому порту, если не пускает, то возможно в системе работает фаервол и нужно в нем разрешить новый порт, например в iptables это делается так (где 58222 наш новый порт):

sudo iptables -A INPUT -p tcp --dport 58222 -j ACCEPT

Можно разрешить средствами iptables подключение к SSH только с указанного диапазона IP адресов:

sudo iptables -A INPUT -d 192.168.0.0/24 -p tcp --dport 58222 -j ACCEPT

Если все ок, подключаемся через новый порт и можем удалить старое правило iptables, например так:

sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT

Пример команды для подключения из Linux к SSH по нестандартному порту:

ssh -p 58222 user@192.168.0.2

Посмотреть в системе на каком порту и на каких сетевых интерфейсах работает SSH можно так:

netstat -tulpan | grep ssh

WinSCP

WinSCP — графический клиент SFTP (SSH File Transfer Protocol) с открытым исходным кодом предназначенный для защищённого копирования файлов между компьютером и серверами поддерживающими эти протоколы.

Лицензия: Бесплатная
Размер файла: ~ 10 Мб
Информация: есть установочная и Portable версии
Скачать WinSCP с официального сайта

Управление оборудованием Ubiquiti по SSH

Для подключения по SSH к оборудованию Ubiquiti (UBNT) из Windows можно использовать популярную утилиту PuTTY.
Из Linux можно подключится набрав команду:

ssh user@192.168.1.2

Перед изменением настроек рекомендую сделать резервную копию командой из Linux:

sudo sshpass -p "ПАРОЛЬ" scp -oStrictHostKeyChecking=no admin@192.168.1.2:/tmp/system.cfg /backups/192.168.1.2_system.cfg

Приведу ниже список некоторых команд.
Просмотр использования памяти:

free

Информация о памяти:

cat /proc/meminfo

Просмотр использования процессора:

top

Статистика процессора:

cat /proc/stat

Информация о процессоре:

cat /proc/cpuinfo

Просмотр прерываний:

cat /proc/interrupts

Просмотр таблицы маршрутизации:

route -n

Просмотр загруженных модулей ядра:

lsmod

Информация о сетевых подключениях:

netstat

Просмотр версии ядра:

cat /proc/version

Просмотр состояния всех сетевых интерфейсов:

ip link show

Просмотр сетевых интерфейсов и статистики по ним:

cat /proc/net/dev

Просмотр конфигурации сетевых интерфейсов:

iwconfig

Просмотр конфигурации беспроводного сетевого интерфейса ath0:

iwconfig ath0

Сканирование эфира:

iwlist scan

Перезагрузка устройства:

reboot

Общая статистика устройства:

mca-status

Wi-fi статистика:

wstalist

Количество подключенных клиентов к точке доступа:

wstalist |grep "mac" |wc -l

Просмотр уровня сигнала:

mca-status | grep signal
mca-status | grep "signal=" | cut -d= -f2

Просмотр уровня шумов:

mca-status | grep "noise=" | cut -d= -f2

Приведу команды для редактирования конфигурационного файла.
Просмотр конфигурационного файла (загруженный файл находится по адресу /tmp/running.cfg, его трогать не нужно):

cat /tmp/system.cfg

Редактирование конфигурационного файла (x — удаление символа, а — добавление, Esc — возврат в командный режим, :x — сохранение изменений в файле и выход из редактора):

vi /tmp/system.cfg

После изменения сохраним конфигурационный файл и применим его командами:

cfgmtd -f /tmp/system.cfg -w
/usr/etc/rc.d/rc.softrestart save

Стандартный вывод команды help:
. : [ [[ alias bg break cd chdir command continue echo eval exec
exit export false fg getopts hash help jobs kill let local printf
pwd read readonly return set shift source test times trap true
type ulimit umask unalias unset wait

Сбросить настройки к стандартным можно командами:

cfgmtd -w -f /etc/default.cfg
reboot

Можно также подключаться по SSH к другим устройствам например командой:

ssh -p 22 admin@192.168.1.5

Смотрите также:
Описание конфигурационного файла Ubiquiti Rocket M5
Использование текстового редактора vim
Как включить Web Server на Ubiquiti через SSH
Резервное копирование конфигурации Ubiquiti (UBNT) устройств

Настройка SSHGuard

SSHguard мониторит логи, выявляет атаки и с помощью фаервола блокирует адреса злоумышленников.

Установка в Linux Ubuntu/Debian:

sudo apt-get install sshguard

Команда информации:

man sshguard

Белый список адресов для исключения находится по адресу /etc/sshguard/whitelist.

Официальная документация www.sshguard.net/docs/

sshguard не имеет конфигурационного файла, поэтому нужно создать правило «sshguard» в iptables:

#Для IPv4
iptables -N sshguard
#Если используется IPv6 то вводим
ip6tables -N sshguard
# указываем чтобы входящий трафик шел через sshguard
iptables -A INPUT -j sshguard
# IPv6
ip6tables -A INPUT -j sshguard

# Либо указываем что нужно блокировать плохой трафик на порты SSH, FTP, POP и IMAP с использованием «multiport»

iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard
ip6tables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard