apt-get install squid3 samba winbind krb5-user ntp
usermod -G winbindd_priv --append proxy
SAMBA
/etc/samba/smb.conf:
[global]
realm = DOMENIU.ORG #SUBDOMENIU.DOMENIU.ORG
workgroup = DOMENIU #SUBDOMENIU
security = ads
netbios name = squidproxy #hostname de obicei
debug timestamp = yes
encrypt passwords = yes
winbind use default domain = yes
winbind uid = 10000-20000
password server = dc1.domeniu.org
idmap uid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind gid = 10000-20000
max log size = 50000
winbind separator = \\
client lanman auth = no
lanman auth = no
client ntlmv2 auth = yes #in functie de ce suporta DC-ul
ntlm auth = no
restrict anonymous = 2
log level = 3 passdb:5 auth:10 winbind:5
log file = /var/log/samba/samba.log
socket options = TCP_NODELAY SO_RCVBUF=16384 SO_SNDBUF=16384
##STERGE comentarii
KERBEROS
/etc/krb5.conf:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
#allow_weak_crypto=true #in functie de server trebuie decomentat link
ticket_lifetime = 24000
default_realm = DOMENIU.ORG
#default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc #in functie de server trebuie comentate
#default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc #in functie de server trebuie comentate
default_tgs_enctypes = DES-CBC-CRC DES-CBC-MD5 RC4-HMAC
default_tkt_enctypes = DES-CBC-CRC DES-CBC-MD5 RC4-HMAC
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
#SUBDOMENIU.DOMENIU.ORG = {
#kdc = dc1.subdomeniu.domeniu.org:88
#admin_server = dc1.subdomeniu.domeniu.org:749
#default_domain = subdomeniu.domeniu.org
#}
DOMENIU.ORG = {
kdc = dc1.domeniu.org:88
admin_server = dc1.domeniu.org:749
default_domain = domeniu.org
}
[domain_realm]
.domeniu.org = DOMENIU.ORG
domeniu.org = DOMENIU.ORG
#.subdomeniu.domeniu.org = SUBDOMENIU.DOMENIU.ORG
#subdomeniu.domeniu.org = SUBDOMENIU.DOMENIU.ORG
[kdc]
profile = /etc/krb5/kdc.conf
##STERGE comentarii
SQUID
/etc/squid3/squid.conf
cache_peer 10.x.x.1 parent 3128 3130 no-query round-robin
cache_peer 10.x.x.2 parent 3128 3130 no-query round-robin
shutdown_lifetime 3 seconds
visible_hostname proxy.domeniu.org
http_port 3128
cache_mem 128 MB
maximum_object_size 4096 KB
maximum_object_size_in_memory 16 KB
cache_effective_user proxy
authenticate_ttl 24 hour
request_header_access X-Forwarded-For deny all
negative_dns_ttl 10 second
#logfiles, cache dir
strip_query_terms off
emulate_httpd_log on
coredump_dir none
cache_dir ufs /var/spool/squid3 512 16 256
access_log /var/log/squid3/access.log common
cache_store_log none
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 1025-65535 # unregistered ports
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl ym dstdomain "/etc/squid3/ymdomain.acl"
acl noauth dstdomain "/etc/squid3/filter_noauth_domain.acl"
acl ym_ip dst "/etc/squid3/ymip.acl"
acl authpb src "/etc/squid3/auth_problems.acl"
http_access allow noauth
http_access allow ym_ip
http_access allow authpb
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp -d0
auth_param ntlm children 180
#auth_param ntlm keep_alive on #test, should be ok with newer browsers
#pe o singura linie
external_acl_type ldap %LOGIN /usr/lib/squid3/squid_ldap_group -p 3268 -D lookup@domeniu.org -W /etc/squid3/secret -b "DC=domeniu,DC=org" -h ip_domain_controller -f "(&(member=%u)(cn=%g)(objectClass=group))" -B "dc=domeniu,dc=org" -F "(sAMAccountName=%s)" -S
#external_acl_type ldap %LOGIN /usr/lib/squid3/squid_ldap_group -p 3268 -D lookup@domeniu.org -W /etc/squid3/secret -b "DC=subdomeniu,DC=domeniu,DC=org" -h ip_domain_controller -f "(&(member=%u)(cn=%g)(objectClass=group))" -B "dc=subdomeniu,dc=domeniu,dc=org" -F "(sAMAccountName=%s)" -S
acl SquidLdapUsers proxy_auth REQUIRED
acl ldap_ALL external ldap "/etc/squid3/usrall.acl"
acl ldap_BAD external ldap "/etc/squid3/badall.acl"
acl ldap_gold external ldap "/etc/squid3/gold.acl"
acl sysadmin external ldap "/etc/squid3/sysadmin.acl"
acl ldap_im_block external ldap "/etc/squid3/imgroup.acl"
acl block dstdomain "/etc/squid3/filter_block_domain.acl"
acl downloads urlpath_regex -i "/etc/squid3/block_files.acl"
acl downloads_good urlpath_regex -i "/etc/squid3/down_good.acl"
#limitare upload la ~5MB
acl UPLIMIT req_header Content-Length [5-9][0-9]{6} [0-9]{8,}
http_access deny ldap_im_block ym
http_access allow UPLIMIT ldap_gold
http_access allow sysadmin downloads
#deny_info ERR_UPLIMIT_FILES UPLIMIT
http_access deny UPLIMIT
http_access allow ldap_gold downloads
#deny_info ERR_BLOCKED_FILES downloads
http_access allow downloads_good
http_access deny downloads
http_access allow ldap_gold block
#deny_info ERR_BLOCKED_SITES downloads
http_access deny block
#deny_info ERR_BLOCKED_USERS downloads
http_access deny ldap_BAD
http_access allow SquidLdapUsers ldap_ALL
http_access deny all
never_direct allow all
acl no_round url_regex “/etc/squid3/noround.acl”
acl no_round2 url_regex “/etc/squid3/noround2.acl”
acl NOCACHE url_regex “/etc/squid3/nocache.acl”
cache_peer_access 10.x.x.1 !no_round2 !ym_ip
cache_peer_access 10.x.x.2 allow !no_round
no_cache deny no_round no_round2 NOCACHE
Dupa cum se observa mai sus, pe langa autentificarea userilor la Active Directory, putem crea mai multe reguli bazandu-ne pe grupurile din AD, care ne vor permite sa acordam acces granular utilizatorilor.
Sa le luam pe rand ca sa vedem ce putem face cu fiecare ACL:
1. acl ldap_ALL external ldap “/etc/squid3/usrall.acl”
Prin acest ACL, acordam acces membrilor unui grup din AD la accesarea paginilor web prin proxy. In acest grup se vor regasi toti utilizatorii care au acces “normal” la internet.
2. acl ldap_BAD external ldap “/etc/squid3/badall.acl”
Prin acest ACL ne vom folosi de un grup din AD in care membrii grupului nu vor avea acces la internet.
3. acl ldap_gold external ldap “/etc/squid3/gold.acl”
Prin acest ACL, vom putea acorda acces extins la membrii unui anumit grup de utilizatori din AD, de exemplu la administratorii de sistem, care nu vor mai avea restrictii la descarcarea fisierelor .exe sau .mp3 etc.
4. acl ldap_im_block external ldap “/etc/squid3/imgroup.acl”
Prin acest ACL ne vom folisi de un grup din AD in care membrii grulului nu vor avea acces la Yahoo Messenger
Directivele deny_info din fisierul de configurare ne permit sa definim cate o pagina personalizata care va aparea utilizatorului cand acesta va declansa un anumit ACL. De exemplu, cand va incerca sa descarce un fisier .exe, se poate afisa o pagina html in care sa se prezinte motivele pentru care accesul la aceste fisiere este restrictionat. Fiecare pagina se va crea in directorul /etc/squid3/errors/ ( pe care va trebui sa-l creati ), iar numele paginii va fi exact acela din directiva ( de ex. ERR_BLOCKED_FILES ).
Sa luam pe rand acum fisierele ACL pe care le vom crea si rolul lor:
Un caz aparte care necesita doua ACL-uri este accesul la Yahoo Messenger, care in varianta mai veche de 9.0 se conecteaza la servere gen *.msg.yahoo.com, iar in varianta mai mare de 9.0 se conecteaza la serverele yahoo dupa IP, deci nu mai putem folosi nume de domenii. Pentru a acoperi ambele situatii vom crea doua ACL-uri.
1. se creaza fisierul /etc/squid3/ymdomain.acl
Se editeaza si se scrie in el:
.msg.yahoo.com
.updates.yahoo.com
.yimg.com
.login.yahoo.com
.yeahost.com
.freewebs.com
.yahoo.com
.messenger.yahoo.com
.scd.yahoo.com
.sc5.yahoo.com
webcam.yahoo.com
filetransfer.yahoo.com
cs1.yahoo.com
cs2.yahoo.com
cs3.yahoo.com
2. se creeaza fisierul /etc/squid3/filter_noauth_domain.acl
Se foloseste pentru site-urile la care se conecteaza diverse aplicatii care nu stiu sa se autentifice corect si atunci permitem accesul fara autentificare. Din experienta, aplicatiile java nu stiu sa furnizeze proxy-ului userul si parola pentru autentificare. Un caz particular este Yahoo messenger versiuni mai vechi de 9.0, care nu stie sa furnizeze detaliile de autentificare proxy-ului.
Se editeaza fisierul si se trec domeniile necesare, fiecare pe o linie noua:
.msg.yahoo.com
.aaa.com
3. se creeaza fisierul /etc/squid3/ymip.acl
Se editeaza si in el se trec IP-urile serverelor de yahoo. Din practica, cele de mai jos au dovedit ca sunt suficiente pentru functionarea fara probleme a lui YM v. 9 , daca mai descoperiti altele puteti sa le treceti in lista:
64.157.4.0/24
66.94.224.0/22
66.94.240.0/20
66.163.168.0/21
67.195.128.0/19
67.195.128.0/20
67.195.144.0/21
67.195.152.0/21
68.180.140.0/22
68.180.144.0/21
68.180.192.0/20
68.180.200.0/22
68.180.208.0/20
69.147.64.0/21
69.147.80.0/20
72.30.22.0/24
72.30.36.0/22
72.30.40.0/22
74.6.73.0/24
74.6.224.0/22
76.13.208.0/21
76.13.244.0/22
76.13.248.0/22
8.12.145.0/24
8.12.147.0/24
8.12.148.0/22
98.136.0.0/16
98.137.32.0/19
98.137.58.0/23
98.137.128.0/19
98.137.156.0/22
98.137.224.0/19
98.138.0.0/16
98.139.0.0/16
208.67.64.0/21
209.131.32.0/20
216.155.192.0/20
216.252.112.0/20
4. se creaza fisierul /etc/squid3/usrall.acl
Trecem acum la fisierele care definesc grupurile din Active Directory. In fisierul de mai sus trecel Grupul din AD care permite accesul utilizatorilor obisnuiti la internet ( si care vor avea anumite restrictii, definite mai jos)
Spre exemplu, cream un grup in AD denumit Acces Internet in care trecem toti userii care vor avea acces la internet. Trecem numele grupului in fisierul nou creat:
Acces Internet
5. se creaza fisierul /etc/squid3/badall.acl
In acest fisier vom trece numele grupului din AD in care utilizatorii membri nu vor avea acces la proxy.
6. se creaza fisierul /etc/squid3/gold.acl si /etc/squid3/sysadmin.acl
Asa cum spuneam mai sus, avem posibilitatea sa acordam acces fara nici un fel de restrictii unor utilizatori care sunt membri ai unui grup sau mai multe, de exemplu Domain Admins, sau VIP Users etc. . Numeme grupurilor se trece in acest fisier.
7. se creaza fisierul /etc/squid3/imgroup.acl
Se va crea un grup in AD in care vor fi trecuti userii care nu vor avea acces la Yahoo Messenger, de exemplu NoYahhUsers. Numele grupului va fi trecut in acest fisier.
8. se creaza fisierul /etc/squid3/block_files.acl si /etc/squid3/down_good.acl
In acest fisier se pot introduce restrictii de download pentru utilizatorii obisnuiti, de exemplu blocam descarcarea fisierelor .exe si .mp3 ; introducem in fisierul nou creat urmatoarele:
\.exe$
\.mp3$
Pe acest model se poate face un ACL cu rep_mime_type care sa blocheze stream-urile audio/video.
Restrictiile trecute in acest ACL vor fi doar pentru utilizatorii obisnuiti, utilizatorii din grupurile speciale trecute in fisierul gold.acl vor trece peste aceste restrictii.
/etc/squid3/down_good.acl:
tracker.exe
enter.exe
signon.exe
GoogleEarthSetup.exe
9. se creaza fisierul /etc/squid3/filter_block_domain.acl
In acest fisier se pot introduce domeniile ce vor fi blocate de ex:
aabb.com
10. se creaza fisierul /etc/squid3/secret
In acest fisier trecem parola userului de AD prin intermediul caruia squid va putea sa interogheze baza de date AD dupa nume de utilizatori si grupuri.
Urmatorul pas este generarea unui fisier keytab pentru ca autentificarea prin Kerberos la Active Directory sa fie permanenta, fara a fi nevoie de a introduce un username/parola la fiecare pornirea a serviciilor.
10. se creaza fisierele /etc/squid3/noround.acl /etc/squid3/noround2.acl /etc/squid3/nocache.acl
In aceste fisiere se pot introduce domeniile pt care sa nu se faca roundrobin si sa nu fie cache-uite.
De retinut faptul ca ora si data trebuiesc sincronizate cu cele de pe AD, si serverul Proxy trebuie sa aibe inregistrare in DNS valida, pentru ca kerberos sa functioneze. De asemenea, utilitarul ktpass de pe un server Windows 2003 SP1 nu genereaza un keytab valid! Mai multe informatii despre aceasta problema gasiti la adresa http://support.microsoft.com/kb/919557
Operatiunile se vor face pe DC folosind contul cu drepturi administrative:
1. Folositi Active Directory Users and Computers pentru a crea un cont de user pentru serverul de linux:
• Selectati folderul Users, click dreapta si selectati New, apoi user.
• Introduceti numele serverului de linux (ex squidserver)
Contul de user pentru serverul de linux poate fi creat in orice container, dar este indicat sa se creeze un nou OU (Organizational Unit) si sa creati contul aici. Userul nu necesita nici un fel de drepturi speciale, trebuie doar sa poata interoga baza de date LDAP.
2. Urmati aceasi procedura pentru a crea contul lookup cu parola lookup1$#D sau ce altceva doriti, important este sa le notati si sa le folositi in fisierele de configurare al proxy-ului squid. Acest cont va fi folosit pentru autorizarea grupurilor prin intermediul LDAP.
3. Folositi ktpass pentru a crea un fisier keytab si a seta contul pentru serverul de linux apoi copiati acest fiser pe serverul de linux in folderul /etc/krb5:
C:> ktpass -princ host/squidserver.domeniu.org@DOMENIU.ORG -mapuser squidserver -pass password /crypto DES-CBC-MD5 -out squidserver.keytab
Inlocuiti squidserver cu numele serverului dvs. de linux si password cu parola setata la pasul anterior.
Copiem fisierul keytab de pe controllerul de domeniu pe serverul squid in directorul /etc/ , apoi il importam in kerberos cu ajutorul utilitarului ktutil:
# ktutil
ktutil: rkt /etc/squidserver.keytab
ktutil: list
ktutil: wkt /etc/krb5.keytab
ktutil: q
# kinit –k –t squidserver.keytab
Daca kerberos este corect configurat, ora este sincronizata, exista inregistrare DNS valida, dupa ce dati aceasta comanda nu ar trebui sa primiti nici un mesaj de eroare.
In cazul in care serverul AD este subdomeniu intr-un domeniu mai mare, este posibil ca comanda kinit sa dea eroare, in acest caz trebuie specificata identitatea serverului ( principal ):
kinit -k -t squidserver.keytab host/squidserver.subdomain.domain.org@SUBDOMAIN.DOMAIN.ORG
Operatiunea de mai sus nu mai este obligatorie.
Urmatoarea etapa consta in adaugarea serverului proxy ca membru in domeniul Windows AD:
#net ads join -U AdminAccount -S dc1.domeniu.org
In loc AdminAccount folositi contul cu drepturi administrative si parola aferenta acestuia. Rezultatul comenzii de mai sus este crearea unui cont de computer in AD.
In acest moment putem porni serverul samba:
#/etc/init.d/samba restart
#/etc/init.d/winbind restart
Teste si verificari care se pot face in acest moment:
a) testam existenta ticket-ului in Kerberos:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: host/ squidserver.domeniu.org@DOMENIU.ORG
Valid starting Expires Service principal
03/09/09 12:49:06 03/09/09 19:29:06 krbtgt/ DOMENIU.ORG@DOMENIU.ORG
b) verificam daca Samba poate citi userii si grupurile din AD:
#wbinfo –t
checking the trust secret via RPC calls succeeded
#wbinfo –u
......apar userii din domeniu
#wbinfo –g
..... apar grupurile din domeniu
c) verificam daca Squid se integreaza cu Samba:
#/usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
DOMAIN\username password
utils/ntlm_auth.c:check_plaintext_auth(292)
NT_STATUS_OK: Success (0×0)
OK
/usr/lib/squid3/squid_ldap_group -p 3268 -D lookup@domeniu.org -W /etc/squid3/secret -b "DC=domeniu,DC=org" -h ip_domain_controller -f "(&(member=%u)(cn=%g)(objectClass=group))" -B "dc=domeniu,dc=org" -F "(sAMAccountName=%s)" –S –d 10
user group
Connected OK
user filter '(&(sAMAccountname=username)(objectClass=User))', searchbase 'dc=domain,dc=org'
group filter '(&(member=CN=Nume\5c, Prenume,OU=IT Users,OU=Users,OU=SDC,DC=domeniu,DC=org)(cn=Acces Internet)(objectClass=group))', searchbase 'DC=domeniu,DC=org'
OK
Daca grupul care se testeaza contine spatii, acestea se va inlocui cu “%20”. De exemplu testam userul “teste” care este membru in grupul AD Acces Internet:
teste Acces%20Internet
Other info:
Reinstall:
Install new server, new hostname, new ip, configure confs, copy keytab, kinit (some err are ok), net ads join, wbinfo -t/-g should work, change ip/hostname&reboot, everything should work.
For Windows 7 you have to use at least Ubuntu Server 9.10 or use this hack:
1. In HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
If it doesn’t exist, create a DWORD value named LmCompatibilityLevel and set the value to 1 to use LM NTLM and NTLMv2 if is negociated, this is
Also it works establishing the value to 0, and 3 though for more safety the value using 3 though with old operating systems it will not work on having used obligatorily NTLMv2.
2. Reboot
http://old.nabble.com/Windows-7-beta-and-NTLM-td21377271.html
For live messenger:
1. Start Internet Explorer.
2. On the Tools menu, click Internet Options.
3. On the Advanced tab, in the Security section, make sure that the Check for server certificate revocation check box is cleared. Also, make sure that the Use SSL 2.0 and the Use SSL 3.0 check boxes are selected.
4. Click OK.
Check your Internet Explorer security settings
Errors:
– kinit -k -t squidserver.keytab
kinit: KDC has no support for encryption type while getting initial credentials
Make sure krb5.conf has allow_weak_crypto = true
- /etc/squid3/usrall.acl should not contain too many groups
Original Slackware version here
amixer -c 0 sset Dock,0 unmute
http://ubuntuforums.org/showthread.php?p=8285598#post8285598
/etc/dhcp3/dhclient.conf:
send dhcp-client-identifier 01:xx:xx:xx:xx:xx:xx; (Replace xx with the mac address you want to use)
http://blog.ioshints.info/2008/06/static-dhcp-assignment-for-clients.html
Dovecot:
% wget http://www.startssl.com/certs/ca-bundle.crt
% cat ssl.crt sub.class1.server.ca.pem > /etc/ssl/dovecot/dovecot_crt.pem
% ln -s ssl.key /etc/ssl/dovecot/dovecot_key.pem
% cp ca-bundle.crt /etc/ssl/apache2/
dovecot.conf:
ssl_ca = </etc/ssl/apache2/ca-bundle.crt
ssl_cert = </etc/ssl/dovecot/dovecot_crt.pem
ssl_key = </etc/ssl/dovecot/dovecot_key.pem
http://nooms.de/articles/startssl.html
Postfix:
% ln -s ssl.crt cert.pem
% ln -s ssl.key key.pem
main.cf:
## TLS parameters ##
smtpd_use_tls=yes
smtpd_tls_cert_file=/etc/ssl/postfix/cert.pem
smtpd_tls_key_file=/etc/ssl/postfix/key.pem
smtp_tls_CAfile = /etc/ssl/apache2/ca.pem
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
http://forum.startcom.org/viewtopic.php?t=80
Also see:
openssl s_client -connect imaphost:993
http://mailman2.u.washington.edu/pipermail/imap-protocol/2006-March/000129.html
First you need to download .deb package from here
for 64bit:
sudo dpkg -i --force-architecture AdbeRdr9.1.2-1_i386linux_enu.deb
http://www.ubuntugeek.com/tag/install-acrobat-reader-in-ubuntu-karmic
sudo add-apt-repository ppa:bisigi
sudo aptitude update
sudo aptitude install bisigi-themes
http://www.ubuntugeek.com/nice-themes-for-ubuntu-10-10-maverick-meerkat-users.html