Transparentna ochrona antyspam. i antywir. poczty w LAN

W tym miejscu zapraszamy Was do współpracy. Czekamy na propozycje, sugestie i rady.
Moderatorzy zatroszczą się o to, by najlepsze teksty trafiły do FAQ.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
Skyscraper
Administrator
Posty: 753
Rejestracja: 2004-05-22, 10:46
Lokalizacja: Wrocław
Kontakt:

Transparentna ochrona antyspam. i antywir. poczty w LAN

Post autor: Skyscraper » 2008-05-25, 20:52

Transparentna ochrona antyspamowna i antywirusowa poczty w LAN
(Bridge + P3Scan + Clamav + Spamassassin)



0. Zalozenia i wymagania

a. Zalozenia
Zakladamy, ze nie mamy dostepu administracyjnego do routera dostepowego, zapewniajacego sieci lokalnej dostep do Internetu, lub jest to "magiczne pudelko", na ktorym nie da sie za wiele zrobic.

Nie mamy wladzy nad serwerami pocztowymi firmy/klienta/LAN na ktorych moglibysmy wdrozyc ochrone. Chcemy przefiltrowac poczte przychodzaca/wychodzaca z/do darmowych uslugodawcow pocztowych (np. onet.pl, wp.pl , itp.).

Proces filtracji mam byc niewidoczny dla koncowego uzytkownika LAN, bez koniecznosci zaawansowanej rekonfiguracji stacji roboczych i ich oprogramowania.

Caly ruch sieciowy z sieci lan do/z Internetu przepuszczamy przez dedykowany serwer filtrujacy (wstawiony pomiedzy LAN a routerem, jako transparentny bridge). Ruch "pocztowy" na porty 110,25,995 odpowiednio wylapujemy w celu przefiltrowania. Na stacjach roboczych, w klientach pocztowych, decydujemy ostatecznie (za pomoca filtrow) co dalej robic z oznakowanym spamem i wirusami.

- Router dostepowy:
IP LAN - 192.168.1.1
- Siec LAN:
IP NET - 192.168.1.0/24
- Serwer filtrujacy:
IP BRIDGE - 192.168.1.100

b. Wymagania
- 2 karty sieciowe w serwerze filtrujacym - eth0 podlaczone do routera, eth1 do LAN (switch) - w zaleznosci o infrastruktury - wazne aby odseparowac LAN od routera
- Slackware Linux z pakietem bridge-utils
- oprogramowanie
P3Scan - "This is a full-transparent proxy-server for email clients. It can be used to provide email scanning from the internet, to any internal network and is ideal for helping to protect your "Other OS" LAN from harm. It is designed to enable scanning of incoming/outgoing email messages for Virus's, Worms, Trojans, Spam and harmfull attachments."
http://p3scan.sourceforge.net/
Clam Antyvirus - ochrona antywirusowa
http://www.clamav.net/
SpamAssassin - ochrona antyspamowa
http://spamassassin.apache.org/


1. Instalacja oprogramowania

a. Instalacja Clamav
# wget http://heanet.dl.sourceforge.net/source ... .93.tar.gz
# tar zxvf clamav-0.93.tar.gz
# cd clamav-0.93
# ./configure --prefix=/usr --sysconfdir=/etc/clamav
# make
# make install

Skrypt startowy - /etc/rc.d/rc.clamav

Kod: Zaznacz cały

#!/bin/sh

# zmienne programu
DESC="Clam AntiVirus"
CLAMD="/usr/sbin/clamd"
CLAMD_OPTIONS="&"
CLAMD_PID="/var/run/clamav/clamd.pid"
FRESHCLAM="/usr/bin/freshclam"
FRESHCLAM_OPTIONS="-d"
FRESHCLAM_PID="/var/run/clamav/freshclam.pid"
SKRYPT="/etc/rc.d/rc.clamav"

# Zmienne programow systemowych
KILL="/bin/kill"
KILLALL="/bin/killall"
RM="/bin/rm"

case "$1" in
  start)
        echo "Starting: $DESC"
        $CLAMD $CLAMD_OPTIONS
        sleep 1
        $FRESHCLAM $FRESHCLAM_OPTIONS
        ;;
  stop)
        echo "Stopping: $DESC"
        $KILL `cat $CLAMD_PID` &> /dev/null
        $KILL `cat $FRESHCLAM_PID` &> /dev/null
        $RM -f $CLAMD_PID
        $RM -f $FRESHCLAM_PID
        ;;
  restart)
        $0 stop
        sleep 2
        $0 start
        ;;
  *)
        echo "Usage: $SKRYPT {start|stop|restart}" >&2
        exit 1
        ;;
esac
exit 0
# chmod +x /etc/rc.d/rc.clamav


b. Instalacja Spamassassin
# perl -MCPAN -e shell
cpan> o conf prerequisites_policy ask
cpan> install Mail::SpamAssassin
cpan> quit


Skrypt startowy - /etc/rc.d/rc.spamd

