På det sidste har jeg været på kig efter hvad jeg skulle bruge fremad rettet for at virtuelisere mine private linux box'e, historien er at forrig gang jeg flyttede skiftede jeg hardware fra rigtig server-hardware dvs. minimum 100 - 200W til intel atom pladformen ca. 40W som på det tidspunkt kun understøttede 2GB ram, nu hvor jeg/vi er flyttet igen tænker jeg på at konsolidere de Intel Atom maskiner jeg har kørrende ned på en atom box, da der sjældent er sammenfald mellem high-load perioder, udfordringen er som skrevet at mine nu ældre atom motherboards kun understøtter 2GB ram, derfor ser jeg udfordringer i at benytter hypervisore som KVM,XEN,Vserver med flere, da jeg ikke har ram i overskud. Under min jagt på hypervisor er jeg løbet ind i LXC som ser udtil at kunne løse min udfordring med meget få ram resourcer og ingen virtuelisering understøttelse fra CPU'en.

LXC vil jeg ikke kalder virtuelisering, men mere process seperering, eller chrooting, da en LXC er en selv stændig instrans med egen ip, mac, bruger database osv. det eneste er at den køre på den kernel som hosten stiller tilrådighed, derfor kan denne ikke modificeres, hvilket også er yderst sjældent at jeg har behov for, men fordelen er at jeg ikke skal bruge RAM på at køre en kernel for VM0 + VM1 + VM2 hvilket er ren overhead, specielt når jeg kun har 2GB at arbejde med.

For at få LXC til at virke rigtig skal vi bruge Debian Squeeze, hvilket jo ikke endnu er gået i stable, men ellers er det meget nem at komme igang med.

Installer de nødvendige binaries.

apt-get install lxc debootstrap bridge-utils

Lav Cgroup og tilføj denne til fstab.

mkdir /cgroup

vi /etc/fstab

cgroup        /cgroup        cgroup        defaults    0    0

mount cgroup

Tilpas netværks indstillingerne, sådan vi kan bridge vores netværks kort.

vi /etc/network/interfaces


auto eth0

iface eth0 inet manual

auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_fd 0
bridge_maxwait 0
bridge_stp off
/etc/init.d/networking restart
Lav en mappe som LXC placeres i.
mkdir -p /var/lib/lxc/vm0
Start bootstrap scriptet som danne en "virtuelle" instans.
lxc-debian -p /var/lib/lxc/vm0
Efter instancen er dannet skal configurationen ændres lidt, da vi mangler netværks opsætningen i bunden af denne instans config file skal følgende angives.
vi /var/lib/lxc/vm0/config
lxc.utsname = vm0
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
#lxc.network.ipv4 = 192.168.0.10
# lxc.network.name = eth0
#lxc.network.hwaddr = 01:23:45:67:89:FF

start instansen er nem.
lxc-start -n vm0  
eller 
lxc-start --name vm0
Default ser det udtil at default bliver root password root, så husk at ændre dette !
Skal instancen stoppes inde fra gørres dette via init.
init 0
skal maskinen stoppes fra "hosten" er det lxc-stop
lxc-stop -n vm0

Læs mere her:
http://blog.foaa.de/2010/05/lxc-on-debian-squeeze/
http://lxc.sourceforge.net/
http://wiki.debian.org/LXC
http://nigel.mcnie.name/blog/a-five-minute-guide-to-linux-containers-for-debian

Her er hvordan jeg har opbygget et par Debian baseret Exim4 antispam Gateways.

Først og fremmest skal exim4 heavy pakken installerets

# apt-get install exim4-daemon-heavy

Tilpas det navn du ønsker at serveren skal hedde i forbindelse med mail udveksling i /etc/mailname filen, dvs. hvis serveren logisk på netværket hedder server48.corp.local eller lenny.it-geek.dk, kan dette ændres til smtp.net-help.dk f.eks.

# vi /etc/mailname

smtp.net-help.dk

Herefter skal selve exim4 konfigureres, hvilket sker i /etc/exim4/update-exim4.conf.conf filen

