Lipetsk *nix Association Forum Lipetsk *nix Association Forum
Новости:
 
*
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
24 Ноября 2024, 07:19:18


Войти


Страниц: [1]   Вниз
  Печать  
Автор Тема: Прозрачный прокси squid ubuntu 14.04.5  (Прочитано 20047 раз)
0 Пользователей и 1 Гость смотрят эту тему.
wrag
Небритый одмин
*****

Карма: 0
Сообщений: 673


ОС:
Windows 7 Windows 7
Браузер:
Firefox 57.0 Firefox 57.0


Награды
« : 21 Декабря 2017, 13:55:14 »

Для начала опишу задачи:
нужен шлюз для фильтрации доступа к интернет ресурсам, прозрачная фильтрация HTTPS и HTTP (в общем блочить соц сети в основном).
Чуть позднее сбор статистики.
есть машина с двумя сетевыми.
Первоначальную настройку приведу ниже, после вступления.
Первый же вопрос какой squid 3.5 или 4. много статей именно про 3.5 но на виртуалке удалось настроить только 4 версию кальмара, фильтровал нормально но в основном только целиком сайт блочился например вконтакте,пришлось использовать метод при обращении к вконтакте блочил сам метод CONNECT,ибо по адресу можно было обойти например вписав перед vk.com www. .
Пользователь добавил сообщение Сегодня в 11:14:20:в общем забил на виртуалку начал напрямую на железо ставить с двумя сетевыми, ибо тру практис, выбрал сначала Ubuntu 16 но не сраслось заколебало, то что установка не шла от слова совсем ругался на флешку, что нет сиди диска, да и именование интерфейсов бесило, проверил 14 Ubuntu изначально ставил десктопную версию (что странно любая десктопная ставится без проблем, на новый купленный сервер свежее железо, а серверная ругалась на сиди диск) помогло следущее:
на этапе установки после выбора языка нужно смонтировать образ cd-rom-а самому:

копируем на флешку iso образ, например file.iso
после загрузки ОС, на этапе выбора языка жмем: Alt+F2
теперь смотрим какие у нас есть устройства:

ls /dev/

находим нашу флешку, в моем случае она была /dev/sdb1
теперь монтируем её в систему:

mkdir /mnt/flash
mount -tvfat /dev/sdb1 /mnt/flash

теперь монтируем установочный образ как /cdrom:

mkdir /cdrom
mount /mnt/flash/file.iso /cdrom -t iso9660 -o loop

Возвращаемся в окно установки (Alt+F1) и продолжаем её

После таких манипуляция установщик отыскал CD-ROM и нужные ему файлы

Тут так же стоит заметить, что во время установки Вас спросят о необходимости отмонтировать флешку (/dev/sdb1 в моем случае), нужно ответить да ибо иначе Ubuntu !!! не создаст разделы на жестком диске.

Вам потребуется перезагрузиться и вы окажитесь в системе. Далее логинимся, опять монтируем флешку как cd-rom,

настраиваем sources.list так как по умолчанию пустой он, на использование cd-rom-а и устанавливаем ssh (и далее с putty по ssh) правим его же

через vi:
sudo apt-get install ssh

