Debian прокси сервер

    Squid — это мощный пакет, реализующий проксирование проходящих через него запросов, имеет огромный набор возможностей. В локальной сети чаще всего его используют как прозрачный кэширующий прокси. Настроим по порядку 3 основные возможности squid.

1. Для начал устанавливаем squid (для Debian 6)

apt-get install

squid3
apt-get install squid3

2. Файл с настройка squid.conf лежит в /etc/squid3/. Содержит он около 5,5 тысяч строк. Но не все так страшно, основная масса этого файла — это подробные комментарии к настройкам. Как удобнее внести изменения в файл выбирать Вам. Можно избавиться от всего лишнего в файле таким способом

# переходим в папку squid

cd

/

etc

/

squid3

# делаем резервную копию файла с настройками

cp

squid.conf squid.conf_backup

# получаем из squid.conf_backup чистый файл с настройками без комментариев в squid.conf

cat

squid.conf_backup

|

egrep

-v

'^#|^$'

>

squid.conf
# переходим в папку squid

cd /etc/squid3

# делаем резервную копию файла с настройками

cp squid.conf squid.conf_backup

# получаем из squid.conf_backup чистый файл с настройками без комментариев в squid.conf

cat squid.conf_backup | egrep -v '^#|^$' > squid.conf

и получить «голый» файл с настройка, следующего содеражания

acl manager proto cache_object
acl localhost src 127.0.0.1

/

32

::

1

acl to_localhost dst 127.0.0.0

/

8

0.0.0.0

/

32

::

1

acl SSL_ports port

443

acl Safe_ports port

80

        

# http

acl Safe_ports port

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 CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny

!

Safe_ports http_access deny CONNECT

!

SSL_ports http_access allow localhost http_access deny all http_port

3128

hierarchy_stoplist cgi-bin ? coredump_dir

/

var

/

spool

/

squid3 refresh_pattern ^ftp:        

1440

    

20

%

    

10080

refresh_pattern ^gopher:    

1440

    

0

%

    

1440

refresh_pattern

-i

(

/

cgi-bin

/|

\?

)

0

    

0

%

    

0

refresh_pattern .        

0

    

20

%

    

4320

acl manager proto cache_object

acl localhost src 127.0.0.1/32 ::1

acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

acl SSL_ports port 443

acl Safe_ports port 80        # http

acl Safe_ports port 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 CONNECT method CONNECT

http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost

http_access deny all

http_port 3128

hierarchy_stoplist cgi-bin ?

coredump_dir /var/spool/squid3

refresh_pattern ^ftp:        1440    20%    10080

refresh_pattern ^gopher:    1440    0%    1440

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

refresh_pattern .        0    20%    4320

Останется внести лишь необходимые изменения в  строках. Второй вариант — это редактировать весь файл без его чистки. Что тоже довольно просто если уметь пользоваться поиском в редакторе vi. В этом случае у Вас в помощь останутся много полезных комментариев к настройкам.

Для поиска текста в редакторе vi нажимаем клавишу «/». Если Вы находитесь в режиме редактирования, нужно выйти из него для передачи команд редактору нажатием на «Esc». Получаем такую последовательность действий: «/» > «вводим поисковое слово» > «Enter».

Теперь редактируем файл, делаем основные настройки. Если нужных строк нет, то добавляем их или раскоментируем.

vi

/

etc

/

squid3

/

squid.conf
vi /etc/squid3/squid.conf

# Разрешаем доступ к прокси только из нашел сети

acl localnet src 172.16.0.0

/

24

http_access allow localnet http_access allow localhost

# По умолчанию порт работы прокси 3128

# Так как у нас прокси будет прозрачным - указываем это

# а так же адрес интерфейса с портом на котором будет работать прокси

# на этот же порт будут перенаправляться запросы в iptables

http_port 172.16.0.1:

3128

transparent
# Разрешаем доступ к прокси только из нашел сети

acl localnet src 172.16.0.0/24

http_access allow localnet

http_access allow localhost

# По умолчанию порт работы прокси 3128

# Так как у нас прокси будет прозрачным - указываем это

# а так же адрес интерфейса с портом на котором будет работать прокси

# на этот же порт будут перенаправляться запросы в iptables

http_port 172.16.0.1:3128 transparent

3. Обеспечиваем кэширование запросов

# Установка директории кэша и его настройка

# ufs - способ кэширования файлов на диске

# /var/spool/squid3 - папка кэша

# 5000 - размер кэша в мегабайтах

# 16 - количество папок 1 уровня в кэше

# 256 - количество папок 2 уровня в кэше

cache_dir ufs

/

var

/

spool

/

squid3

5000

16

256

# ограничим минимальный размер кэшируемого файла, чтобы облегчить работу жесткому диску

# либо можно потерять весь смысл кэша, если он будет медленно работать

minimum_object_size

2

KB

# ограничиваем и максимальный размер

maximum_object_size

61440

KB
# Установка директории кэша и его настройка