# vi /etc/exim4/update-exim4.conf.conf

Default vil der stå noget al'a:

dc_eximconfig_configtype='local'
dc_other_hostnames='lenny.it-geek'
dc_local_interfaces='127.0.0.1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

Det ændre jeg normalt til:

dc_eximconfig_configtype='internet'
dc_other_hostnames='lenny.it-geek.dk'
dc_local_interfaces='127.0.0.1.25;192.168.1.3.25;9x.8x.7x.6x.25'
dc_readhost=''
dc_relay_domains='net-help.dk;it-geek.dk;it-nerd.dk'
dc_minimaldns='false'
dc_relay_nets='192.168.1.0/24'
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_home'

Et par enkelte kommentare til denne config files opbygning.

dc_local_interfaces: port angives efter ipadressen via et punktum . (y=port), xxx.xxx.xxx.xxx.yyy, flere ipaddresser deles via semikolon ; ofte vil der her stå den eksterne ip, den interne ip samt localhost og eventuelle ekstra porte som mails routes igennem i forbindelse med anti vira / spam.

dc_relay_domains: er de domains som exim4 skal håndtere emails for, igen semikolon; er seperator mellem domain navne.

dc_use_split_config: jeg køre altid split config, da jeg syndes at det er mere overskueligt.

dc_relay_nets: brugres til at definere hosts eller netværk der har åben relay via denne smtp server.

dc_smarthost: kan bruges til at route ALT email via en bestemt mailgateway, f.eks en ISP mailgateways så som pasmtp.tele.dk, dette kan dog også gøres via andre metoder f.eks hubbed_hosts

For at udfra disse informationer at danne den exim4 configurations file som servicen benytter skal man nu køre update-exim4.conf og herefter bør man egnetlige have en kørrende smtp server, der vil kunne håndtere mailflow mellem sit interne netværk og den store onde SMTP verden.

# update-exim4.conf

# /etc/init.d/exim4 restart

# telnet 127.0.0.1 25
ehlo d
quit

hvis ovenstående går godt, er mta'en kørende



Da alt mail normalt køre i cleartekst og derfor nemt kan sniffes er man begyndt at køre trafikken over TLS som tilbydes på server der svare på EHLO med starttls ,  dette skal denne gateway også understøtte.

# apt-get install ca-certificates openssl

# /usr/share/doc/exim4-base/examples/exim-gencert

[*] Creating a self signed SSL certificate for Exim!
This may be sufficient to establish encrypted connections but for
secure identification you need to buy a real certificate!

Please enter the hostname of your MTA at the Common Name (CN) prompt!


Generating a 1024 bit RSA private key

.................++++++
..........++++++
writing new private key to '/etc/exim4/exim.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Code (2 letters) [US]:dk
State or Province Name (full name) []:Jylland
Locality Name (eg, city) []:Silkeborg
Organization Name (eg, company; recommended) []:net-help.dk
Organizational Unit Name (eg, section) []:smtp.net-help.dk
Server name (eg. ssl.domain.tld; required!!!) []:smtp.net-help.dk
Email Address []:This email address is being protected from spambots. You need JavaScript enabled to view it.
[*] Done generating self signed certificates for exim!
Refer to the documentation and example configuration files
over at /usr/share/doc/exim4-base/ for an idea on how to enable TLS
support in your mail transfer agent.

herefter vil man under /etc/exim4/ kunne finde en exim.key og exim.crt

Enable tls ved at editere i /etc/exim4/conf.d/main/03_exim4-config_tlsoptions filen

# vi /etc/exim4/conf.d/main/03_exim4-config_tlsoptions

Sæt nedenstående linje lige over denne linje .ifdef MAIN_TLS_ENABLE

MAIN_TLS_ENABLE=1 

opdatere exim configurationen igen.

# update-exim4.conf

# /etc/init.d/exim4 restart

Test at exim4 nu understøtter TLS.

