squidの構成たたは有料゜リュヌションを賌入しない方法

画像

みなさんこんにちは

倚くの堎合、組織ではあらゆる皮類のプロキシ、プロキシを゜フトりェアゲヌトりェむの䞀郚ずしお䜿甚するか、独立したクラシックバヌゞョンのsquid +ログアナラむザヌなどを䜿甚したす。

IdecoずIKSの゜リュヌションを実装しようずしたしたが、最終的にはsquidに萜ち着きたした。 カットの䞋で、パスの歎史ず叀き良きむカの蚭定に関する技術情報。

画像

おそらく、2018幎にhabrでsquidを蚭定するこずに関する蚘事を芋るのは確かに奇劙であるずいう事実から始めたすが、それでも、珟圚でも、有料補品は、矎しいむンタヌフェヌスを備えた有料補品の根底にあるオヌプン゜ヌス゜フトりェアよりも劣る堎合がありたす。

それはすべお、管理者がむンタヌネット課金を賌入する䜙裕があるこずを明確にしたずいう事実から始たりたした。

芁件は、Windows ADぞの統合、ADからの完党なナヌザヌ管理、スピヌドシェヌパヌ、コンテンツタむプ、サむトリストによるフィルタリング、ネットワヌク党䜓からロヌカル䌁業リ゜ヌスぞのアクセスを蚱可する機胜です。

䌚瀟のネットワヌクには550台を超えるコンピュヌタヌがありたす。 それらのほずんどは、内郚リ゜ヌスにアクセスする必芁がありたす。

仮想環境、Hyper-vコア仮想化サヌバヌですべおが展開されおいたした-間違った遞択です。蚘事の最埌で理由を説明したす。

出堎者の遞択に぀いお少し説明したす。UserGate私はITで働き始めたずきから芚えおいたす。叀いメモリのために、Windowsアプリケヌションはデフォルトでは適切ではありたせん。

Internet Control ServerIKS-テストになりたした。 10回のうち2回しか正しくロヌドできず、その優れた䞍安定性がさらに進んだこずに泚目したした。 ずころで、私は開発者のナヌモアに泚意するしかありたせんが、開発者は知っおいるでしょう 補品は開発䞭で、すでに問題はないかもしれたせんが、問題は解決されおいたす。

Ideco-私はそれが玠晎らしい゜リュヌションであるず蚀っおいたしたが、機胜にはむンタヌネット請求だけでなく、すべおの利点を備えた本栌的なゲヌトりェむが含たれおいたす。 それでも、圌は完党なテストに合栌し、乗り越えられない2぀の障害が生じたした。

1.ネットワヌク党䜓の特定のリ゜ヌスたたはドメむンのすべおのナヌザヌにアクセスを蚱可するこずはできたせん。デフォルトでは、ラむセンスを必芁ずするナヌザヌをカりントしたせん。

1.1-ポむント1は、かなりの䟡栌を意味したす。 瀟内にはかなりの数のコンピュヌタヌがあり、内郚Webサヌビスに接続する必芁があり、むンタヌネットにアクセスする必芁はありたせん。内郚リ゜ヌスを䜿甚するためのラむセンスを賌入する予定も、むンタヌネットを配信するサヌバヌ甚の動物園を蚭定する予定もありたせん。

2.コンピュヌタヌの IPアドレスは、プロキシで最初に認蚌されたナヌザヌの名前に厳密に関連付けられおいるため、埓業員を倉曎するずきは管理が必芁でした。 手動モヌドでバむンドを削陀するパネル。もちろん、ADを介しおすべおを管理する芁件を満たしおいたせん。

ちなみに、idecoゲヌトりェむは、ADにバむンドせずに、最倧40ナヌザヌたで無料バヌゞョンで利甚できたす。 IDECO SELECTAも登堎したか、そのリリヌスに気付かなかったか、すべおのテスト埌にリリヌスされたした。

すべおのステップが終了した埌、私たち自身でsquidですべおを行うこずが決定されたしたが、技術的な芁件に合わせお調敎されたした。

たず、ネットワヌク䞊に正しい完党なマニュアルはなく、いく぀かの郚分がありたすが、すべおの指瀺は新しいsquidリリヌスによっお無効にされたした。

私たちはubuntuサヌバヌを䜿甚しおいるため、次の情報はこのOSに関連しおおり、他のOSずは倧きく異なる可胜性がありたす。

コマンドラむンのすべおをsudoの䞋から実行する必芁がありたす。その埌、各コマンドにsudoを远加したせん。

OS ubuntuサヌバヌ16.04の構成

apt-get update apt-get upgrade apt-get install mc g++ libecap3-dev libdb-dev libldap2-dev libpam0g-dev libldb-dev libsasl2-dev libkrb5-dev gcc libssl-dev krb5-user libpam-krb5 libkrb5-3 libsasl2-modules-gssapi-mit linux-virtual-lts-xenial linux-tools-virtual-lts-xenial linux-cloud-tools-virtual-lts-xenial linux-image-virtual linux-tools-virtual linux-cloud-tools-virtual squid3 

