Difference between revisions of "Doména FJFI"

From NMS
Jump to: navigation, search
(Firewall)
(Firewall)
Line 1: Line 1:
 
=Firewall=
 
=Firewall=
* DNS - 53 TCP+UDP - 0.0.0.0/0
+
{| class="wikitable" style="text-align:center"
* LDAP - 389 TCP+UDP - 0.0.0.0/0
+
* LDAPs - 636 TCP - 0.0.0.0/0
+
* Kerberos - 88 TCP+UDP - 0.0.0.0/0
+
* Kerberos admin - 749 TCP - 0.0.0.0/0
+
* Samba - 137,138,139,445 TCP+UDP - minimálně rozsah FJFI (možná ČVUT)
+
* SNMP - 161 TCP+UDP - pro management (nms.fjfi.cvut.cz)
+
===Tables===
+
{|
+
 
|+ Firewall
 
|+ Firewall
 
! protokol !! port !! rozsah
 
! protokol !! port !! rozsah

Revision as of 14:38, 11 April 2007

Firewall

Firewall
protokol port rozsah
DNS 53 TCP+UDP 0.0.0.0/0
LDAP 389 TCP+UDP 0.0.0.0/0
LDAPs 636 TCP 0.0.0.0/0
Kerberos 88 TCP+UDP 0.0.0.0/0
Kerberos Admin 749 TCP 0.0.0.0/0
SNMP 161 TCP+UDP pro management stroje (nms.fjfi.cvut.cz)
Samba 137,138,139,445 TCP+UDP minimálně rozsah FJFI (ČVUT?)

Konfigurace Linuxu/Unixu

Pro jednoduchost není dobré vytvářet více domén. Uživatelé by pak museli používat jméno včetně jména domény, což by bylo dost nepohodlné a některé aplikace by asi špatně rozdýchávali uživatelská jména ve tvaru DOMAIN\username.


Konfigurace účtu v AD

Pro rozumnou funkci AD pro unixová prostředí je potřeba mit doménu a forest nastaven na nativní windows 2003 mód, protože jinak AD nemá podporu po "dynamic linked auxiliary classes". Vzhledem ke kopatibilitě je vhodné k uživatelskému účtu v AD přidat následující auxiliary classes: inetOrgPerson, posixAccount. Dále je potřeba udržovat některé atributy synchronizované, protože různé aplikace mohou využívat buď jeden nebo druhý: uid = msSFU30Name = sAMAccountName

Uživatel musí mít vyplněny následující atributy posixAccountu:

  • uid = msSFU30Name = sAMAccountName
  • uidNumber - jedinečné číslo z intervalu [1000-30000)
  • gidNumber - zatím jedna skupina "users" s gidNumber = 1000
  • loginShell - /bin/bash
  • unixHomeDirectory - /home/"sAMAccountName"
  • gecos - ASCII "givenName sn"

NTP - synchronizace času

Pro správnou funkci Kerbera je nutná synchronizace času mezi autentizovaným systémem a KDC serverem. Ve standardní konfiguraci w2k3 serveru je tolerance 5 minut. Pokud nebude čas správně synchronizován, pak přestane fungovat nejen přímá autentizace uživatelů, ale také další služby jako např. adresáře sdílené přes sambu.


Uživatelské informace

Získávají se pomocí NSS a v případě Windows AD domény k nim lze přistupovat několika různými způsoby (export do "passwd", LDAP, winbind). Kvůli zachování stejných UID na všech stanicích nelze (jednoduše) použít winbind. LDAP přístup je asi "nejčistší" řešení, ale bude se muset vyzkoušet jestli je výkonostně přijatelný (jinak lze provádět exporty z LDAP do standardních souborů jako tomu je/bylo u Novell NDS). V případě problémů s výkonem LDAPu by stálo za zvážení použít nscd daemona pro cachování získaných informací (potřeba otestovat, protože před pár lety docela zlobil při použití proti Novell LDAP).

Pro zpřístupnění informací přes LDAP je potřeba nainstalovat "nss_ldap" a upravit konfigurace /etc/nsswitch.conf a /etc/ldap.conf (pro práci s LDAP nástroji je ještě vhodné upravit /etc/openldap/ldap.conf).

  • /etc/nsswitch.conf
...
passwd:     files ldap
shadow:     files ldap
group:      files ldap

hosts:      files dns wins
...
  • /etc/ldap.conf
host dc1.fjfi.cvut.cz dc2.fjfi.cvut.cz dc3.fjfi.cvut.cz dc4.fjfi.cvut.cz
base dc=fjfi,dc=cvut,dc=cz
ldap_version 3
# In case AD doesn't allow anonymous binds
# binddn cn=proxy nss,ou=special,dc=fjfi,dc=cvut,dc=cz
# bindpw secret
pam_min_uid 1000
# RFC 2307 (AD) mappings
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_attribute uid sAMAccountName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute shadowLastChange pwdLastSet
nss_map_objectclass posixGroup group
nss_map_attribute uniqueMember member
pam_login_attribute sAMAccountName
pam_filter objectclass=User
pam_password ad
# Disable SASL security layers. This is needed for AD.
sasl_secprops maxssf=0
  • /etc/openldap/ldap.conf
BASE   dc=fjfi,dc=cvut,dc=cz
URI    ldaps://dc1.fjfi.cvut.cz ldaps://dc2.fjfi.cvut.cz ...
TLS_CACERTDIR /etc/openldap/cacerts

Pro přístup přes LDAP rozhraní k Windows AD je potřeba na firewallu povolit porty 389 TCP, 389 UDP, 636 TCP (z celého internetu). Pro zabezpečený přístup přes LDAP se používají x509 certifikáty. Klient musí důvěřovat certifikační autoritě, která podepsala certifikáty používané pro zabezpečenou LDAP komunikaci. Z tohoto důvodu je nutné, aby všechny Windows AD stroje měli platné certifikáty vydané Cesnet CA nebo SureServer EDU.


Autentizace

Existuje více způsobů jak autentizovat uživatele z Windows AD (Kerberos, LDAP, winbind, RADIUS, ...). Nejrozumnější vlastnosti má Kerberos, který je přímo navržen pro bezpečnou autentizaci uživatelů. Navíc uživatel získá Kerberos ticket, který může dále používat pro autentizaci k dalším službám (SSO).

Na linuxu je potřeba naintalovat balík "krb5-workstation" a "pam_krb5", je potřeba mít povolen přístup na KDC (Key Distribution Center) na portech 88 TCP, 88 UDP, 749 TCP (z celého internetu). Konfigurační soubor /etc/krb5.conf by mít např. následující obsah

...

[libdefaults]
default_realm = FJFI.CVUT.CZ
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes

[realms]
FJFI.CVUT.CZ = {
 kdc = dc1.fjfi.cvut.cz:88
 kdc = dc2.fjfi.cvut.cz:88
 kdc = dc3.fjfi.cvut.cz:88
 kdc = dc4.fjfi.cvut.cz:88
 admin_server = dc1.fjfi.cvut.cz:749
 default_domain = fjfi.cvut.cz
}

[domain_realm]
.fjfi.cvut.cz = FJFI.CVUT.CZ
fjfi.cvut.cz = FJFI.CVUT.CZ

...

Pro autentizaci na stanici je potřeba ještě zkonfigurovat PAM moduly. Na RedHatu (RHEL5) stačí upravit soubor /etc/pam.d/system-auth (FIXME: test this config)

#%PAM-1.0
auth        required      pam_env.so
auth        sufficient    pam_krb5.so minimum_uid=1000
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore]  pam_krb5.so
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_krb5.so
#session     required      pam_mkhomedir.so umask=0022 skel=/etc/skel

Pro otestování autentizace lze použít následující příkaz:

kinit username


Host Kerberos Key

Pokud bude mít systém/služba vlastní Kerberos klíč, potom je možné s platným uživatelským Kerberos ticketem přistupovat na tyto systémy/služby bez dalšího zadávání hesla.

# Na windows vytvořit hostkey
# - account je účet v AD pro host/hostname
C:> Ktpass princ host/hostname@FJFI.CVUT.CZ mapuser account -pass password out unixmachine.keytab
# V linuxu importovat
ktutil
ktutil: rkt unixmachine.keytab
ktutil: list
ktutil: wkt /etc/krb5.keytab
ktutil: q

Samba

Samba 3.x umožňuje uživatelům Windows používat vysdílené disky včetně všech přístupových práv. Aby to fungovalo, je potřeba zkonfigurovat /etc/samba/smb.conf a zaregistrovat daný systém v AD.

workgroup = FJFI # nebo název katedry
server string = Samba Server %h (%v)
security = ADS
realm = FJFI.CVUT.CZ
preferred master = no
# tohle není (asi) potřeba, když se nepoužívá winbind
#winbind enum users = Yes
#winbind enum groups = Yes
#winbind use default domain = Yes
#idmap uid = 10000-20000
#idmap gid = 10000-20000

Registrace se provádí příkazem (musí fungovat překlad přidělené hostname <-> IP, jinak nebylo možné úspěsně donkončit registraci):

net ads join -UAdministrator%password

Opět je nutné povolit na firewallu Windows Serveru porty 137 TCP/UDP, 138 TCP/UDP, 139 TCP/UDP, 445 TCP/UDP, 389 TCP/UDP, 636 TCP. Vzhledem k použítí Kerbera pro autentizaci je nutné mít synchronizovaný čas.