# telnet 127.0.0.1 25

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 lenny.it-geek ESMTP Exim 4.69 Tue, 28 Dec 2010 17:21:06 +0100
ehlo d
250-lenny.it-geek Hello localhost.localdomain [127.0.0.1]
250-SIZE 52428800
250-PIPELINING
250-STARTTLS
250 HELP
quit
221 lenny.it-geek closing connection
Connection closed by foreign host.



Opsætning af RBL's i exim4 er meget nem og en effiktiv måde at sotere spam hosts fra alderede når kommunikationen til serveren startes, åben /etc/exim4/conf.d/acl/00_exim4-config_header filen og tilføj følgende.

# vi /etc/exim4/conf.d/acl/00_exim4-config_header

CHECK_RCPT_IP_DNSBLS = bl.spamcop.net:xbl.spamhaus.org:dnsbl.sorbs.net

CHECK_RCPT_DOMAIN_DNSBLS = dnsbl.njabl.org:blackholes.five-ten-sg.com:cbl.abuseat.org:smtp.dnsbl.sorbs.net:spam.dnsbl.sorbs.net:zombie.dnsbl.sorbs.net

Med fordel kan man også tilføje følgende checks til den samme file samtidig

CHECK_RCPT_REVERSE_DNS = yes
CHECK_RCPT_VERIFY_SENDER = yes
CHECK_DATA_VERIFY_HEADER_SENDER = yes

# update-exim4.conf

# /etc/init.d/exim4 restart


SpamAssassin kan også bygges ind i Exim4, sådan ledes at mails der ikke bliver rejectet af RBL's bliver rated og markeret som spam i en senere process.

Installer de vigtigste komponenter + dependencies

# apt-get install sa-exim spamassassin

Enable spamassassin vi /etc/default/spamassassin

# vi /etc/default/spamassassin

Ændre linjen ENABLED=0 til ENABLED=1

samt i bunden

CRON=0 til CRON=1

Start Spamassassin

/etc/init.d/spamassassin start

nu til opsætning af sa-exim som sker i /etc/exim4/sa-exim.conf filen

# vi /etc/exim4/sa-exim.conf

find linjen SAEximRunCond: 0 ændre denne til #SAEximRunCond: 0, dvs. denne skal udkommenteres for at sa-exim køre.

Der er også andre linjer jeg bestemt mener man skal tweeke på, men da det er nødvendig at forstå hvordan disse virker, syndes jeg at i selv bør læse filen igennem og afslut med at dan en ny config fil til exim.

# update-exim4.conf

# /etc/init.d/exim4 restart

test af SA-Exim køre ved at sende en email til dig selv på serveren, f.eks via telnet og se output i /var/log/exim4/mainlog

# cat /var/log/exim4/mainlog

hvis du ser linjer som disse køre sa-exim:

2010-12-28 21:57:00 1PXgbC-0001X0-0g SA: Debug: SAEximRunCond expand returned: ''
2010-12-28 21:57:00 1PXgbC-0001X0-0g SA: Action: Not running SA because SAEximRunCond expanded to false (Message-Id: 1PXgbC-0001X0-0g).

Generalt kan spamassassin tweekes meget mere end jeg gør her, men der findes mange gode guides for spamassassin, blot husk at holde dine SA regler regler opdateret for at disse skal være effiktive.


Selv om der i dag, kommer meget få vira rundt via mail systemer, sal vil have amavis og clamav installeret på denne gateway.

# apt-get install amavisd-new clamav


Debian køre med 3 versioner.

Stable også kaldt Lenny http://www.debian.org/releases/stable/
Testing også kaldt Squeeze  http://www.debian.org/releases/testing/
Unstable også kaldt Sid http://www.debian.org/releases/unstable/

Min private fortolkning af disse 3 versioner er følgende.

Stable er virkeligt stable, mine private server køre alle debian stable, hvilket betyder at hardware fejl er en større sandsynlighed end software fejl, dette betyder også at stable naturlivis ikke er særlig opdateret i software versioner, dog bliver alle sikkerhedhuller naturligvis lukket.

