Archiv podle štítků: Linux - Stránky 2

Vytvareni .deb balicku ze zdrojaku pro Ubuntu (Debian)

Mhohem lepsi nez instalovat program (ktery neni v repozitarich nebo chceme novou verzi) "kompilaci" je kdyz uz ho jednou kompilujeme si vytvorit .deb balicek. Takto nainstalovany balicek nam nenechava bordel v systemu po odinstalaci a muzeme si ho zaclenit do systemu pomoci nastroju k tomu urcenych (dpkg, apt), coz nam usnadnuje jeho budouci odinstalaci, pripadne instalaci jiz bez kompilace.

Je vice cest jak tento balicek vytvorit, popisu tu 2

1. vytvoreni balicku .deb pro ubuntu ze zdrojaku pomoci checkinstall (lehci)

2. vytvoreni balicku .deb pro ubuntu ze zdrojaku pomoci debhelperu (slozitejsi)

Jako zaklad pro vytvareni balicku potrebujeme mit nainstalovany balik build-essential, takze "sudo aptitude install build-essential" 

Vytvoreni balicku .deb pro ubuntu ze zdrojaku pomoci checkinstall (jednoduche, pro vlastni potrebu):

  • nainstalovat checkinstall a dalsi nastroje "sudo aptitude install checkinstall auto-apt"
  • aktualizujeme repozitare auto-aptu "auto-apt update && auto-apt updatedb && auto-apt update-local"
  • rozbalit zdrojaky – "tar xvzf jmeno.baliku.tar.gz"
  • prepnout se do rozbaleneho adresare a spustit "./configure" abychom zjistili jake jsou zavislosti, popr. doinstalovat zavislosti (devel knihovny) a zase "./configure" dokud to neni ok, nebo staci "auto-apt run ./configure", ktery si zavislosti automaticky doinstaluje
  • spustit "make"
  • spustit "sudo checkinstall"
  • a odpovedet na par dotazu ohledne balicku, po uspesnem dokonceni se nam adresari vytvori debiani balicek

Vytvoreni balicku .deb pro ubuntu ze zdrojaku pomoci debhelperu (slozitejsi):

  • nainstalovat potrebne baliky – "sudo aptitude install dh-make debhelper fakeroot devscripts lintian auto-apt dpatch"
  • aktualizujeme repozitare auto-aptu "auto-apt update && auto-apt updatedb && auto-apt update-local"
  • rozbalit zdrojaky programu ze ktereho chceme vytvorit deb "tar xvzf jmeno.baliku.tar.gz" a "cd" do rozbaleneho adresare
  • spustit "dh_make -e emailadress@domena.com -f ../zdrojovybalik.tar.gz", zvolime "s" jako single package, dale se nam ve zdrojaku vytvori adresar "debian" se soubory potrebnymi k vytvoreni balicku
  • v adresari "debian" postupne modifikujeme tyto soubory (pokud budeme uploadovat nekam dale):
  • "echo 5 > debian/compat" zapiseme verzi debhelperu do souboru "compat"
  • soubor "control", kde doplnime vsechny devel (vyvojove) knihovny v sekci "Build-depends" a ne-devel knihovny do sekce "Depends"
  • soubor "changelog" kde pozmenine udaje podle naseho buildu
  • soubor "copyright" kde doplnime potrebne udaje ohlede copyrightu
  • soubor "rules" kde muzeme "tunit" balicek, napr. s jakyma flagama se bude kompilovat atd.., nejslozitejsi cast
  • a nakonec smazeme vsechny soubory s priponou .ex a .EX
  • konecne vytvorime balik a zdrojovy balik "dpkg-buildpackage -rfakeroot -uc -us", ktery vytvori nepodepsany zdrojovy i deb balicek
  • a nebo jen "fakeroot debian/rules binary" pro vytvoreni deb baliku bez zdrojoveho baliku
  • pokud nam chybeji devel knihovny doinstalovat pomoci auto-apt nebo rucne
  • zkontrolujeme balicek na chyby pomoci lintian, pokud chceme uploadovat balicky nekam dale "lintian nazev_balicku.deb", pripadne s parametrem "-i" pro vysvetleni chyb 

