![5 способов сохранить удаленные сеансы и процессы SSH после отключения](/f/12ec6edb8e7a453779baf2ac8bc3816a.png?width=100&height=100)
Журналы являются важным компонентом любого программного обеспечения или операционной системы. Журналы обычно записывают действия пользователя, системные события, сетевую активность и многое другое, в зависимости от того, для чего они предназначены. Одна из наиболее широко используемых систем ведения журналов в системах Linux - это rsyslog.
Rsyslog - это мощная, безопасная и высокопроизводительная система обработки журналов, которая принимает данные из различных типов источников (систем / приложений) и выводит их в нескольких форматах.
Он превратился из обычного системный журнал daemon в полнофункциональную систему ведения журналов на уровне предприятия. Он разработан по модели клиент / сервер, поэтому его можно настроить как клиент и / или как центральный сервер регистрации для других серверов, сетевых устройств и удаленных приложений.
Для целей этого руководства мы будем использовать следующие хосты:
Большинство дистрибутивов Linux поставляются с rsyslog пакет предустановлен. Если он не установлен, вы можете установить его с помощью диспетчера пакетов Linux, как показано на рисунке.
$ sudo yum update && yum install rsyslog #CentOS 7. $ sudo apt update && apt install rsyslog #Ubuntu 16.04, 18.04.
Один раз rsyslog установлен, вам нужно запустить службу на данный момент, включить ее автоматический запуск при загрузке и проверить ее статус с помощью команда systemctl.
$ sudo systemctl start rsyslog. $ sudo systemctl включить rsyslog. $ sudo systemctl status rsyslog.
Основной файл конфигурации rsyslog находится по адресу /etc/rsyslog.conf, который загружает модули, определяет глобальные директивы, содержит правила обработки сообщений журнала, а также включает все файлы конфигурации в /etc/rsyslog.d/ для различных приложений / услуг.
$ sudo vim /etc/rsyslog.conf.
По умолчанию, rsyslog использует журнал и Imusock модули для импорта сообщений структурированного журнала из журнал systemd и для приема сообщений системного журнала от приложений, работающих в локальной системе через сокеты Unix, соответственно.
Чтобы настроить rsyslog в качестве сетевого / центрального сервера журналов, вам необходимо установить протокол (либо UDP или TCP или оба) он будет использовать для удаленного приема системного журнала, а также порт, который он прослушивает.
Если вы хотите использовать UDP соединение, которое работает быстрее, но ненадежно, найдите и раскомментируйте строки ниже (замените 514 с портом, который вы хотите прослушивать, он должен совпадать с адресом порта, на который клиенты отправляют сообщения, мы рассмотрим это подробнее при настройке клиента rsyslog).
$ ModLoad imudp. $ UDPServerRun 514.
Использовать TCP соединение (которое медленнее, но надежнее), найдите и раскомментируйте строки ниже.
$ ModLoad imtcp. $ InputTCPServerRun 514.
В этом случае мы хотим использовать одновременно UDP и TCP-соединения.
Далее вам нужно определить набор правил для обработки удаленных журналов в следующем формате.
ility.severity_level назначение (где хранить журнал)
Где:
*
означает все удобства.*
означает все уровни серьезности, и ни один не означает отсутствие уровня серьезности.Мы будем использовать следующие набор правил для сбора журналов с удаленных хостов, используя RemoteLogs шаблон. Обратите внимание, что эти правила должны предшествовать любым правилам обработки локальных сообщений, как показано на снимке экрана.
$ template RemoteLogs, "/ var / log /% HOSTNAME% /% PROGRAMNAME% .log" *. *? RemoteLogs & ~
Глядя на вышеизложенное набор правил, первое правило «$ Template RemoteLogs, / var / log /% HOSTNAME% /% PROGRAMNAME% .log» ».
Директива $ шаблон сообщает демону rsyslog собрать и записать все полученные удаленные сообщения в отдельные журналы под /var/log, на основе имя хоста (имя клиентского компьютера) и удаленный клиентский объект (программа / приложение), который генерировал сообщения в соответствии с настройками, представленными в шаблоне. RemoteLogs.
Вторая линия «*. *? RemoteLogs» означает запись сообщений из всех учреждений на всех уровнях серьезности с помощью RemoteLogs конфигурация шаблона.
Последняя строка “& ~” предписывает rsyslog прекратить обработку сообщений после их записи в файл. Если вы не включите “& ~”, сообщения вместо этого будут записываться в локальные файлы.
Есть много других шаблонов, которые вы можете использовать, для получения дополнительной информации см. Справочную страницу конфигурации rsyslog (человек rsyslog.conf) или обратитесь к Электронная документация rsyslog.
Это все, что касается настройки сервера rsyslog. Сохраните и закройте файл конфигурации. Чтобы применить последние изменения, перезапустите демон rsyslog с помощью следующей команды.
$ sudo systemctl перезапустить rsyslog.
Теперь проверьте сетевые сокеты rsyslog. Использовать команда ss (или netstat с теми же флагами) и направьте вывод в grep для фильтрации из соединений rsyslogd.
$ sudo ss -tulnp | grep "rsyslog"
Далее, на CentOS 7, если у тебя есть SELinux включен, выполните следующие команды, чтобы разрешить трафик rsyslog в зависимости от типа сетевого сокета.
$ sudo semanage -a -t syslogd_port_t -p udp 514. $ sudo semanage -a -t syslogd_port_t -p tcp 514
Если в системе включен брандмауэр, вам необходимо открыть порт 514 позволить обоим UDP / TCP подключения к серверу rsyslog, запустив.
На CentOS $ sudo firewall-cmd --permanent --add-port = 514 / udp. $ sudo firewall-cmd --permanent --add-port = 514 / tcp. $ sudo firewall-cmd --reload На Ubuntu $ sudo ufw allow 514 / udp. $ sudo ufw разрешить 514 / tcp. $ sudo ufw перезагрузить
Теперь в клиентской системе проверьте, запущена ли служба rsyslog, с помощью следующей команды.
$ sudo systemctl status rsyslog.
Если он не установлен, установите его и запустите службу, как показано ранее.
$ sudo yum update && yum install rsyslog #CentOS 7. $ sudo apt update && apt install rsyslog #Ubuntu 16.04, 18.04. $ sudo systemctl start rsyslog. $ sudo systemctl включить rsyslog. $ sudo systemctl status rsyslog.
После запуска службы rsyslog откройте основной файл конфигурации, в котором вы внесете изменения в конфигурацию по умолчанию.
$ sudo vim /etc/rsyslog.conf.
Чтобы заставить демон rsyslog действовать как клиент журнала и пересылать все локально сгенерированные сообщения журнала на удаленный сервер rsyslog, добавьте это правило переадресации в конец файла, как показано ниже Скриншот.
*. * @@192.168.100.10:514.
Вышеупомянутое правило будет отправлять сообщения со всех объектов и на всех уровнях серьезности. Например, для отправки сообщений из определенного объекта авторизацияиспользуйте следующее правило.
авт. * @@192.168.100.10:514.
Сохраните изменения и закройте файл конфигурации. Чтобы применить указанные выше настройки, перезапустите демон rsyslog.
$ sudo systemctl перезапустить rsyslog.
Последний шаг - проверить, действительно ли rsyslog получает и регистрирует сообщения от клиента в разделе /var/log, в виде имя хоста / имя программы.log.
Запустить команда ls в длинный список родительского каталога журналов и проверьте, существует ли каталог с именем ip-172.31.21.58 (или другое имя хоста вашего клиентского компьютера).
$ ls -l / var / log /
Если каталог существует, проверьте файлы журналов внутри него, запустив.
$ sudo ls -l / var / log / ip-172-31-21-58 /
Rsyslog это высокопроизводительная система обработки журналов, разработанная в архитектуре клиент / сервер. Надеемся, вы сможете установить и настроить Rsyslog как центральный / сетевой сервер регистрации и как клиент, как показано в этом руководстве.
Вы также можете обратиться за дополнительной помощью к соответствующим страницам справочника rsyslog. Не стесняйтесь оставлять нам отзывы или задавать вопросы.