なぜなら Hyper-v仮想化を䜿甚しおから、必芁なパッケヌゞをむンストヌルしたした。

サむトのサむトからむカをダりンロヌドしたす。この投皿ではバヌゞョン3.5.26を解析したす。他のバヌゞョンではおそらく無関係です。 DockerのUPDは、3.5.28の通垞のフラむトを構成したした。

 wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.26.tar.gz 

自宅たたはその他のディレクトリに解凍したす。

 tar xzf squid-3.5.26.tar.gz cd /home/squid-3.5.26/ 

 chmod +x configure 

必芁なパッケヌゞを瀺したす。䞍芁なパッケヌゞを削陀するか、䜕かを远加したす。 誰かにずっおは䜙分なものがたくさんあるようです。 むンストヌルされおいるsquidのバヌゞョンからリストを取埗するず、远加のパッケヌゞが远加されたす。

 ./configure '--enable-ssl' '--with-openssl=/usr/lib/ssl/' '--disable-ipv6' '--enable-ssl-crtd' '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' 'BUILDCXXFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' '--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-build-info=Ubuntu linux' '--enable-linux-netfilter' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security' make make install 

--with-openssl = / usr / lib / ssl /-opensslぞのパスを指定したす。ubuntuサヌバヌのデフォルトパスが指定されたす。
--disable-ipv6-ipv6をオフにしたす-以䞋の理由をお読みください。
--enable-ssl-crtd-これは、バンプ甚のSSL蚌明曞を生成するバンドル甚です。

䟝存関係がある可胜性があるため、むンストヌルする必芁がありたす。

デフォルトでは、すべおが/ etc / squid /にむンストヌルされたす

SSL蚌明曞甚に/ etc / squid内にフォルダヌを䜜成したす。

 mkdir /etc/squid/ssl/private 

蚌明曞を䜜成したす。
ディレクトリに移動したす

 cd mkdir /etc/squid/ssl/private 

キヌを䜜成する

 openssl genrsa -aes256 -out private.pem 2048 

蚌明曞を䜜成する

 openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -keyout private.pem -out public.pem 

蚌明曞をブラりザヌに適した圢匏に倉換する

 openssl x509 -outform der -in public.pem -out squid3domainlocal.der 

蚌明曞デヌタベヌスを䜜成したす。

 /usr/lib/squid/ssl_crtd -c -s /etc/squid/ssl/ssl_db/ 

アクセスを割り圓おる

 chown root:proxy -R /etc/squid/ssl chmod 640 -R /etc/squid/ssl/private chmod 660 -R /etc/squid/ssl/ssl_db 

プロキシサヌバヌの名前ず蚌明曞の䜜成時に指定された名前は同じである必芁があるこずに泚意しおください。 圢匏はsquid3.domain.localです。

グルヌプポリシヌを䜿甚しおsquid3domainlocal.derを取埗するか、信頌できる蚌明機関に手動で入力したした。 ブラりザのプロキシサヌバヌは、ipではなく、コンピュヌタヌのフルネヌムsquid3.domain.localなどを瀺したす。

ドメむンに普通のナヌザヌを䜜成し、squid3にしたす。

Kerberosを介しお認蚌を枡すには、プリンシパルHTTP/squid3.DOMAIN.LOCAL@DOMAIN.LOCALのsquid3ナヌザヌのキヌタブが必芁です。ネット広告を介したドメむンぞの暙準ログむンで、keytab /etc/krb5.keytabが䜜成されたすが、httpずhostではないプリンシパルを瀺したす。 Webブラりザを介しおナヌザヌを認蚌するこずを䞍可胜にするもの。 keytabを/etc/krb5.keytabに配眮し、マシン自䜓をドメむンに入力するず、keytabに新しいプリンシパルが远加されるだけですが、sambaパッケヌゞをむンストヌルしおマシンをドメむンに入力する必芁がないこずに泚意しおください。ナヌザヌ。

次に、ドメむンコントロヌラヌに移動しお、簡単なコマンドを実行したす。

 ktpass -princ HTTP/squid3.DOMAIN.LOCAL@DOMAIN.LOCAL mapuser squid3@DOMAIN.LOCAL -crypto AES128-SHA1 -pass XXXXXXXXXXXXXX -ptype KRB5_NT_PRINCIPAL -out c:\krb5.keytab 

受信したファむルをプロキシサヌバヌに転送しおから、䟿利な堎所に配眮し、/ etc / krb5.keytabを遞択したす。

Webサむト、統蚈、たたは䌚瀟の内郚ポヌタルに察しおも承認を行う堎合は、グルヌプを䜜成し、そこにプロキシおよびwww-dataナヌザヌを含める必芁がありたす。

グルヌプを䜜成したす。

 groupadd allowreadkeytab 

グルヌプに必芁なナヌザヌを远加したす。

 adduser proxy allowreadkeytab adduser www-data allowreadkeytab 

所有者をkrb5.keytabに割り圓おる

 chown root:allowreadkeytab /etc/krb5.keytab 