запихиваем в sources.list:
deb sg.archive.ubuntu.com/ubuntu trusty main restricted
deb-src sg.archive.ubuntu.com/ubuntu trusty main restricted
deb sg.archive.ubuntu.com/ubuntu trusty-updates main restricted
deb-src sg.archive.ubuntu.com/ubuntu trusty-updates main restricted
deb sg.archive.ubuntu.com/ubuntu trusty universe
deb-src sg.archive.ubuntu.com/ubuntu trusty universe
deb sg.archive.ubuntu.com/ubuntu trusty-updates universe
deb-src sg.archive.ubuntu.com/ubuntu trusty-updates universe
deb sg.archive.ubuntu.com/ubuntu trusty multiverse
deb-src sg.archive.ubuntu.com/ubuntu trusty multiverse
deb sg.archive.ubuntu.com/ubuntu trusty-updates multiverse
deb-src sg.archive.ubuntu.com/ubuntu trusty-updates multiverse
deb sg.archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse
deb-src sg.archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse
deb security.ubuntu.com/ubuntu trusty-security main restricted
deb-src security.ubuntu.com/ubuntu trusty-security main restricted
deb security.ubuntu.com/ubuntu trusty-security universe
deb-src security.ubuntu.com/ubuntu trusty-security universe
deb security.ubuntu.com/ubuntu trusty-security multiverse
deb-src security.ubuntu.com/ubuntu trusty-security multiverse
deb extras.ubuntu.com/ubuntu trusty main
deb-src extras.ubuntu.com/ubuntu trusty main

________________________________________________________
Для работы, обычно достаточно знать всего несколько команд. Лично я, вполне обхожусь следующими:

vi /file_folder/filename - открыть файл в редакторе vi
vi /file_folder/filename ++25 - открыть файл в редакторе vi и перейти к строке 25.

i - включить режим внесения зменений. В данном режиме vi работает как и большинство текстовых редакторов.
[Esc] - выйти из данного режима

u - undo (отмена)
CTRL + R - redo

:w [Enter] - сохранить внесенные изменения.

:q! [Enter] - выйти без сохранения изменений
:wq [Enter] - сохранить внесенные изменения и выйти.

dd - удалет строку на которой находится курсор
x - удалет символ на котором находится курсов
d, SHIFT+4 - удалет символы справа от текущего курсора до конца строки.


[y] - копирует строку в буфер
[P] - вставляет скопированную строку после той, на которой в текущий момент находится курсор
________________________________________________________
ссыль на первоисточник но с дополнениями от меня:
www.dell.com/en-us/shop/accessories/apd/a8992051?cs=04&l=en&c=us&sku=A8992051

далее установим mc
и не забываем перед работой по ssh сгенерить ключ
ssh-keygen  ssh-keygen -t rsa
так как система свежеустановленная, без дополнительных пакетов полностью чистая, обновляемся:

sudo apt-get update
для подтягивания ключей которых нет (репозиторий)
команда
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com `sudo apt-get update 2>&1 | grep -o '[0-9A-Z]{16}$' | xargs`

обновим повторно источники
sudo apt-get update
sudo apt-get upgrade
подготовка завершена

выяснилось что и на ubuntu 14 также именование сетевых интерфейсов в серверной версии чудное, сетевые карты определились как p8p0 и p11p0, исправил по статье, где также странное именование было сетевых.
Возвращаем eth следующим образом:

# mcedit /etc/default/grub
Находим строку:

GRUB_CMDLINE_LINUX_DEFAULT=
Указываем параметр — «biosdevname=0»:

GRUB_CMDLINE_LINUX_DEFAULT=«biosdevname=0»
Сохраняем и обновляем GRUB:

# update-grub
Перезагружаем сервер:
# reboot
Далее:
Открываем:

mcedit /etc/network/interfaces
Меняем имена в файле на нужные eth (метод научного тыка рулит, определяем какой интерфейс какой). Поднимаем интерфейс:

# ifconfig eth0 up
в моем случае eth1 встроенная сетевая на первом этапе по dhcp получаем адресацию.
ребутаем сервер для проверки все ли интерфейсы поднялись без нашего вмешательства.
Проверяем:
root@proxy:~# dmesg | grep eth
[ 2.965035] r8169 0000:01:00.0 eth0: RTL8168e/8111e at 0xf8452000, 84:16:f9:05:8b:c3, XID 0c200000 IRQ 121
[ 2.965036] r8169 0000:01:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[ 2.971004] r8169 0000:02:00.0 eth1: RTL8168h/8111h at 0xf8454000, 10:7b:44:8e:14:43, XID 14100800 IRQ 123
[ 2.971005] r8169 0000:02:00.0 eth1: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[ 7.808404] r8169 0000:02:00.0 eth1: link down
[ 7.808407] r8169 0000:02:00.0 eth1: link down
[ 7.808484] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 7.957359] r8169 0000:01:00.0 eth0: link down
[ 7.957404] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 10.792835] r8169 0000:02:00.0 eth1: link up
[ 10.792841] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[ 41.323263] r8169 0000:02:00.0 eth1: link down
[ 44.876701] r8169 0000:02:00.0 eth1: link up