Kod: Zaznacz cały

#!/bin/sh

# zmienne programu
DESC="SpamAssassin Mail Filter Daemon"
SPAMD="/usr/bin/spamd"
SPAMD_PID="/var/run/spamd/spamd.pid"
SPAMD_OPTIONS="-d --pidfile=$SPAMD_PID --username=clamav --groupname=clamav --syslog=/var/log/spamd/spamd.log"
SKRYPT="/etc/rc.d/rc.spamd"

# Zmienne programow systemowych
KILL="/bin/kill"
KILLALL="/bin/killall"
RM="/bin/rm"

case "$1" in
  start)
        echo "Starting: $DESC"
        $SPAMD $SPAMD_OPTIONS
        ;;
  stop)
        echo "Stopping: $DESC"
        $KILL `cat $SPAMD_PID` &> /dev/null
        $RM -f $SPAMD_PID
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: $SKRYPT {start|stop|restart}" >&2
        exit 1
        ;;
esac
exit 0
# chmod +x /etc/rc.d/rc.spamd


c. Instalacja P3Scan
# wget http://heanet.dl.sourceforge.net/source ... 3.2.tar.gz
# tar zxvf p3scan-2.3.2.tar.gz
# cd p3scan-2.3.2
# make
# make install

Skrypt startowy - /etc/rc.d/rc.p3scan

Kod: Zaznacz cały

#!/bin/bash
case "$1" in
   start)
      /usr/sbin/p3scan
      ;;
   stop)
      if [ -a /var/run/p3scan/p3scan.pid ]; then
         kill `cat /var/run/p3scan/p3scan.pid` &>/dev/null
         rm -f /var/run/p3scan/p3scan.pid
      else
         killall p3scan &>/dev/null
      fi
      ;;
   status)
      if [ -a /var/run/p3scan/p3scan.pid ]; then
         PID=`cat /var/run/p3scan/p3scan.pid`
         echo "P3Scan OK, pid: $PID"
      else
         echo "P3Scan is stopped"
      fi
      ;;
   restart)
      $0 stop
      $0 start
      ;;
   *)
      echo "Usage: p3scan { start | stop | restart | status }"
      exit 1
esac
exit 0
# chmod +x /etc/rc.d/rc.p3scan


2. Konfiguracja systemu

a. nowy uzykownik i grupa
# groupadd clamav
# useradd -g clamav -s /bin/false clamav


b. katalogi, uprawnienia i wlasciciele
# chown -R clamav:clamav /etc/clamav/
# chmod -R 750 /etc/clamav/
# chown -R clamav:clamav /etc/p3scan/
# chmod -R 750 /etc/p3scan/
# chown -R clamav:clamav /etc/mail/spamassassin/
# chmod -R 750 /etc/mail/spamassassin/
# mkdir /var/run/clamav
# chown -R clamav:clamav /var/run/clamav
# chmod -R 750 /var/run/clamav
# mkdir /var/run/spamd
# chown -R clamav:clamav /var/run/spamd
# chmod -R 750 /var/run/spamd
# chown -R clamav:clamav /var/run/p3scan
# chmod -R 750 /var/run/p3scan
# chown -R clamav:clamav /var/spool/p3scan
# chmod -R 750 /var/spool/p3scan
# mkdir /var/log/clamav
# chown -R clamav:clamav /var/log/clamav
# mkdir /var/log/spamd
# chown -R clamav:clamav /var/log/spamd
sprawdzamy czy uzytkownik:grupa clamav:clamav jest wlascicielem katalogu /usr/share/clamav

c. Uruchamiamy bridge
/sbin/modprobe bridge
/sbin/ifconfig eth0 up
/sbin/ifconfig eth1 up
/sbin/brctl addbr br0
/sbin/brctl addif br0 eth0
/sbin/brctl addif br0 eth1
/sbin/ifconfig br0 up 192.168.1.100 netmask 255.255.255.0
/sbin/ip r a default via 192.168.1.1


d. firewall
# /sbin/modprobe ip_tables
# /sbin/modprobe iptable_nat
# /usr/sbin/iptables -t nat -A PREROUTING -p tcp -i br0 --dport 110 -j REDIRECT --to-ports 8110
# /usr/sbin/iptables -t nat -A PREROUTING -p tcp -i br0 --dport 25 -j REDIRECT --to-ports 8110
# /usr/sbin/iptables -t nat -A PREROUTING -p tcp -i br0 --dport 995 -j REDIRECT --to-ports 8110


e. /etc/rc.d/rc.local
Uruchomienie w odpowiedniej kolejnosci - p3scan na koncu
/etc/rc.d/rc.clamav start
/etc/rc.d/rc.spamd start
/etc/rc.d/rc.p3scan start


f. wlaczamy fowardowanie pakietow przez nasza maszyne
# chmod +x /etc/rc.d/rc.ip_forward
# /etc/rc.d/ip_forward start
lub
# echo 1 > /proc/sys/net/ipv4/ip_forward