远加のサヌビスぞのアクセス暩を付䞎する必芁がない堎合、グルヌプを䜜成せず、単に所有者ず暩利を蚭定したす。

 chown root:proxy /etc/krb5.keytab 

アクセスを割り圓おる

 chmod 640 /etc/krb5.keytab 

取埗するもの

 -rw-r----- 1 root allowreadkeytab /etc/krb5.keytab 

たたは

 -rw-r----- 1 root proxy /etc/krb5.keytab 

ルヌトの読み取りず曞き蟌み、allowreadkeytabの読み取りのみ、残りのアクセスは犁止。

krb5.confを構成する

 mcedit /etc/krb5.conf 

krb5.conf
  [libdefaults] krb4_config = /etc/krb.conf krb4_realms = /etc/krb.realms kdc_timesync = 1 ccache_type = 4 forwardable = true proxiable = true default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 default_keytab_name = FILE:/etc/krb5.keytab v4_instance_resolve = false v4_name_convert = { host = { rcmd = host ftp = ftp } plain = { something = something-else } } fcc-mit-ticketflags = true [realms] DOMAIN.LOCAL = { kdc = DC1.DOMAIN.LOCAL kdc = DC2.DOMAIN.LOCAL admin_server = DC1.DOMAIN.LOCAL admin_server = DC2.DOMAIN.LOCAL default_domain = DOMAIN.LOCAL } [domain_realm] .domain.local = domain.LOCAL domain.local = domain.LOCAL [login] krb4_convert = true krb4_get_tickets = false 


保存したす。

squid.confの䞋にはすべおのaclずすべおのルヌルが含たれるわけではないこずに泚意しおください。構成の䟋は1぀だけで、aclの完党な構成ずサむトぞのアクセスリストなどがありたす。 倧きすぎたす。 次の構成は、ニヌズに合わせお倉曎が必芁ず芋なすこずができたす。

squidの構成に進みたす。

 mcedit /etc/squid/squid.conf acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 21 acl purge method PURGE acl CONNECT method CONNECT http_access allow purge localhost http_access deny purge http_access deny CONNECT !SSL_ports 

これは重芁なポむントです。接続を盎接「コンピュヌタヌ」に䞊げるサむトがあり、ナヌザヌ認蚌は実行されたせん。 その結果、接続がブロックされたす。 この問題を回避するには、特定のIPに特定のサむトぞのアクセス暩を付䞎したす。

!!! 重芁な泚意!!! ルヌルは、認蚌basic、ntlm、kerberosなどのルヌルの䞊に配眮する必芁がありたす。

 acl authip src "/etc/squid/pools/ip.txt" acl domainautip dstdomain "/etc/squid/exceptions/domain.txt" http_access allow authip domainautip http_reply_access allow authip domainautip 

ACLを定矩したす。

→ ドキュメント

コンテンツのタむプを決定するACL

acl application_mime rep_mime_type application / octet-stream
acl video_mime rep_mime_type "/etc/squid/ban/mime_type_video.txt"

mime_type_video.txt
ビデオ/ mpeg
ビデオ/ mp4
ビデオ/ ogg
ビデオ/クむックタむム
ビデオ/ webm
ビデオ/ x-ms-wmv
ビデオ/ x-flv
ビデオ/ 3gpp
ビデオ/ 3gpp2
ビデオ/ avi
ビデオ/ msvideo
ビデオ/ x-msvideo
ビデオ/ x-dv
ビデオ/ dl
ビデオ/ x-dl
ビデオ/ vnd.rn-realvideo

䞀郚のコンテンツをURLでフィルタリングするこずもできたす。そのために、aclを䜜成したす。

acl blockextention urlpath_regex -i "/etc/squid/ban/blockextention.txt"

blockextention.txt
\ .snapshot $
\ .windows $
\ .mac $
\ .zfs $
\ .action $
\ .apk $
\ .app $
\ .bat $
\ .bin $
\ .cmd $
\ .com $
\ .command $
\ .cpl $
\ .csh $
\ .exe $
\ .gadget $
\ .inf1 $
\ .ins $
\ .inx $
\ .ipa $
\ .isu $
\ .job $
\ .ksh $
\ .msc $
\ .msi $
\ .msp $
\ .mst $
\ .osx $
\ .out $
\ .paf $
\ .reg $
\ .rgs $
\ .run $
\ .sct $
\ .sh $
\ .shb $
\ .shs $
\ .u3p $
\ .vb $
\ .vbe $
\ .vbs $
\ .vbscript $
\ .workflow $
\ .ws $
\ .wsf $
\ .bin $
\ .inf $
\ .com $
\ .cpp $
\ .msu $
\ .pif $
\ .7z $
\ .ace $
\ .arj $
\ .cab $
\ .cbr $
\ .deb $
\ .gz $
\ .gzip $
\ .jar $
\ .one $
\ .pak $
\ .ppt $
\ .rpm $
\ .sib $
\ .sis $
\ .sisx $
\ .sit $
\ .sitx $
\ .spl $
\ .tar $
\ .tar-gz $
\ .tgz $
\ .xar $
\ .zipx $
\ .asf $
\ .asm $
\ .c $
\ .cfm $
\ .cgi $
\ .class $
\ .cpp $
\ .cs $
\ .dot $
\ .dtd $
\ .fla $
\ .ged $
\ .gv $
\ .h $
\ .icl $
\ .java $
\ .jse $
\ .kml $
\ .lua $
\ .m $
\ .mb $
\ .mdf $
\ .mod $
\ .obj $
\ .pkg $
\ .pl $
\ .po $
\ .pot $
\ .ps1 $
\ .pub $
\ .py $
\ .rss $
\ .sln $
\ .so $
\ .sql $
\ .ts $
\ .vc4 $
\ .vcproj $
\ .vc4 $
\ .vcproj $
\ .vcxproj $
\ .wsc $
\ .xcodeproj $
\ .xsd $
\ .torrent $

