Gateway с нуля нa ubuntu 18.04

Исходные данные:

Старенький Proliant ML350 G4 с четырьмя сетевыми картами на борту, три провайдера интернет и локальная сеть с кучей подсетей по VPN.

Настройка сетевых интерфейсов.

Посмотрим названия и информацию про наши сетевые карты:

lshw -class network

Настраиваем  интерфейсы по этой ссылке https://onedayadmin.sytes.net/ubuntu-18-network-configuration/ . Шлюз при этом не указываем ни одному интерфейсу, за это у нас отвечает скрипт.

Для использования канала нескольких провайдеров одновременно настроим правильно маршрутизацию, чтобы сервер отправлял ответ именно с того интерфейс на который был получен запрос.

nano /root/scripts/routing.sh

Установка и настройка squid

apt-get install squid

Авторизация будет по NCSA поэтому ставим apache2-utils для создания учеток.

apt install apache2-utils

touch /etc/squid/ncsa.users

tpasswd /etc/squid/ncsa.users user1

вводим и подтверждаем пароль

nano /etc/squid/squid.conf

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/ncsa.users

auth_param basic children 5

auth_param basic realm Atlant Squid!

auth_param basic credentialsttl 2 hours

auth_param basic casesensitive off

acl internet_users proxy_auth REQUIRED

1 - ncsa авторизация, брать логины пароли из

/etc/squid/ncsa.users

2 - запустить со старту 5 процессов для авторизации(одновременно 5 соединений).

3 - Название нашего прокси сервера.

4 - Время хранения/кэширования успешных авторизаций.

5 - Настройка, определяющая чувствительность имен пользователей к регистру.

6 - Создадим ACL в который попадут пользователи которые успешно пройдут авторизацию через NCSA.

acl SSL_ports port 443

acl SSL_ports port 563 # snews

acl SSL_ports port 873 # rsync

acl Safe_ports port 80 # http

acl Safe_ports port 20 21 # ftp

acl Safe_ports port 443 # https

acl Safe_ports port 70 # gopher

acl Safe_ports port 210 # wais

acl Safe_ports port 1025-65535 # unregistered ports

acl Safe_ports port 280 # http-mgmt

acl Safe_ports port 488 # gss-http

acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl Safe_ports port 631 # cups

acl Safe_ports port 873 # rsync

acl CONNECT method CONNECT

1 - Создадим ACL по имени SSL_ports в который попадут соединения устанавливаемые на перечисленные порты.

2 - Создадим ACL по имени Safe_ports в который попадут соединения устанавливаемые на перечисленные порты. В дальнейшем мы запретим соединения на все порты кроме этих.

3 - Метод CONNECT запрашивает соединение с сервером. Чаще всего соединение идет на защищенные порты (443). Создадим список, который в дальнейшем используем для  запрета в нашей сети использовать метод CONNECT на  порты кроме тех что в 1 пункте.

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost manager

http_access deny manager

http_access allow internet_users

http_access allow localhost

http_access deny all

1 - Описано выше в пункте 2

2 - Описано выше в пункте 3

3 - Откроем доступ к прокси по протоколу cache_mgr с локалхоста.

4 - Запретим все остальные подключения по протоколу cache_mgr.

5 - Разрешим доступ пользователям которые авторизовались.

6 - Разрешим подключения с локалхост.

7 - Запретим всем все.

http_port 3128

refresh_pattern ^ftp: 1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440

refresh_pattern -i (/cgi-bin/|\?) 0 0% 0

refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880

refresh_pattern . 0 20% 4320

 

1 - Порт на котором принимает подключения сквид.

2... - Задают параметры кэширования.

- refresh_pattern regex min percent max options

regex - Регулярное выражение. Описывает адреса, к которым применимо это правило.

min - Минимальное время, в течении которого объект в кэше считается новым.

percent - Процент от возраста объекта с явным указание срока актуальности, в течении которого объект считается новым.

max - Указывает верхний предел времени, в течении которого объекты без явного указания времени актуальности считаются новыми.

cache_mem 128 MB

maximum_object_size_in_memory 64 KB

