Sinds Majordomo verantwoordelijk is voor het bijhouden van Email lijsten steunt Majordomo op een zware MTA zoals Sendmail. Er zijn andere MTA's zoals Smail en Qmail; hoe dan ook, Sendmail is de oudste en meest algemene. Deze sectie introduceert de lezer aan de gebieden van Sendmail die bruikbaar of nodig zijn om te configureren als je Majordomo gebruikt.
De Sendmail aliases file (gewoonlijk /etc/aliases
) wordt gebruikt voor het maken van verwijzingen voor
E-mail adressen. Bijvoorbeeld, wanneer Majordomo is geinstalleerd, komt er meest een regel als deze:
majordomo-owner: jarchie
Deze invoer betekend dat alle mail geadresseerd aan majordomo-owner@host.com
eigenlijk naar
jarchie@host.com
wordt gezonden. Onthoud het is niet nodig om @host.com
achter jarchie
te zetten
omdat beide gebruikers op de zelfde computer zitten. Als het moet worden door gestuurd naar een andere gebruiker
op een andere computer dan moet je wel @host.com
erachter zetten.
Een ander type van invoer in de aliases file geeft je de mogelijkheid om E-mail door te sturen naar meerdere personen aangegeven in een file:
testlist: :include:/usr/local/majordomo-1.94.4/lists/testlist
Deze invoer zegt dat alle berichten gezonden naar testlist@host.com
worden doorgestuurd naar alle adressen
in de file /usr/local/majordomo-1.94.4/lists/testlist
. De testlist
file ziet er ongeveer zo uit:
johnarchie@emeraldis.com
srobirds@yahoo.com
acreswell@geocities.com
Majordomo kan hierdoor adressen toevoegen en verwijderen van een lijst door het voordeel van dit kenmerk.
Als er een subscribe
aanvraag wordt verwerkt wordt het E-mail adres van de gebruiker toegevoegd aan de
testlist
file;
Als er een unsubscribe
aanvraag wordt verwerkt wordt het E-mail adres van de gebruiker verwijderd uit de
testlist
file;
Een kan ook simpel adressen toevoegen en verwijderen door simpel de file te editten met bijvoorbeeld vi.
Sinds Majordomo commando's moet verwerken die met E-mail zijn gezonden, moet Sendmail het Majordomo programma
kunnen starten en bericht kunnen doorgeven. Dit wordt gedaan door nog een ander type toe te-voegen aan de aliases
file:
majordomo: "|/usr/local/majordomo-1.94.4/wrapper majordomo"
Het programma /usr/local/majordomo-1.94.4/wrapper
is een wrapper (SUID majordomo en SGID majordomo of deamon
afhankelijk van de configuratie) die het Majordomo programma uitvoert. De aanhalingstekens rond het tweede deel van
de alias invoer vertelt sendmail dat het allemaal een deel is; De aanhalingstekens zouden niet nodig zijn als er geen spatie
tussen wrapper
en majordomo
had gestaan. De |
is bekend als een "pipe"; het wordt gebruikt om Sendmail
te vertellen dat hij de e-mail via de standaard input moet zenden. (Sinds het enige wat de wrapper doet is majordomo
aanroepen, de E-mail wordt eigenlijk gezonden door Majordomo.) De wrapper accepteert een parameter--het programma dat hij
moet uitvoeren. (Elk parameter achter de eerst wordt gezonden naar het programma dat hij uitvoert.) Voor veiligheid
redenen, voert de wrapper alleen programma's in de Majordomo directorie uit, /usr/local/majordomo-1.94.4/
.
Deze beperking weerhoud een programmeur om de wrapper een programma te laten draaien dat niet Majordomo rechten
moet hebben. (Bijvoorbeeld, wrapper /bin/vi zou de gebruiker in staat stellen om elke Majordomo configuratie
file aan te passen.) Als een bericht wordt gezonden naar majordomo@host.com
, start Sendmail de wrapper op die
op zijn beurt majordomo
start, en Sendmail geeft het bericht via de standaard invoer door aan het majordomo
script.
Majordomo haalt dan gelijk het commando uit het bericht en antwoordt passend.
Sendmail.cf
aanpassen
Door zijn geheimzinnige zinsbouw is sendmail.cf
de meest gevreesde van alle configuratie files.
In de installatie van majordomo
, is het niet echt nodig om sendmail.cf
aan te passen; echter,
een paar eigenschappen zijn extreem bruikbaar. Tenzij er grote veranderingen moeten worden gemaakt aan de sendmail.cf
(die, gelukkig, voor Majordomo niet nodig zijn), de file aanpassen is niet zo moeilijk. Het enige dat we moeten doen
is een paar extra regels toevoegen.
Een aparte file voor de Majordomo aliases aanmaken, zoals /usr/local/majordomo-1.94.4/majordomo.aliases
,
is vaak een goed idee. Dit kan gemakkelijk gedaan worden door een regel aan het eind van de sendmail.cf
file
te plaatsen:
OA/usr/local/majordomo-1.94.4/majordomo.aliases
Om een /usr/local/majordomo-1.94.4/majordomo.aliases
te hebben moet Sendmail een database kunnen genereren
(/usr/local/majordomo-1.94.4/majordomo.aliases.db
). De makkelijkste manier om dit voor elkaar te krijgen is
door gewoon een lege database aan te maken en die voor Sendmail overschrijf baar maken.
[root@kes majordomo-1.94.4]# touch majordomo.aliases.db
[root@kes majordomo-1.94.4]# chmod 644 majordomo.aliases.db
Een andere methode om rond dit probleem te komen is door een majordomo.aliases
file in de /etc/
directory te
zetten i.p.v in de Majordomo home directory.
Voor vele set ups, kunnen sommige security middelen die Sendmail gebruikt Majordomo tegen houden om goed te werken. Vanzelfsprekend, moet deze security eigenschappen uitgezet worden.
Sendmail is een programma om het moeilijk te maken voor mensen om de "perfecte" vervalsing van E-mail te maken.
Bijvoorbeeld, wanneer een gebruiker een bericht zend via SMTP, wordt het bron IP adres meestal gelogd, en als een gebruiker
een bericht zend direct via Sendmail en de zender instelt via sendmail -f, geeft sendmail een waarschuwing met
de gebruiker wie het bericht echt heeft gezonden. Hoewel, sommige programma's een bericht moet zenden met vermomt als een
andere gebruiker, en deze extra security regel in de header is vervelend. Sendmail behandeld dit probleem door het hebben
van vertrouwde gebruikers. Majordomo moet draaien als een Sendmail vertrouwde gebruiker sinds het programma mail moet zenden
als een andere gebruiker. Deze eigenschap kan ingesteld worden op twee manieren. De makkelijkste is gewoon door Majordomo
aan de daemon
groep toe te voegen. Om de majordomo
gebruiker toe te voegen aan de deamon groep moet je een regel
aanpassen in de /etc/group
file er verschijnt iets als dit.
daemon::2:root,bin,daemon
en het wordt
daemon::2:root,bin,daemon,majordomo
Een andere manier om Majordomo een vertrouwde gebruiker te maken is door de regel
Tmajordomo
toe te voegen aan de sendmail.cf
file.
Als Sendmail smrsh
gebruikt, zijn de enige programma's die mogen worden uitgevoerd programma's in de
/etc/smrsh/
directory.
Misschien is de beste manier om de wrapper uit de aliases
file te laten draaien door een symbolische link
te creëren van /usr/local/majordomo-1.94.4/wrapper
naar /etc/smrsh/wrapper
.
[root@kes smrsh]# ln -s /usr/local/majordomo-1.94.4/wrapper wrapper
Een tweede oplossing is door de wrapper naar de /etc/smrsh
directory te kopieëren.
[root@kes smrsh]# mv /usr/local/majordomo/wrapper ./
Als veiligheid niet echt belangrijk is kun je de secure shell uitzetten. Een ruwe manier is gewoon door
/usr/sbin/smrsh
te verwijderen en een kopie of een link van /bin/sh
er terug zetten.
[root@kes sbin]# rm -f smrsh
[root@kes sbin]# ln -s /bin/sh smrsh
Een beter (maar moeilijkere manier) is door sendmail.cf
aan te passen. verander de aanmerking 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
Als je plant om een niet-root gebruiker mailing list laat toevoegen en beheren, moet je een majordomo.aliases
file
hebben die groep schrijf baar is. Hoewel, Sendmail dit niet toestaat voor veiligheids redenen ( zie sectie over
Sendmail Security Eigenschappen). Om deze security eigenschap uit te schakelen, moet je
de regel.
O DontBlameSendmail=GroupWritableAliasFile
toevoegen aan de sendmail.cf
file.
Ook, de lijst directory moet groep schrijf baar zijn om een lijst te kunnen toevoegen, maar sendmail staat deze setup
om enkele redenen niet toe. Om dit uit te schakelen voeg dan de volgende regel toe
O DontBlameSendmail=IncludeFileInGroupWritableDirPath
aan je sendmail.cf
configuratie file als dat nodig is.
sendmail.cf
configureren met M4 Configuratie
Voor administrators die niet de sendmail.cf
file direct willen aanpassen, is het mogelijk om M4 te gebruiken om
de file te creëren; de sectie beschrijft hoe je de veranderingen moet doen met een mc
file i.p.v in de cf
file.
De bedoeling van een M4 configuratie is om een makkelijke manier aan te bieden om de sendmail.cf
file aan te passen.
Het is idee is dat de gecreeërde mc
file makkelijker te snappen is dan de sendmail.cf
file. Door het
draaien van de m4 processor, wordt een sendmail.cf
file gegenereerd:
[root@kes etc]# m4 /etc/sendmail.mc > /etc/sendmail.cf
Voeg de regel
define(`ALIAS_FILE',`/etc/aliases,/usr/local/majordomo/majordomo.aliases')
toe aan de sendmail.mc
file.
Voeg de regel
define(`confTRUSTED_USERS',`majordomo')
toe aan de sendmail.mc
file.
Verwijder de regel
FEATURE(smrsh)
in uit sendmail.mc
file.
Om de groep schrijf recht security check op de aliases file uit te schakelen voeg de regel
define(`confDONT_BLAME_SENDMAIL',`GroupWritableAliasFile')
toe aan de sendmail.mc
file.
Om de path schrijf recht security check voor de include files uit te schakelen, voeg de regel
define(`confDONT_BLAME_SENDMAIL',`IncludeFileInGroupWritableDirPath')
toe aan de sendmail.mc
file.
Om beide opties te gebruiken, gebruik dan
define(`confDONT_BLAME_SENDMAIL',`GroupWritableAliasFile,IncludeFileInGroupWritableDirPath')
De laatste regel toevoegen is gelijk aan schrijven
O DontBlameSendmail=GroupWritableAliasFile,IncludeFileInGroupWritableDirPath
in de sendmail.cf
, en deze entry is het zelfde als beide op een aparte regel staan:
O DontBlameSendmail=GroupWritableAliasFile
O DontBlameSendmail=IncludeFileInGroupWritableDirPath
Security is verhoudings gewijs het tegenover gestelde van gemak; de enige veilige machine is een die geen toegang bied voor wie dan ook. Door het uitschakelen van enkele sendmail security eigenschappen wordt een machine onvoorkombaar minder veilig. Hoewel, het is belangrijk om de basis security risico's te snappen om zo vast te stellen of het gemak het waard is om je computer minder veilig te maken.
Als een gebruiker schrijf rechten heeft om toegang te krijgen tot een aliases file, moet ze een vertrouwde gebruiker zijn.
Door het steken van een invoegsel in de aliases file ( zoals die gebruikt wordt om wrapper uit te-voeren) kan een
gebruiker programma's uitvoeren met de rechten van Sendmail (daemon
of, in oude versies, root
).
De grote blunder van dit zou zijn dat je mensen in staat stelt om permissies te veranderen of zelfs te verwijderen van
files die toebehoren aan daemon
(door gebruik van rm of chmod commands in de aliases file). Dit is misschien
vermeden door het gebruik van smrsh; hoewel, er moet nog steeds voorzichtigheid zijn met welke files er in de
/etc/smrsh/
directory staan.
Een ander onderwerp dat boven water komt is dat de gebruiker die toegang hebben tot de aliases file kunnen veranderen in
files die toebehoren aan daemon
door het gebruik van file verwijzing (a >>
or >
i.p.v |
).
En zo kan deze inbreuk ook worden opgelost door het toevoegen van een regel aan de sendmail.cf
die limiteerd welke files kunnen worden geschreven
door de aliases file.
Voeg de regel
O SaveFileEnvironment=/path/to/safe/files
toe aan de sendmail.cf
of voeg
define(`confSAFE_FILE_ENV',`/path/to/safe/files')
toe aan de sendmail.mc
file.
Hoewel, dit alleen een kleine laag van security tussen gebruiker en deamon achterlaat. Een veel beter idee zou
zijn dat je een aliases file had die alleen schrijf baar is voor root en om een SUID root programma te maken dat automatisch
toevoegt en verwijderd aan de Majordomo gerelateerde aliases.
In het geval van include of .forward files, worden commando gedraaid als de gebruiker van wie ze zijn. Daarom, als een
file groep schrijf baar is, kan een lid van de groep commando's uitvoeren als de gebruiker van wie de file is. Met andere
woorden, elke gebruiker in de majordomo
groep kan commando's uitvoeren als Majordomo. Hoewel als de majordomo
gebruiker is aangemaakt zonder een shell, commando's of verwijzingen worden niet verwerkt in include files toe behorend
tot majordomo
.
Als majordomo
een vertrouwde gebruiker is, dan zijn gebruikers die in de majordomo
groep ook vertrouwd.
Als majordomo
lid is van de deamon
groep, zijn leden van de majodomo
groep niet vertrouwd. Het is een goed idee
om majordomo
een lid te maken van de daemon
groep, en maak een aparte groep aan genaamd majordomo
voor
mensen die de Majordomo lijsten onderhouden om te vermeiden dat majordomo
een vertrouwde gebruiker is. Ook, als je
majordomo
lid maakt van de deamon
groep hoeft de wrapper niet wereld uitvoerbaar te zijn. (De wrapper kan worden
uitgevoerd door de groep daemon
, en door Sendmail via de aliases
file sinds deze files uitvoert als daemon
.)
Deze toegevoegde security houdt gebruikers tegen om Majordomo te "voeden" door valse berichten door de wrapper aan
Majordomo te geven.
Als een gebruiker groep schijf rechten heeft op een directory, bijvoorbeeld /etc
, kan een gebruiker simpel
elke file verplaatsen en er een nieuwe terug zetten. Een aanval kan ongeveer gaan zoals dit
[mallory@kes etc]$ mv aliases ...
[mallory@kes etc]$ vi aliases
De gebruiker kan nu zijn eigen aliases maken! Deze aanval, kan worden tegengehouden door Sendmail's security
checking voor onveilige groep schrijf bare paths. Deze aanval zou ook kunnen werken met een include en .forward file dat
een onveilig path heeft.
In het geval van Majordomo, heeft de gebruiker in de majordomo
groep al toegang tot de include files, dus dit breekt
de veiligheid niet. Hoewel, een administrator moet voorzichtig zijn en moet deze ongewenste onveilige groepen en hun
schrijf bare directorie paths, in de toekomst, omdat Sendmail er niet naar kijkt.
Helaas, zeer ervaren spammers kunnen een mailing list openen door het EXPN SMTP commando. Daarom zouden administrators dit moeten uitzetten als ze mailing lijsten hebben. Voeg de regel
O PrivacyOptions=noexpn
toe aan de sendmail.cf
file of
define(`confPRIVACY_FLAGS',`noexpn')
toe aan de sendmail.mc
file.