奜奇心が匷いacl allowerrorsertもありたす。 デフォルトでは、曲がった蚌明曞を持぀サむトぞのアクセスを蚱可しおいたせん。allowerrorsertを䜿甚しお、「曲がった」SSLを持぀蚱可サむトのリストを決定したす。 これはそれほど䜎くはありたせん。

 acl banksites dstdomain "/etc/squid/allow/bank.txt" acl allofficesites dstdomain "/etc/squid/allow/alloffice.txt" acl manual dstdomain "/etc/squid/ban/manual.txt" acl allowerrorsert dstdomain "/etc/squid/exceptions/allowerrorsert.txt" 

SSLルヌルに基づいおサむトぞのアクセスを制埡するこずも可胜ですが、私の意芋では、http_accessを䜿甚しお管理する方が効率的です。 SSLルヌルで䜿甚するaclの䟋を次に瀺したす。

 acl sslproxy ssl::server_name "/etc/squid/ban/proxy.txt" 

以䞋では、このタむプのACLずそのアプリケヌションに戻りたす。

詳现モヌドでPOSTおよびMIMEリク゚ストを衚瀺できたす。

 strip_query_terms off log_mime_hdrs on 

Kerberosを介したアクティブなディレクトリグルヌプでの認蚌ずナヌザヌ承認

 auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -s HTTP/squid3.domain.local@DOMAIN.LOCAL auth_param negotiate children 20 startup=10 idle=10 auth_param negotiate keep_alive on 

ここで、停止しおより詳现に分析する必芁がありたす、子-開始できるプロセスの最倧数、垞に実行されおいるプロセスの数を起動し、アシスタントの最倧キュヌをアむドル状態にし、指定された数を超えるず、新しいアシスタントプロセスが起動されたす。

承認䜜業に関する小さな䜙談

特殊性がありたす。実際、䞀郚のサむトは他のサむトのさたざたなリ゜ヌスず写真の車を接続し、倚くの統蚈を収集するなど、各リク゚ストは承認を枡したす。これにより、承認アシスタントプロセスに倧きなキュヌが発生する可胜性があり、子䟛を増やす、アむドルを増やすこずができたす...しかし、これは䞀芋しただけで、1人のナヌザヌから数䞇件のリク゚ストが送信され、倧きなキュヌが送信される堎合がありたす。 倧きなキュヌが衚瀺されるず、CPUの負荷がロヌルオヌバヌしたす。 倚数のPCず完党なむンタヌネットアクセスを持぀少数のナヌザヌの状況では、PCにむンストヌルされたクロムは驚くほど倚くの接続を䜜成したした-1日あたりclients.google.comぞの50䞇リク゚スト。 その結果、線のピヌクがありたした。

蚘事の最埌にある゜リュヌションの詳现。デバッグプロセス䞭に発生した問題を解決するための技術的な偎面のいく぀かに぀いお説明したす。

グルヌプ内のナヌザヌを怜玢したす。

 external_acl_type domainusers ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -T d09fd0bed0bbd18cd0b7d0bed0b2d0b0d182d0b5d0bbd0b820d0b4d0bed0bcd0b5d0bdd0b0 -D DOMAIN.LOCAL external_acl_type allow-all ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-allow-all -D DOMAIN.LOCAL squid3 / ext_kerberos_ldap_group_acl -a -T d09fd0bed0bbd18cd0b7d0bed0b2d0b0d182d0b5d0bbd0b820d0b4d0bed0bcd0b5d0bdd0b0 -D DOMAIN.LOCAL external_acl_type domainusers ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -T d09fd0bed0bbd18cd0b7d0bed0b2d0b0d182d0b5d0bbd0b820d0b4d0bed0bcd0b5d0bdd0b0 -D DOMAIN.LOCAL external_acl_type allow-all ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-allow-all -D DOMAIN.LOCAL 

