Zabezpieczanie linuksowego serwera www dla publicznego dostępu

Chciałbym skonfigurować tani Linux box jako serwer WWW do hostowania różnych technologii internetowych (PHP i Java EE przychodzą mi do głowy, ale chciałbym eksperymentować również z Ruby lub Python w przyszłości).

Jestem dość zorientowany w konfiguracji Tomcat do uruchamiania pod Linuksem do obsługi aplikacji Java EE, ale chciałbym móc otworzyć ten serwer, nawet po to, aby móc tworzyć narzędzia, z których mogę korzystać podczas pracy w biurze. Całe moje doświadczenie z konfiguracją witryn Java EE ma wszystko dotyczy aplikacji intranetowych, w których powiedziano nam, aby nie skupiać się na zabezpieczaniu stron dla użytkowników zewnętrznych.

Jaka jest twoja rada na skonfigurowanie osobistego serwera linuksowego w wystarczająco bezpieczny sposób, aby otworzyć go dla ruchu zewnętrznego?

Author: icedwater, 2008-08-07

12 answers

Ten artykuł ma jedne z najlepszych sposobów, aby zablokować rzeczy:

Http://www.petefreitag.com/item/505.cfm

Niektóre atrakcje:

  • upewnij się, że nikt nie może przeglądać katalogów
  • upewnij się, że tylko root ma uprawnienia do zapisu do wszystkiego, a tylko root ma uprawnienia do odczytu do niektórych plików konfiguracyjnych
  • Uruchom mod_security

Artykuł zawiera również kilka wskazówek z tej książki:

Apache Securiy (O ' Reilly Prasa)

Jeśli chodzi o DISTRO, to uruchamiałem Debain i Ubuntu, ale to zależy tylko od tego, ile chcesz zrobić. Uruchomiłem Debiana bez X i po prostu SSH ' d do niego, gdy czegoś potrzebowałem. To prosty sposób na obniżenie kosztów. Albo Ubuntu ma kilka fajnych rzeczy GUI, które ułatwiają sterowanie Apache / MySQL / PHP.

 5
Author: helloandre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 18:26:07

Ważne jest, aby w miarę możliwości stosować najlepsze praktyki w zakresie bezpieczeństwa, ale nie chcesz nadmiernie utrudniać sobie sprawy lub tracić snu, martwiąc się o nadążanie za najnowszymi exploitami. Z mojego doświadczenia wynika, że istnieją dwie kluczowe rzeczy, które mogą pomóc utrzymać twój osobisty serwer na tyle bezpieczny, aby wymiotować w Internecie, zachowując przy tym zdrowy rozsądek: {]}

1) bezpieczeństwo poprzez zaciemnienie

Nie trzeba dodawać, że poleganie na tym w "realnym świecie" jest złym pomysłem i nie do baw się dobrze. Ale to dlatego, że w prawdziwym świecie, źli wiedzą, co tam jest i że jest łup do zdobycia.

Na serwerze osobistym większość 'ataków', na które będziesz cierpieć, będzie po prostu automatycznym wymiataniem z maszyn, które już zostały zainfekowane, szukając domyślnych instalacji produktów, o których wiadomo, że są podatne na ataki. Jeśli twój serwer nie oferuje niczego kuszącego na domyślnych portach lub w domyślnych lokalizacjach, automatyczny atakujący przejdzie dalej. Dlatego, jeśli jesteś aby uruchomić serwer ssh, umieść go na niestandardowym porcie (>1024) i prawdopodobnie nigdy nie zostanie znaleziony. Jeśli uda ci się uciec z tą techniką dla Twojego serwera www, to świetnie, przenieś to do niejasnego portu.

2) Zarządzanie pakietami

Nie Kompiluj i nie instaluj Apache lub sshd ze źródła samodzielnie, chyba że absolutnie musisz. Jeśli to zrobisz, bierzesz na siebie odpowiedzialność za aktualizowanie najnowszych poprawek zabezpieczeń. Niech ładni opiekunowie pakietów z dystrybucji Linuksa, takich jak Debian lub Ubuntu, wykonują pracę za Ciebie. Instalacja z wstępnie skompilowanych pakietów distro, a pozostawanie na bieżąco staje się kwestią wydawania sporadycznych poleceń apt-get update && apt-get-u dist-upgrade, lub korzystania z dowolnego wymyślnego narzędzia GUI, które dostarcza Ubuntu.

 5
Author: Dogmang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-12 20:33:45

Jedną z rzeczy, które powinieneś wziąć pod uwagę, jest to, jakie porty są otwarte na świat. Osobiście po prostu otwieram port 22 dla SSH i port 123 dla ntpd. Ale jeśli otworzysz port 80 (http) lub ftp upewnij się, że dowiesz się przynajmniej, co obsługujesz świat i kto może z tym zrobić. Nie wiem zbyt wiele o ftp, ale są miliony świetnych samouczków Apache tylko wyszukiwarka Google.

 2
Author: icco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-12 19:52:09

Bit-Tech.Net opublikował kilka artykułów na temat konfiguracji serwera domowego z użyciem Linuksa. Oto linki:

Artykuł 1
Artykuł 2

Mam nadzieję, że to pomoże.

 2
Author: Pondidum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-15 22:48:00