Testing er de pakker som er på vej til at blive næste store debian release, dvs. ligenu er det pakke som bliver del når debian 6.0 bliver released og stable, her er pakkerne ofte forholdsvis opdaterings messingt med, men det er muligt at møde en bug eller to, jeg har i perioder brugt denne release som desktop os, vær dog opmærksom på at Debains sikerhed team ikke releaser security fixes for andet en stable, dvs. systemer som køre testing er ikke altid sikret!

Unstable, er debians udviklings sandkasse, skægt at lege lidt med, men jeg vil kun i meget presset version benytte denne version til andet end leg.

Ønsker man at leget med en frisk installeret testing maskine, kan netinst cder hentes her: http://cdimage.debian.org/cdimage/daily-builds/

Man kan naturligvis også installer en stable maskine først og ændre denne til at benytte testing pakkerne.

Åben sources.list med VI

vi /etc/apt/sources.list

søg og erstat lenny med squeeze

:%s/lenny/squeeze/g

apt-get update

apt-get dist-upgrade

Svar på spørgsmålene

reboot

cat /etc/debian_version
squeeze/sid

Velkommen til squeeze

En hurtig snort installation uden brug af MySql

apt-get install snort

Sikre at snort køre på den korrekte interface og ret dette i snort.debian.conf filen.

vi /etc/snort/snort.debian.conf

Start snort

/etc/init.d/snort start

Tilføj bleedingsnort reglerne til snort skal vi have disse tilføjet til oinkmaster.conf

 vi /etc/oinkmaster.conf

tilføj:

url = http://www.bleedingsnort.com/downloads/bleeding.rules.tar.gz

Default snort reglerne i denne file er opsolite, så disse kan fjernes.

Tilføj bleeding reglerne til snort.conf
de regler som er udkommenteret kunne jeg ikke få til at køre på debian's stabile version af snort

vi /etc/snort/snort.conf

tilføj:

 include $RULE_PATH/bleeding.rules
include $RULE_PATH/bleeding-attack_response.rules
#include $RULE_PATH/bleeding-dos.rules
include $RULE_PATH/bleeding-drop.rules
include $RULE_PATH/bleeding-dshield.rules
include $RULE_PATH/bleeding-exploit.rules
include $RULE_PATH/bleeding-game.rules
include $RULE_PATH/bleeding-inappropriate.rules
#include $RULE_PATH/bleeding-malware.rules
include $RULE_PATH/bleeding-p2p.rules
include $RULE_PATH/bleeding-scan.rules
include $RULE_PATH/bleeding-virus.rules
#include $RULE_PATH/bleeding-web.rules

Lav en backup dir til gamle snort regler.

mkdir /etc/snort/backup

Opdater snort reglerne via oinkmaster manuelt engang for at se at snort kan starte med disse regler.

oinkmaster -o /etc/snort/rules -b /etc/snort/backup

Tilføj opdateringerne af reglerne til crontab.

crontab -e

0 10 * * * /usr/sbin/oinkmaster -o /etc/snort/rules -b /etc/snort/backup 2>&1 |  mail -s "snort-update server" This email address is being protected from spambots. You need JavaScript enabled to view it.

For nyelig kom jeg i en situation med en ældre sbs installation, der simpelhen er ved at løbe tør for disk storage, serveren har kun 2 x 143 GB i raid, desværre kunne jeg ikke finde en esata controller som jeg kunne få til at virke korrekt under windows SBS 2003R2 :-( hvilket var mit første forsøg på at få tilknyttet ekstra storage til serveren.

I stedet for blev løsningen en gang disk via ATA over Ethernet.
Target: Debian Firewall - Intel Atom baseret hardware.
Initiator: Windows SBS 2003R2 - HP DL360

Installatione og konfiguration af Target på debina, er meget nemt, blot følg side 1 her: http://www.howtoforge.com/using-ata-over-ethernet-aoe-on-debian-lenny-initiator-and-target
Initiator er www.starwindsoftware.com AOE initiator software, som man kan downloade efter at registere det hos starwindsoftware.
Herefter tager det meget få minutter at installer initiator softwaren og derefter at få mounted den disk som stilles til rådighed på Target.