cache_dir ufs /var/spool/squid 2048 16 256

maximum_object_size 20480 KB

access_log /var/log/squid/access.log squid

1 - Сколько памяти максимум сквид возьмет под кэш.

2 - Этот тэг задает размер объекта который может хранится в памяти.

3- ufs- определяет формат кэша: (unix file system), 2048 - размер после которого кэш будет очищаться, 16  и 256 - Количество каталогов 1 и 2 уровней.

4 - Максимальный размер объекта, который может быть помещен в кэш.

5 - Путь к файлу лога.

На этом минимальные настройки squid закончены.

  • Настроим ограничение скорости squid-ом

Создадим группы пользователей с разными ограничениями по скорости. Пользователи должны быть уже созданы через  htpasswd.

Для этого создадим три файла с именами пользователей внутри.

mkdir /etc/squid/group

nano /etc/squid/group/9-1Mbit.txt

adminuser

nano /etc/squid/group/4-1Mbit.txt

vipuser
nano /etc/squid/group/640-100Kbit.txt
user1
nano /etc/squid/squid.conf

В конец секции acl добавим

acl 72Mbit proxy_auth "/etc/squid/group/72Mbit.txt"
acl 16Mbit proxy_auth "/etc/squid/16Mbit.txt"
acl 512Kbit proxy_auth "/etc/squid/512Kbit.txt"

После секции htaccess создадим 3 пула 2го класса с разными скоростями.

delay_pools 3

delay_class 1 2

delay_access 1 allow 72Mbit

delay_access 1 deny all

delay_parameters 1 9000000/10000000 9000000/1000000

delay_class 2 2

delay_access 2 allow 16Mbit

delay_access 2 deny all

delay_parameters 2 6000000/10000000 2000000/1000000

delay_class 3 2

delay_access 3 allow 512Kbit

delay_access 3 deny all

delay_parameters 3 4000000/10000000 64000/1000000

1 - Количество пулов

2 - Создать первый класс второго уровня

3 - Загоним в первый пул всех, кто удовлетворяет условиям acl по имени 72Mbit

4 - Запретим всем остальным первый пул.

5 - Для первого пула зададим скорость 72 Mбит/с (= 72 Mбит/с / 8 = 9 MБайт/с = 9000000 Байт/с) и размер пула в 10 Мбайт,  для хостов скорость те же 72 Mбит/с с размером пула 1Mбит/с.

И т.д. по аналогии.

Настроим фильтрацию нежелательных сайтов, заблокируем соц. сети, ютуб, ну и кучу всякой  ерунды.

После acl Safe_ports добавим ACL в который будут попадать доменные имена которые указаны в файле. А в секцию http_access deny допишем запрет на эти домены.

nano /etc/squid/social_ban.txt

.ok.ru

.odnoklassniki.ru

.vk.com

nano nano /etc/squid/squid.conf
acl social_ban dstdomain "/etc/squid/social_ban.txt"

http_access deny social_ban

Заблокируем ссылки в которых содержаться словосочетания из файла

nano /etc/squid/word_ban.txt
ok\.com
nano /etc/squid/social_ban.txt

acl word_ban url_regex -i "/etc/squid/word_ban.txt"

http_access deny word_ban

Добавим в squid acl со списком сайтов на которых были найдены malware, этот список распространяется тут: https://lists.malwarepatrol.net/cgi/getfile?receipt=f1381257018&product=8&list=squid

nano /scripts/malware_list.sh

#!/bin/sh

# If you don't want to log wget debug output remove "$debug" in line (51) "fetchcmd"

Setings

# Malware patrol URL with unique ID

# Change ID after receipt in link (..getfile?receipt=f138125701..)

link='https://lists.malwarepatrol.net/cgi/getfile?receipt=f1381257018&product=8&list=squid'

# HTTP USER

user='--http-user=sethuper'

# HTTP PASSWORD

pass='--http-passwd=apollo13'

# Checking certificate

cert='--no-check-certificate'

# File location for Squid

target='/etc/squid/malware_block_list'

# Reload Squid

reloadcmd='squid -k reconfigure'

# Temporary file

tmp="/tmp/.malware_block_list.$$"