соответственно можно просто ifconfig

t@proxy:~# ifconfig
eth0 Link encap:Ethernet HWaddr 84:16:f9:05:8b:c3
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

eth1 Link encap:Ethernet HWaddr 10:7b:44:8e:14:43
inet addr:192.168.88.52 Bcast:192.168.88.255 Mask:255.255.255.0
inet6 addr: fe80::127b:44ff:fe8e:1443/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3057 errors:0 dropped:0 overruns:0 frame:0
TX packets:100 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:251390 (251.3 KB) TX bytes:12384 (12.3 KB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

так с сетевыми интерфейсами закончили на данном этапе
Также есть рекомендация
Передать ядру параметр net.ifnames=0 и не мучать udev, заставляя его переделывать то что делеает systemd.
 
Для этого нужно эту строчку добавить в переменную GRUB_CMDLINE_LINUX в файле /etc/defaul/grub, после этого выполнить sudo update-grub и перезагрузиться.
_____________________________________________________________________________________________________________
добовляем репозиторий для gcc-4.9 g++-4.9 cpp-4.9
add-apt-repository ppa:ubuntu-toolchain-r/test
Выхлоп:
ubuntu 14 apt-add-repository: command not found
лечение:
The last time I encountered the add-apt-repository: command not found error I was using Ubuntu Server. The solution then was to install python-software-properties as

follows:
sudo apt-get install python-software-properties

This did not resolve the issue on my minimal virtual machine installation on Trusty so I installed apt-file – which is an apt package searching utility:
#sudo apt-get install apt-fil
 
Update apt-file:
#apt-file update

Finally use apt-file to search for the add-apt-repository package:
#apt-file search add-apt-repository

As you can see add-apt-repository is in software-properties-common:
#-software-properties-common: /usr/bin/add-apt-repository
#-software-properties-common: /usr/share/man/man1/add-apt-repository.1.gz
 
After installing software-properties-common I was able to use add-apt-repository without any further issue:
#sudo apt-get install software-properties-common

sudo apt-get update
теперь нормально репозиторий добавился!!
______________________________________________________________________________________________________________
поиск пакетов
apt-cache search keyword

ставим допольнительные пакеты

sudo apt-get install git fakeroot build-essential devscripts libssl-dev libgnutls28-dev checkinstall dpkg-dev  gcc-4.9 cpp-4.9 g++-4.9 cifs-utils mc

если нужно что-то закачать из расшареных папок в сети то используем команду например для виндовой шары:

mount -t cifs //172.16.10.1/private /mnt/win/ -o user=admin,pass=secret

далее mc вам в помощь.
отмонтировать не забываем.
umount /mnt/win/
_______________________________________________________________________________________________________________
чтобы не засорять домашнюю папку создадим в ней папку temp и в ней три папки squid, libressl, libecap3
переходим в /home/user/temp/libressl
Далее скачаем, скомпилируем и установим Libressl:

wget http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.6.3.tar.gz
tar -xzvf libressl-2.6.3.tar.gz
cd libressl-2.6.3

Собираем и устанавливаем, после чего перечитаем хеши библиотек:

./configure
make
sudo checkinstall --pkgname libressl --pkgversion 2.6.3
sudo dpkg -i *.deb
sudo ldconfig


Ну и надо настроить использование LibreSSL по-умолчанию:

sudo mv /usr/bin/openssl /usr/bin/openssl-1
sudo update-alternatives --install /usr/bin/openssl openssl /usr/bin/openssl-1 10
sudo update-alternatives --install /usr/bin/openssl openssl /usr/local/bin/openssl 50
sudo update-alternatives --config openssl

Проверим, получилось ли поставить Libressl:

openssl version
    LibreSSL 2.1.6


Получилось!
___________________________________________________________________________________________________
далее переходим в папку libecap3
 cd /home/юзер/libecap/

по статье выполняем часть установки libecap3, но с учетом особенностей
ссыль: http://jakondo.ru/ustanovka-squid-3-5-19-na-ubuntu-14-04-5-lts-s-podderzhkoj-https-protokola/
выполняем в папке

wget http://jakondo.ru/wp-content/uploads/file-manager/squid_3.5.19/libecap_1.0.1-3.dsc
wget http://jakondo.ru/wp-content/uploads/file-manager/squid_3.5.19/libecap_1.0.1.orig.tar.gz
wget http://jakondo.ru/wp-content/uploads/file-manager/squid_3.5.19/libecap_1.0.1-3.debian.tar.xz

Распаковываем (в зависимостях указано Build-Depends: debhelper (>= 8.0.0), autotools-dev, cdbs, dh-autoreconf, g++ (>= 4:5.2) так что надеюсь вы устнановили ранее указаные пакеты иначе ругается на то что вы не установили например на g++ по умолчанюи она древняя и apt-get upgrade не панацея):

sudo dpkg-source -x libecap_1.0.1-3.dsc

переходим в папку
cd libecap-1.0.1/
формируем пакет
dpkg-buildpackage -d
возвращаемся на уровень папки выше
cd ..
устанавливаем сформированные пакеты
sudo  dpkg -i *.deb

проверяем что поставилось
# apt-cache policy libecap3
libecap3:
  Установлен: 1.0.1-3
  Кандидат:   1.0.1-3
  Таблица версий:
 *** 1.0.1-3 0
        100 /var/lib/dpkg/status
___________________________________________________________________________________________
собственно проверяем что доступно из репозитария
apt-cache policy squid
squid:
  Установлен: (отсутствует)
  Кандидат:   3.3.8-1ubuntu6.10
  Таблица версий:
     3.3.8-1ubuntu6.10 0
        500 http://sg.archive.ubuntu.com/ubuntu/ trusty-updates/universe i386 Packages
     3.3.8-1ubuntu6.9 0
        500 http://security.ubuntu.com/ubuntu/ trusty-security/universe i386 Packages
     3.3.8-1ubuntu6 0
        500 http://sg.archive.ubuntu.com/ubuntu/ trusty/universe i386 Packages

Пользователь добавил сообщение Сегодня в 14:29:22:Собственно начинается самое основное squid какую версию использовать, ваше мнение??
качаем например такую версию
wget http://www.squid-cache.org/Versions/v4/squid-4.0.22.tar.gz
или
wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.27.tar.gz
на выбор
распаковываем скачаный вариант
 tar -xzvf squid-4.0.22.tar.gz


И два варианта установки из исходников с апдейтом старого дистриба и без:
1.С апдейтом старого дистриба (появится папка debian)

apt-get source squid

появится папка squid-3.3.8
переходим в в нее и при условии, что до актуальной тройки обновлять, то команды следующие:
uupdate -v 3.5.27 ../squid-3.5.27.tar.gz (либо путь до файла)
cd ../squid3-3.5.27/

при этом можно делать правки /debian/rules
после --with-default-user=proxy добавим в этой строке в конце " "
и вставим ниже:
--enable-ssl
--enable-ssl-crtd
--with-openssl
далее спорный параметр нужен или нет он? ваше мнение:
--enable-linux-netfilter
если не нужен то последняя вставленная без " " в конце.

НО

как показала практика как то криво берутся параметры из этого файла и можно просто распаковав архив командой
tar -xzvf squid-3.5.27.tar.gz
перейти в него
cd ./squid-3.5.27

и вставить длинный длинный команда )))
особенность - пришлось папки указывать куда все ставится также через команду, в первый раз долго искал куда поставилась программа, где конфиги и т.п. (внимательнее все должно быть одной строкой):

