(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
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
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
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
/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
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
/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)