Takto jsme vytvorili balicek pro konkretni distribuci/architekturu (napr. "ubuntu-gutsy-i386"), pro vytvoreni balicku pro ruzne verze distribuce/architektury lze pouzit program pbuilder, ale jeho pouziti je mimo tenhle clanek. 

pokus

Virtual Machine Additions for Linux

Compatible with Virtual Server 2005 R2 SP1

Qualified Linux guests:

Enterprise distributions

  • Red Hat Enterprise Linux 2.1 (update 7)
  • Red Hat Enterprise Linux 3.0 (update 8)
  • Red Hat Enterprise Linux 4.0 (update 4)
  • Red Hat Enterprise Linux 5.0
  • SuSE Linux Enterprise Server 9.0
  • SuSE Linux Enterprise Server 10.0

Standard distributions

  • Red Hat Linux 9.0
  • SuSE Linux 9.3
  • SuSE Linux 10.0
  • SuSE Linux 10.1
  • SuSE Linux 10.2

Download : http://www.microsoft.com/downloads/details.aspx?familyid=bf12642f-77dc-4d45-ae4e-e1b05e0a2674&displaylang=en&tm

Ja a linux :-)

Mel jsem doma jeden volny pocitac a uz dlouho jsem se na nej chystal zkusit linux. Pekne dlouho jsem si ze zadnym nehral (a po zkusenostech asi dlouho nebudu, ne delam si legraci).

Hlavni cile : zkusit compiz + aby to distro funguvalo tak jak ma.

1. instalace opensuse 10.3
Distro se mi ve virtualu libilo, tak jsem si rekl ze ho zkusim. Po rozchozeni wifi karty, samozrejme tahanim dat pres USB. Jsem nerozchodil compiz, skocilo to nakou chybou a nenabehnutim x-ek. Reseni podle googlu bylo na me moc krkolomne
2. instalace kubuntu 7.10
Instalace i wifi naprosto v pohode. Ale po rade zkusenejsiho soudruha mam zkusit Ubuntu na compiz, Kubuntu je jenom vedlejsi produkt Canonicalu :-)
3. instalace Ubuntu 7.10
a] nefunguje wifi karta
b] nefunguje compiz
4. rozhodnu se ze nebudu resit compiz a chci aby to jenom funguvalo tak jak ma
Instaluji kubuntu 7.10 (opet :-)
Slape to do doby nez updatuji system. Prestane chodit sitova karta.
5. stahuji Mandrive (kteremu se celou dobu branim :-)
Vse funguje je jak ma :-)

Chvilku jsem si predstavil jake by to bylo mit u zakazniku linux na desktopech …… Glurps

Nechame se prekvapit, zatim mi tu zustava nainstalova Mandriva 2008 … uvidime po mesici uzivani

Samba – login skripty

Modelová situace: máme sambu nastavenou jako PDC + login skripty pro každého uživatele. Proč to nezkusit jednodušeji. Přeci jenom starat se o řekněme 50 login skriptů a více je nesystémové a hlavně časově náročné…. Ukažeme si jak použít jeden skript pro všechny uživatele, kteří jsou rozdělení do skupin a dále login skript složený s více skriptů také podle skupin, pro složitejší úlohy.

 

Co potřebujeme:

  1. nakonfigurovanou sambu jako PDC, rozdělení uživatelé do skupin, stanice s Win2000 a vyšší
  2. ze stránek M$ si stáhneme program ifmember http://www.microsoft.com/downloads/details.aspx?FamilyID=07c2f6d7-815e-4fa0-9043-4e4635ccd417&displaylang=en
  3. nakopírovat ifmember.exe do netlogon adresáře samby, nakonfigurovat sambu a upravit login skript

Předtím ještě než začneme něco dále podnikat, zkontrolujeme si mapovaní windowsovských a unixových skupin: 

net groupmap list | sort

Nám vypíše mapování win/lin skupin. Pokud máme všude něco jako "skupina -> -1" znamená to že není namapovaná žádna skupina a je nutné namapovat unixové skupiny na windowsové, které budeme používat v login skriptu, takto:

net groupmap add ntgrout="win_skupina" unixgroup=lin_skupina

Konkretné např.: 

net groupmap add ntgrout="Domain Users" unixgroup=users