./configure --datadir=/usr/share/squid --sysconfdir=/etc/squid --libexecdir=/usr/lib/squid --mandir=/usr/share/man --enable-inline --disable-arch-native --enable-

async-io=8 --enable-storeio="ufs,aufs,diskd,rock" --enable-removal-policies="lru,heap" --enable-delay-pools --enable-cache-digests --enable-icap-client --enable-

follow-x-forwarded-for --enable-auth-basic="DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB" --enable-auth-digest="file,LDAP" --enable-auth-

negotiate="kerberos,wrapper" --enable-auth-ntlm="fake,smb_lm" --enable-external-acl-helpers="file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group" --enable-url-rewrite-helpers="fake" --enable-eui --enable-esi --

enable-icmp --enable-zph-qos --enable-ecap --disable-translation --with-swapdir=/var/spool/squid --with-logdir=/var/log/squid --with-pidfile=/var/run/squid.pid --

with-filedescriptors=65536 --with-large-files --with-default-user=proxy --enable-ssl --enable-ssl-crtd --with-openssl

2. Метод два
Так как, на предыдущем шаге выяснилось, что использовать файл rules, не принципиально, то возникла мысль, а что мешает сразу командой ./configure настроить все что нужно, после распаковки архива. Так пришла мысль впервые попробовать squid4 хотя что именно ставить из исходников вторым методом не важно.

