=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Od:    Radoslaw Ejsmont <admin@tek-art.com.pl>
Do:    kkoniec@mks.com.pl <kkoniec@mks.com.pl>
Data:  21 kwietnia 2003, 04:47:36
Temat: MKSd + qmail - prosto i bezpiecznie
Pliki: <none>
--====----====----====----====----====----====----====----====----====----===--

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Od kilku dni probowalem z uzyciem amavis'a skonfigurowac MKSd i qmaila.

Moze nie mam cierpliwosci, ale porzucilem amavisa i zasiadlem do konsoli
serwera,
tworzac chyba najprostszy sposob integracji MKSd z qmailem.

Jak to dziala:

Podmieniamy qmail-queue tak, zeby nasz skrypt skanowal maile w poszukiwaniu
wirusow i dalej dostarczal poczte. MKSd lazi jako root. mksscan jest
odpalany przez sudo (zeby byle user nie mogl samodzielnie skanowac calego
systemu plikow w poszukiwaniu wirusow, a script kiddies nie exploitowaly
naszego kochanego demona). Prawo do odpalania mks_vir'a ma jeden jedyny user
w systemie, a pozostali moga (pod pewnymi warunkami - czytaj tylko dla
skanowania poczty) odpalac w jego imieniu mks'a. Posrednie uprawnienia dla
wszytskich userow (choc drastycznie okrojone) sa niezbedne, bo qmail-queue
chodzi odpalany albo jako root - dostarczanie poczty dla roota lub remote
users - lub jako user bedacy adresatem poczty. A my nie chcemy, zeby ow user
bedacy potencjalnym adresatem mogl sobie odpalac mks'a wedle zyczenia.

A oto przepis na sukces :)

- ----------CUT-HERE----------

Wymagania:

- - qmail - standardowa instalacja (nie dual MTA !!!)
- - mks32
- - mksd
- - mksscan
- - sudo (!)

- ---

Co zrobic:

1) zalogowac sie jako root (oczywiste)
2) rozpakowac paczke z mks_virem, mks_demonem i bazami do jakiegos katalogu
(np. /tmp/mks)

$ cd /tmp/mks

o) Najpierw stworzmy katalogi, gdzie siedzi mks

$ mkdir /usr/local/mksvir
$ mkdir /usr/local/mksvir/bin
$ mkdir /usr/local/mksvir/dat

o) Skopiujmy binarki mks'a tam, gdzie trzeba + stworzmy symlinki dla
dostepnosci przez $PATH - ewentualnie mozna katalog /usr/local/mksvir/bin/
wrzucic do $PATH, ale po co :D

$ cp ./mksd-1.12/mksd /usr/local/mksvir/bin/mksd
$ cp ./mksd-1.12/mksscan /usr/local/mksvir/bin/mksscan
$ cp ./mksLinux/mks32 /usr/local/mksvir/bin/mks32
$ cp ./bazy3/* /usr/local/mksvir/dat
$ chmod 644 /usr/local/mksvir/dat/*
$ ln -s /usr/local/mksvir/bin/mksd /usr/bin/mksd
$ ln -s /usr/local/mksvir/bin/mksscan /usr/bin/mksd
$ ln -s /usr/local/mksvir/bin/mks32 /usr/bin/mks32

o) Stworzmy katalog i usera dla demona mks'a + a bit of security

$ mkdir /var/run/mksd
$ useradd -d /var/run/mksd antivirus
$ chown -R antivirus.antivirus /var/run/mksd
$ chmod 700 /var/run/mksd

o) Dajmy userom prawo do odpalania mks'a w imieniu antivirus'a z parametrami
dla scanu poczty (nie wnikajmy w szczegoly):

$ visudo

idziemy na koniec listy 'User alies specification', wciskamy 'i' i
wpisujemy:

Cmnd_Alias      MKSMAIL = /usr/bin/mksscan -m -c /tmp/antivirus/*

Wciskamy 'ESC', idziemy na koniec listy 'User privilege specification'
wciskamy 'i' i wpisujemy:

ALL     ALL = (antivirus) NOPASSWD: MKSMAIL

i wciskamy radosnie 'ESC' a potem 'ZZ'

o) Teraz wezmiemy sie za stworzenie skryptu dla Qmaila

$ mkdir /tmp/antivirus
$ chmod 777 /tmp/antivirus
$ cat > /var/qmail/bin/qmail-queue-mks
#!/bin/bash
# MKS_VIR scanning script for qmail by Radosaw 'ArcAngel' Ejsmont
# Copyright (C) admin@tek-art.com.pl

# Get user information
USERNAME=`id | cut -d'(' -f2 | cut -d')' -f1`
TEMPFILE=`mktemp /tmp/antivirus/$USERNAME.XXXXXX`

# Scan and deliver message
echo "$@" > $TEMPFILE
chmod 600 $TEMPFILE
cat > $TEMPFILE.body
chmod 600 $TEMPFILE.body
sudo -u antivirus mksscan -m -c $TEMPFILE.body > /dev/null
/var/qmail/bin/qmail-queue-deliver `cat $TEMPFILE` < $TEMPFILE.body

rm -f $TEMPFILE
rm -f $TEMPFILE.body
^C

o) Ok. Jestesmy juz prawie gotowi do startu. W tym momencie stworzmy skrypt
startowy dla mksd

$ cat >> /etc/rc.d/rc.local
rm -rf /var/run/mksd/*
/usr/local/mksvir/bin/mksd
^C

o) Swietnie. Teraz odpalamy demona

$ /usr/local/mksvir/bin/mksd

o) Jak wszytko poszlo dobrze, mksd powinien wstac. Teraz pora przerobic
qmaila...

$ killall -9 qmail-send
$ mv /var/qmail/bin/qmail-queue /var/qmail/bin/qmail-queue-deliver
$ ln -s /var/qmail/bin/qmail-queue-mks /var/qmail/bin/qmail-queue
$ /var/qmail/rc &

o) To by bylo wszystko, chyba, ze cos pominalem. Jesli tak, to uwagi mile
widziane.

A calosc ta dedykuje znajomym z ICM'u,
szczegolnie Krystianie, Slawkowi i prof. Lesyngowi :)

- ----------CUT-HERE----------

Mam nadzieje, ze sie przyda. Moze by wlaczyc to do paczek z mksd ?

Pozdrawiam serdecznie,

Radoslaw Ejsmont

- --
  _________________________________________________________
 /                 *** Radoslaw Ejsmont ***                \
 \       <admin@tek-art.com.pl> <admin@foto.za.net>        /
 /  PGPkey: https://ssl.tek-art.com.pl/certs/rejsmont.pub  \
 \     ICQ#: 264814098; GG#: 1282983; IRCname: Bugsik      /
 /                                                         \
 \____________________________________________ArcAngel@UHE_/

-----BEGIN PGP SIGNATURE-----
Version: PGP 8.0

iQA/AwUBPqNbyKR1wSUPLpp7EQI5HACgnhXXje+kD7aB4JonFGUA1mXqPx4AoOnj
dEgDM2X4L7wFcYvbSaVlutpD
=wq8W
-----END PGP SIGNATURE-----



Pliki: <none>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