@svrist wspomniał o EC2. EC2 zapewnia API do zdalnego otwierania i zamykania portów. W ten sposób możesz utrzymać swoją skrzynkę. Jeśli chcesz dać demo z kawiarni lub biura klienta, możesz pobrać swoje IP i dodać je do ACL.

 2
Author: Gary Richardson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-23 22:37:56

Jego bezpieczne, jeśli zachować swój głos w dół o tym (to znaczy, rzadko ktoś przyjdzie po serwerze domowym, jeśli jesteś po prostu hosting uwielbiony webroot na połączenie domowe) i swój rozum o konfiguracji (to znaczy, unikaj używania root dla wszystkiego, upewnij się, że oprogramowanie na bieżąco).

Jeśli chodzi o tą notkę, chociaż wątek ten potencjalnie zmniejszy się do tylko flaming, Moja propozycja dla Twojego osobistego serwera to trzymać się wszystkiego Ubuntu ( get Ubuntu Server tutaj); z mojego doświadczenia wynika, że najszybciej uzyskać odpowiedzi, skąd zadawać pytania na forach (Nie wiem, co powiedzieć o wychwycie choć).

Moje bezpieczeństwo serwerów domowych BTW trochę korzyści (chyba, lub lubię myśleć) z braku statycznego IP (działa na DynDNS).

Powodzenia!

/ mp

 1
Author: mauriciopastrana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 18:18:29

Uważaj na otwarcie portu SSH na Dzikim. Jeśli to zrobisz, upewnij się, że wyłączyłeś loginy roota (zawsze możesz su lub sudo po wejściu) i rozważyć bardziej agresywne metody uwierzytelniania w granicach rozsądku. Widziałem ogromny atak słownikowy w logach mojego serwera w jeden weekend po moim serwerze SSH z domowego serwera IP DynDNS.

To powiedziawszy, to naprawdę niesamowite być w stanie dostać się do swojej skorupy domu z pracy lub z dala... i dodając fakt, że można używać SFTP nad ten sam port, nie wyobrażam sobie życia bez niego. =)

 1
Author: saint_groceon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 18:26:15

Możesz rozważyć wystąpienie EC2 z Amazon . W ten sposób można łatwo przetestować "rzeczy" bez mieszania z produkcją. I płać tylko za przestrzeń, czas i przepustowość, z której korzystasz.

 1
Author: svrist,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 18:55:40

Jeśli uruchomisz Serwer Linuksowy z domu, zainstaluj ossec na nim, aby uzyskać ładny lekki identyfikator, który działa naprawdę dobrze.

[edytuj]

Na marginesie, upewnij się, że nie naruszasz Zasad dopuszczalnego użytkowania dostawcy usług internetowych i, aby zezwalały one na połączenia przychodzące na standardowych portach. ISP, dla którego pracowałem, miał napisane w ich warunkach, że możesz zostać odłączony dla uruchamiania serwerów przez port 80/25, chyba że jesteś na koncie klasy biznesowej. While we nie blokował aktywnie tych portów (nie dbaliśmy o to, chyba że powodowało to problem) niektórzy dostawcy usług internetowych nie dopuszczają żadnego ruchu na porcie 80 lub 25, więc będziesz musiał użyć alternatywnych portów.
 1
Author: dragonmantank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-12 20:21:47

Jeśli masz zamiar to zrobić, wydaj trochę pieniędzy i przynajmniej kup dedykowany router / firewall z oddzielnym portem DMZ. Będziesz chciał wyłączyć zaporę sieciową z serwera, aby kiedy(nie jeśli!) Twój serwer WWW jest zagrożony, Twoja sieć wewnętrzna nie jest również natychmiast podatna na ataki.

 1
Author: Carl Russmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-15 22:33:40

Istnieje wiele sposobów, aby to zrobić, które będą działać dobrze. Zwykle jsut używać .plik htaccess. Szybka konfiguracja i zabezpieczenie wystarczy . Prawdopodobnie nie jest to najlepsza opcja, ale działa na mnie. Nie chciałbym umieścić moje numery kart kredytowych za nim, ale poza tym nie obchodzi mnie to.

 0
Author: Adam Lerman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 18:12:47

Wow, otwierasz puszkę robaków, jak tylko zaczniesz otwierać cokolwiek do zewnętrznego ruchu. Pamiętaj, że to, co uważasz za eksperymentalny serwer, prawie jak ofiarny Baranek, jest również łatwym wyborem dla osób, które chcą zrobić złe rzeczy z Twoją siecią i zasobami.

Twoje podejście do zewnętrznego serwera powinno być bardzo ostrożne i dokładne. Zaczyna się od prostych rzeczy, takich jak Zasady zapory, obejmuje podstawowy system operacyjny (utrzymując go załatane, konfigurowanie go pod kątem bezpieczeństwa itp.) i obejmuje każdą warstwę każdego stosu, którego będziesz używać. Obawiam się, że nie ma prostej odpowiedzi ani przepisu.

Jeśli chcesz eksperymentować, zrobisz o wiele lepiej, aby utrzymać serwer prywatny i używać VPN, jeśli chcesz pracować na nim zdalnie.

 0
Author: Marcel Levy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-07 18:18:36