# ufs - способ кэширования файлов на диске

# /var/spool/squid3 - папка кэша

# 5000 - размер кэша в мегабайтах

# 16 - количество папок 1 уровня в кэше

# 256 - количество папок 2 уровня в кэше

cache_dir ufs /var/spool/squid3 5000 16 256

# ограничим минимальный размер кэшируемого файла, чтобы облегчить работу жесткому диску

# либо можно потерять весь смысл кэша, если он будет медленно работать

minimum_object_size 2 KB

# ограничиваем и максимальный размер

maximum_object_size 61440 KB

4. Squid, сконфигурированный по умолчанию, добавляет к http-запросу несколько своих заголовков. При этом, в первых двух заголовках передается клиентский ip (или даже несколько ip, в случае цепочки прокси). Если нам это ни к чему, ну например, не хотим светить внутренние ip своей локалки, то сделать squid анонимным очень просто

via off
forwarded_for delete
via off

forwarded_for delete

После завершения всех настроек, стоит проверить анонимность запросов на страничке Если все сделано правильно, то результатом будет надпись «Resume: You are using high-anonymous (elite) proxy».

На этом внесение изменений в файл закончены. В конечном итоге squid.conf должен выглядеть так

acl manager proto cache_object
acl localhost src 127.0.0.1

/

32

::

1

acl to_localhost dst 127.0.0.0

/

8

0.0.0.0

/

32

::

1

  acl localnet src 172.16.0.0

/

24

 

# RFC1918 possible internal network

  acl SSL_ports port

443

acl Safe_ports port

80

         

# http

acl Safe_ports port

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 CONNECT method CONNECT   http_access allow manager localhost http_access deny manager   http_access deny

!

Safe_ports   http_access deny CONNECT

!

SSL_ports   http_access allow localnet http_access allow localhost   http_access deny all   http_port 172.16.0.1:

3128

transparent   hierarchy_stoplist cgi-bin ?   cache_dir ufs

/

var

/

spool

/

squid3

5000

16

256

minimum_object_size

2

KB maximum_object_size

61440

KB   coredump_dir

/

var

/

spool

/

squid3   refresh_pattern ^ftp:          

1440

   

20

%

    

10080

refresh_pattern ^gopher:       

1440

   

0

%

     

1440

refresh_pattern

-i

(

/

cgi-bin

/|

\?

)

0

    

0

%

     

0

refresh_pattern .              

0

      

20

%

    

4320

  via off forwarded_for delete
acl manager proto cache_object

acl localhost src 127.0.0.1/32 ::1

acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1



acl localnet src 172.16.0.0/24  # RFC1918 possible internal network



acl SSL_ports port 443

acl Safe_ports port 80          # http

acl Safe_ports port 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 CONNECT method CONNECT



http_access allow manager localhost

http_access deny manager



http_access deny !Safe_ports



http_access deny CONNECT !SSL_ports



http_access allow localnet

http_access allow localhost



http_access deny all



http_port 172.16.0.1:3128 transparent



hierarchy_stoplist cgi-bin ?



cache_dir ufs /var/spool/squid3 5000 16 256

minimum_object_size 2 KB

maximum_object_size 61440 KB



coredump_dir /var/spool/squid3



refresh_pattern ^ftp:           1440    20%     10080

refresh_pattern ^gopher:        1440    0%      1440

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

refresh_pattern .               0       20%     4320



via off

forwarded_for delete

Для применения настроек останавливаем squid

service squid3 stop
service squid3 stop

Подготавливаем директорию кэша squid

squid3 

-z

squid3 -z

Запускаем прокси

service squid3 start
service squid3 start

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

squid3 

-k

reconfigure
squid3 -k reconfigure

5. Остается лишь настроить прозрачность прокси. Это обеспечивает незаметную для пользователей локальной сети работу через прокси, т.е. нет необходимости настраивать пользователям программы для работы с прокси. Прозрачность обеспечивается простым перенаправлением http запросов с 80 порта на порт прокси сервера посредством фаервола iptables и включением режима прозрачного прокси в самом squid. Изменения в настройках squid мы сделали выше. Добавляем к правилам iptables еще одну строку:

iptables 

-t

nat

-A

PREROUTING

-i

eth0

-p

tcp

--dport

80

-j

REDIRECT

--to-port

3128

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Обязательно в параметре указывайте нужный интерфейс на котором будет работать прокси: -i eth0. Это избавит Вас от проблем с доступом к web серверу из интернета при наличии более одного активного интерфейса, если таковой будет в будущем на этом сервере. А так же ради безопасности прокси.

Ну и на всякий случай squid.conf в разных вариантах:

Исходный файл без изменений

Исходный файл чищеный от комментариев

Настроенный файл squid.conf

Настроенный файл squid.conf без комментариев

VN:F [1.9.22_1171]

Рейтинг: 9.7/10 (3 голоса(ов))

,

9.7

out of

10

based on

3

ratings

Если человек испуган, то он видит лучше, чем в нормальном состоянии.