Portál AbcLinuxu, 1. května 2025 17:20

Zabezpeceni serveru

17.12.2007 02:24 | Přečteno: 3494× | linux

Jak spat klidnym spankem?:)

Ucel tohoto clanku neni prednaset nejake rozumy..na to nemam znalosti:)....spis bych byl rad, kdyby se pod nim rozjela diskuze na tema zabezpeceni serveru..a ja, popr dalsi zacinajici admini..by si z ni mohli odnest maximum...a tak prijit k dalsim znalostem..vedle tech co si nastuduji sami. Takze strucne popisi co jsem si na serveru nastavil ja...a budu to prokladat dotazy, o kterych bych se rad pobavil.

Firewall :

iptables - V prvni rade samozrejme mit zavrene vse co nemusi byt otevrene...
Stavovy fw...proti jednoduchym DOSum, ktere zahlti server SYN paketama a nepokracuji dale v komunikaci...
Obrana je snadna..ale co vim, tak timto se utocnikovi sice nepodari pretizit server, nicmene sluzby budou nedostupne pro ostatni po dobu floodovani..z toho duvodu v mem nastaveni nic takoveho ted nemam...ale to se mi samozrejme nelibi...

iptables -A INPUT -p tcp --syn -j syn_flood
iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
iptables -A syn_flood -j DROP
Hezci mi prijde povolit navazani spojeni na konkretni portynapr. 4x za minutu z konkretniho IP. Pomoci modulu recent se toho da dokazat snadno.

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
Jak to resite vy? Co vam prijde lepsi?
Na konci prispevku jsem vlozil sve nastaveni iptables...

Sledovani systemu :

AIDE - popr. jiny software na kontrolovani kontrolnich souctu souboru, zmen v souborech atd...
logcheck - analyza logu, pravidelne chodi na mail a clovek ma rano co cist:)
portsentry - nechavam si poslat na mail, pokusy o scan portu..odstrihnout ho rovnou mi prijde trochu krute :).
chrootkit,rkhunter..ma to vubec vyznam? AIDE by nejspis odhalilo trojske kone...a pokud mame aktualni balicky, tak je pravdepodobne, ze nejake skriptkidies server nenabouraji. Ale tak pro jistotu..nic to nestoji :)
A co snort?:)..ma vyznam nasadit toto reseni pro jediny server?
monitorovani traficu, mail provozu, etc. -> mrtg, co pouzivate vy?

Kernel :

Pouzivate distribucni kernel? Mne to prijde nejjednodussi..maximalni bezpecnost pri minimalni namaze. Muze to znit zvlastne..., ale nemam cas studovat moc jaka dira se kde ukazala a patchovat vanilku:). Slysel jsem, ze se da predsirat jiny kernel..takze pak utocnik nemuze zneuzit pripadne chyby vaseho kernelu...Co si o tom myslite?
Dalsi vec je, jake patche pouzit...uvazoval jsem o grsecurity, ale vzhledem k tomu, ze na server nepoustim temer nikoho, tak to mozna neni tolik treba...dulezite je predejit tomu, aby se nekdo dostal dovnitr..a pokud chapu dobre tak grsec slouzi hlavne k omezeni lokalnich uzivatelu..
Mate neco na hlidani preteceni bufferu? Stack guard, openwall,..zatim jsem s tim neexperimentoval..
Co mne hodne zajima..co rikate na selinux? Uz nejakou dobu mi vysi v bookmarich jedna slozka s timto nazvem..ale zatim jsem na to nenasel cas..Prida to skutecne hodne na bezpecnosti?
O dalsich patchich toho moc nevim...Existuje neco, bez ceho byste si kernel na serveru nedokazali predstavit? :)

Ostatni:

U apache se mi docela libi modul mod_security. Prohlizi POST data a hleda v nich dle regexpu svinstvo :).Jinak mam apache nastaveneho temer jako z instalace, jen jsem si pridal vhosty.
Jsou nejaka konkretni nastaveni, ktere pomuzou? At uz proti pretizeni..

