wordpress hosting - vpn - cloud - statistiekservice - email

Authenticatie voor Centos 6 middels de AD

SSSD

Intro

In oudere versies van Linux is lastiger om users te authenticeren met behulp van de Active Directory van Windows. Echter uit bijvoorbeeld beheersoogpunt is het soms wel gewenst dat dit gebeurd. Users hebben dan 1 inlog voor Windows en Linux. Deze uitleg is bruikbaar voor Redhat/CentOS 6.x servers en soortgelijken.

Software

Om middels sssd te kunnen authenticeren zijn een aantal packages nodig die als volgt geinstalleerd kunnen worden:

yum -y install authconfig  pam_krb5 samba-common oddjob-mkhomedir sssd 

De Kerberos configuratiefile moet er zo uit zien in /etc/krb5.conf:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = example.ORG
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 example.ORG = {
  kdc = dc-01-p.example.org:88
 }

[domain_realm]
 example.org = example.ORG
 .example.org = example.ORG

Het [global] gedeelte van /etc/samba/smb.conf dient er zo uit te zien:

[global]
   workgroup = EXAMPLE-DOMAIN
   realm = example.ORG
   security = ads
   idmap config * : range = 16777216-33554431
   template homedir = /home/%U
   template shell = /bin/bash
   winbind use default domain = true
   winbind offline logon = false

Let op dat onder Standalone Server de volgende parametes zijn uitgecommentarieerd:

;security = user
;passdb backend = tdbsam

De configuratiefile van sssd moet er zo uitzien in /etc/sssd/sssd.conf (deze configuratiefile bestaat meestal nog niet)

[sssd]
config_file_version = 2
reconnection_retries = 3
sbus_timeout = 30
services = nss, pam
domains = EXAMPLE.ORG
[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
[pam]
reconnection_retries = 3
[domain/example.ORG]
debug_level = 0
cache_credentials = False
id_provider = ldap
auth_provider = krb5
chpass_provider = krb5
access_provider = ldap
ldap_schema = rfc2307bis
ldap_referrals = False
ldap_search_base = dc=example,dc=org
ldap_user_search_base = cn=users,dc=example,dc=org
ldap_user_object_class = user
ldap_group_search_base = ou=Groups,dc=example,dc=org
ldap_group_object_class = group
ldap_user_name = sAMAccountName
ldap_user_home_directory = unixHomeDirectory
ldap_user_member_of = memberOf
ldap_access_order = expire
ldap_account_expire_policy = ad
ldap_force_upper_case_realm = True
ldap_id_use_start_tls = False
ldap_default_bind_dn = cn=sssd,ou=Service Accounts,ou=Groups,dc=example,dc=org
ldap_default_authtok_type = password
ldap_default_authtok = $PASSWORD
ldap_tls_cacertdir = /etc/openldap/cacerts
krb5_realm = ExAMPLE.ORG
krb5_canonicalize = False

 

LET OP: Zet de rechten van de sssd.conf file goed anders start sssd niet op. Dit doe je met:

chmod 600 /etc/sssd/sssd.conf


Joinen van het example.org domein

Restart het e.e.a. om alle wijzigingen actief te maken:

service sssd restart
service winbind restart 

Om het example.org domein te joinen geef je:

net ads join example.org -U <admin user>

Om te controleren of het joinen geslaagd is geef je: (foutmeldingen over dns ed kunnen genegeerd worden)

net ads testjoin

Als het joinen daadwerkelijk geslaagd is kan de authenticatie worden aangepast met:

authconfig --enablesssd --enablesssdauth --enablemkhomedir --update

Opmerking: Het kan zijn dat het restarten voor het stop gedeelte een foutmelding geeft, zolang de tweede stap, het starten maar een Ok geeft.

Om ervoor te zorgen dat na een reboot het authenticeren tegen de AD blijft werken:

chkconfig oddjobd on
chkconfig winbind on
chkconfig messagebus on 


Toegang beperken tot groepen

Dit gaat anders dan onder CentOS 7 / Redhat 7. We beperken de toegang tot groepen door de ssh daemon configuratie aan te passen en de volgende regel toe te passen:

AllowGroups developers administrators root


In dit voorbeeld kan root inloggen, administrators en de developers via hun AD account. Laat bijv. developers weg als deze op de betreffende server niets te zoeken hebben


Problemen oplossen

Een enkele keer wordt /etc/nsswitch.conf niet geupdate, deze dient er als volgt uit te zien (voor CentOS/Redhat 6):

#
# /etc/nsswitch.conf
#
passwd:     files sss winbind
shadow:     files sss winbind
group:      files sss winbind
hosts:      files dns
bootparams: nisplus [NOTFOUND=return] files
ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files sss
netgroup:   files sss
publickey:  nisplus
automount:  files sss
aliases:    files nisplus

Controleer of een AD user herkend wordt op een linux server:

id <ad-account>

Je krijgt dan iets terug als (de Windows AD groepen waartoe iemand lid van is):

Authenticatie middels de Active Directory AD met SSSD

SSSD

Intro

In oudere versies van Linux wat het soms lastig om users te authenticeren met behulp van de Active Directory van Windows. Echter uit bijvoorbeeld beheersoogpunt is het soms wel gewenst dat dit gebeurd. Users hebben dan 1 inlog voor Windows en Linux. Deze uitleg is bruikbaar voor Redhat/CentOS 7.x servers en soortgelijken.

Software

Om middels sssd te kunnen authenticeren zijn een aantal packages nodig die als volgt geinstalleerd kunnen worden:

yum install realmd samba samba-common oddjob oddjob-mkhomedir adclie sssd ntp ntpdate

Opmerking: Voordat we verder kunnen met het joinen van een domein moet de linux server in time-sync zijn met de AD. Hiervoor moet een ntp daemon zoals ntpd of chrony worden geconfigureerd. Dit valt buiten de scope van dit artikel. 

Joinen van een domein

Als root wordt een Linux server (eenmalig) in het domein toegevoegd middels:

realm join --user=<administrator> exampe.com

Let op: Zorg ervoor dat chrony of ntp draait en de Linux server in time-sync is.

Als dit geslaagd is moet de server deze vorm van authenticatie ook gaan gebruiken, dat kan via:

authconfig --update --enablesssd --enablesssdauth --enablemkhomedir 

Hierdoor wordt /etc/nsswitch.conf aangepast, er zal in eerste instantie worden gekeken of de gebruiker lokaal bekend is, zo niet, zal de authenticatie via de AD worden afgehandeld. Om ervoor te zorgen dat gebruikers niet hun volledige gebruikersnaam en domein hoeven te gebruiken wordt de volgende regel toegevoegd in /etc/sssd/sssd.conf:

[sssd]
.... 
default_domain_suffix=example.com
..... 

Toegang beperken tot groepen

Om ervoor te zorgen dat niet iedereen met een valide account kan inloggen kan op basis van bestaande AD groepen toegang tot een Linux server worden verleend:

realm permit --groups "example.com\\linuxadmins" 

In /etc/sssd/sssd.conf is dit vervolgens te controleren:

[domain/example.com] 
.... 
access_provider = simple 
simple_allow_groups = example.com\linuxadmins
..... 

Na deze wijziging(en) is een restart nodig van de sssd daemon:

systemctl restart sssd

Rundeck

Rundeck

Omschrijving

Rundek is een job schedular en kan worden gebruikt om bijv. binnen een TAP omgeving jobs te starten / schedulen zoals bijv. een yum update. Voordeel van Rundeck is dat het eenWebGUI heeft waardoor het aanmaken, wijzigen en schedulen van jobs eenvoudig is. De jobs worden onderhuids middels SSH naar een node (=server) uitgevoerd.

In deze uitleg wordt uitgegaan van een CentOS 7 server. 

Installatie

Rundeck is een Java applicatie en heeft dus een Java omgeving nodig, deze kan worden geinstalleerd met:

yum install java-1.7.0-

 

Om Rundeck middels yum te kunnen installeren en updaten moet in /etc/yum.repos.d een repo worden aangemaakt, deze kan worden gedownload / geinstalleerd middels:

rpm -Uvh http://repo.rundeck.org/latest.rpm
Hierna kan Rundeck middels yum worden geinstalleerd:
yum install rundeck

Om Rundeck na een reboot v/d server automatisch te laten starten:

systemctl enable rundeckd

Configuratie

firewall

De Rundeck applicatie draait op de linux server mgt-03-p op port 4440 en is te bereiken via http://{hostname}:4400 Hiervoor dient de firewall te worden opengezet:

firewall-cmd --zone=public --add-port=4440/tcp --permanent

gevolgd door:

firewall-cmd --reload

starten en stoppen

De Rundeck applicatie is een Java applicatie en kan worden gestart / gestopt met

systemctl start|stop rundeskd

Hou er wel rekening mee dat het even kan duren na een stop / start dat alle applicatie-onderdelen ook daadwerkelijk gestopt of gestart zijn.

authenticatie

Standaard kan worden ingelogd met username admin en password admin. Rundeck kan ook authenticeren tegen LDAP/Active Directory

nodes toevoegen

Na de installatie is alleen localhost zichtbaar als node. Om nodes toe te voegen wordt eerst een project aangemaakt, bijvoorbeeld EXAMPLE_T met als omschrijving "test omgeving" Na het aanmaken van een project zal in '''/var/rundeck/projects/{PROJECTNAAM}/etchet bestand recourses.xml worden aangemaakt met de standaard inhoud:

<?xml version="1.0" encoding="UTF-8"?>
<project>
  <node name="rundeck.example.com" description="Rundeck server node" tags="" hostname="rundeck.example.com" osArch="amd64" osFamily="unix" osName="Linux" osVersion="3.10.0-327.10.1.el7.x86_64" username="rundeck"/>
</project>
Voeg node regels toe en de resources.xml om servers toe te voegen die vanuit Rundeck gebruikt kunnen worden.

configuratie nodes

De jobs die in Rundeck worden aangemaakt worden met het rundeck useraccount middels ssh uitgevoerd op de betreffende node(s). Hiervoor moet op elke node de group / user rundeck worden aangemaakt en de publieke ssh key van de user rundeck op de rundeck server worden geplaatst in de rundeck user authorized_keys file in /home/rundeck/.ssh

groupadd rundeck
useradd -g rundeck rundeck

Log als root in op een te configureren node en wordt de user rundeck: su – rundeck maak als user rundeck de directory .ssh aan:

mkdir .ssh

De public key staat op de rundeck server in /var/lib/rundeck/.ssh/id_rsa.pub, copyeer de inhoud van deze key (bijv. door copy-paste tussen 2 terminal schermen) naar de betreffende node in /home/rundeck/.ssh/authorized_keys

Zorg dat de rechten goed staan: chmod 640 /home/rundeck/.ssh/authorzed_keys

Controleer of rundeck nu zonder problemen in kan loggen door op de rundeck server de user rundeck te worden (su - rundeck) en met ssh naar de geconfigureerde node een verbinding te maken.

Daarnaast moet de user rundeck rechten krijgen om jobs uit te kunnen voeren, voeg hiervoor de twee onderstaande regels toe aan /etc/sudoers

Defaults:rundeck !requiretty
rundeck ALL=(ALL)  NOPASSWD: ALL

Nu krijgt de rundeck user alle rechten, beter is het om na een testperiode de rundeck user alleen rechten te geven op die programma's die nodig zijn. 

Wat is er nieuw in Redhat 7 [update-2]

Netwerk

Nieuw is nmcli en nmtui command waarmee je nu je netwerkconfiguratie regelt. 

Een paar voorbeelden:

  • nmcli con show : toont de connectie status van de netwerkinterfaces
  • nmcli con show <device> : toont gedetailleerde info van <device>
  • nmcli con add con-nam <name> ifname <device> autoconnect <on | off>  type ethernet ip4 192.168.1.10/24 gw 192.168.1.254 : Dit brengt maakt voor <name> een configuratiebestand aan voor <device> waarbij het type v/d interface ethernet is, er gekozen kan worden op deze tijdens het opstarten autoconnected is (moet worden geactiveeerd) en de bijbhorende ipv4 configuratie.
  • nmcli con mod <name> + ipv4.dns 8.8.8.8 : voegt aan de bestaande configuratie <name> een ipv4 dns met adres 8.8.8.8 toe. 
  • nmcli con up <name> : brengt interface met de naam <name> up 
  • hostname-ctl status : geeft overzicht van de hostname configuratie
  • hostname-ctl set-hostname <fqdn> : set de hostname (fqdn) in 

Overigens wordt de configuratie van de netwerk interface wel gewoon in /etc/sysconfig/network-scripts opgeslagen.

Logging

Hoewel logging 'gewoon' via rsyslog kan lopen en het nieuwe journald geen 1 op 1 vervanging is wordt bijv. bij een minimale installatie rsyslog niet standaard geinstalleerd en zal je met journalctl aan de gang moeten. De logging met journald is gaat verloren na een reboot en wordt weggeschreven in /run/log/journal.

journald logging permanent maken

  • Maak een directory /var/log/journal aan: mkdir /var/log/journal
  • Zet de rechten goed : chown root:systemd-journal /var/log/journal en geef daarna chmod 2755 /var/log/journal
  • Zorg ervoor dat journald de nieuwe directory ziet : killall -USR1 systemd-journald

Het uitlezen v/d logging gaat dan middels journalctl -b

journald voorbeelden

  • journalctl -f : toont de laatste regels van het log en vult aan als er nieuwe items bijkomen (vergelijkbaar met een tail -f)
  • journalctl -nxx : toont de laatste xx regels
  • journnactl –since yesterday -p err : toont vanaf gisteren alleen de error logregels
  • journalctl _SYSTEMD_UNIT=sshd.service : toont alleen de sshd gerelateerde logregels
  • journalct -o verbose : geeft extra veel info over de logregels

Wachtwoord van root kwijt / verloren

In RedHat 7 kan je het root wachtwoord op de volgende manier wijzigen als je het vergeten / kwijt bent: 

  • reboot de server
  • in het bootmenu druk op e (edit) en voeg aan de regel die begint met linux16 aan het einde toe: rd.break
  • boot de server daarna verder vanuit het bootmenu met Ctrl-X
  • op de prompt geef mount -orw,remount /sysroot 
  • geef chroot /sysroot
  • wijzig het root wachtwoord met passwd root
  • indien SELINUX enforced is geef load_policy -i en daarna touch /.autorelabel
  • reboot de server

 

 

Proxy server instellen op RedHat/CentOS servers

RedHat Subscription Manager

Indien je de RedHat Subcription Manager wilt gebruiken met een proxy server kan dat worden gedaan door in /etc/rhsm/rhsm.conf de volgende regels op te nemen:

    proxy_hostname = proxy.mynnet.nl
    proxy_port = 8080
    proxy_user = proxyuser
    proxy_password = proxypass

Indien geen user/password nodig is komt er achter het "=" teken niets te staan. 

 

YUM

Voeg aan /etc/yum.conf een regel toe als volgt: 

 

    proxy = proxy.mynnet.nl:8080 

 

System wide

    /bin/cat <<EOF > /etc/profile.d/proxy.sh 
    export http_proxy=http://proxy.mynnet.nl:8080 
    export ftp_proxy=http://proxy.mynnet.nl:8080
    export HTTP_PROXY=http://proxy.mynnet.nl:8080
    export FTP_PROXY=http://proxy.mynnet.nl:8080 
    export no_proxy=.localdomain.com  
    EOF