䞊蚘の2行で、1぀の機胜を実行し、グルヌプ内のナヌザヌを怜玢するアシスタントをロヌドし、コマンドラむンで/ usr / lib / squid3 / ext_kerberos_ldap_group_acl -a -g internet-allow-all -D DOMAIN.LOCALを実行し、Enterを抌しおナヌザヌ名を入力したす。指定されたグルヌプでナヌザヌが芋぀かった堎合、答えはOKで、芋぀からなかった堎合はERRです。 指定されたグルヌプInternet-allow-allがADで䜜成されたずいう事実に泚目したす。

あなたが気づいたなら、2぀の行が異なり、2番目の1぀の䞍可解な文字ず数字のセットですべおが明らかです...最初の行にグルヌプ「ドメむンナヌザヌ」が瀺されおおり、むカの蚭定ずヘルパヌ䜜業でキリル文字を扱いたくないので、これを行うこずにしたしたキリル文字で蚘述された名前を持぀このサヌビスに関連付けられおいるAD内の唯䞀のグルヌプ。 構文も倉曎され、gはT䞊のグルヌプを意味したす。

圌はipv6を切断した理由を䌝えるこずを玄束したした、それは長い話でした、私は行でexternal_acl_typeを指定しなかったので、蚱可はナヌザヌに行きたせんでした....... ipv4 私たちはipv6を䜿甚せず、ロヌカルネットワヌクで䜿甚する人はほずんどいたせん。そのような問題を回避するために、完党に無効にするこずが決定されたした。 これは、むンタヌネットサヌフィンにも反映されおいたせん。

速床制限のグルヌプ

 external_acl_type disable-speed ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-deny-speed -D DOMAIN.LOCAL external_acl_type allow-speed ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-allow-speed -D DOMAIN.LOCAL 

むンタヌネット蚱可速床-ADで䜜成されたグルヌプ。

倖郚ヘルパヌからグルヌプずナヌザヌを取埗するため、http_accessが機胜するように、squid構文でaclを定矩する必芁がありたす。

 acl domainusers external domainusers acl allow-all external allow-all acl allow-speed external allow-speed acl disable-speed external disable-speed 

以䞋は、蚱可ルヌルずブロックルヌルです。 ルヌルは通垞通りチェヌンで機胜し、䞊蚘のすべおがより重芁です。

 http_access allow localhost http_access deny manual http_reply_access deny application_mime http_access allow allow-all http_reply_access allow allow-all http_access allow domainusers banksites http_access deny domainusers 

ここでバンプが始たりたす。http_port行でポヌトを指定し、ssl-bump関数を指定しおから、蚌明曞の生成をオンにしおからキャッシュサむズをオンにし、ドメむンコンピュヌタヌの信頌できる認蚌局ずしお远加された単語に蚌明曞自䜓を指定し、次にキヌを指定したす。

䜜業のスキヌムは次のずおりです。クラむアントはgoogle.comに移動し、クラむアントはプロキシずのssl接続を確立し、プロキシはサむトず順番に接続したす。プロキシはサむトずのsslを解陀し、クラむアントを仲介ずしお動䜜するsslを個別に解陀したす。

接続の完党なバンプを備えたこのスキヌムは、完党に分解するこずはできたせんが、䞀方の圓事者のみがこのアプリケヌションを芋぀けられなかったため、䜿甚したせん。 さらに、httpなどのすべおのトラフィックをオヌプンに衚瀺するには、このスキヌムのみが適しおいたす。

 http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=16MB cert=/etc/squid/ssl/private/public.pem key=/etc/squid/ssl/private/private.pem 

サむトのSSL蚌明曞を生成する蚭定ヘルパヌ

 sslcrtd_program /usr/lib/squid/ssl_crtd -s /etc/squid/ssl/ssl_db -M 16MB sslcrtd_children 20 startup=10 idle=10 visible_hostname = squid3.domain.local 

バンプステップでaclを䜜成したす。3぀のステップしかありたせん。sslbump1は蚌明曞内の公開情報を確認したす。これは誰でも利甚できたす。

sslbump2はサむトぞの接続を䜜成し、sslbump3はクラむアントぞの接続を䜜成したす。

 acl step1 at_step SslBump1 acl step2 at_step SslBump2 acl step3 at_step SslBump3 

sslbumpを䜿甚するずきにスロヌされるaclを指定したす

 acl sslbanksites ssl::server_name "/etc/squid/exceptions/bank.txt" acl allowsplice ssl::server_name "/etc/squid/exceptions/allowsplice.txt" 

bank.txtおよびallowplice.txtには、ドメむン名が入りたす。

このルヌルにより、゚ラヌのある蚌明曞を受け入れるこずができたす。 有効期限切れ、自己眲名、別のホストぞの発行など。 䞊蚘のこのルヌルのaclを䜜成したした。

 sslproxy_cert_error allow allowerrorsert 

splice-埌続のすべおのアクション、぀たり そのたたスキップをバンプしないでください。
ピヌク-完党なバンプなしでアクセス可胜な情報をのぞき芋
終了-接続を閉じたす。䜿甚しないで、http_accessでフィルタリングしたす
バンプ-接続に「䟵入」し、httpsをhttpずしお衚瀺する

 ssl_bump splice allowsplice ssl_bump splice sslbanksites ssl_bump peek step1 all ssl_bump bump step2 all ssl_bump bump step3 all 

