Webszerver biztonság-stabilitás-sebesség

Fórumok

Szeretnék egy webszervert idővel, ahova feltölthetem az általam készített weboldalakat. Azért kellene, mert nem vagyok megelégedve tárhely szolgáltatókkal.
Néhány hónapja otthon tesztelgetek egy PIII gépet, amelyen Debian van továbbá Apache, MySQL, PHP és VHCS2.

Tippeket, ötleteket várnék tőletek, hogy miként tehetném biztonságossá és a lehető leggyorsabbá a webszervert. Találtam ugyan rengeteg infót a neten, de épp az a gondom, hogy túl sok van belőlük, időm viszont kevés, hogy mindent kipróbálgassak, megvárjam a hatását a különféle beállításoknak.
A legjobb az lenne, ha megosztanátok velem olyan weboldalakat, leírásokat ahol biztos, megbízható, jól bevált információk vannak. Főleg a Copy-Paste leírások jönnek nagyon jól... (pl: http://www.howtoforge.com/perfect_setup_debian_sarge)

Amiket tudni szeretnék, illetve megoldásokat keresek:
- httpd.conf, php.ini beállítások
- fájlok, MySQL adatbázisok rendszeres mentése (ne mindennap lementeni mindent, hanem csak a változtatásokat, lehetőleg távoli gépre is)
- hogyan lehet az egész rendszert kiírni CD/DVD-re, amiből egyszerűen vissza lehet állítani (akár más gépre is)
- behatolás védelem (láttam olyat, hogy SMS-t küld a gép, ha root jelszóval belépnek, vagy hiba történik)
- minden eszköz, ami a webszerver biztonságát, stabilitását és sebességét fokozza

Éppen most találtam egy nagyszerű oldalt:
http://sectools.org/index.html
Ezekből mit érdemes használni?

Hozzászólások

Nem akarlak megbántani, de amikre infokat szeretnél kapni annyira alapvető dolgok, hogy ha nem naprakész belőlük a rendszergazda, akkor sokkal inkább lesz offline a webszolgáltatás mint a "rossz tárhelyszolgáltatóké". A tanulási folyamatot meg még a HUP segítségével sem kerülheted el.

Inkább kezd el felépíteni a rendszered, és ha valahol elakadsz akkor tedd fel a konkrét kérdésed. És etikusan a végső megoldás(oka)t oszd meg másokkal is! :)

A (teszt) rendszer már több hónapja fut, egy képgalériát és chat-et felraktam rá, eddig másfél giga forgalom generálódott (ADSL, 256kbit fel...) Tulajdonképpen nincsen gondom vele, de szeretném ha majd lesz élesben egy webszerverem, tisztában legyek mit érdemes használni.

A legfőbb gondom, hogy egy problémára (pl. behatolás figyelés, mentés) több megoldás is van. Hogy melyik a jobb, ahhoz mindegyiket ki kell próbáljam. Erre pedig nincs időm. Ezért várnék tippeket, miket érdemes használni.

Nem akarok rendszergazda lenni, de tisztában szeretnék lenni az egész folyamattal. Ha majd lesz rá pénz úgyis egy hozzáértő szakembert fogok megbízni a felügyelettel.

Én is igy kezdtem. A sufniba kitett P1-es géppel adsl-re kötve 2004-ben. Azóta csomó dolgot megtanultam, gépet is updateltem PII-es del serverrre ami már a fősulim 100-as netjéről megy. Mások szervereit felügyelem.
És mindez hogy jöhetett össze? Úgy hogy anno a sufniban kezdtem, ha nem kezd az ember tökölészni vele (vagy szakemberhez odakerülni) nem hiszem hogy másként menne.
Szerintem próbáldgasd nyugodtan magad, _de_ésszes, következetesen járj el.
Az általad belinkelt oldalak nem rosszak, egy jó tűzfal és a rendszer frissen tartása elég sokat tud dobni a bizonságon.
Semmi bajom nem volt még a külső támadókkal, igaz ilyen jelentéktelen szerverekkel nem is foglalkoznak szerintem ha megfelelő védelem van, szal nem fognak hatalmas célzott támadást inditani.
Ami nálam fontos volt, és javaslom nálad is az legyen:
- SSH csakis kizárólag kulcsos belépéssel történjen, lehetőleg IP-re korlátozva
- php.ini-ben safe mode on, majd nézz utána az apache-ban hogyan lehet adott weblapra lekorlátozni a mappájára & temp-re, igy ha feltörik egy régi portálrendszer miatt, a többi védve van. Tulajdonképpen izolálod a többitől.
- Csak az a program fusson amire tényleg szükség van, intetd-t hanyagold
- rakj fel MRTG-t, neten keress hozzá scripteket, irj hozzá magad is, amit csak tudsz (és érdmes) figyeltesd vele. Remekül ki tudnak bukni az esetleges támadások, gyanús események.
- Logokat az elején sürün figyeld...már csak hogy barátkozz vele, idővel ehhez is képes leszel scriptet irni ami csak gyanús esetben dob egy mailt a fiókodba.
- adott szolgáltatás beüzemelésekor olvass utána alaposan, hogy mások hogyan állitották be. Ragadj ki hasznos trükköket és ültesd át.

Lehetne még hosszasan ragozni, hirtelen ennyi jutott eszembe. Hidd el, ha érdekel, és szereted csinálni, mint a szivacs, úgy szivod magadba ezeket. Főleg, hogy magadnak kell, igy a motiváció is nagyobb:)

Az emlitett del gépnél egy MRTG: http://stat.prociweb.hu

ui.: confokat nem adnék és sztem mások sem adnak, hisz abból nem sokat tanulsz, és kimaradsz egy csomó rákényszerülő guglizásból, ami alatt szerte ágazóbb lehetne a tudásod, azért hogy az alap rendszer biztonságban legyen, a tüzfal scriptem szivesen bemásolom ha nem sikerül összehozni egy tuti biztosat.

ui#2: Ajánlott irodalom:
Linux hálózati adminisztrátorok kézikönyve
Linux bevetés közben, Linux bevetés közben második küldetés
Az utóbbi kettő igen okos tippeket, trükköket, szemléletet ad.

legjobb szerintem az, hogy ha keres valami egyszerű porgramot amit a "kezdők" is használnak port scannelésre, támadásokra... ráküldi a saját szerverére és így ténylegesen tudni fogja, hogy a logban mit kell keresni az esetleges támadások megtaláláshoz!
szerintem ez a legjobb megoldás ahhoz, hogy tudd mikor mi történik a szervereden

A biztonság kérdés engem is nagyon foglalkoztat mostanában, és sokat is igyekszem magamba szippantani. Amit én tudnék még ajánlani a fentieken kívül az a nessus és a munin. Én ezeket használom. Tűzfallal magam ügyeskedem, de eleht valami professzionálisabbat kellene feltennem, de amíg ezzel nincs gondom, inkább csak figyelek, mit kell még beletenni.
A Nessus-t ptóbáld ki, tényleg jó: http://www.nessus.org/

"-Csak az a program fusson amire tényleg szükség van, intetd-t hanyagold"

Elment mellettem az idő, régen minden howto azt mondta az inetd a tuti dolog, ezt így kell. Miért nem kell mostanában foglalkozni vele?
..............................
"Herman Miller bútort követelünk a föld összes görbe hátú kompjúter zombijának"

Hát, az egyik oka az, hogy minden kapcsolathoz új bináris-példányt rángat be a memóriába. Ez addig nem gond, amig csak valami kis vacakról van szó, vagy minimális (értsd 10-50) kapcsolatra lehet számolni egy időben. Ha viszont nagyon sok (5-100-) kapcsolat van egyszerre (a mai gépek ennek többszörösét képesek létesíteni), egy idő után a memóriád másból sem fog állni, mint ezen binárisok példányaiból.
A VMware server pl. okosan csinálja. Van ugye a vmware-authd, ez authentikál, majd átadja a kapcsolatot a permanensen futó vmware-serverd alkalmazásnak és ezzel ki si takarodik a memóriából. SSH esetén viszont, az sshd ugye addig a memóriában van, amig a kapcsolat él. Namost, ha egszerre 60 kapcsolatot létesít egy gép, feltörési szándékkal, akkor az inetd 60x rángatja be a memóriába szegény sshd-t. Ha ezt csak 20 gép csinálja meg, akkor az (20x60=) 1200 darab sshd példányt jelent. Legyen 200kb egy sshd, ez (1200x200=) 240 MB. Ha van várakoztatás a rossz jelszavak közt, annál tovább van a sshd a memóriában. És ez csak egy kedves, alulbecsült példa.

Többek közt ezért kerülöm ÉN az inetd-t. VMware miatt fenn van ugye, de egyrészt a vmware-authd okos, másrészt le van védve, így max 2-3 kapcsolata van egy időben.

Köszönöm a válaszokat!

Proci85:
- safe mode ON sajnos nem jó nekem, ugyanis ha a felhasználó pl. feltölt admin felületen egy képet azt az Apache fogja birtokolni és a User tulajdonában lévő php nem tudja meghívni. Lehet, hogy van erre megoldás, csak én nem tudok róla :(
- MRTG-t kösz, kipróbálom
- logokat eleinte naponta figyeltem. Volt is pár kísérlet, hogy ftp-n csatlakozzanak az Administrator névvel...
- Conf fájlok beállításához persze elengedhetetlen, hogy tudja az ember mit állítson be, de azért jó lenne ismerni a legfontosabbakat, hogy ne siklodjon el felette a figyelmem...

tepsi, budacsik:
- köszönöm az ötletet, hamarosan megtámadom saját magamat :)

nessus nem támadásra való, de ok :) (csak kötözködök)
Hanem valami olyasmit csinál (szakszerűen most nem tudm leírni neked), hogy lescanneli a géped és hibákat keres azokon az alkalmazásokon amik fennt vannak. Pl nekem volt egy olyan, hogy az apache túl sokatárul el magáról. Minek?! Ez nem biztonsági rés, de azért leírta nekem szépen, hogy vegyem lejjebb a "száját". Ez apróság, de lehet komolyabb dolog is csak ez jutott eszembe.

MySQL esetén van binlog. A mindennapit meg azért érdemes 1-1-ben eltenni, mert akkor csak az aznapi binlogot kell visszatolni.

Egész rendszert szerintem fölösleges, mert belemehet simán biztonsági rés is. A konfigfile-okat kell kiírni és ha gáz van akkor a reinstall után visszatenni.

Az hogy behatolást JELEZ a rendszer az nem véd meg semmitől. Például tök ideális hogy akkor kapsz SMS-t bármiről, amikor épp pancsolsz a strandon.

A webszerver biztonságát érdemben mod_security-val lehet fokozni, bár esetekben csak arra jó, hogy az invalidus próbálkozásokat és az aktuálisan futó remote cuccokat kiszűrje (miután megmondtad mire szűrjön). Sebesség és stabilitás szempontból általában elég használható az apache szerintem, nem hiszem hogy napi néhány 10e PHP-s lapletöltésig gondod lesz vele. Persze normálisan megírt PHP kódokat feltélezve.

Azt írod hogy: "nem vagyok megelégedve tárhely szolgáltatókkal". Ezt kifejtenéd néhány pontban, hogy konkrétan mi az, ami nem jön be neked?

"Például tök ideális hogy akkor kapsz SMS-t bármiről, amikor épp pancsolsz a strandon."
Hát ja :)

mod_security engedélyezve volt, de valamelyik frissítés után elromolott :( egyelőre nem volt időm megjavítani...

Tárhelyszolgáltatókból mondjuk nem volt alkalmam túl sokat kipróbálni... De ahol voltam az volt a gondom, hogy eleinte tök gyorsan reagáltak ha volt valami gond volt, később pedig - miután elég ügyfelük volt - enyhén szólván leszartak.
Páldául: kb. másfél évet kértem, hogy a náluk lévő doméneimet egy helyen tudjam adminisztrálni, ami abból állt volna, hogy a megfelelő IP címhez kössem. De hát nem. Ja és ez a probléma még mindig nem oldódott meg...

Jelenleg egy viszonteladói tárhelyet vásároltam. Egyelőre meg vagyok elégedve és mivel van Cpanel, nem is kell nagyon zavarjam a rendszergazdát. De ott van bennem, hogy ugyan mikor fog megszűnni a cég, ki tudja mentenek-e rendszeresen, stb stb...

"Páldául: kb. másfél évet kértem, hogy a náluk lévő doméneimet egy helyen tudjam adminisztrálni, ami abból állt volna, hogy a megfelelő IP címhez kössem. De hát nem. Ja és ez a probléma még mindig nem oldódott meg..."

Igazán nem értem miért akkora ficsör az IP címeket állítgatni?
Sokkal fontosabb ha a rendszergazda beállítja ahogy kell aztán az ifők végezetéig jól működik. Tök fölösleges a domain tulajdonosnak állítgatni, mert egyrészt a rendszergazda sokkal jobban tudja hogy mire kell állítani, másrészt az átállítgatással könnyen a névszervereket bolondíthatod meg (cache). Nincs annál nagyobb szívás mint amikor össze vissza konfigolnak a felhasználók, aztán meg reklomálnak hogy sz*r minden...

Naná, hogy reklamálok ha nem állítják át, vagy nem tudom átállítani, ha valamelyik domaint (esetleg az összeset) más szerverre szeretném irányítani.
Szerintem egyáltalán nem fölöslege a domain tulajdonosoknak állítgatni, ugyanis bizonyos helyeken x napot kell várni és x alkalommal rászólni, mire történik valami. Mi az hogy szólni, könyörögni... amíg meg nem szánnnak :(

Te most vásároltál egy bazi nagy tárhelyet és azt adod tovább? Ha te webhostingot veszel miért akarod az IP piszkálni? (Azt se tudom mi az IP-hez kapcsolódik a domainnevem...)

..............................
"Herman Miller bútort követelünk a föld összes görbe hátú kompjúter zombijának"

Nagyon szeretném használni a safe_mode-ot, de nem találtam megoldást a problémára, hogy ha feltöltenek egy fájlt, utána nem lehet megnyitni.

Addig is ezeket használom:
open_basedir
disable_functions = system, exec, passthru, proc_open, shell_exec, popen

Következő témákra keress rá és fontold meg a használatukat (feltételezem, hogy Linuxot szeretnél továbbra is használni):

1. Stack/heap védelem:
- PaX (by PaX Team "pipacs")
- PaX Documentation
- Wikipedia:PaX
- Propolice (by Hiroaki Etoh @ IBM)
- PIE és SSP
- Az ExecShield-et a Redhat nyomatta bele a kernelbe, de sajnos a PaX-nál kevesebbet tud

2. MAC/RBAC rendszerek:
- Grsecurity (by Brad Sprengler)
- SELinux (by NSA)
- RSBAC
- Wikipedia:RSBAC
- Wikipedia:Access Control Comparison: jó kis áttekintés, összegyűjtve a vonatkozó disztribúciókkal stb. (a random pid már nincs benne a grsecurity-ben)
- LIDS

3. Biztonságos disztribek
- lásd a Wikipedia:Access Control Comparison disztrib sorát
- Debian alapon: Adamantix - sajnos kihalófélben
- Gentoo alapon: Hardened Gentoo, Wikipedia:Hardened Gentoo
- Fedora - SELinux
- SUSE - AppArmor
- biztonságosító script: Bastille Linux, Wikipedia:Bastille Linux - sok disztróhoz elérhető, és nem csak Linuxra

4. Chroot, jail: lusta voltam

5. PHP
- Suhosin of Hardened PHP
- Debuntu Suhosin Howto
- PHP:Safe mode
- PHP:Register globals OFF - van olyan CMS, ahol ez még ma sem feltétlen default...
- suphp

Egyéb linkek:
- OpenBSD Propolice
- PaX-ekvivalens OpenBSD-n - Theo szerint nincs köze a PaX-hoz
- TrustedBSD: FLASK implementáció (Free)BSD-re és Darwin-ra

Sorry asci, ha némelyik triviális volt...

Üdv,
Dw.

Utószó: elnézést kérek azoktól, akik nem alacsonyodnak le holmi Linux rendszerek használatához, de itt most főleg ehhez volt néhány link. Vannak olyan lámák - köztük én is - akik még nem tértek át Linux-ról egyikre sem: *BSD, MacOSX/Darwin, AIX, HP-UX, VMS, Solaris, Plan9, Vista Enterprise Ultimate Total Complete Edition Plus stb... Szóval tudom, hogy a Linux milyen {fika|fospumpa|gány|tré} az iméntiekhez képest, de mégis használja néhány agymosott. A nevükben is szégyellem magam...

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."