Jak se ujistit, ze nemam nikde diru? :)

Obcas si pustim nessuse. Ale necekam od nej, ze by mi zarucil bezpecnost :). Vzhledem k pravidelnym upgradum, mi nessus vlastne jeste nic poradne nenasel. Hodi se ho pustit hlavne po instalaci, kdy pripomene veci, na ktere bych jinak treba zapomnel.
tiger - taky docela pouzitelne..Stejne jako u nessusu si myslim plati, ze se vyplati hlavne po instalaci...poradil mi par drobnosti.
Bastille - co na to rikate? Dalsi vec, kterou mam v todo. Tak by mne zajimalo, jestli to ma vyznam. Urcite si to vyzkousim, ale proc se o tom nepobavit.


Zaverem..

Samozrejme, ze potrebne zabezpeceni se lisi od ucelu serveru....pokud na serveru nebezi nic nez phpko tak je treba klast duraz hlavne na mod_security, iptables, nastaveni apache..a pak jako u vseho prohlizeni logu. Pro bezpecnost je jasne nejdulezitejsi mit otevrenych co nejmene sluzeb. Takze pokud jde o server, ktery si sam vystaci s databazi, ldapem, imap serverem, postou...a nemusi toto resit dalsim pripojenim na dalsi servery, jiste to praci dost usnadni..
Necekam, ze zde nekdo bude vysvetlovat zaklady :)...spis mi jde o zkusenosti a poznatky, ktere se jen tak nekde vycist nedaji...


Dik za kazdy komentar ;)

#!/bin/bash
# based on iptables found somewhere in the internet ;))


modprobe ip_conntrack_ftp

IPTABLES="/sbin/iptables"

INTERFACE=$1
if [[ "$INTERFACE" == "" ]]
then
        echo "INTERFACE variable unset! Aborting"
exit 1
fi

echo -n "Attempting to bring up firewall on $INTERFACE: "

#Flush old rules:
$IPTABLES -F
$IPTABLES -X

$IPTABLES -P INPUT   DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT  DROP

iptables -N icmp-chain
$IPTABLES -A icmp-chain -i $INTERFACE -p icmp --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A icmp-chain -i $INTERFACE -p icmp --icmp-type echo-request -m limit --limit 5/s -m state --state NEW -j ACCEPT

$IPTABLES -A icmp-chain -i $INTERFACE -p icmp --icmp-type destination-unreachable -m state --state NEW -j ACCEPT

$IPTABLES -A icmp-chain -i $INTERFACE -p icmp --icmp-type time-exceeded -m state --state NEW -j ACCEPT 

$IPTABLES -A icmp-chain -i $INTERFACE -p icmp --icmp-type timestamp-reply -m state --state ESTABLISHED,RELATED -j ACCEPT 
iptables -A icmp-chain -j DROP


$IPTABLES -N services

$IPTABLES -A services -p tcp -i $INTERFACE --dport 22 -m state --state NEW -m recent --set
$IPTABLES -A services -p tcp --dport 22 -i $INTERFACE -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

$IPTABLES -A services -p tcp -i $INTERFACE --dport 22 -m state --state NEW -j ACCEPT
$IPTABLES -A services -p tcp -i $INTERFACE --dport 80 --sport 1024:65535 -m state --state NEW -j ACCEPT
$IPTABLES -A services -p tcp -i $INTERFACE --dport 443 --sport 1024:65535 -m state --state NEW -j ACCEPT
a dalsi sluzby...

$IPTABLES -A services -j DROP

$IPTABLES -A INPUT -i $INTERFACE -p ip -f -j DROP 
$IPTABLES -A INPUT -i $INTERFACE -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j DROP 
$IPTABLES -A INPUT -i $INTERFACE -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP 
$IPTABLES -A INPUT -i $INTERFACE -p tcp --tcp-flags SYN,RST SYN,RST -j DROP 