すべおの人ぞの接近アクセス。

 http_access deny all icp_access deny all htcp_access deny all 

その他の蚭定

 cache deny all error_directory /etc/squid/errors/ forwarded_for off 

速床を萜ずし、䜿甚する遅延プヌルの数を瀺したす。

 delay_pools 3 

VIPナヌザヌ、速床制限のない遞択されたサむト

 delay_class 1 1 delay_access 1 allow allow-speed delay_access 1 allow banksites delay_parameters 1 -1/-1 delay_access 1 deny all 

時間倖-むンタヌネットが切断されおいたす最倧100KB /秒

 delay_class 2 2 delay_access 2 allow !workhours delay_parameters 2 -1/-1 10000/10000 delay_access 2 deny all 

ダりンロヌド制限-制限なしで最倧10MBのチャンネル党䜓をダりンロヌドしたす。100KB / sのみです

 delay_class 3 2 delay_access 3 allow disable-speed delay_parameters 3 -1/-1 32000/10485760 delay_access 3 deny all 

ログ構文では、文字aは倧きなAに倉曎されおいたす。ここでは、6tr> Aです。 これにより、IPアドレスの代わりにログでコンピュヌタヌ名を確認できるようになりたす。もちろん、より䟿利です。

 logformat squid %ts.%03tu %6tr %>A %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt 

問題や生じた機胜に぀いおはあたりありたせん。

プロキシサヌバヌは別のdmzに衚瀺され、ファむアりォヌルはdmzずのアクセスを厳しく制限しおいたす。 なぜなら Squidは、䞻にudpによっおdnsずkerberosを垞にポヌリングし、1 ipから別のdmzにあるADサヌバヌぞの接続の蚱容数をすぐに超え、接続がリセットされたした。 問題は明らかではなく、認蚌ヘルパヌがクラッシュし、クラむアントは認蚌りィンドりを受け取りたした。

゚ラヌは次のようになりたす。

support_krb5.cc64pid = 361392017/10/24 085351 | kerberos_ldap_group゚ラヌkeytabから資栌情報を初期化䞭に゚ラヌが発生したしたレルム 'DOMAIN.LOCAL'のKDCに接続できたせん

プロキシサヌバヌでバむンドを䞊げるこずで問題を解決し、リク゚ストの数が倧幅に枛少したした。 䞀般に、ファむアりォヌルの制限を無効にするこずはできたしたが、それはそうでしたが、バむンドは接続の数を倧幅に枛らすこずができるただ良い考えです。

さらに1぀の゚ラヌがありたした。

support_sasl.cc276pid = 88722017/10/24 062631 | kerberos_ldap_group゚ラヌldap_sasl_interactive_bind_s゚ラヌロヌカル゚ラヌ
support_ldap.cc957pid = 88722017/10/24 062631 | kerberos_ldap_group゚ラヌSASL / GSSAPIを䜿甚しおLDAPサヌバヌにバむンド䞭に゚ラヌが発生したしたロヌカル゚ラヌ

バむンドでは、逆ゟヌンをコピヌする必芁がありたす。

UPD-最も興味深い

CPUずIOの負荷が高いずいう問題があり、負荷率の倧郚分はnegotiate_kerberos ioがext_kerberos_ldap_group_aclをロヌドしたした。negotiate_kerberosがext_kerberos_ldap_group_aclを開始したこずは明らかで、負荷は1日に2回30分でした。

子ずアむドルの数の比率を倉曎しおも、望たしい結果は埗られたせんでした。 デバッグプロセス䞭に、ピヌク時の蚭定で、最倧数の認蚌プロセスが開始された明確な状況がありたした。 Access.logが分析されたした。分析の結果、ピヌク負荷時に倚くのssl接続があったこずが匷調されたした。これにより、問題は認蚌ではなく、ssl_bumpでは実隓でssl_bumpが無効になり、結果ずしお負荷が完党になくなったこずがわかりたした䞀日䞭。 䞀般に、日䞭は、むカずそのアシスタントの仕事は満足のいくものではありたせんでしたが、特定の時間に膚倧な数の接続が入りたした。也燥した数単䜍時間5〜15分あたり1台のコンピュヌタヌから、バンプルヌルに該圓するSSL接続に察しお10,000のリク゚ストが受信されたした。 翌日、別のコンピュヌタヌの同じもの* Whatsapp.net。

最終的に、ssl_bumpはオンになり、問題なく動䜜したす。 タむムアりトたでに到達できないホストぞのリク゚ストが倚数ある堎合、ピヌクがありたす。 キュヌの枛少は、䞻にclient1.google.comおよびclients2.google.comがプロキシから陀倖されるこずにより圱響を受けたした。

clients1.google.comおよびclients2.google.comぞのアクセスを蚱可するか、曎新タスクを無効にするか、これらのホストをプロキシから陀倖するかを決定するのはナヌザヌ次第です。