net groupmap add ntgrout="Domain Admins" unixgroup=dmadmins

První nám namapuje unixovou skupinu users na win skupinu Domain Users, druhý případ je více než jasný.

 

Úprava samby: 

Zeditujeme "smb.conf" a nahradíme "login script = %U.bat" tímto: "login script = netlogon.bat".

 

Ukázka jednoduchého login skriptu (netlogon.bat):

———-

@echo off 

REM ** Synchronizace casu s PDC **

echo Setting Current Time
net time \\sambapdc /set /yes

REM ** Mapovani disku podle skupin **

\\athena\netlogon\ifmember "skupina_1"
if not errorlevel 1 goto A
net use G: \\sambapdc\skupina_1
goto QUIT 

:A
\\athena\netlogon\ifmember "skupina_2"
if not errorlevel 1 goto B
net use G: \\sambapdc\skupina_2
goto QUIT

:B
\\athena\netlogon\ifmember "skupina_3"
if not errorlevel 1 goto C
net use G: \\sambapdc\skupina_3
goto QUIT

:C
\\athena\netlogon\ifmember "skupina_4"
if not errorlevel 1 goto D
net use G: \\sambapdc\skupina_4
goto QUIT

:D
\\athena\netlogon\ifmember "skupina_5"
if not errorlevel 1 goto QUIT
net use G: \\sambapdc\skupina_5

:QUIT

———-

 

Jednoduchý příklad jak jednotlivým skupinám uživatelů se namapují jejich sdílené disky. Login skript lze využít nejen na mapovaní disků, ale třeba i menším upravám na ploše uživatelů (kopírovaní zástupců na plochu sdílených programů), dále pak k instalací programů (silent mode), zde ale vzniká problém s právy aktuálně přihlášeného uživatele. Při vetším počtu příkazů ale začíná být login skript nepřehledný, ale to lze také vyřešit voláním dalších skriptů v hlavním skriptu což si ukážeme hned dále.

Skript můžeme otestovat prostým spuštěním na stanici v cmd než ho nakopírujeme na PDC a koukáme jestli je vše v pořádku.

 

Ukázka složitějšího login skriptu složeného s více skriptů (netlogon.bat):

———-

@echo off 

call %0\..\main.bat

\\athena\netlogon\ifmember "skupina_1"
if not errorlevel 1 goto A
call %0\..\skupina_1.bat
goto QUIT

A:
\\athena\netlogon\ifmember "skupina_2"
if not errorlevel 1 goto B
call %0\..\skupina_2.bat
goto QUIT

:B
\\athena\netlogon\ifmember "skupina_3"
if not errorlevel 1 goto C
call %0\..\skupina_3.bat
goto QUIT

:C
\\athena\netlogon\ifmember "skupina_4"
if not errorlevel 1 goto D
call %0\..\skupina_4.bat
goto QUIT

:D
\\athena\netlogon\ifmember "skupina_5"
if not errorlevel 1 goto QUIT
call %0\..\skupina_5.bat

:QUIT

———-

Ukázka složitějšího login skriptu pokračování (main.bat):

———-

REM ** Synchronizace casu s PDC **

echo Setting Current Time
net time \\sambapdc /set /yes

REM ** Mapovani disku spolecneho pro vsechny uzivatele **

net use X: \\sambapdc\spolecne 

———-

Ukázka složitějšího login skriptu pokračování (skupina_1.bat):

———-

REM ** Skript pro skupinu skupina_1 **

net use G: \\sambapdc\skupina_1

REM ** nakopirujeme vsem uzivatelum ve skupine zastupce ** 

REM ** na plochu na sdileny program **

cd C:\Documents and Settings\%USERNAME%\Plocha\
C:

dir | find "program.lnk" /i
if not errorlevel 1 goto END
copy \\sambapdc\zastupci\program.lnk C:\DOCUME~1\%USERNAME%\Plocha\
:END
 

———-

  

A tak dále si vytvoříme pro každou skupinu baťák, kde bude zapsáno vše potřebné pro tuto skupinu a umístíme je všechny do složky netlogon na PDC. Samozřejmě pokud používáme login skript jen na mapovaní disků na stanicích stačí nám to první řešení, tzn. "vše v jednom souboru", pokud děláme více než jen mapujeme disky šáhneme po druhém řešení s vícero skripty.