$IPTABLES -A INPUT -i lo  -s 127.0.0.1 -j ACCEPT 
$IPTABLES -A OUTPUT -o lo  -d 127.0.0.1 -j ACCEPT 

$IPTABLES -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP 

$IPTABLES -A OUTPUT -m state --state NEW -j ACCEPT 

$IPTABLES -A INPUT -p icmp -j icmp-chain

#ports allowed cos of port sentry
TCP_PORT_SENTRY="1 11 15 79 111 119 540 635 1080 12346 20034 27665"
UDP_PORT_SENTRY="1 7 9 69 161 513 635 640 641 31335 32770 32771 32772"

for watch in $TCP_PORT_SENTRY; do
$IPTABLES -A INPUT -i $INTERFACE -p tcp --dport $watch -j ACCEPT
done
for watch in $UDP_PORT_SENTRY; do
$IPTABLES -A INPUT -i $INTERFACE -p tcp --dport $watch -j ACCEPT
done

$IPTABLES -A INPUT -i $INTERFACE -m state --state NEW -j services

echo "done."
       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (5) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

17.12.2007 08:53 disorder | blog: weblog
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Odpovědět | Sbalit | Link | Blokovat | Admin
takze vsetci ti tu len budu sledovat? :)

bastille si skus, ved len prejdes nejakymi otazkami a uvidis ci ti to na nieco bolo :) na monitorovanie sa mi paci cacti, potom este zenoss (ale to som neskusal, prilis tazky sa mi zda byt -- python a nejaky framework tusim)
17.12.2007 09:32 CET
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Odpovědět | Sbalit | Link | Blokovat | Admin
tady by melo byt asi -p udp
for watch in $UDP_PORT_SENTRY; do
$IPTABLES -A INPUT -i $INTERFACE -p tcp --dport $watch -j ACCEPT
done
17.12.2007 14:00 worwan | skóre: 6 | blog: worwan
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
hehe..diky :)

to jsem nejak prehledl :)
michich avatar 17.12.2007 10:04 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Odpovědět | Sbalit | Link | Blokovat | Admin
SELinux? Já jsem rozhodně pro. S ním má útočník po prolomení se do nějakého daemona velmi omezené možnosti a taky se pokusem o porušení policy prozradí. Chce to nejlíp Fedoru nebo příbuzný systém (RHEL, CentOS).

Mezi bezpečnostními vychytávkami Fedory jsou i obrany proti přetečení bufferů (FORTIFY_SOURCE, -fstack-protector).
OndraZX avatar 17.12.2007 11:18 OndraZX | skóre: 27 | blog: OndraZX | Frydek-Mistek
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Odpovědět | Sbalit | Link | Blokovat | Admin
Ja firewall nepouzivam - ridim se heslem - v jednoduchosti je sila. Tzn. ze na serveru bezi jen ty sluzby, ktere potrebuji - a ty bych stejne musel ve firewallu zapnout. Pochopil to i Microsoft - Win2003 server ma po instalaci vsechny sitove sluzby vypnute, admin povoluje jen ty ktere potrebuje. Snad to nekdy pochopi i chlapci z RedHatu a Novelu pri navrhu svych enterprise distribuci a nebudou pri standardni instalaci pouzivat styl - cim vetsi (objemnejsi) slatanina, tim lepsi system. :-)

