вторник, 10 августа 2021 г.

Логирование интернета с помощью Mikrotik, Squid и Lightsquid

Настройка логирования интернета внутри локальной сети с помощью Mikrotik, Squid и Lightsquid

Логирование интернета задача тривиальная, если увас есть linux сервер в качетсве шлюза. Но что если шлюзом выступает mikrotik, а логирование всеравно нужно?

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

1. Настройка mikrotik для сбора статистики посещения интернета
2. Установка и настройка Squid с ssl bump и сертификатов
3. Установка и настройка lightsquid

 


1. Настройка Mikrotik:

192.68.100.250 - адрес сервера со squid
192.168.100.0/24 - Локальная подсеть

Настройка самого mikrotik сводится к двум командам в терминале:

/ip firewall mangele add action=mark-routing chain=prerouting disabled=no dst- address=!192.168.100.0/24 dst-port=80,443,8080 new-routing-mark=squid passthrough=yes protocol=tcp src-address=!192.68.100.250 src-address-list=squid /ip routeadd distance=1 gateway=192.168.100.250 routing-mark=squid

После этого в раздел IP -> Firewall -> AddressLists нужно добавить адреса за которыми наблюдаем. Но не торопимся, предварительно нужно создать и установить сертификат.

2. Настройка Squid и сертификатов

Для начала скачаем исходники squid
$ apt build-dep squid

Соберем squid с нужными параметрами и установим:

$ ./configure --prefix=/usr --localstatedir=/var --libexecdir=/usr/lib/squid --datadir=/usr/share/squid --sysconfdir=/etc/squid --enable-ssl-crtd --with-openssl --enable-translation --enable-cpu-profiling --disable-dependency-tracking --disable-hostHeaderIpVerify -enable-delay-pools --enable-icmp --enable-linux-netfilter --with-large-files --with-default-user=proxy --with-logdir=/var/log/squid --with-pidfile=/var/run/squid.pid
$ make
$ make install

Выпустим сертификаты:

$ openssl genrsa -out /etc/squid/sslcert/squid.key
$ openssl req -new -key /etc/squid/sslcert/squid.key -out /etc/squid/sslcert/squid.csr
$ openssl x509 -req -days 3650 -in /etc/squid/sslcert/squid.csr -signkey /etc/squid/sslcert/squid.key -out /etc/squid/sslcert/squid.pem
$ openssl x509 -in /etc/squid/sslcert/squid.pem -outform DER -out squid.der

Изменим права на сертификаты:
chown -R :proxy /etc/squid/sslcert

Изменения в стандартном конфиге squid:


acl intermediate_fetching transaction_initiator certificate-fetching
http_access allow intermediate_fetching

acl localnet src 192.168.100.0/24 # RFC1918 possible internal network
dns_nameservers 8.8.8.8

#Непрозрачный порт, через который происходит взаимодействие клиентских хостов с прокси-сервером
http_port 0.0.0.0:3130 options=NO_SSLv3 cert=/etc/squid/sslcert/squid.pem key=/etc/squid/sslcert/squid.key

#прозрачный порт указывается опцией intercept
http_port 0.0.0.0:3128 intercept options=NO_SSLv3 connection-auth=off cert=/etc/squid/sslcert/squid.pem key=/etc/squid/sslcert/squid.key

#HTTPS порт
https_port 0.0.0.0:3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/sslcert/squid.pem key=/etc/squid/sslcert/squid.key

sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/cache/squid/ssl_db -M 4MB

always_direct allow all
tls_outgoing_options flags=DONT_VERIFY_PEER
sslproxy_cert_error allow all
ssl_bump stare all

Скопировать сервис для автозапуска:
cp /root/source/squid-4.6/tools/systemd/squid.service /etc/systemd/system/squid.service

Перечитать systemd
systemctl daemon-reload

Проверить запуск squid
systemctl start squid

Если все хорошо, то добавить в автозапуск:
systemctl enable squid

Необходимо добавить правило в iptables:

iptables -t nat -A PREROUTING ! -d 192.168.100.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING ! -d 192.168.100.0/24 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3129

И сохранить правила в автозагрузку:
iptables-save > /etc/iptables.up.rules

Добавить в /etc/network/interfaces в конец описания сетевого интерфейса:

post-up iptables-restore < /etc/iptables.up.rules

На все компы в организации поставить сертификат /etc/squid/sslsquid/squid.der в доверенные центры сертификации

Теперь можно добавлять IP адреса на Mikrotik в список squid IP -> Firewall -> AddressLists
Трафик по порту 80 и 443 на эти IP адреса будет ходить через squid.

Ошибка: FATAL: The /usr/lib/squid/security_file_certgen -s /var/cache/squid/ssl_db -M 4MB helpers are crashing too rapidly, need help!

Необходимо вручную выполнить:
$ /usr/lib/squid/security_file_certgen -c -s /var/cache/squid/ssl_db -M 4MB
и раздать права:
$ chown proxy:proxy /var/cache/squid/ssl_db

ERROR: Failed to acquire TLS certificate ‘/etc/squid/squid.pem’: error:0909006C:PEM routines:get_name:no start line

Надо перевыпустить сертификат и самоподписать его:

$ openssl genrsa -out /etc/squid/sslcert/squid.key
$ openssl req -new -key /etc/squid/sslcert/squid.key -out /etc/squid/sslcert/squid.csr
$ openssl x509 -req -days 3650 -in /etc/squid/sslcert/squid.csr -signkey /etc/squid/sslcert/squid.key -out /etc/squid/sslcert/squid.pem
$ openssl x509 -in /etc/squid/sslcert/squid.pem -outform DER -out squid.der

3. Установка и настройка lightsquid

Скачиваем и копируем в новую директорию

$ mkdir /var/www/lightsquid
$ wget http://downloads.sourceforge.net/project/lightsquid/lightsquid/1.8/lightsquid-1.8.tgz
$ tar -xf ./lightsquid-1.8.tgz `
$ cp -R ./lightsquid-1.8/* /var/www/lightsquid

Задаем права:

$ chown -R www-data:www-data /var/www/lightsquid
$ chmod +x /var/www/lightsquid/*.cgi
$ chmod +x /var/www/lightsquid/*.pl

В файл /etc/apache2/apache2.conf добавляем:

Alias /lightsquid /var/www/lightsquid
<Directory /var/www/lightsquid>
AddHandler cgi-script .cgi
Options +ExecCGI
AllowOverride All
</Directory>

И исправляем конфиг: /var/www/lightsquid/lightsquid.cfg
Проверяем в переменных пути. И выбираем язык: $lang="ru";
Проверяем конфигурацию: $ /var/www/lightsquid/check-setup.pl

добавляем в крон:
* 4 * * * /var/www/lightsquid/lightparser.pl today

В файле /var/www/lightsquid/realname.cfg можно добавить сопаставление IP адресов и реальных имен. Заполняем: ipaddr name

Ошибка no: CGI.PM found, please install

apt install libcgi-pm-perl

Ошибка: CGI скрипты отображаются а не выполняются.

Необходимо включить модуль в apache2
a2enmod cgi
systemctl restart apache2

Ошибка: 403 Forbidden You don’t have permission to access this resource.

Добавить в /etc/apache2/apache2.conf строку: Options +ExecCGI

Ошибка: пустые отчеты

Проверить права на директорию: /var/log/squid/
Проверить наличие логов в /var/log/squid/access.log
Запустить сборщик /var/www/lightsquid/lightparser.pl today

Written with StackEdit.

Комментариев нет: