Блог пользователя df-nix

Как предотвратить разрыв ssh сессии

Чтобы ssh сессия на разрывалась при отсутствии активности, в настройках сервера sshd_config прописываем:

# Промежуток времени в секундах между отправкой alive пакетов внутри ssh соединения при отсутствии активности
ClientAliveInterval 120
# Количество alive пакетов без ответа клиента до разрыва сессии
ClientAliveCountMax 720

и аналогично в настройках клиента в ssh_config:
# Промежуток времени в секундах между отправкой alive пакетов внутри ssh соединения при отсутствии активности
ServerAliveInterval 120

Ограничения прав пользователя ssh туннеля

SSH туннели являются очень удобным средством для работы.
При использовании этой функциональности возникает естественное желание ограничить права пользователя, который может подключиться к серверу по ssh и создать туннель. Подразумевается использование файрвола для разрешения подключаться по ssh только с известных ip.
Для использования ssh туннелей создадим в системе пользователя tunuser без shell-a, без домашнего каталога.

pw useradd tunuser -s /usr/sbin/nologin -d /var/empty
# И зададим пользователю пароль
passwd tunuser

Заметки о ssh туннелях

SSH туннели.

Синтаксис, в общем виде:

ssh -L [bind address(начало тоннеля):]bindport:host(конец тоннеля):hostport sshserver.com -l sshuser

ssh -R [bind address(начало тоннеля):]bindport:host(конец тоннеля):hostport sshserver.com -l sshuser

[.] необязательный параметр

где под началом и концом туннеля имеется ввиду направление работы туннеля, т.е. откуда и куда форвардится tcp соединение через ssh

bindport- порт на котором слушает ssh клиент или ssh сервер

hostport - порт к которому подключается ssh клиент или ssh сервер

Выборочное обновление портов в FreeBSD

Возникла необходимость обновить только php56 одной командой. В принципе, такой вариант возможен не только для php56.
Выполняем:

 pkg info | grep php | awk '{print $1}' | sed 's/-5.6.38//' | xargs pkg upgrade -y

Здесь
pkg info | grep php - выводит совпадения только для установленных пакетов, содержащих php56, что-то вроде
php56-5.6.38                   PHP Scripting Language

awk '{print $1}' выводит только название пакета без его описания
sed 's/-5.6.38//' - обрезает `-5.6.38` в конце, а

dmidecode

dmidecode - утилита для экспорта информации DMI в удобочитаемый формат.
DMI - Desktop Management Interface. Как пишет мануал, DMI иначе называют SMBIOS - System Management BIOS.
С помощью этой утилиты можно получить информацию о компьютерном железе, не вскрывая его, что бывает очень удобно.
Вывод достаточно большой, но его можно сократить, если использовать ключ --type, которым сужается тип выводимой информации:

Type   Information
       --------------------------------------------
          0   BIOS
          1   System
          2   Baseboard
          3   Chassis
          4   Processor

Примеры использования bash для решения различных задач в скриптах. Отличия файлов.

Дано:
Есть два файла A.txt и B.txt, причем известно что они отличаются друг от друга несколькими первыми или последними строками и строки не совпадают. Требуется вывести строки файла A.txt, отсутствующие в файле B.txt

$ cat A.txt
11
12
13
14
15
16
17
18
$ cat B.txt
13
14
15
16
17
18
19
20

Вариант решения:

grep -Fvf B.txt A.txt
11
12

Вывод совпадающих строк:
grep -Ff B.txt A.txt
13
14
15
16
17
18

VLAN для Windows

Иногда приходится настраивать поддержку vlan под Windows.
Делается это установкой драйвера для сетевого адартера.
Распространенные сетевые адаптеры это Intel и Realtek.
Для Realtek cкачиваем Windows Diagnostic Program
https://realtek-download.com/wp-content/uploads/2017/10/0004-Diagnostic_...
которая запускается отдельно и в настройках которой можно выбрать настройку vlan.
Для Intel ищем драйвер с поддержкой 802.1Q
Здесь настройка осуществляется через Диспетчер устройств в свойствах сетевого адаптера.

Пример конфигурации клиента openvpn

Пример конфигурационного файла openvpn клиента можно взять в примерах после установки из /usr[/local]/share/doc/openvpn/examples или с сайта https://community.openvpn.net/openvpn/wiki/HOWTO

Один из моих конфигурационных файлов клиентов:

$ cat client.conf
client

dev tun
proto udp
remote 123.123.123.123 1194

resolv-retry infinite

nobind
persist-key
persist-tun
#
log-append  /var/log/openvpn/openvpn.log
#
ca /etc/openvpn/client/ca.crt
cert /etc/openvpn/client/client.crt
key /etc/openvpn/client/client.key

remote-cert-tls server
tls-auth client/ta.key 1

fwknop

fwknop - одна из реализаций Port knoсking.
Как сказано в документации на http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html
fwknop использует Single Packet Authorization.
Механизм работы такой - в системе для подключения к какому-либо сервису извне ( чаще всего - ssh ) настраивается файрвол для разрешения прохождения только установленых соединений.
Например, для FreeBSD, примерно так:
ipfw add 5000 allow ip from any to any via em0 established

Определение конфликта ip адресов

Для определения конфликтующих ip адресов можно использовать утилиты:
arping -

arping -I enp1s0 -b 192.168.98.234
ARPING 192.168.98.234 from 192.168.98.233 enp1s0
Unicast reply from 192.168.98.234 [F0:DE:F1:9C:A7:77]  1.361ms
Unicast reply from 192.168.98.234 [08:00:27:44:FB:11]  1.391ms
^CSent 1 probes (1 broadcast(s))
Received 2 response(s)

netdiscover -
sudo netdiscover -i enp1s0 -r 192.168.98.0/24 -P > scan.txt
cat scan.txt
 _____________________________________________________________________________

Ленты новостей