для SQUID4 важно учесть:
This series of Squid requires a C++11 capable compiler. The currently known compilers which meet this criteria and build Squid-4 reliably are GCC 4.9+ and Clang 3.5+
что было выполнено ранее.

Так что товарищи, какую версию ставить для прозрачного прокси который должен фильтровать hhtp  https трафик какой вариант более не геморойный при установке, примеры конфигов:
постоянно сталкивался с проблеммой что не создаются папки программы приходилось их создавать и править им права доступа chmod 777 вам в помощь, часто возникало что pid файла нет, всегда проблемма в том что автостарт сервиса не происходит еще ни разу не победил,

Для установки после  ./configure согласно инструкции в архиве:

make all
make install
проверяем нет ли ошибок и правим зависимости, после каждой из команд.


после установки обязательно выполнить :   
 squid -z
Применяем конфигурацию
squid -k parse
squid -k reconfigure

если нет ошибок то
squid -k restart
проверяем логи и ошибки.

Добавлено: 22 Декабря 2017, 11:09:55
В связи с тем, что слишком много проблем с базовой версией из репозитория скуида, многое в ручную править в конфигах при uupdate дистрибутива папка debian и в остальных слишком много править так как кальмар отказался от цифры 3 в названии. При установке из исходников прошла, но как таковой кальмар 4, не встал и не завелся, максимум создались папки и все, make install выполнился, но не стартует от слова вообще, в списке установленных нет, на комманды не реагирует, пишет нет такой команды. Меняем дистрибутив на 17 версию, с последующим апдейтом скуида до 4 версии. Остальное останется без изменений. Основные моменты по установке и базовой настройке освещены выше.

Остается вопрос с какими параметрами выполнять ./configure чтобыон поддерживал фильтрацию https  трафика?
« Последнее редактирование: 22 Декабря 2017, 11:09:55 от wrag » Записан

живущий в консоли
начальник отдела системотехники Люцифеp
wrag
Небритый одмин
*****

Карма: 0
Сообщений: 673


ОС:
Windows 7 Windows 7
Браузер:
Firefox 57.0 Firefox 57.0


Награды
« Ответ #1 : 25 Декабря 2017, 09:51:33 »

в связи перехода на новую версию софта обсуждение переносим в соседнюю ветку
Записан

живущий в консоли
начальник отдела системотехники Люцифеp
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM