Aangezien Majordomo verantwoordelijk is voor het beheren van E-maillijsten,
is het in belangrijke mate afhankelijk van een MTA zoals Sendmail.
Er bestaan nog andere MTA's,
zoals Smail en Qmail; echter Sendmail is de oudste en meest algemene.
Deze sectie introduceert de lezer in die gebieden die bruikbaar of nodig
zijn voor de configuratie bij het gebruik van Majordomo.
Aliassen
Het aliassenbestand van Sendmail (gewoonlijk /etc/aliases)
wordt gebruikt voor het maken van aliassen voor E-mailadressen. Zodra
Majordomo is geïnstalleerd bijvoorbeeld, komt er in het bestand aliases
gewoonlijk een regel voor als:
Deze regel betekent dat alle mail geadresseerd aan
majordomo-owner@host.com in werkelijkheid zal worden
gestuurd naar
jarchie@host.com. Het is niet nodig
@host.com aan
jarchie toe te voegen,
omdat beide gebruikers zich op dezelfde host bevinden. Als het gewenst zou
zijn om het bericht naar een andere gebruiker op een andere host door te
sturen, dan zou men het deel
@host.com moeten toevoegen.
Een ander type regel in het bestand aliases staat toe dat E-mail naar
meerdere adressen opgesomd in een bestand kan worden doorgestuurd:
testlist: :include:/usr/local/majordomo-1.94.5/lists/testlist |
Deze regel geeft aan dat elk bericht gestuurd naar
testlist@host.com zal worden doorgestuurd naar alle
adressen die zijn opgesomd in het bestand
/usr/local/majordomo-1.94.5/lists/testlist.
Het bestand
testlist zou er zo uit kunnen zien:
johnarchie@emeraldis.com
srobirds@yahoo.com
acreswell@geocities.com |
Majordomo kan door gebruik te maken van deze feature adressen aan een lijst
toevoegen of van een lijst verwijderen. Wanneer een
subscribe verzoek wordt verwerkt, wordt het E-mailadres
van de gebruiker toegevoegd aan het bestand
testlist;
wanneer een
unsubscribe verzoek wordt verwerkt, wordt
het E-mailadres van de gebruiker verwijderd uit het bestand
testlist. Men kan tevens adressen handmatig toevoegen
of verwijderen door simpelweg het bestand te bewerken met een teksteditor
zoals
vi.
Aangezien Majordomo opdrachten moet kunnen verwerken die er via E-mail
naartoe zijn gestuurd, moet Sendmail het Majordomo programma kunnen
uitvoeren en er het bericht aan door kunnen geven. Dit wordt bewerkstelligd
door een ander type regel toe te voegen aan het bestand
aliases:
majordomo: "|/usr/local/majordomo-1.94.5/wrapper majordomo" |
Het programma
/usr/local/majordomo-1.94.5/wrapper is een
wrapper (SUID
majordomo en SGID
majordomo of
daemon afhankelijk van de configuratie)
dat het Majordomo programma uitvoert. De aanhalingstekens rondom het tweede
deel van de alias worden gebruikt om Sendmail aan te geven dat dit deel van de
regel uit één statement bestaat;
de aanhalingstekens zouden niet nodig zijn als er geen spatie tussen
wrapper en
majordomo zou staan.
Het
|-teken staat bekend als een "pipe"; het wordt
gebruikt om Sendmail aan te geven de E-mail aan de wrapper via de
standaardinvoer naar de wrapper te sturen.
(Aangezien het enige dat de wrapper hier doet het aanroepen van
majordomo is, wordt de E-mail in feite doorgestuurd naar
Majordomo.) De wrapper accepteert één parameter, namelijk
de parameter van het programma dat het verondersteld wordt uit te voeren.
(Parameters na de eerste zullen worden doorgegeven aan het programa dat de
wrapper uitvoert.)
Om beveiligingsredenen, voert de wrapper alleen programma's uit die zijn
de vinden in de Majordomo directory,
/usr/local/majordomo-1.94.5/. Deze beperking
verhindert een programmeur de wrapper te gebruiken programma's uit
te voeren die geen Majordomo privileges zouden moeten hebben.
(Bijvoorbeeld,
wrapper /bin/vi zou een gebruiker toestaan
elk Majordomo configuratiebestand te bewerken.) Wanneer een bericht naar
majordomo@host.com is gezonden, start Sendmail de wrapper,
die op zijn beurt,
majordomo opstart, en Sendmail stuurt
het bericht naar het
majordomo script via de
standaardinvoer. Majordomo extraheert de opdrachten dan uit het bericht
en reageert dienovereenkomstig.
Bewerken van sendmail.cf
Door zijn geheimzinnige syntax is sendmail.cf misschien
wel het meest beangstigend van alle configuratiebestanden. Bij de installatie
van majordomo, is het niet strict noodzakelijk om
sendmail.cf te bewerken; echter een paar features zijn
buitengewoon handig. Tenzij belangrijke wijzigingen moeten worden aangebracht
aan sendmail.cf (wat Majordomo gelukkig niet vereist),
is het bewerken van het bestand niet zo moeilijk. Het enige dat nodig is, is
het toevoegen van extra regels aan het bestand.
Een ander aliases bestand
Vaak is het een goed idee om een apart bestand voor de Majordomo aliassen,
zoals /usr/local/majordomo-1.94.5/majordomo.aliases, aan
te maken. Dit kan nogal makkelijk worden gedaan door een regel toe te voegen
aan het einde van het bestand sendmail.cf
OA/usr/local/majordomo-1.94.5/majordomo.aliases |
Voor een
/usr/local/majordomo-1.94.5/majordomo.aliases,
moet Sendmail een database (
/usr/local/majordomo-1.94.5/majordomo.aliases.db) kunnen genereren. De makkelijkste manier om dit te
bewerkstelligen is een door Sendmail te overschrijven lege database
aan te maken.
[root@kes majordomo-1.94.5]# touch majordomo.aliases.db
[root@kes majordomo-1.94.5]# chmod 644 majordomo.aliases.db |
Een andere methode hiervoor is het simpelweg aanmaken van het bestand
majordomo.aliases in de directory
/etc/, in plaats van in de homedirectory van
Majordomo.
Niet gewenste beveiligingsfeatures van Sendmail
Voor bepaalde setups, kunnen een aantal beveiligingsmaatregels die
Sendmail gebruikt, de juiste werking van Majordomo verhinderen. Uiteraard
moeten deze beveiligingsfeatures worden uitgezet.
Toevertrouwde gebruikers van sendmail
Sendmail is zodanig geprogrammeerd dat het mensen moeilijk maakt om
"perfecte" vervalsingen van E-mail te maken. Wanneer een gebruiker bijvoorbeeld
een bericht via SMTP verzendt, wordt het IP bronadres kenmerkend gelogd,
en wanneer een gebruiker een bericht verstuurt door het direct aan Sendmail
te geven en de afzender specificeert middels de opdracht
sendmail -f, plaatst sendmail een waarschuwingsmelding
in de header waarin het de gebruiker aangeeft wie de melding echt verzond.
Echter een aantal programma's moet gemaskerd als andere gebruikers berichten
kunnen versturen en met deze extra beveiligingsregel toegevoegd aan de
header is ergerlijk. Sendmail handelt dit probleem af door middel van
toevertrouwde gebruikers. Voor de juiste werking van het script
resend van Majordomo, moet majordomo
een toevertrouwde gebruiker van sendmail worden, aangezien het mail van
andere gebruikers moet herverzenden.
Een manier om Majordomo een toevertrouwde gebruiker te maken is door het
toevoegen van de regel
aan het bestand
sendmail.cf.
Sendmail Restricted Shell
Als Sendmail gebruik maakt van smrsh, dan zijn de enige
programma's die kunnen worden uitgevoerd, die onder de directory
/etc/smrsh/. Misschien de beste oplossing om de wrapper
vanuit het bestand aliases uit te voeren is het
aanmaken van een symbolische link vanuit /etc/smrsh/wrapper naar /usr/local/majordomo-1.94.5/wrapper.
[root@kes smrsh]# ln -s /usr/local/majordomo-1.94.5/wrapper wrapper |
Een tweede oplossing is het daadwerkelijk verplaatsen van de wrapper naar
de directory
/etc/smrsh/.
[root@kes smrsh]# mv /usr/local/majordomo-1.94.5/wrapper ./ |
Als de beveiliging niet zo van belang is, dan kan de secure shell worden
gedeactiveerd. Een tamelijk grove methode is het verwijderen van
/usr/sbin/smrsh en daarvoor in de plaats kopiëren of
linken van
/bin/sh.
[root@kes sbin]# rm -f smrsh
[root@kes sbin]# ln -s /bin/sh smrsh |
Een betere (maar moeilijkere) methode is het bewerken van
sendmail.cf.
Wijzig de verwijzing van
/usr/sbin/smrsh
Mprog, P=/usr/sbin/smrsh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
T=X-Unix,
A=sh -c $u |
naar
/bin/sh
Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
T=X-Unix,
A=sh -c $u |
Schrijfpermissies van de groep
Als je van plan bent een niet-root gebruiker discussielijsten te laten
toevoegen en beheren, dan zul je het bestand majordomo.aliases voor de groep schrijfbaar moeten maken.
Om beveiligingsredenen staat Sendmail deze configuratie echter niet toe
(zie paragraaf Sendmail beveiligingskwesties).
Voeg de regel
O DontBlameSendmail=GroupWritableAliasFile |
toe aan het bestand
sendmail.cf om deze beveiligingsfeature
te deactiveren. Ook moet de directory lists schrijfbaar zijn voor de groep om
een lijst toe te kunnen voegen, maar Sendmail zal ook deze setup om
vergelijkbare beveiligingsredenen niet toelaten. Voor het deactiveren van
deze beveiligingsfeature is de regel
O DontBlameSendmail=IncludeFileInGroupWritableDirPath |
nodig in het configuratiebestand
sendmail.cf.
Configureren van sendmail.cf met behulp van de M4 configuratie
Voor beheerders die het bestand sendmail.cf niet direct
willen bewerken, is het mogelijk gebruik te maken van M4 om het bestand aan
te maken; in deze sectie wordt beschreven hoe de besproken wijzigingen in
de vorige sectie te maken aan het mc bestand in plaats van het cf bestand.
Het doel van de M4 configuratie is te voorzien in een makkelijke manier om
het bestand sendmail.cf aan te maken. Het idee erachter
is dat het aangemaakte mc bestand makkelijker is te begrijpen dan het bestand
sendmail.cf. Door uitvoering van de preprocessor m4,
wordt een sendmail.cf bestand gegenereerd:
[root@kes etc]# m4 /etc/sendmail.mc > /etc/sendmail.cf |
Een ander aliases bestand aanmaken
Voeg de regel
define(`ALIAS_FILE',`/etc/aliases,/usr/local/majordomo-1.94.5/majordomo.aliases') |
toe aan het bestand
sendmail.mc.
Van Majordomo een toevertrouwde gebruiker maken
Voeg de regel
define(`confTRUSTED_USERS',`majordomo') |
toe aan het bestand
sendmail.mc.
Deactiveer de Sendmail Secure Shell
Verwijder de regel
uit het bestand
sendmail.mc.
Deactiveren van beveiligingsfeatures
Voeg voor het deactiveren van de beveiligingscontrole op de schrijfpermissie
van de groep op het aliases bestand de regel
define(`confDONT_BLAME_SENDMAIL',`GroupWritableAliasFile') |
toe aan het bestand
sendmail.mc.
Voeg voor het deactiveren van de beveligingscontrole op de schrijfpermissie
van het pad op de include bestanden de regel
define(`confDONT_BLAME_SENDMAIL',`IncludeFileInGroupWritableDirPath') |
toe. Gebruik voor het deactiveren van beide opties
define(`confDONT_BLAME_SENDMAIL',`GroupWritableAliasFile,IncludeFileInGroupWritableDirPath') |
Het toevoegen van het laatste statement is gelijk aan het schrijven van
O DontBlameSendmail=GroupWritableAliasFile,IncludeFileInGroupWritableDirPath |
in
sendmail.cf, en deze regel is gelijk aan het schrijven
van deze regels op aparte regels:
O DontBlameSendmail=GroupWritableAliasFile
O DontBlameSendmail=IncludeFileInGroupWritableDirPath |
Sendmail beveiligingskwesties
Beveiliging is omgekeerd evenredig proportioneel met gemak;
de enige veilige machine
is die door niemand kan worden benaderd. Wanneer een aantal van de
beveiligingsfeatures zijn gedeactiveerd, zal een machine onvermijdelijk minder
veilig worden. Het is echter van belang de basisbeveiligingsrisico's te
begrijpen om vast te stellen of het gemak zwaarder weegt dan mogelijke
beveiligingslekken.
Consequenties van onveilige te beschrijven groepen
Als een gebruiker schrijfpermissies heeft om een aliases bestand te
benaderen, dan zou het een toevertrouwde gebruiker
moeten zijn. Door het plaatsen van een regel in het aliases bestand
(zoals die wordt gebruikt om wrapper uit te voeren) kan
een gebruiker elk programma uitvoeren met de privileges van Sendmail
(daemon of, in oudere versies, root).
Deze ongepaste daad zou mensen toestaan de permissies van bestanden
te verwijderen of wijzigen die toebehoren aan daemon
(met behulp van de opdrachten rm of chmod in het aliases bestand). Tot op zekere hoogte wordt deze mogelijkheid
vermeden door gebruik te maken van smrsh;
men moet echter nog steeds zorgvuldig te werk gaan betreffende de bestanden
die aanwezig zijn in de directory /etc/smrsh/.
Een andere belangrijke beveiligingskwestie is dat de gebruiker die het bestand
aliases kan benaderen, bestanden kan toevoegen of beschrijven die toebehoren
aan daemon door gebruik te maken van bestandsomleiding
(een >> of > in plaats van
een |). Evenzo kan ook dit lek worden weerlegd door
een regel toe te voegen aan het bestand sendmail.cf
een beperking opleggend welke bestanden kunnen worden beschreven via het
aliases ebstand. Voeg de regel
O SaveFileEnvironment=/pad/naar/veilige/bestanden |
toe aan het bestand
sendmail.cf of voeg
define(`confSAFE_FILE_ENV',`/pad/naar/veilige/bestanden') |
toe aan het bestand
sendmail.mc.
Echter deze manoevre laat slechts een dunne beveiligingslaag tussen de
gebruiker en
daemon achter. Een veel beter idee zou zijn
om het bestand aliases alleen schrijfbaar te maken voor root en een SUID
root programma aan te maken om de aan Majordomo gerelateerde aliassen
toe te voegen of te verwijderen.
In het geval van include of .forward bestanden, worden opdrachten of
omleidingen uitgevoerd als de gebruiker die eigenaar is van het bestand.
Als daarom een bestand schrijfbaar is voor de groep, dan kan een deelnemer
van de groep opdrachten uitvoeren als de gebruiker die eigenaar is van
het bestand. Met andere woorden, elke gebruiker in de groep
majordomo zou opdrachten als Majordomo uit kunnen
voeren. Echter gezien de majordomo gebruiker zonder
een shell wordt aangemaakt, zullen opdrachten of omleidingen niet worden
verwerkt in include bestanden met als eigenaar majordomo.
Consequenties van onveilige voor de groep schrijfbare directorypaden
Als een gebruiker voor de groep schrijfpermissies heeft op een directory,
bijvoorbeeld /etc/, dan zou de gebruiker simpelweg
elk bestand kunnen verplaatsen en daarvoor in de plaats een nieuwe aanmaken.
Een aanval zou als volgt kunnen verlopen
[mallory@kes etc]$ mv aliases ...
[mallory@kes etc]$ vi aliases |
De gebruiker kan dan zijn eigen aliassen aanmaken! Deze aanval zou echter
kunnen worden verhinderd door de beveiligingscontrole van Sendmail van
onveilige voor de groep schrijfbare paden.
Een dergelijke aanval zou ook zo werken bij include en .forward bestanden
met onveilige paden.
In het geval van Majordomo, heeft de gebruiker in de groep
majordomo reeds toegang tot de include bestanden,
dus dit comprimitteert niet echt de beveiliging. Echter een beheerder
zou zorgvuldig moeten zien te verhinderen deze onwenselijke onveilige
groep schrijfbare directorypaden in de toekomst plaats te laten vinden,
omdat Sendmail hier niet op zal controleren.
De privacy van deelnemers beschermen
Helaas kunnen geraffineerde spammers discussielijsten uitbreiden met behulp van
de SMTP-opdracht EXPN. Om deze reden zouden
beheerders deze feature moeten deactiveren wanneer discusselijsten worden
verleend. Voeg de regel
toe aan het bestand
sendmail.cf of
define(`confPRIVACY_FLAGS',`noexpn') |
aan het bestand
sendmail.mc.