hyper-vに関しおは、䞀般にすべおが安定しお動䜜し、通垞、皌働時間は2か月を超えたすが、仮想マシンが完党にフリヌズする日が来るか、ログたたはリブヌトに゚ラヌがなく、その埌のブヌトはしたせん動䜜状態の読み蟌み。 リセットする必芁があり、その埌のダりンロヌドは正垞です。トヌトロゞヌに぀いおは謝眪したす。 すべおが同じで、2台のubuntuサヌバヌ16.04仮想マシンが指定されたサヌバヌ䞊で回転しおおり、䞡方ずもodeず同じ問題があり、数日間の差がありたす。 この問題を解決するために、squidをdockerに転送したす。dockerでのsquidのセットアップに関する次の蚘事を䜜成したす。党䜓的には、䟝存関係党䜓を陀いおそれほど違いはありたせん。

バむンド蚭定

  nano /etc/bind/named.conf.options 

線集しお貌り付けたす

 zone "domain.local" { type slave; masters { 192.168.XX.XX; 192.168.XX.XX;}; file "bak.domain.local"; forwarders {}; zone "XX.168.192.in-addr.arpa" { type slave; masters { 192.168.XX.XX; 192.168.XX.XX;}; file "XX.168.192.in-addr.arpa.zone"; }; 

ログアナラむザヌ

スクむッドアナラむザヌ

→ りェブサむト
→手順 1぀ず 2぀

動䜜するには、apache2をむンストヌルする必芁がありたす。

 apt-get install apache2 

私がそれを䞻匵しない方法に぀いお話したす、リンクはかなり明確でアクセス可胜です。 最初のレポヌトが生成されるたで、Webアドレスには䜕も衚瀺されず、゚ラヌが発生したす。

最初のレポヌトが生成されるずすぐに、切望されたレポヌトのペヌゞが衚瀺されたす。
レポヌトのあるペヌゞは、あなたの䌚瀟のために様匏化され、ロゎ、眲名、背景などを倉曎できるこずに泚意しおください。 メむン構成で䞀郚を倉曎する必芁がありたす。

/etc/squidanalyzer/squidanalyzer.conf

/ usr / bin / squid-analyzerのテンプレヌトであるスクリプトでは

/usr/local/share/perl/5.22.1/SquidAnalyzer.pm

この蚘事は断続的に曞かれ、定期的に曎新および調敎されたした。これが圹立぀こずを願っおいたす。

以䞋はクリヌンアップされた構成のリストです。コピヌペヌストの察象ではなく、サンプルずしお䜿甚する必芁がありたす。これは䜜業コピヌを提䟛したせん。aclで指定されたファむルを䜜成し、それらを埋める必芁がありたす。

Awkは、列を衚瀺しおグルヌプ化するコマンドであるデバッグプロセスを本圓に助けたした。

  cat /var/log/squid/access.log | awk '{print $}' | cut -d: -f1 | sort | uniq -c | sort -n 

grepを远加できたす。

squidログの日付ず時刻の圢匏を倉換するには、次を䜿甚できたす。
tl6tr> ASs /03> Hs<strmru[unSh /<amt

squid.conf
 acl SSL_ports port 443 acl SSL_ports port 80 acl Safe_ports port 88 acl Safe_ports port 443 acl purge method PURGE acl CONNECT method CONNECT acl blockip src "/etc/squid/ban/blockip.txt" http_access deny blockip http_reply_access deny blockip acl allnet src 192.168.XX.0/18 acl allnet src 192.168.0.0/24 acl javaapletclient src "/etc/squid/pools/javaaplet.txt" acl javaapletdomain dstdomain "/etc/squid/exceptions/javaaplet.txt" acl microsoftcrt url_regex -i "/etc/squid/exceptions/microsoftCRT.txt" http_access allow javaapletclient javaapletdomain http_access allow allnet microsoftCRT http_reply_access allow allnet microsoftCRT http_access deny allnet manual http_access allow purge localhost http_access deny purge http_access deny CONNECT !SSL_ports acl application_mime rep_mime_type "/etc/squid/ban/mime_type_application.txt" acl audio_mime rep_mime_type "/etc/squid/ban/mime_type_audio.txt" acl video_mime rep_mime_type "/etc/squid/ban/mime_type_video.txt" acl blockextention urlpath_regex -i "/etc/squid/ban/blockextention.txt" acl blockextention2 urlpath_regex -i "/etc/squid/ban/blockextention2.txt" acl allowextention urlpath_regex -i "/etc/squid/exceptions/allowextention.txt" acl others src 192.168.XX.0/20 192.168.XX.0/18 192.168.XX.0/24 acl localnet dst 192.168.0.0/24 acl workhours time 7:00-18:59 strip_query_terms off log_mime_hdrs on acl manual_reg url_regex -i "/etc/squid/ban/manual_url.txt" acl banner_reg url_regex -i "/etc/squid/ban/adv/urls" acl dating_reg url_regex -i "/etc/squid/ban/dating/urls" acl redirector_reg url_regex -i "/etc/squid/ban/redirector/urls" acl porno_reg url_regex -i "/etc/squid/ban/porn/urls" acl shopping_reg url_regex -i "/etc/squid/ban/shopping/urls" acl socialnet_reg url_regex -i "/etc/squid/ban/socialnet/urls" acl spyware_reg url_regex -i "/etc/squid/ban/spyware/urls" acl allowerrorsert dstdomain "/etc/squid/exceptions/allowerrorsert.txt" auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -s HTTP/squid3.DOMAIN.local@DOMAIN.LOCAL auth_param negotiate children 50 startup=15 idle=15 auth_param negotiate keep_alive on external_acl_type domainusers ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -T d09fd0bed0bbd18cd0b7d0bed0b2d0b0d182d0b5d0bbd0b820d0b4d0bed0bcd0b5d0bdd0b0 -D DOMAIN.LOCAL external_acl_type allow-all ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-allow-all -D DOMAIN.LOCAL external_acl_type allow-speed ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-allow-speed -D DOMAIN.LOCAL external_acl_type standart ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-standart -D DOMAIN.LOCAL external_acl_type bankusers ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-bank -D DOMAIN.LOCAL external_acl_type disable-speed ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-deny-speed -D DOMAIN.LOCAL external_acl_type allowformat ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-allowFormat -D DOMAIN.LOCAL external_acl_type denyformat ttl=300 negative_ttl=60 ipv4 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -a -g internet-denyFormat -D DOMAIN.LOCAL acl domainusers external domainusers acl allow-all external allow-all acl allow-speed external allow-speed acl standart external standart acl bankusers external bankusers acl disable-speed external disable-speed acl allowformat external allowformat acl denyformat external denyformat http_access deny blockextention denyformat http_access deny blockextention2 allowformat http_access deny localnet others http_access deny spyware http_access deny spyware_reg http_access deny porno http_access deny porno_reg http_access deny ra http_access deny proxy http_access deny other http_access deny banner http_access deny banner_reg http_access deny dating http_access deny dating_reg http_access deny redirector http_access deny redirector_reg http_access deny standart audiovideo http_access deny standart shopping http_access deny standart shopping_reg http_access deny standart socialnet http_reply_access deny denyformat application_mime http_reply_access allow allowformat application_mime http_access deny manual http_reply_access allow all http_access allow localhost http_access allow allow-all http_access allow standart http_access allow bankusers banksites http_access allow domainusers allofficesites http_access deny domainusers !allofficesites http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=100MB cert=/etc/squid/ssl/private/public.pem key=/etc/squid/ssl/private/private.pem sslcrtd_program /usr/lib/squid/ssl_crtd -s /etc/squid/ssl/ssl_db -M 100MB visible_hostname = squid3.DOMAIN.local sslcrtd_children 70 startup=5 idle=10 acl step1 at_step SslBump1 acl step2 at_step SslBump2 acl step3 at_step SslBump3 acl sslbanksites ssl::server_name "/etc/squid/exceptions/bank.txt" acl allowsplice ssl::server_name "/etc/squid/exceptions/allowsplice.txt" sslproxy_cert_error allow allowerrorsert ssl_bump splice allowsplice ssl_bump splice sslbanksites ssl_bump peek step1 all ssl_bump bump step2 all ssl_bump bump step3 all http_access deny all icp_access deny all htcp_access deny all cache deny all cache_mgr support@DOMAIN.COM dns_v4_first on negative_ttl 10 seconds hosts_file /etc/hosts error_directory /etc/squid/errors/ forwarded_for off delay_pools 3 delay_class 1 1 delay_access 1 allow allow-speed delay_access 1 allow allofficesites delay_access 1 allow allowspeeddomain delay_parameters 1 -1/-1 delay_access 1 deny all delay_class 2 2 delay_access 2 allow !allow-speed delay_access 2 allow !allowspeeddomain delay_access 2 allow !workhours delay_parameters 2 -1/-1 625000/625000 delay_access 2 deny all delay_class 3 2 delay_access 3 allow disable-speed delay_parameters 3 -1/-1 320000/10485760 delay_access 3 deny all deny_info ERR_ACCESS_DENIED_BANNERS banner banner_reg deny_info ERR_ACCESS_DENIED_DATING dating dating_reg deny_info ERR_ACCESS_DENIED_REDIRECTOR redirector redirector_reg deny_info ERR_ACCESS_DENIED_PORNO porno porno_reg deny_info ERR_ACCESS_DENIED_SOCIALNET socialnet socialnet_reg deny_info ERR_ACCESS_DENIED_SPYWARE spyware spyware_reg deny_info ERR_ACCESS_DENIED_MANUAL manual manual_reg deny_info ERR_ACCESS_DENIED_AUDIOVIDEO audiovideo deny_info ERR_ACCESS_DENIED_BLOKEXTENTION blockextention deny_info ERR_ACCESS_DENIED_BLOKEXTENTION2 blockextention2 logformat squid %ts.%03tu %6tr %>A %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt 

Source: https://habr.com/ru/post/J347212/


All Articles