Différences entre les versions de « Proxy squid sous windows »

De BlaxWiki
Aller à la navigationAller à la recherche
(Page créée avec « Le but de cette configuration est qu'un user connecté à un windows dans un domaine puisse utiliser le proxy d une machine linux en s'authentifiant automatiquement avec s... »)
 
Ligne 2 : Ligne 2 :




= Pre requis =
{{{yum install sssd-tools realmd squid samba-common.noarch samba-common-tools samba-winbind samba-winbind-clients krb5-workstation sssd-ad sssd sssd-common sssd-client sssd-krb5-common sssd-krb5}}}
{{{yum install sssd-tools realmd squid samba-common.noarch samba-common-tools samba-winbind samba-winbind-clients krb5-workstation sssd-ad sssd sssd-common sssd-client sssd-krb5-common sssd-krb5}}}



Version du 13 juillet 2021 à 10:41

Le but de cette configuration est qu'un user connecté à un windows dans un domaine puisse utiliser le proxy d une machine linux en s'authentifiant automatiquement avec son compte windows AD


Pre requis

{{{yum install sssd-tools realmd squid samba-common.noarch samba-common-tools samba-winbind samba-winbind-clients krb5-workstation sssd-ad sssd sssd-common sssd-client sssd-krb5-common sssd-krb5}}}

Création et opérations sur le ".keytab".

Sur srv78dc01.csn-interne.fr :

cmd ou powershellcmd ( en admin du comaine ) => {{{cd <le répertoire souhaité>}}}, puis

{{{ktpass -out srv78squid01b.csn-interne.fr.keytab -mapUser squid@CSN-INTERNE.FR +rndPass -mapOp set +DumpSalt -crypto ALL -ptype KRB5_NT_PRINCIPAL -princ HTTP/srv78squid01b.csn-interne.fr@CSN-INTERNE.FR}}}

ensuite, rapatrier le srv78squid01b.csn-interne.fr.keytab sur le serveur srv78squid01b.csn-interne.fr (Ma technique perso pour les nouveaux arrivants: copier/coller sur votre desktop du rdsh puis via putty click droit "upload to CWD" pour ramener le fichier sur le serveur ) et le mettre dans le dossier /etc/squid/ .

Puis on duplique ensuite les entrées du keytab dans la keytab par default de krb5 et reciproquement. ( mieux pour quand faut debug )

{{{ ktutil read_kt /etc/krb5.keytab read_kt /etc/squid/srv78squid01b.csn-interne.fr.keytab write_kt /etc/krb5.keytab write_kt /etc/squid/srv78squid01b.csn-interne.fr.keytab }}}

Fichiers system non standards Agarik

/!\ Les modifications sont indispensables sinon ça marche pas. /!\

/etc/hosts

{{{ 127.0.0.1 localhost localhost.localdomain srv78squid01b.csn-interne.fr srv78squid01

1 localhost6 localhost6.localdomain6
  1. BEGIN ANSIBLE MANAGED BLOCK

192.168.26.15 ntp1.agarik.com 172.26.0.15 ntp2.agarik.com

  1. END ANSIBLE MANAGED BLOCK

10.252.42.27 supervision.agarik.com

  1. Necessaire a squid

172.30.102.33 svr78dc01.csn-interne.fr svr78dc01 10.1.2.1 svr75dc01.csn-interne.fr }}}

/etc/resolv.conf

{{{

  1. Generated by NetworkManager
 search csn-interne.fr
nameserver 172.30.102.33
nameserver 10.1.2.1 }}}

/etc/chrony.conf

{{{# Use public servers from the pool.ntp.org project.

  1. Please consider joining the pool (http://www.pool.ntp.org/join.html).
  2. pool 2.rhel.pool.ntp.org iburst
  1. Record the rate at which the system clock gains/losses time.

driftfile /var/lib/chrony/drift

  1. Allow the system clock to be stepped in the first three updates
  2. if its offset is larger than 1 second.

makestep 1.0 3

  1. Enable kernel synchronization of the real-time clock (RTC).

rtcsync

  1. Enable hardware timestamping on all interfaces that support it.
  2. hwtimestamp *
  1. Increase the minimum number of selectable sources required to adjust
  2. the system clock.
  3. minsources 2
  1. Allow NTP client access from local network.
  2. allow 192.168.0.0/16
  1. Serve time even if not synchronized to a time source.
  2. local stratum 10
  1. Specify file containing keys for NTP authentication.

keyfile /etc/chrony.keys

  1. Get TAI-UTC offset and leap seconds from the system tz database.

leapsectz right/UTC

  1. Specify directory for log files.

logdir /var/log/chrony

  1. Select which information is logged.
  2. log measurements statistics tracking
  3. BEGIN ANSIBLE MANAGED BLOCK

pool svr78dc01.csn-interne.fr iburst

  1. END ANSIBLE MANAGED BLOCK

}}}

Finalisation - Instalation de Squid et des autres

Récupérer ( mais /!\ Ne pas l'installer, mais on a juste besoin d'un fichier dedans /!\ ) sur le net rpm squid-helpers-4.1-5.el7.centos.x86_64.rpm et le placer dans le repertoire /root/install

Extraire les fichiers du rpm puis récupérer celui qu'il nous faut

cpio -idmv    

cp /root/install/usr/lib64/squid/negotiate_wrapper_auth /usr/lib64/squid/ Une dépendance a changé de nom, il faut créer un lien symbolique.

{{{

ln -s /usr/lib64/libnsl.so.2 /lib64/libnsl.so.1 }}}

/etc/squid/squid.conf

\?) 0 0% 0 refresh_pattern . 0 20% 4320