g. Locale
W pliku /etc/profile.d/lang.sh ustawiamy odpowiedna zmienna dla jezyka polskiego export LANG=pl_PL, nastepnie ustawiamy zmienna z linii komend:
# echo LANG=pl_PL

3. Konfiguracja oprogramowania

a. Konfiguracja Clamav
/etc/clamav/clamav.conf

Kod: Zaznacz cały

LogFile /var/log/clamav/clamd.log
LogFileMaxSize 0
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /usr/share/clamav
LocalSocket /tmp/clamd.socket
User clamav
reszta domyslnie

/etc/clamav/freshclam.conf

Kod: Zaznacz cały

DatabaseDirectory /usr/share/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogFileMaxSize 0
PidFile /var/run/clamav/freshclam.pid
DatabaseOwner clamav
DatabaseMirror db.pl.clamav.net
DatabaseMirror database.clamav.net
NotifyClamd /etc/clamav/clamd.conf
reszta domyslnie

b. Konfiguracja SpamAssassin
/etc/mail/spamassassin/local.cf

Kod: Zaznacz cały

required_score           5.0
rewrite_header subject         [*****SPAM*****]
report_safe             1
use_bayes               1
bayes_auto_learn              1
skip_rbl_checks         0
use_razor2              1
use_dcc                 1
use_pyzor               1
ok_languages            en pl
ok_locales              en pl
report_charset          iso-8859-2
c. Konfiguracja P3Scan
/etc/p3scan/p3scan.mail
# ln -s /etc/p3scan/p3scan-pl.mail p3scan.mail


/etc/p3scan/p3scan.conf

Kod: Zaznacz cały

pidfile = /var/run/p3scan/p3scan.pid
maxchilds = 100
ip = 0.0.0.0
port = 8110
targetip = 0.0.0.0
targetport = 8110
user = clamav
notifydir = /var/spool/p3scan/notify
virusdir = /var/spool/p3scan
bytesfree = 100000
scannertype = basic
scanner = /usr/bin/clamdscan --no-summary
virusregexp = .*: (.*) FOUND
demime
checkspam
spamcheck = /usr/bin/spamc
template = /etc/p3scan/p3scan.mail
subject = "[Uwaga WIRUS] wiadomosc zainfekowana przez:" <virus name>

4. Uruchomienie i testy

a. Uruchamiamy caly system filtrujacy
- bridge
- firewall
- /etc/rc.d/rc.clamav start
- /etc/rc.d/rc.spamd start
- /etc/rc.d/rc.p3scan start

b. Testy
- zagladamy w logi
Clamav
/var/log/clamav/clamd.log
/var/log/clamav/freshclam.log
SpamAssassin
/var/log/spamd/spamd.log
P3Scan
/var/log/messages
- sprawdzamy procesy i wlascicieli
# ps aux | grep p3scan
# ps aux | grep spamd
# ps aux | grep clamd

- testowy wirus Eicar
ze strony http://www.eicar.org/anti_virus_test_file.htm sciagamy "testowego wirusa"
eicar.com / eicar.com.txt / eicar_com.zip / eicarcom2.zip i przesylamy pli na swoja skrzynke jako zalacznik. Nasz filtr powinien go wylapac i odpowiednio zereagowac.


5. Uwagi
Uslugi serwera filtrujacego mozna uruchomic bezposrednio na routerze dostepowym, o ile ma sie do niego dostep administracyjny, ktory pozwala na wdrozenie powyzszej konfiguracji. Oczywiscie nie bedzie wtedy pracowal w trybie bridga, ale nadal bedzie niewidoczny dla koncowego uzytkownika.


Autor: Skyscraper (skyscraper AT jawgroup DOT pl)



Changelog:
2008-05-25 / 21:50 - pierwsza wersja, skrypty startowe troche brzydkie i nieujednolicone, brak polskich znakow
2008-05-25 / 22:15 - dodany opis programu P3Scan - cytat
2008-06-04 / 21:05 - poprawione skrypty startowe rc.clamav, rc.spamd / uruchamianie spamd z uprawnieniami uzytkownika a nie roota / zaostrzone uprawnienia i wlasciciele katalogow w /etc i /var/run / przeniesiony pid spamd do /var/run/spamd
2008-06-05 / 22:35 - dodany pkt 2g / dodanie do Spamassassina opcji wysylajacej raport o spamie po polsku / dodanie do P3Scan opcji nadpisywania, po polsku, tematu wiadomosci z informacja o znalezionym wirusie
2008-06-07 / 21:30 - poprawki w uprawnieniach na katalogi /etc, /var/run / przesylanie logow spamassassina do oddzielnego pliku a nie to mail facility sysloga (w rc.spamd /var/log/spamd/spamd.log)
Ostatnio zmieniony 2008-06-07, 20:33 przez Skyscraper, łącznie zmieniany 6 razy.

ODPOWIEDZ