# Wget debud

debug="-nv -a /var/log/squid/malware_block_list.log"

# Command for download malware list

fetchcmd="wget -q $link -O $tmp $user $pass $debug"

# Log file

logs='/var/log/squid/malware_block_list.log'

execution

echo "$(date -R) Downloading new malware_block_list" >> "$logs"

# Downloading new malware_block_list from Malware Patrol

$fetchcmd

# Checking temporary file – "OK" – before overwrite old malware list

if [ ! -s $tmp ]

then

echo "$(date -R) The temporary file '$tmp' does not exist or is empty;

resignation" >> "$logs"

exit

fi

# moving malware_black_list to directory /etc/squid3/

cp $tmp $target

# removing temporary file

rm $tmp

# restart Squid

$reloadcmd

chmod +x /scripts/malware_list.sh

/scripts/malware_list.sh

nano /etc/squid/squid.conf

acl malware_block_list url_regex -i "/etc/squid/malware_block_list"

http_access deny malware_block_list

crontab -e
00 23 * * * /root/scripts/malware_list.sh
/etc/init.d/crontab restart

http://ffteixeira.net/blog/?q=content/install-and-configure-squid-proxy-server-clamav-squidclamav-c-icap-server-%E2%80%93-debian-9-minimal

SQStat

Для просмотра статистики squid  в онлайн режиме будем использовать sqstat. Данный проект живет здесь:  http://samm.kiev.ua/sqstat

apt install apache2

apt-get  install squid-cgi

apt install php libapache2-mod-php

nano /etc/apache2/mods-enabled/dir.conf

Приводим к такому виду:

<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

systemctl restart apache2

nano /var/www/html/info.php

<?php

phpinfo();

?>

http://your_server_ip/info.php

Сейчас необходимо поправить /etc/squid/cachemgr.conf

echo "*" >> /etc/squid/cachemgr.conf

Вместо * можете поставить адрес сетевой которую прослушивает squid

Скачаем текущую версию sqstat и распакуем её

wget http://samm.kiev.ua/sqstat/sqstat-1.20.zip

unzip sqstat-1.20.zip

Создадим каталог sqstat в корневой директории web сервера, и скопируем туда распакованные файлы sqstat

mkdir /var/www/squid-stat

cp -R sqstat-1.20/* /var/www/squid-stat/

Перейдем в каталог /var/www/squid-stat/ и скопируем конфигурационный файл для sqstat

cd /var/www/squid-stat/

cp config.inc.php.defaults config.inc.php

nano /var/www/squid-stat/config.inc.php

<?php

/* global settings */

$use_js=true; // use javascript for the HTML toolkits

// Maximum URL length to display in URI table column

DEFINE("SQSTAT_SHOWLEN",60);

/* proxy settings */

/* Squid proxy server ip address or host name */

$squidhost[0]="127.0.0.1";

/* Squid proxy server port */

$squidport[0]=3128;

/* cachemgr_passwd in squid.conf. Leave blank to disable authorisation */

$cachemgr_passwd[0]="YouPassword";

/* Resolve user IP addresses or print them as numbers only [true|false] */

$resolveip[0]=false;

/* uncomment next line if you want to use hosts-like file.

See hosts.txt.dist. */

// $hosts_file[0]="hosts.txt"

/* Group users by hostname - "host" or by User - "username". Username work only

with squid 2.6+ */

$group_by[0]="host";

/* you can specify more than one proxy in the configuration file, e.g.: */

// $squidhost[1]="192.168.0.2";

// $squidport[1]=3129;

// $cachemgr_passwd[1]="secret";

// $resolveip[1]=true;

// $hosts_file[1]="otherhosts.txt"

?>

Добавим в /etc/squid/squid.conf строчку с паролем cachemgr, идентичным указанному в /var/www/squid-stat/config.inc.php а также проверим наличие acl и пары http_access

nano /etc/squid/squid.conf

cachemgr_passwd YuoPassword all

acl manager proto cache_object

http_access allow manager localhost

http_access deny manager 

Создадим Virtualhost в Apache.

nano /etc/apache2/sites-available/sqstat.conf

