• Spis treści:

    1. Opis/po co/ dlaczego
    2. Instalacja
    3. Testy
    4. Linki
    5. Seciuriti
    6. FAQ
    7. Leniwi, tędy proszę.
    8. Disclaimer

    1. Demon jest jeszcze w fazie początkowego rozwoju (już nie początkowego ale nadal się rozwija), jeśli chcesz to możesz go ściągnąć i wypróbować ale działasz na własne ryzyko ;-).
      Jeśli masz jakieś komentarze/uwagi to ucieszę się gdy je do mnie wyślesz.
      Paczkę mksdYYMMDD.tar.gz znajdziesz tutaj).
      To jest testowa i nie dopracowana wersja programu.
      Nie używaj jej na serwerach produkcyjnych.
    2. Na potrzeby program nalezy załóżyć jakiegoś użytkownika np skaner lub mksd, ściągnięty plik rozpakować i skompilować.
      
      # adduser skaner
      # su - skaner
      $ chmod 0700 $HOME
      $ tar xfvz mksdYYMMDD.tgz
      $ cd mksd
      $ make
      $ echo $PWD
      /home/users/skaner/mksd/
      $ exit
      
      Teraz powinniśmy wyszukać i zmienić ciąg 'var/spool/virus' na nasz /home/users/skaner/mksd/, zmian dokonujemy w pliku rc.d_mks, po czym umieszczamy go w /etc/rc.d/init.d/mksd. (Slackwarowcy skopiują go do np /etc/rc.d/rc.mks i będą uruchamiać z rc.local). Demon będzie pracował z uprawnienieniami oraz w katalogu zdefiniowanymi w /etc/sysconfig/mks, przykład:
      
      $ cat /etc/sysconfig/mks                
      # user for running mks_d
      RUN_AS=nobody
      # PATH for scanning. SHOULD BE chmod 0700 and chown $RUN_AS 
      MKSD_PATH=/var/spool/virus
      
      # /etc/rc.d/init.d/mksd start
      Starting Mks_deamon service............................[ DONE ]
      # cp /home/users/skaner/mksd/mks_c /usr//bin/
      # chmod 0755 /usr/bin/mks_c
      # chown root.root /usr/local/bin/mks_c
      # su - dowolny_user
      $ mks_c eicar.com
      $ echo $?
      1
      

      Użytkownicy systemów FreeBSD mogą skopiować rc.d_mks do /usr/local/etc/rc.d/mksd.sh i nadać mu atrybuty do odczytu i wykonywania. Dla starszych BSD może okazać się konieczne uruchamianie mks32.static ze względu na brak odpowiedniej wersji bibloteki libc. Żeby to zrobić trzeba wystarczy w mks.h ciąg #define EXE_FILE "/usr/local/lib/mks/mks32" zmienić na #define EXE_FILE "/usr/local/lib/mks/mks32.static".

      O tym że demon się uruchomił dowiesz się z logów (man syslog), wygodnie jest śledzić pracę programu np w ten sposób: tail -f /var/log/messages (lub /var/log/daemon w zależności od konfiguracji sysloga).

    3. Test. Poszukaj pliku w sieci eicar.com (lub umnie). To jest testowy plik z pseudo wirusem, używany jako test. (Plik ten powinien zostać utworzony po wydaniu komendy make eicar albo make w katalogu mksd)
      $ uuencode eicar.com eicar.com > chwilowy 
      $ mks_c chwilowy
      $ echo $?
      1
      $ mks_c chwilowy chwilowy
      $ echo $?
      1
      
      Liczba zwracana przez echo $? (czyli rezultat z jakim zakończył się klient) oznacza kod wyjścia programu, wartość poniżej 0 oznaczają jakiś błąd:
      "can't open socket" -1
      "can't connect" -2
      "mksc_check_filename" -3 nie można znaleźć jakichkolwiek plików z linii poleceń

    4. Linki (kolejność alfabetyczna :-)
      Opis Sergiusza Brzezińskiego (mks_d amavisd postfix)
      Opis Adama Wojtkiewicza (exim mks32)
    5. Bezpieczeństwo
      Mks_d używa plików tymczasowych, zapisywanych z umask==0177 oraz gid/uid użytkownika z którego uprawnieniami pracuje. Pliki te pojawiają się w katalogu roboczym mks_d, dobrze jest upewnić się że żaden inny użytkownik nie ma możliwości tworzenia i/lub modyfikacji plików w tym katalogu.
      Domyślnie demon nasłuchuje na portach 12346 wszystkich interfejsów sieciowych, zalecane jest użycie ipchains/iptables/ipf/ipfw w celu blokady pakietów spoza localhost.
    6. FAQ czyli dlaczego tak, a nie Inaczej
      1. Czemu mks_d binduje się na wszystkich interfejsach sieciowych, przecież każdy może z niego skorzystać, może lepiej przejść na rodzinę gniazdek uniksa/nazwane rurki/$whatever ???
        Początkowo to było nawet właśnie zrobione w ten sposób (przez named pipe w filesystemie).
        Ale użycie TCP i bindowanie na innych portach jest zrobione nie bez uzasadnienia: mks nie udostępnia binarki na np MacOsX/ppc,Sparc/Solaris czy Linux/Alpha a zdarzają się na takich OS serwerki pocztowe. Dodatkowo wersja mks32 na linuksa działa tylko na 586 i wzwyż (AFAIK, kompilowana była na MDK) więc stawiając sobie na jednym PC w sieci sprawdzarkę nie musimy bawić się w konfigurację relay poczty przez tego PC[1].
      2. Ale ja nie chcę żeby ktoś inny mógł używać mojego mks32 ! Żaden problem. Poczytaj coś o ipchains/iptables/ipf/ipfw. W najprostszym przypadku to będzie wyglądało jakoś tak:
        # echo 'iptables -A INPUT -j REJECT -p TCP -s ! 127.0.0.1/8 --destination-port 12346' >> /etc/rc.d/rc.local

        Albo tak:
                    # echo 'pass in quick on lo0 from any to any port = 12346' >> /etc/ipf.rules
                    # echo 'block in quick on from any to any port = 12346' >> /etc/ipf.rules
                    

      3. To właściwie ile zyskuje na użyciu demona?
        Na to pytanie odpowiedz sobie sam, ale że napiszę tylko co robi z Pentium 100 użycie mks_d, otóż z ponad 13 sekund czekania na mks32 eicar.com, zrobiła się nie cała sekunda. Aha, znika też problem mks32 + bazy w katalogu kilku użytkowników (bo przecież każdy może sobie go użyć przez procmail i wrzucić do crontaba ściąganie nowej wersji)
      4. Da się tego użyć bez amavisa/mta ?
        Właściwie to tak. Np w procmailu, wystarczy zmieniać wywołania mks32 na mks_c, i reagować na kody błędów.
                                    :0?
                                    ?
                                    ?
                       regułka dla procmaila 
                (this place intentionally left blank ;-))
                                    ?
                                    ?
                    
      5. Mam zbyt wiele wolnego czasu ! Chcę pomóc! co mogę zrobić?
        1. Mam architekturę Foo-shmoo, udało Mi się to skompilować/spiąć z $MTA/$AMAVIS !
          Fajnie, zrób uname -a | mail -s RAPORT_MKSD hunter@raszyn.pl.
          Wiem i mogę się pochwalić że działa na:
          OS:
          FreeBSD dark.home 4.0-RELEASE FreeBSD 4.0-RELEASE #0: Fri Jun 28 23:02:22 CEST 2002 root@dark.home:/mnt/src/sys/compile/WITCH i386
          Linux dragon 2.4.18 #7 Sat May 18 11:32:34 CEST 2002 i686 AMD_Duron(tm)_Processor
          Wspomagacze Amavis w wersji 0.2.1, perl-11, amavisd-snapshot-20020300.
          MTA: qmail-1.03, exim-20010228, postfix.
          Domeny Poszukaj w nagłówkach tekstów 'mks' 'mksd' X-anivirus.
        2. Mam firmę XyZ inc, korzystam z Wolnego Oprogramowania czy mogę jakoś pomóc developerom ?
          Jasne, jeśli pozbywasz się jakiegoś sprzętu to zamiast pod młotek możesz go przekazać do najbliszej szkoły albo domu dziecka. Ale jeśli bardzo chcesz możesz mi wysłać kartkę (może być e-kartka, może być zwykła poprzez s-mail [adres dostaniesz na priva]), albo przekazać przysłowiowe trzy grosze (-: jeśli nic nie płacisz za przelew:-) które pójdą do naszej kochanej TPSA.
        3. BARDZO mi zależy na wersji klienta dla Windows/Solaris/SCOpenServer/HP-UX/Macos9
          O ile wiem, jest to (w przypadku MS-Windows) niezgodne z licencją zawartą w readme.txt, przynajmniej dla nowszych wersji mksLinux.tgz. Jeśli masz starszą wersję i dobrego prawnika to prosty skrypt w perlu powinien działać nawet na Macu czy Solarisie. [Jak tylko się wyśpię i poznam bliżej studentkę prawa to taki napiszę :-)))] Aha AFAIR w Polsce zrobienie takiego skryptu w celu 'przeniesienia na inną platformę sprzętową' jest prawnie dozwolone. Protokół komunikacji z mks_d jest prosty jak konstrukcja cepa. Jeśli napiszesz coś takiego (nawet w shellu) to podeślij.
      6. Kto tego używa, czy demonowi można zaufać?
        Nie wiem. Ilościowo mogę pokazać statystyki wejścia na tę stronę oraz pobrań. Wiem o około 5 większych (niż 10 kont dla rodziny i znajomych królika) instalacjach zakończonych sukcesem. Aha, ostatnio zauważyłem że konto biznesowe w onet.pl używa produktów firmy mks jako skanera antywirusowego.
      7. Jak automagicznie ściągać nowe bazy?
                             $ man wget
                             $ man cron
                             $ man crontab
                             
        Na ten temat kilka osób przelało już wiele słów, przykładowe skrypty znajdziesz w paczce mksLinux.tgz.
      8. Ściągnąłem nowszą wersję mksLinux/BSD.tgz i nie działa!
        Niestety mks_d będzie do tyłu, czasem dobry miesiąć. Mógł się zmienić któryś z komunikatów/etc.
      9. Gdzie można znaleść innych użytkowników? Jest może jakaś lista dyskusyjna?
        Kamil Konieczny (kkoniec@mks.com.pl) wysyła wiadomości o nowszych wersjach mksLinux.tgz. Mks_d trafił do CVSu pld i tam będzie spoczywał w pokoju. Dalszy jego rozwój jest raczej bez celowy, gdyż obsługuje on to co mi było potrzebne gdy nie było demona od firmy mks_vir.
      10. Wykryłem błąd. Co robić?
        Sprawdź czy używasz dość nowej wersji mks_d, przejżyj Changes może coś Ci powie. Jeśli uważasz że problem nie występuje nigdzie w dokumentacji i nie jest jednorazowy (powtarza się), to podeślij informację, abym mógł jakoś na nią zareagować potrzebuję kilku informacji: np używam mksd-xxyy.tgz, na platformie uname -a, mks_d się kompiluje i uruchamia, ale mks_c zbywa mnie komunikatem: 'nie mogę znaleść widelca' i zwraca kod błędu nr (w shellu coś takiego: ./mks_c nazwa.pliku; echo $?).
        Raczej nie wiele mogę zrobić po otrzymaniu listu typu ściągnąłem amavisa i mksa co teraz?, poza wskazaniem dokumentacji.
      11. Co to jest smbmks?? Ktoś się tym zajmuje? Dodatek do samby. Właściwie to bibloteka so powodująca blokadę plików zawirusowanych. Gdzieś tutaj jest opis. Nie było nikogo chętnego, więc po zrobieniu kilku prób przestałem to rozwijać. W sambie jest już wsparcie dla skanera z firmy mksvir.
      12. Mam kilku ludzi, używam squida jako transparent proxy i chciałbym ich ochronić przed ściąganiem wirusów z sieci!!! Mam w planach spięcie tak jak smbscaner czegoś do squida, jeśli chcesz mi pomóc to funkcja static void *vscanFilter(vscanObject *this, const void *arg) w zmodyfikowanym squidzie jest dobrym początkiem. Zmodyfikowanego sqida znajdziesz gdzieś tutaj Pakiet squid-filter autorsta Olaf Titz. Oraz łatkę z OpenAntivirus powinna być gdzieś tutaj...(ale jej nie ma).
  • Paczki rpm/tgz/deb powinny znajdować się tutaj.
    Ale ich jeszcze nie ma. Być może w PLD jakiś będzie.
  • Standardowy Disclaimer:
    Prawa autorskie należą do Krzysztofa Drewicza. Dokument ten jest rozpowszechniany na podstawie GPL (Gnu Public License). Aby otrzymać kopię tej licencji napisz do Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    Znaki towarowe należą do ich właścicieli. Nie ma żadnych gwarancji co do dokładności czy przydatności informacji zawartych w tym dokumencie. Choć opisane czynności nie powinny zaszkodzić systemowi nie ponoszę żadnej odpowiedzialności za ich efekty.

    $Id: demon.html,v 1.3 2003/08/17 21:31:02 hunter Exp $