/etc/krb5.conf

{{{[logging]

       Default = FILE:/var/log/krb5.log

[libdefaults]

       default_realm = CSN-INTERNE.FR
       clock_skew = 300
       ticket_lifetime = 24000
       default_tkt_enctypes = arcfour-hmac
       permitted_enctypes   = des-cbc-crc des-cbc-md5 arcfour-hmac aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 rc4-hmac arcfour-hmac-md5
       rdns = false
       udp_preference_limit = 0
       dns_lookup_realm = true
       dns_lookup_kdc = true
       forwardable = yes

[realms]

       CSN-INTERNE.FR = {
               kdc = svr78dc01.csn-interne.fr
               admin_server = svr78dc01.csn-interne.fr
               default_domain = CSN-INTERNE.FR
               }

[domain_realm]

       .csn-interne.fr = CSN-INTERNE.FR
       csn-interne.fr = CSN-INTERNE.FR

}}}

/etc/samba/smb.conf

{{{# See smb.conf.example for a more detailed config file or

  1. read the smb.conf manpage.
  2. Run 'testparm' to verify the config is correct after
  3. you modified it.

[global]

  workgroup = CSN-INTERNE
  client signing = yes
  client use spnego = yes
  kerberos method = secrets and keytab
  log file = /var/log/samba/%m.log
  password server = SRV78DC01.CSN-INTERNE.FR
  realm = CSN-INTERNE.FR
  security = ads

}}}

/usr/lib/realmd/realmd-defaults.conf

{{{# Default values for realmd [service] debug = no automatic-install = yes

[paths] net = /usr/bin/net winbindd = /usr/sbin/winbindd smb.conf = /etc/samba/smb.conf sssd.conf = /etc/sssd/sssd.conf adcli = /usr/sbin/adcli ipa-client-install = /usr/sbin/ipa-client-install pam_winbind.conf = /etc/security/pam_winbind.conf krb5.conf = /etc/krb5.conf

[active-directory] default-client = sssd os-name = os-version =

[providers] sssd = yes samba = yes example = no

[samba-packages]

[winbind-packages]

[sssd-packages]

[adcli-packages]

[commands]

[users] default-shell = /bin/bash default-home = /home/%U@%D

[example.com] example-administrator = Administrator example-password = bureaucracy }}}

/etc/sssd/sssd.conf

{{{[sssd] domains = csn-interne.fr config_file_version = 2 services = nss, pam


[domain/csn-interne.fr] id_provider = ad ad_domain = csn-interne.fr realmd_tags = manages-system joined-with-samba cache_credentials = True ldap_id_mapping = True auth_provider = krb5 krb5_server = svr78dc01.csn-interne.fr krb5_realm = CSN-INTERNE.FR krb5_store_password_if_offline = True access_provider = simple }}}

Apres faut joindre la machine au domaine.

{{{ net ads join -U admin-agarik }}}

(Le compte est renseigné dans la fiche AO de srv78dc01.csn-interne.fr )


Les services qui doivent tourner et leurs roles

- squid => le service de proxy. 

{{{ systemctl enable squid.service }}}

- sssd/realmd/winbind => sssd est le service qui fait le mapping pour squid aupres de l'AD ( il l'interroge en LDAP/AD grace au compte de service à la keytab indiqué dans la conf de squid pour connaitre la correspondance "Ticket kerberos" <=> "Nom d'utilisateur". Pour faire ça il utilise comme outil kerberos client et le service winbind pour interroger l'AD. Le service Winbind utilise la configuration de realmd ( samba ) pour trouver le nom de domaine , le DC, etc ....

{{{ systemctl enable sssd.service }}} {{{ systemctl enable realmd.service }}} {{{ systemctl enable winbind.service }}}


Ajout de SquidGuard ( + mise en place d'un page de redirection pour les sites bloqués en http )

{{{ yum install squidGuard httpd }}} {{{ cd /var/squidGuard/ && tar -xzvf blacklists.tar.gz }}}

- fichier /etc/squid/squidGuard.conf

{{{

  1. CONFIG FILE FOR SQUIDGUARD

dbhome /var/squidGuard logdir /var/log/squidGuard

dest adult {

       domainlist      blacklists/porn/domains
       urllist         blacklists/porn/urls

}

dest drugs {

       domainlist      blacklists/drugs/domains
       urllist         blacklists/drugs/urls

}

dest warez {

       domainlist      blacklists/warez/domains
       urllist         blacklists/warez/urls

}

dest spyware {

       domainlist      blacklists/spyware/domains
       urllist         blacklists/spyware/urls

}

dest suspect {

       domainlist      blacklists/suspect/domains
       urllist         blacklists/suspect/urls

}

dest hacking {

       domainlist      blacklists/hacking/domains
       urllist         blacklists/hacking/urls

}

acl {

       default {
               pass     !adult !drugs !warez !spyware !suspect !hacking any
               redirect  http://172.30.104.195/access-denied.html?site=%u
       }

} }}}