Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam.
Coraz bardziej korci mnie żeby w ramach testów postawić sobie stronkę na swoim kompie przy wykorzystaniu Dynamic DNS. Jednakże admin ze mnie żaden i nie wiem ani co powinno znaleźć się na maszynce ze stroną, ani jak zabezpieczyć taką maszynę przed włamaniami itp. Oczywiście domyślam się że zacząć należy od wygenerowania mocnych haseł na ssh (chciałbym mieć możliwość dostępu zdalnego), ale nie wiem jak np. skonfigurować takiego apacha aby nikt nie wlazł mi przez stronkę na kompa (za dużo ważnych danych żeby ryzykować) a na ich stronce opcji jest od cholery.
Pytanka do was:
1. Czy z doświadczenia moglibyście dać mi jakieś wskazówki na co zwrócić szczególną uwagę przy operacji wystawiania własnego "łeba" na świat ;] ?
2. Jaką "minimalną" ilość pakietów radzilibyście mieć na takim pseudo serwerze, jeżeli miałby on spełniać zadania dydaktyczne odnośnie nauki, HTML, CSS, PHP, ASP.NET, JSP.
3. Czy ktoś orientuje się jak dobrze jest ze wsparciem dla ASP.NET na Apachu (czy tam innych serwerach)? Niby jest wymieniony jako wspierany i widzę że w repach pakiety są, ale czy można na tym stawiać zwykłe stronki stworzone w Visualu czy tylko działają jakieś podstawowe funkcje z .NET-1.x/.NET-2.x?
4. Czy pod względem zużycia łącza, jest jakaś różnica czy na serwerze postawi się Apacha, nginx czy tam jeszcze co innego, czy też serwer "light" oznacza że tylko obciążenie maszynki na której jest uruchomiony jest mniejsze?
Dodam że chciałbym postawić to głównie w ramach nauki, ale tak aby inni też mogli coś tam zobaczyć. Łącze na którym miałby stać to 512 Kbps z Netii (wiem że szału nie ma, ale to ma nie być portal tylko zwykłą stronka do nauki ;] )
Z góry dzięki za info
Offline
Hmm... czyżby nikt sobie servera nie stawiał nigdy na DynDNS że odzewu brak ;] ? OK, może skonkretyzuję trochę pytania to ktoś się odezwie :). Zacznijmy od bezpieczeństwa:
Wczoraj zainstalowałem sobie Debian Stable na kompie składającym się z czegoś takiego:
-Dwu procesorowa płyta Intela (N440BX Server Board) - na niej 2x PII 400 Mhz
-384 MB Ram (SD 100 Mhz)
-Jakiś tam zwykły dysk Seagate 17 GB
Płyta posiada wbudowaną sieciówkę, grafikę i sporo opcji konfiguracyjnych, swego czasu była to płytka pod serwer.
Teraz tak - planuję ustawić tam jakiś serwer i wystawić to na świat, ale najpierw muszę to jakoś zabezpieczyć. Serwer miały się łączyć ze światem poprzez router, który obecnie dostarcza net dla mojej stacjonarki, telefonu i kilku innych urządzeń - tutaj pierwsze pytanie do was, jako że specem od bezpieczeństwa sieciowego nie jestem ;].
1. Chciałbym tak skonfigurować swoje kompy,router i serwer, aby nawet po ewentualnym włamaniu się na serwer, nikt nie mógł za jego pomocą dobrać się do zasobów sieciowych udostępnianych poprzez SAMBĘ, NFS itd - nie wiem tylko czy tutaj bardziej trzeba coś konfigurować po stronie serwera, routera, czy kompów udostępniających dane - w temacie jestem raczej mało obeznany, mam nadzieję że Wy bardziej :) .
2. Serwer miałby być wystawiony na świat, z możliwością zdalnego logowania poprzez SSH - wiem że temat poruszany już tysiące razy, ale nie widzę na DUG'u jakiegoś poradnika step-by-step wyjaśniającego w jaki sposób porządnie zabezpieczyć SSH, przed włamaniem - tutaj również liczę na Waszą pomoc :) (i obiecuję napisanie arta na ten temat, tak żeby już nikt nie musiał w przyszłości pytać).
To tyle na początek, mam nadzieję że ktoś coś poradzi :) jak zawsze z góry dzięki za info.
Pozdro.
Offline
Serwer na Dyndns? na dyndns możesz sobie postawić domenę i przekierować na własny serwer.
A ten serwer stawiasz, jak każdy inny serwer na Debianie, bez żadnych różnic.
Radzilbym go porządnie zabezpieczyć, jeśli ma być widoczny w necie.
Do PHP, CSS i html, z ASP>NET na serwerach Linuxowych bywa róznie, Apache ma moduły do mono, ale możliwości tego mono bym nie przeceniał.
Co do SSH - logowanie po kluczu szyfrującym jest najbepieczniejsze, po haśle należy ustawić limit prób w jednym połączeniu, a sam serwer ssh ochronić poprzez firewalla, moduły np recent lub hashlimit nadają się tu idealnie.
Tu masz przykład użycia hashlimit do ochrony przed atakiem DOS portu smtp, ssh się robi bardzo identycznie, tylko dałbym inne liczby np max 3 nowe polączenia na godzinę. (z jednego IP).
Przykladowo ja mam dostęp po haśle na konto usera i tylko po kluczy na roota:
# Authentication: LoginGraceTime 15 PermitRootLogin without-password # PermitRootLogin yes #StrictModes yes MaxAuthTries 2 RSAAuthentication yes PubkeyAuthentication no AuthorizedKeysFile .ssh/autorized.keys
Generalnie wsio, o co pytasz, jest na forum przemielone setki razy.
Co do włamania na serwer, to jak go porządnie skonfigurujesz, to nikt się do niego nie włamie.
Jeśli natomiast ktoś przejąłby kontrolę nad tym serwerem, to dostęp do innych urządzeń zdobędzie, o ile nie będą zabezpieczone na okoliczność podejrzanego dostępu z serwera.
Jeśli moge coś polecić, to serwer www w chroocie, do tego w jaju Grsecurity z np takimi ustawieniami:
sysctl -a | grep -i chroot kernel.grsecurity.chroot_deny_shmat = 1 kernel.grsecurity.chroot_deny_unix = 1 kernel.grsecurity.chroot_deny_mount = 1 kernel.grsecurity.chroot_deny_fchdir = 1 kernel.grsecurity.chroot_deny_chroot = 1 kernel.grsecurity.chroot_deny_pivot = 1 kernel.grsecurity.chroot_enforce_chdir = 1 kernel.grsecurity.chroot_deny_chmod = 1 kernel.grsecurity.chroot_deny_mknod = 1 kernel.grsecurity.chroot_restrict_nice = 1 kernel.grsecurity.chroot_execlog = 1 kernel.grsecurity.chroot_caps =0 kernel.grsecurity.chroot_deny_sysctl = 1 kernel.grsecurity.chroot_findtask = 0
i nie ma bata, na taki serwer www, może ewentualnie dojść do przejęcia Apacha w chroocie, ale wyrwanie się z takiego chroota - to bardzo ciężka para kaloszy, o ile w ogóle możliwe.
Osobiście na tej maszynce radziłbym Lighttpd.
Ma dość prostą konfigurację i całkowicie zrzuca uprawnienia roota po uruchomieniu.
ASP obsługuje mono, w Lightym podobno wykonalne:
http://www.mono-project.com/FastCGI_Lighttpd
Takze jakbyś coś nie wiedzial, to pytaj o bardziej szczegółowe rzeczy.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2012-01-31 09:34:44)
Offline
@Jacekalex:
Dzięki za info - przez najbliższe parę dni postaram się coś poczytać i dokształcić się w tematach bezpieczeństwa, zapewne jakieś pytania się pojawią ;] tym bardziej że już teraz widzę, dziesiątki opcji o których istnieniu nie miałem pojęcia :).
Pozdro.
Offline
Najlepsze sznurki po polsku, jakie znam:
http://www.gentoo.org/doc/pl/security/
To przydatne, ale początkującym i to na Debku nie polecam z tym przesadzać:
http://www.gentoo.org/proj/pl/hardened/grsecurity2.xml?style=printable
http://www.gentoo.org/proj/pl/hardened/pax-quickstart.xml
Inne opcje: SELINUX (w Debianie podobno domyślny, ale skonfigurowany nie jest), Apparmor.
Debian:
http://www.debian.org/doc/manuals/securing-debian-howto/
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2012-02-01 08:14:32)
Offline
Trochę poczytałem (choć biorąc pod uwagę mnogość opcji iptables, ssh i reszty technologii zabezpieczających - to nadal mało ;] ) i na pierwszy ogień zabrałem się za firewalla, naskrobałem taki skrypt:
#! /bin/sh # /etc/init.d/firewall # # Some things that run always touch /var/lock/firewall # Carry out specific functions when asked to by the system case "$1" in start) echo "Starting firewall " # Clear everything iptables -F iptables -t nat -F iptables -t mangle -F iptables -X # Change the default policy of all three chains to DROP iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # Accept input from loopback device iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -i lo -j ACCEPT # Accept input from already established connections iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Drop input from not defined connections iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP # Accept SSH connections iptables -A INPUT -p TCP --dport 2344 -s 192.168.1.0/5 -j ACCEPT iptables -A OUTPUT -p TCP --dport 2344 -s 192.168.1.0/5 -j ACCEPT # Allow only two ssh connections iptables -A INPUT -p tcp --syn --dport 2344 -m connlimit --connlimit-above 1 --connlimit-mask 0 -j REJECT ;; stop) echo "Stopping firewall" iptables -F iptables -t nat -F iptables -t mangle -F iptables -X iptables -P INPUT ACCEPT ;; *) echo "Usage: /etc/init.d/firewall {start|stop}" exit 1 ;; esac exit 0
(wszelkie uwagi do powyższego mile widziane :) )
Tylko ni cholerci, nie wiem, jakie parametry zastosować do connlimit'a (dla ssh dałem dwa - jeden na zwykłego usera, jeden na root'a), nie mam pojęcia ile połączeń zużywa się przy standardowym ładowaniu strony poprzez http... jedno czy więcej?
Druga sprawa: mam problem ze zrozumieniem hashlimit, wydawało mi się że taki łańcuch:
iptables -A INPUT -p icmp -m hashlimit --hashlimit-name icmp --hashlimit-mode srcip --hashlimit 1/minute --hashlimit-burst 1 -j REJECT
powinien sprawić że na minutę ktoś będzie sobie mógł raz z jednego IP pingnąć kompa - tyle że to działa tak że pierwszy pakiet jest odrzucany a reszta przyjmowana, z kolei jak na końcu zmienię REJECT na ACCEPT - to zdaje się nie działać w ogóle - znaczy się wszystko przechodzi jak by nigdy nic - co robię nie tak?
Offline
Ja kiedyś do pewnego serwera SMTP naskrobałem taką regułkę, i działało elegancko:
iptables -A SMTP ! -i lo -m state --state NEW -m set --match-set spamhaus src -j STEAL iptables -A SMTP ! -i lo -m state --state NEW -m set --match-set sblamdrop src -j STEAL iptables -A SMTP ! -i lo -m connlimit --connlimit-upto 10 --connlimit-mask 0 --connlimit-saddr -m hashlimit --hashlimit-upto 1/min --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-name smtp -j ACCEPT iptables -I INPUT ! -i lo -p tcp -m multiport --dports 25,465,587 -j SMTP
Pozwalało to na jedno polączenie SMTP na minutę z jednego IP,
connlimit załatwiał limit równoczesnych połączeń, a set obsluguje filtry spamhaus i sblam wrzucone do ipseta.
Tu masz kilka sznurków o iptables:
http://stary.dug.net.pl/texty/Iptables_by_Atom_Zero.pdf
http://jacekalex.sh.dug.net.pl/iptables_routing.pdf
http://pl.wikibooks.org/wiki/Sieci_w_Linuksie/Netfilter/iptables
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2012-02-07 06:39:30)
Offline
Strony: 1