Odkazy:

http://www.samba.org

http://www.oreilly.com/catalog/samba/chapter/book/ch06_06.html 

http://www.windowsnetworking.com/kbase/WindowsTips/WindowsNT/AdminTips/Logon/WindowsNTLoginScriptTricksandTips.html 

 

 

Filtrování webu pomocí proxy serveru Squid, včetně statistiky (Sarg) – 2.část (update)

Po upgrade Debiana na verzi 4.0 Etch (Sarg 2.2.2) již není nutné psát skripty pro týdenní a měsíční statistiky. Toto nám zajišťuje skript "sarg-reports", který je standardně v Debianu nainstalován a při instalaci jsou vytvořeny patřičné záznamy v cronu (cron.daily, cron.weekly, cron.monthly)

Takže nám v Etchi stačí toto:

  1. nainstalovat Sarg
  2. nakonfigurovat (/etc/squid/sarg.conf) viz minulý díl
  3. statistiky se automaticky vytvářejí ve "/var/www/squid-reports/", přístupné přes "http://jmeno_serveru/squid-reports"

 

Automatické zjišťování proxy protokolem WPAD

Poměrně stará záležitost, ale v celku nezbytná pro chod v síti s více klienty. Transparentní proxy není vždy vhodná pro nasazení v rozsáhlejší síti a tak jedinou přijatelnou metodou je Web Proxy Autodiscovery Protocol (WPAD). Je to metoda, kterou využívá většina webových prohlížečů k automatickému zjištění umístění proxy serveru.

Princip je jednoduchý. Po startu prohlížeče se automaticky spustí dotaz na vyhledání serveru wpad.lokalni_domena, a poté se zkusí stáhnout soubor wpad.dat (popř. proxy.pac). Když takový soubor na serveru je, daný prohlížeč jej stáhne a spustí.

Pro zprovoznění bude potřeba DNS server, Webový server, DHCP a nějaký Proxy server.  V naší ukázce použijeme kombinaci Bind – Apache - Squid.

Příklad konfigurace:

serverová strana:

- v DNS záznamech příslušné domény se přidá záznam ve formátu:

wpad.domena.cz.   IN   A   192.108.167.55

- v kořeni vybraného www serveru 192.108.167.55 se umístí soubor wpad.dat s pravidly PROXY. Tento soubor může vypadat například takto:

function FindProxyForURL(url, host)
{
    if (isPlainHostName(host)||
         dnsDomainIs(host, ".domena.cz")&&
     !dnsDomainIs(host, "
www.domena.cz")||    
     dnsDomainIs(host, "
www.crack.com")||    
     isInNet(host, "192.108.167.0", "255.255.255.0")|| 
     isInNet(host, "127.0.0.1", "255.255.255.255"))
        return "DIRECT";

       //Centrála 1
       else if (isInNet(myIpAddress(), "192.108.167.0", "255.255.255.0"))
  return "PROXY proxy.domena.cz:3128";

}

- vytvoříme symbolické linky na tento soubor pro několik typů prohlížečů: proxy.pac a wpad.pac

ln -s /var/www/html/wpad.dat /var/www/html/proxy.pac
ln -s /var/www/html/wpad.dat /var/www/html/wpad.pac

- pokud využíváme DHCP server, musí být nastavena patřičná doména pro klienty. 

subnet 192.108.167.0 netmask 255.255.255.0 {      
option domain-name "firma.cz";    
…  
}

- v konfiguraci Webového serveru je třeba upravit VirtualHost záznam. (tj. přidat MIME typ)

ServerAlias wpad.odkolek.cz 
AddType application/x-ns-proxy-autoconfig .pac .dat

- nakonec provedeme restart konkrétních služeb 

named, httpd, dhcpd 

klientská strana:

DHCP server vrací příslušnou doménu (např. domena.cz). Pokud není DHCP klient povolen, je třeba na PC nastavit doménu ručně (tj. Přípona DNS daného připojení ve vlastnostech síťového připojení). V nastavení prohlížečů je pak nutno nakonec zaškrtnout volbu "Automaticky zjišťovat nastavení".

Filtrování webu pomocí proxy serveru Squid, včetně statistiky (Sarg) – 2.část

V předchozím díle jsme si zkonfigurovali Squida, dnes budeme pokračovat webovými statistikami pomocí programu Sarg (Squid Analysis Report Generator).

Nainstalujeme si Sarg a webový server Apache, jelikož Sarg generuje reporty ve formátu html:

 
"aptitude install sarg apache2"

 

V adresáři "/etc/squid/" se nám vytvořil konfigurační soubor sarg.conf + další konf. soubory. Nebudu rozepisovat podrobně všechna nastavení, ale jen to nejdůležitější.

Nejdůležitější volby ze sarg.conf:

———- 

output_dir /var/www/squid-reports/

resolve_ip yes

#output_email root@localhost 

———-

  1. výsledný adresář který použijeme pro html reporty, pokud neexistuje, vytvoříme ho
  2. překládáme ip adresy na jména, užitečné pokud používáme DynDNS
  3. pokud odkomentujeme 3 volbu, nebude se generovat html report do námi zvoleného adresáře, ale výsledek bude zaslán na určenou emailovou adresu, bohužel se jedná o jednoduchý mail, takže z toho nic moc nevyčteme

Ostatní volby si projdeme, popř. nastavíme podle svého gusta.

Od přístího dne se nám automaticky začnou vytvářet každý den reporty na stránce http://jmeno_serveru/squid-reports a nebo budou zasílány mailem. Pokud bychom chtěli ručně vytvořit report za určité časové období, můžeme to udělat takto: 

"sarg -l /var/log/squid/access.log.X -n -d dd/mm/yyyy-dd/mm/yyyy". Více "man sarg".

 

Skripty pro týdenní a měsíční statistiky: 

Pokud Vám nestačí jen denní statistiky, můžeme si dopsat jednoduché skripty na týdenní a měsíční statistiku a nechat je spouštět v cronu. Dále je nutné upravit rotování logů Squida na měsíční ("/etc/logrotate.d/squid") na měsíční (monthly) a to dva měsíce pozpátku (rotate 2), ale pozor na místo na disku (respektive ve "/var/log/" a "/var/www/").  

Postup:

  1. vytvoříme si v adresáři "/var/www/squid-reports" adresáře "daily", "weekly", "monthly"
  2. vytvoříme si následující skripty v "/usr/local/sbin/" a nastavíme jim práva ("chmod 755")
  3. upravíme si crontab, aby nám spouštěl námi vytvořené skripty

  

Skripty: 

sarg-daily.sh

———-

#!/bin/bash

#Get current date
TODAY=$(date +%d/%m/%Y)

sarg -l /var/log/squid/access.log -o /var/www/squid-reports/daily -n -d $TODAY-$TODAY

———-

 

sarg-weekly.sh

———- 

#!/bin/bash

#Get current date
TODAY=$(date +%d/%m/%Y)

#Get one week ago today
WEEKAGO=$(date –date "1 week ago" +%d/%m/%Y)

sarg -l /var/log/squid/access.log -o /var/www/squid-reports/weekly -n -d $WEEKAGO-$TODAY

———- 

 

sarg-monthly.sh

———-

#!/bin/bash

#Get current date
TODAY=$(date +%d/%m/%Y)

#Get one month ago today
MONTHAGO=$(date –date "1 month ago" +%d/%m/%Y)

sarg -l /var/log/squid/access.log.1 -o /var/www/squid-reports/monthly -n -d $MONTHAGO-$TODAY

———-

 

přídáme do "/etc/crontab":

———-

# Statistiky pristupu na web SARG (denni, tydenni, mesicni)
00 23 * * * root sarg-daily.sh
10 23 * * 7 root sarg-weekly.sh
30 02 1 * * root sarg-monthly.sh

———- 

 

Popsal jsem jen nejzákladnější nastavení, lze např. definovat uživatele, které nechceme zahrnout do statistiky, nastavovat jaká data se mají objevit ve statistice atd…

 

Odkazy:

http://www.squid-cache.org/ 

http://sarg.sourceforge.net/sarg.php 

Filtrování webu pomocí proxy serveru Squid, včetně statistiky (Sarg) – 1.část

Ukážeme si jak filtrovat provoz na proxy serveru Squid. Celé to je odzkoušeno na Debianu 3.1 stable a Squidu 2.5.9.

Co budeme potřebovat: 

  1. nainstalovaný a funkční proxy server Squid
  2. předpokládáme že uživatelé přistupují na internet přes proxy server, lze přesměrovat na serveru pomocí iptables

Konfigurace:

Jelikož je konfigurační soubor squida poměrně rozsáhlý, budeme postupovat po menších kouscích. Samozřejmě nemusím připomínat si nejdříve zazálohovat funkční konfigurák Squida. Pravidla budeme definovat pomocí tzv. ACL (access control list). Forma zápisu ACL pravidel je následující (je to pěkně popsáno přímo v konfig. souboru):

acl aclname acltype string1 …
acl aclname acltype "file" …

Otevřeme si "/etc/squid/squid.conf" v editoru a začneme s konfigurací. Najdeme si sekci "ACCESS CONTROLS", v ní podsekci "TAG: acl" zde řetezec "acl local_servers dst" a pod tento řeteze přidáme:

———-

acl admin src 10.2.147.113/255.255.255.255
acl zakazane url_regex -i "/etc/squid/zakazane"
acl pracovni_doba time M T W H F 8:00-15:00

———- 

Vysvětlení: 

  1. pravidlo "admin" nám říká na jaké adresy se nebudou vztahovat žádná omezení, můžeme zadat více jednotlivých ip adres, nebo rozsah adres
  2. pravidlo "zakazane" nám definuje výrazy které budeme filtrovat v souboru "/etc/squid/zakazane", který si vytvoříme později
  3. pravidlo "pracovni doba" nám definuje pracovní dobu, tzn. Po – Pá od 8:00 – 15:00, toto pravidlo můžeme při aplikování pravidel vynechat

Dále v sekci "ACCESS CONTROLS" si najdeme "TAG: http_access", což je hned následující. Zde najdeme řetezec "always_direct allow" a před něj přidáme:

———-

http_access allow admin
http_access deny zakazane pracovni_doba

———-

Povolíme všem co jsou definováni pravidlem "admin" přístup přes proxy bez omezení. Dále všem ostatním zákážeme přístup na stránky obsahujíci námi zakázané výrazy (definujeme si jej za chvíli) v námi určenou pracovní dobu.

Vytvoření seznamu zakázaných výrazu (může vypadat např. takto):

———- 

amateurs
lesbian
porno
\.avi$
\.mpg$
\.mpeg$
\.asx$
\.asf$
\.ogg$
\.mp3$
\.wma$
\.wmv$
netshow4.play.cz

———-

Seznam zakázaných výrazů je myslím více než jasný. První 3 výrazy nám zakazují jaký řetezec nesmí být v URL, dále zakážeme stahování uvedených přípon a nakonec zakážeme celou doménu. Soubor si uložíme do adresáře "/etc/squid".

Poslední sekce co by nás mohla ještě zajímat je "MISCELLANEOUS", zde najdeme "TAG: deny_info", kde si můžeme nadefinovat jakou má vrátit squid chybovou stránku uživateli, který neprošel pravidlem "http_access". Standardně squid vrací stránku "ERR_ACCESS_DENIED" v jazykové mutaci dle volby v "TAG: error_directory". Pokud nám toto nevyhovuje můžeme si ji zde změnit na námi definovanou stránku. Všechny chybové stránky najdeme v "/usr/share/squid/errors/" rozdělené dle jazyka.

 

Příklad: 

———-

deny_info ERR_VLASTNI zakazane

———- 

Nadefinovali jsme si vlastni html stránku "ERR_VLASTNI", která samozřejmě musí existovat v příslušném adresáři a platí pro ACL "zakazane" (viz výše). Tato stránka se zobrazí uživatelům místo té defaultní.

 

Reloadujeme Squida ("/etc/init.d/squid reload") a koukneme do logů jestli je vše v pořádku. Odzkoušíme na nějaké non-admin stanici stažením nějakého "zakázaného" obsahu.

Pokračování příště … 

ClamAV a Sendmail (na RHEL4)

Minule jsme filtrovali spam Spamassassinem (http://www.logon.cz/?p=12), dnes budeme kontrolovat maily pomocí ClamAV antiviru. Spam jsme filtrovali pomocí procmailu, dneska si ukážeme jak kontrolovat maily pomocí milter rozhraní Sendmailu…

Co budeme potřebovat:

1. funkční Sendmail

2. nainstalovat si ClamAV antivir, jsou to následující balíčky:

  • clamav
  • clamav-db
  • clamav-milter
  • clamd

Takže je stáhneme ručně a nebo pokud máme nastavený repozitář Dag Wieers (více na http://www.logon.cz/?p=7) jednodušše stačí napsat v konzoli „up2date-nox clamav clamav-db clamav-milter clamd“.

Konfigurace antiviru ClamAV (3 moduly):

1. konfiguraci démona Clamd „/etc/clamd.conf“ (jen aktivní volby):

———-
LogFile /var/log/clamav/clamd.log
LogFileMaxSize 0
LogTime yes
LogSyslog yes
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /var/tmp
DatabaseDirectory /var/clamav
LocalSocket /var/run/clamav/clmilter.sock
FixStaleSocket yes
MaxConnectionQueueLength 30
ReadTimeout 300
User clamav
AllowSupplementaryGroups no
DetectBrokenExecutables yes
ScanMail yes
ArchiveMaxCompressionRatio 300
ArchiveBlockEncrypted no
ArchiveBlockMax no
———-

Důležitý je tučně vyznačený řádek, který nám říka na jakém soketu bude clamd naslouchat (soubor clmilter.sock se vytvoří při spuštění clamd), ostatní volby tu nebudu rozepisovat, můžeme si je přečíst v manuálových stránkách („man clamd.conf“).

2. konfigurace rozhraní clamav-milter („/etc/sysconfig/clamav-milter“):

———-
CLAMAV_FLAGS=“
–config-file=/etc/clamd.conf
–max-children=10
–force-scan
–noreject
–postmaster=emailova@adresa.admina
–postmaster-only
-ol local:/var/run/clamav/clmilter.sock

———-

Důležitý je tučně vyznačený řádek, který nám říká že budeme skenovat maily pocházející z lokální sítě, pomocí soketu kde naslouchá clamd. Ostatní volby viz „man clamav-milter“.

3. konfigurace updatovacího modulu freshclam „/etc/freshclam.conf“ (jen aktivní volby):

———-
DatabaseDirectory /var/clamav
UpdateLogFile /var/log/clamav/freshclam.log
PidFile /var/run/clamav/freshclam.pid
DatabaseOwner clamav
DatabaseMirror db.cz.clamav.net
DatabaseMirror db.local.clamav.net
HTTPProxyServer nazev_proxy
HTTPProxyPort proxy_port

NotifyClamd /etc/clamd.conf
———-

Zde jsou akorat zajímavé vyznačené řádky kam se loguje stahování virových aktualizací, a nastavení proxy pokud jsme za proxy serverem.

Konfigurace Sendmailu:

Konfiguraci Sendmailu provádíme ve dvou krocích (vše v „/etc/mail/“):

1. upravíme soubor sendmail.mc

2. a z něj vygenerujeme sendmail.cf

Samozřejmě si nejdřív tyto soubory zazálohujeme.

Do funkčního konf. souboru sendmail.mc přidáme toto:

———-
INPUT_MAIL_FILTER(`clamav’, `S=local:/var/run/clamav/clmilter.sock, F=,T=S:4m;R:
4m’)dnl
define(`confINPUT_MAIL_FILTERS’, `clamav’)dnl
———-

kterým definujeme, že Sendmail má používat clamav-milter rozhraní, kde naslouchá clamd. Podrobnosti najdeme v dokumentaci clamav-milter „/usr/share/doc/clamav-milter“.

Vygenerujeme výsledný sendmail.cf:

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

To by bylo s konfigurací vše.

Spuštění služeb:

Spustíme postupně všechny služby a restartujeme sendmail:

1. /etc/init.d/clamd start
2. /etc/init.d/clamav-milter start
3. /etc/init.d/sendmail restart

Pokaždé koukáme do logů jestli je vše v pořádku. Pokud ano měli by od této chvíle být maily filtrovány ClamAVem, což poznáme z logu „/var/log/maillog“, hledáme řetezec „Milter add: header:“, to znamená že nám ClamAV přidává do hlavičky každého mailu „X-Virus-*“.

Dodatečná nastavení:

Po instalaci ClamAVu se objeví v cronu, přesně v „/etc/cron.daily/ “ skript, který nám jednou za den zaktualizuje virovou databázi. Jelikož to je nedostatečné, zkopírujeme tento skript do adresáře „/etc/cron.hourly/“ odkud se nám bude spouštět každou hodinu.

Odkazy:

http://www.clamav.net/

Instalace a konfigurace Spamassassina (na RHEL4)

Pokud provozujete mailserver určitě dřív nebo později je nutné ho doplnit o nástroj na filtrování spamu (a nejen to).

Jsou 2 způsoby jak filtrovat spam na mailserveru:

1. pomocí MDA procmail
2. pomocí rozhraní mezi mailserverem a spamassassinem (např. amavisd-new)

Využijeme první možnost (je jednodušší:)

Co budeme potřebovat:

1. nastavit si repozitář Dag Wieers (http://www.logon.cz/?p=7), pokud nechceme balíčky stahovat ručně

2. nainstalovat si nejnovější verzi Spamassassina (up2date-nox spamassassin)

Konfigurace:

1. upravíme konfigurační soubor Spamassassina „local.cf“ v „/etc/mail/spamassassin“:

———-
required_hits 5
report_safe 0
rewrite_header Subject [SPAM]
use_bayes 1
bayes_auto_learn 1
whitelist_from *@nejakadomena.cz
blacklist_from *@nejakadomena.cz
———-

Teďka si trošku popišeme co znamenají jednotlivé řádky:

required_hits = požadovaný počet bodů na to aby byl mail vyhodnocen jako spam
report_safe = má(1)/nemá(0) měnit tělo mailu
rewrite_header Subject = připíše nám do předmětu mailu nějaký string
use_bayes = použije(1)/nepoužije(0) techniku bayesových filtrů
bayes_auto_learn = použije(1)/nepoužije(0) schopnost samoučení se
whitelist_from = emailové adresy/domény hamu (opak spamu)
blacklist_from = emailové adresy/domény spamu

2. upravíme soubor „/etc/procmailrc“:

———-
LOGFILE=/var/log/procmail_log

0fw: spamassassin.lock
* < 256000
| /usr/bin/spamassassin

:0:
* ^X-Spam-Status: Yes
/var/spool/mail/spam
----------

První pravidlo nám předá všechny maily které jsou menší než 256kB ke kontrole Spamassassinovi, ten vyhodnotí mail a přidá do hlavičky mailu "X-Spam-Status: Yes/No", čímž označí zda-li to je nebo není spam. Druhé pravidlo přesune všechny maily které mají v hlavičče "X-Spam-Status: Yes" do schránky uživatele spam (přepodkládáme že takový uživatel existuje).

Učení Spamassassina:

Pokud chceme aby měl Spamassassin velkou úspešnost zachytávání spamu, budeme ho muset učit, tzn. jednou za čas mu říct co je spam a co není spam (příkaz "sa-learn"). Minimalní počet mailů k učení je cca 200 (jak spam tak ham).

Příklady:

"sa-learn --spam --mbox cesta_k_souboru_spamu_ve_formatu_mbox" - učíme co je spam
"sa-learn --ham --mbox cesta_k_souboru_hamu_ve_formatu_mbox" - učíme co není spam (ham)
"sa-learn --dump magic" - vypíše stav databáze Spamassassina

Standardně jsou maily na linuxu ve formátu mailbox, tzn. můžeme využít pro učení maily ve "/var/spool/mail". Také někteří emailový klienti ukládají poštu v tomto formátu (např. Thunderbird).

Pokud Spamassassin označí mail jako spam, můžeme nahlédnout do hlavičky mailu, kde vyčteme kolik dostal mail bodů od Spamassassina (X-Spam-Status) a dále pěkně rozepsané toto bodové hodnocení (X-Spam-Report).

Odkazy:

http://spamassassin.apache.org/index.html

http://www.procmail.org/

Better Tag Cloud