PS: ano, ja vim ze toto neni 100% reseni, ale ja opravdu radeji jednoduchy system ktery dela to co ma bez zbytecnych "blbinek" navic.
Johny z Podoli avatar 17.12.2007 12:19 Johny z Podoli | skóre: 26 | blog: rocfdebian
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
a jak řešíš třeba ip spoofing? nebo různé DoS, atp? Popřípadě všelijaké redirecty, přístupy z nevhodných IP atp?
Můj web o táborech: Letní dětské tábory, Hudební tábor , Můj nový blog na Nul.cz
OndraZX avatar 17.12.2007 13:46 OndraZX | skóre: 27 | blog: OndraZX | Frydek-Mistek
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Mluvim o vnitrni siti, spise jsem mel potrebu reagovat na "styl" standardnich instalaci enterprise verzi Linuxu, ktere obsahuji nekutecne mnozstvi "balastu" a bezpecnost resi nejakym firewallem.
Josef Kufner avatar 17.12.2007 17:48 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Ja se k lokalni siti chovam stejne jako k Internetu. Jen tam dhcpd rozdeluje IP adresy a nektere pocitace jsou povazovany za duveryhodne a maji par ip/mac povolen ve firewallu.
Hello world ! Segmentation fault (core dumped)
17.12.2007 19:08 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Firewall mám hlavně kvůli službám, které jsou dostupné v lokální síti nikoliv však z internetu. Ono to sice není úplně čisté, ale za bezpečnost některých služeb bych ruku do ohně nedal a přitom jsou v lokální sítí takřka nezbytné. Za příklad bych uvedl Samba server a Hylafax. Nastavení Samba servu je nutné upravit na nastavení podle apožadavků aplikaci, které lze v lokální síti akceptovat se skřípěním zubů, ale na net je nepustit. Nebo znáte málo aplikací, které jsou uzavřené a na FIrebirb se přihlašují profláknutým heslem, kdysi defaultním atd. atd. Prostě si myslím, že lokální sít se nerovná bezpečností internet a firewal je dobrým řešením pro jejich oddělení.
Shadow avatar 17.12.2007 19:35 Shadow | skóre: 25 | blog: Brainstorm
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Odpovědět | Sbalit | Link | Blokovat | Admin
Jak to dělám já.

Firewall. Ano, používám, dokonce je v některých případech nutností (CDMA router se bez něj rozběhnout nedá). Snažím se však nakonfigurovat všechny služby tak, aby firewall nutný nebyl (omezuji přístup k nim už v jejich konfiguraci). Čili, v mém případě je firewall dodatečným (nikoliv hlavním) zabezpečovacím prvkem.

Modul recent používám pro ochranu SSH, ale v mém případě moc využívaný není. Démon mi totiž nevisí na portu 22, kam směřuje většina automatizovaných útoků. Na portu 22 mám tarpit:-).

U SSH doporučuji kromě standardních opatření použít direktivu AllowUsers (popř. AllowGroup) na povolení přístupu k SSH ze strany pouze některých uživatelů. Pro každý případ.

Monitoring. Vlastní skripty parsující logy, logcheck, logwatch. Občasné použití chrootkitu a rkhuntera nezaškodí. Aktivní IDS nepoužívám, můj server by to nezvládal, a i kdyby ano, vzhledem k topologii sítě by nebyl efektivní.

Kernel. Líbí se mi grsecurity, ale bez oficiálního zdroje pro Debian s binárkou určenou pro mou architekturu budu raději používat distribuční kernel.

Díry. Ano, audit pomocí Nessusu či dalších nástrojů pomáhá, jinak hlavní je (kromě správné konfigurace) častá aktualizace (v mém případě jednou denně).
If we do not believe in freedom of speech for those we despise we do not believe in it at all.
pele avatar 18.12.2007 10:58 pele | skóre: 28 | blog: Bleabr | UH
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Modul recent používám pro ochranu SSH, ale v mém případě moc využívaný není. Démon mi totiž nevisí na portu 22, kam směřuje většina automatizovaných útoků. Na portu 22 mám tarpit:-).
Jakym zpusobem vytvarite tuto past? Ja pouzivam tinyhoneypot ale hledam neco lepsiho, vite o necem?
Pravda má jednu velkou výhodu: člověk si nemusí pamatovat, co řekl.
Shadow avatar 18.12.2007 13:33 Shadow | skóre: 25 | blog: Brainstorm
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Já jsem používal Kojoney, interaktivní SSH honeypot napsaný v Pythonu. THP patrně nabízí něco velmi podobného. Co se tarpitu týče, vím o dvou možnostech.