<VirtualHost 192.168.1.11:80>

ServerName gateway.my.local

ServerAdmin webmaster@localhost

DocumentRoot /var/www/squid-stat/

<Location "/">

DirectoryIndex sqstat.php

Require ip 192.168.1.20 192.168.1.11

</Location>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

 

1 - на каком интерфейсе и порту слушать

2 - доменное имя обращение к которому принимать

3 - наша почта

4 - корневая директория сайта

5 - зададим индекс для  корневой директории, и ограничим к ней доступ (Location)

6 - логи

a2ensite sqstat

service apache2 restart

Если открыть в браузере страницу http://your_proxy_ip/, выйдет ошибка

SqStat error

Error (1): Cannot get data. Server answered: HTTP/1.1 200 OK

Для исправления ошибки, создадим патч файл.

nano /var/www/squid-stat/sqstat_squid32.patch

107c107

<  if($raw[0]!="HTTP/1.0 200 OK"){

---

> if($raw[0]!="HTTP/1.1 200 OK"){

131,132c131,132

< if(substr($v,0,5)=="peer:") $parsed["con"][$connection]["peer"]=substr($v,6);

< if(substr($v,0,3)=="me:") $parsed["con"][$connection]["me"]=substr($v,4);

---

if(substr($v,0,7)=="remote:") $parsed["con"][$connection]["remote"]=substr($v,8);

if(substr($v,0,6)=="local:") $parsed["con"][$connection]["local"]=substr($v,7);

178c178

< $ip=substr($v["peer"],0,strpos($v["peer"],":"));

---

> $ip=substr($v["remote"],0,strpos($v["remote"],":"));

189c189

< $ip=ip2long(substr($v["peer"],0,strpos($v["peer"],":")));

> $ip=ip2long(substr($v["remote"],0,strpos($v["remote"],":")));

cd /var/www/squid-stat/

cp sqstat.class.php sqstat.class.php.default

patch sqstat.class.php sqstat_squid32.patch

patching file sqstat.class.php

Теперь, чтобы вместо ip или dns записей отображались имена пользователей, создаём в папке соскриптами /var/www/squid-stat/ файл hosts.txt в котором прописываем IP адреса и имена пользователей в подобном виде.

nano /var/www/squid-stat/hosts.txt

192.168.1.2 Пользователь 1

192.168.1.3 Пользователь 2

192.168.1.4 Пользователь 3

Добавим строку

nano /var/www/squid-stat/config.inc.php

$hosts_file[0]="hosts.txt";

https://4skill.ru/squid-sqstat/

SARG - Squid Analysis Report Generator

Для генерирования отчетов статистики squid в читабельном виде будем использовать SARG.

apt-get install sarg

cp /etc/sarg/sarg.conf /etc/sarg/sarg.conf_old

grep -v '^#' /etc/sarg/sarg.conf_old | sed '/^$/d' > /etc/sarg/sarg.conf

nano /etc/sarg/sarg.conf

Добавим:

graphs yes # Добавляем данную строчку в файл для построения графиков

graph_days_bytes_bar_color orange # Добавляем данную строчку в файл для построения графиков в цвете

Проверим:

output_dir /var/www/sarg

charset Latin1 Задаем кодировку Latin1 или UTF-8

resolve_ip yes

user_ip no

nano /etc/apache2/sites-available/sarg.conf

<VirtualHost 192.168.1.11:80>

ServerName sarg.my.local

ServerAdmin webmaster@localhost

DocumentRoot /var/www/sarg/

<Location "/">

Require ip 192.168.1.20 192.168.1.11

</Location>

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

a2ensite sarg

Добавим в DNS или в файл hosts описание доменного имени sarg.my.local

nano /etc/hosts
192.168.1.11 sarg.my.local

Проверяем, клиент должен коректно распознавать sagr.my.lan

По адресу в браузере http://sarg.my.local/ должна отобразиться страничка sarg с отчетами.

Screen Squid

Этот проект мне понравился более всего, статистику смотреть через него просто удовольствие. Множество отчетов, хранит данные в mysql, одним словом - то, что доктор прописал. Требования - MySQL, Perl, LAMP

Про MySQL https://onedayadmin.sytes.net/mysql-in-ubuntu-14-04/

Скачиваем и разархивируем последний стэйбл по этой ссылке: https://sourceforge.net/projects/screen-squid/files/stable/

cd /tmp

tar -zxvf screensquid_v1_12.tar.gz

mkdir /var/www/squid-screen

cp -rf /tmp/rurls/* /var/www/squid-screen

apt-get install mysql-server php-mysql libdbd-mysql-perl

Для нормальной работы MySQL правим /etc/mysql/conf.d/mysql.cnf

nano /etc/mysql/my.cnf

[mysqld]

sql_mode="NO_ENGINE_SUBSTITUTION"

systemctl restart mysql

Создадим пользователя, базу, и назначим права.

mysql -p

create database squidscreen DEFAULT CHARACTER SET utf8;

CREATE USER 'squid'@'localhost' IDENTIFIED BY 'You_Password';

grant all privileges on squidscreen.* to 'squid'@'localhost';

FLUSH PRIVILEGES;

use squidscreen;

SOURCE /var/www/squid-screen/createdb/createdb.sql;

quit;

nano /var/www/squid-screen/config.php

<?php

$srvname[0]="ProxyAtlant"; #nickname of server

$db[0] = "squid";

$user[0] = "squid";

$pass[0] ="Yuo_Password";

$address[0] ="localhost"; //mysql db

$cfgsquidhost[0]="localhost";

$cfgsquidport[0] = 3128;

$cfgcachemgr_passwd[0]="Pass_cachemgr";
.......

$cfgcachemgr_passwd[0]="{пароль из директивы cachemgr_passwd squid.conf}";
Редактируем скрипт заполнения таблиц.
nano /var/www/squid-screen/fetch.pl
....
my $host = "localhost"; # host s DB
my $port = "3306"; # port DB
my $user = "squid"; # username k DB
my $pass = "YouPassword"; # pasword k DB
my $db = "squid"; # name DB
my $count_lines_for_one_insert=100;
my $filetoparse="/var/log/squid/access.log";
my $filetolog="/var/log/squid/ssquid.log";
#Включить удаление старых данных из базы
my $enabledelete=1;
#Период, старше которого данные будут удаляться. Указывается в днях.
my $deleteperiod=60; #days
....
chmod u+x fetch.pl
И добавим этот скрипт в крон, для автоматизации процесса.
crontab -e
# запуск каждый час
00 */1 * * * /var/www/squid-screen/fetch.pl

Создадим Virtualhost в Apache.

nano /etc/apache2/sites-available/squidscren.conf

<VirtualHost 192.168.1.11:80>

ServerName squidscreen.my.local

ServerAdmin webmaster@localhost

DocumentRoot /var/www/squid-screen/

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

 
a2ensite squidscren
systemctl reload apache2
 Чтобы работала вкладка "Онлайн", в настройках squid строки
acl manager proto cache_objects
http_access allow manager localhost
Должны быть раньше строк авторизации, в соответстаующих секциях(acl,httpaccess).

 

 

Настройка skype на стороне клиентской машины.

Для того чтобы скайп смог работать через наш шлюз нам придется помечать пакеты на стороне клиентской машины. Для этого используем  технологию QoS, подробнее можно ознакомиться тут: https://www.atraining.ru/qos-windows-nt/

1. Так как машина-клиент не состоит в домене, то для того, чтобы включить маркировку пакетов, нам нужно применить некий костыль. Все действия для windows 7.

Открываем реестр от админа - regedit

Добавим раздел QoS по пути HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\QoS

Теперь заходим в этот раздел и создаем там строковый параметр под названием Do not use NLA и значением 1

Должно получиться:

Type: REG_SZ 
Name: Do not use NLA 
Value: 1 

Открываем оснастку Групповые Политики c правами админа.

gpedit.msc

Конфигурация компьютера -> Конфигурация Windows -> QoS на основе политики. И создаем две политики.

ПК по QoS на основе политики -> Дополнительные параметры QoS... -> Переопределение разметки DSCP -> Ставим галочку Контролировать запросы на маркировку DSCP от приложений и служб, Ставим галочку Пропускать запросы на DSCP от приложений и служб. Задавать значение DSCP для приложений могут только политики QoS.

ПК по QoS на основе политики -> Создать новую политику -> Имя политики - Skype, Укажите значение DSCP - 1 -> Только к приложениям с именем используемого файла - Skype.exe -> К любому исходному IP-адресу, К любому конечному  IP-адресу -> выберите протокол, к которому применяется политика QoS - tcp/udp, Любой исходный порт, Любой порт назначения.

ПК по QoS на основе политики -> Создать новую политику -> Имя политики - SkypeBrowserHost, Укажите значение DSCP - 1 -> Только к приложениям с именем используемого файла - SkypeBrowserHost.exe -> К любому исходному IP-адресу, К любому конечному  IP-адресу -> выберите протокол, к которому применяется политика QoS - tcp/udp, Любой исходный порт, Любой порт назначения.

Заходим в свойства сетевого подключения, проверяем галочку планировщик пакетов QoS, Настроить -> дополнительно -> Приоритет и виртуальная ЛС - приоритет включен.

Настройка skype на стороне шлюза.

Так как трафик от клиентов идет уже с марками, теперь iptables может конкретно этот трафик использовать в правилах.

iptables -I FORWARD 2 -s 192.168.1.0/24 -m tos --tos 4 -j ACCEPT

В GP указывается DSCP, а iptables оперирует ToS`ом. В двух словах, эти значения отличаются ровно в 4 раза, и значение ToS  может принимать значение от 1 до 16. Чтобы получить tos умножаем значение DSCP на 4 и получаем 4.

iptables запишет tos как 0х04, т.е. в hex формате.

tcpdump -i eth0 -v host 192.168.1.71

получим что-то типа

00:00:00.000001 IP (tos 0x04, ttl 128, id 13954, offset 0, flags [none], proto UDP (17), length 62)
192.168.0.71.20344 > 65.55.223.43.40012: UDP, length 34

Но этим настройки не ограничиваются, теперь нужно натренировать squid пропускать без авторизации соединения на несколько доменов.

nano /etc/squid/skype_domain.txt
.skype.com
.microsoft.com
.skypeassets.com
.skype.net
.live.com
nano /etc/squid/skype_user.txt
192.168.1.71
nano /etc/squid/squid.conf

Добавим в начало ACL  и в начало htaccess соотвественно

acl skype_domain dstdomain "/etc/squid/skype_domain.txt"
acl skype_user src "/etc/squid/skype_user.txt"

http_access allow skype_domain skype_user

https://habr.com/post/344852/

 

 

Добавим фильтрацию http трафика с помощью clamav. Для обработки https нужен прозрачный режим поэтому ограничимся хотя бы http.

apt-get install clamav clamav-daemon

freshclam

apt-get install havp

nano /etc/havp/havp.config

lscpu

# Only for courses
SERVERNUMBER 4

usermod clamav -G havp

service havp restart

service clamav-daemon restart

netstat -an

Должен быть открыт 127.0.0.1:8080

nano /etc/squid/squid.conf

Добавим в секцию описывающую кэш строки:

cache_peer 127.0.0.1 parent 8080 0 no-query no-digest no-netdb-exchange default

cache_peer_access 127.0.0.1 allow all

acl Scan_HTTP proto HTTP

never_direct allow Scan_HTTP

service squid restart

http://val.bmstu.ru/dokuwiki/doku.php?id=%D0%B0%D0%BD%D1%82%D0%B8%D0%B2%D0%B8%D1%80%D1%83%D1%81%D0%BD%D0%B0%D1%8F_%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0_web_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0_squid

 

Выпускать определенные ip только через один интерфейс

$iptables -t mangle -A PREROUTING -p tcp -s 192.168.21.43 -j MARK --set-mark 0x2

ip rule add fwmark 0x2/0x2 lookup ens5

Очистка журнала (логов) ОС, чтобы логи не заняли все свободное место.

nano /etc/systemd/journald.conf
SystemMaxUse=200M
systemctl restart systemd-journald