Jedna z možností je modul TARPIT pro iptables. Ten ale nebývá součástí distribučních jader (minimálně v Debianu k dispozici AFAIK není).

Druhá možnost je LaBrea. Ta vytváří "virtuální" počítače s hromadou "otevřených" portů. Problém je, že LaBrea funguje způsobem, který může narušit síťový provoz, takže je třeba si projít dokumentaci a nastavit ji co nejoptimálnějším způsobem.

Já mám na routeru přesměrovaný port 22 na jeden z oněch virtuálních počítačů, které LaBrea vytváří.

Nevím ale, jak moc je v dnešní době tarpit účinný. Útočník veterán jím vůbec zaskočen nebude, chytřejší automatizované útočné nástroje mají nějaký rozumný timeout...

Zatím jsem LaBreu nasadil jako experiment.
If we do not believe in freedom of speech for those we despise we do not believe in it at all.
18.12.2007 14:12 worwan | skóre: 6 | blog: worwan
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Dik za tipy..o techto moznostech jsem ani netusil :).

Nicmene je to skutecne tak zhave? Asi jsem naivni :)..ale mam za to, ze kdyz mam zakazane prihlasovani pres heslo...a svuj klic mam chraneny passphrase...tak clovek, ktery by se byl schopen lognout by musel byt takoveho kalibru, ze nejake pasti v podobe toho cos rikal ho asi neprekvapi..a nebo je to snazsi nez sem si myslel? prolomit ssh?? :)
Shadow avatar 18.12.2007 16:37 Shadow | skóre: 25 | blog: Brainstorm
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Nicmene je to skutecne tak zhave?
Já myslím, že vůbec ne. Dokonce bych řekl, že pokud nepoužíváte vyloženě slabá hesla a máte vypnutý PermitRootLogin, můžete mít SSH klidně na portu 22, firewallem k němu přístup nijak neomezovat, a přesto být v relativním bezpečí.

Mít SSH na jiném portu se hodí (pouze) k odražení automatizovaných útoků, protože ty v drtivé většině případů portscan neprovádí a předpokládají, že SSH bude na portu 22. Když ho u vás nenajdou, půjdou "o dům dál".

Zkušený útočník bez problémů najde SSH na kterémkoliv portu. Pokud použije sniffer, odhalí třeba i port knocking.

Nicméně, podle mého soudu, i zkušený útočník bude dávat přednost strojům se slabším zabezpečením, protože mu průnik do nich zabere mnohem méně času a úsilí. Pokud tedy nebude mít nějaký explicitní důvod, proč se probourat zrovna na váš server.
mam za to, ze kdyz mam zakazane prihlasovani pres heslo...a svuj klic mam chraneny passphrase...tak clovek, ktery by se byl schopen lognout by musel byt takoveho kalibru, ze nejake pasti v podobe toho cos rikal ho asi neprekvapi
Přesně tak. Tohle zabezpečení je více než dostatečné. Ono v pohodě stačí i silnější heslo a přihlašování bez klíče. Samozřejmě je třeba dbát zejména na to, odkud se hlásíte (keylogger, apod.).
nebo je to snazsi nez sem si myslel? prolomit ssh??
Neřekl bych. Zejména pak, pokud pravidelně aktualizujete.
If we do not believe in freedom of speech for those we despise we do not believe in it at all.
20.12.2007 21:06 worwan | skóre: 6 | blog: worwan
Rozbalit Rozbalit vše Re: Zabezpeceni serveru
Odpovědět | Sbalit | Link | Blokovat | Admin
Bezi vam ftp server pod rootem?

Popr co na to rikate? Jiste.je to trochu risk..ale odladenym serverum jako pure-ftpd nebo vsftpd bych docela veril :)

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.