najlepsza praktyka w zakresie uprawnień dostępu dla użytkowników apache tomcat

22

Mam Linux-a udostępnianego przez różnych programistów. Chcą wdrożyć swoje pliki wojenne w apache tomcat, który znajduje się we wspólnej lokalizacji (/ opt / tomcat).

Ponieważ nie mają dostępu do sudo, muszę zmienić uprawnienia do folderu dla katalogu tomcat.

struktura katalogów /opt/tomcatto -

bin/

conf/

lib/

logs/

temp/

webapps/

work/

Jakie są najlepsze praktyki w powyższej sytuacji - Najbardziej odpowiednie uprawnienia dostępu dla użytkownika? Na razie zmieniłem uprawnienia na 777 na aplikacje internetowe i dzienniki.

Dzięki

Kunal
źródło

Odpowiedzi:

32

Robię to w ten sposób:

Ustawiamy użytkownika tomcat jako właściciela folderu tomcat:

# chown -R tomcat:tomcat /opt/tomcat

Użytkownicy nie mogą modyfikować konfiguracji tomcat:

# chmod -R g+r /opt/tomcat/conf

Użytkownicy mogą modyfikować inne foldery:

# chmod -R g+w /opt/tomcat/logs
# chmod -R g+w /opt/tomcat/temp
# chmod -R g+w /opt/tomcat/webapps
# chmod -R g+w /opt/tomcat/work

Aktywuj bit sticky-bit dla nowych plików, zachowaj zdefiniowane uprawnienia:

# chmod -R g+s /opt/tomcat/conf
# chmod -R g+s /opt/tomcat/logs
# chmod -R g+s /opt/tomcat/temp
# chmod -R g+s /opt/tomcat/webapps
# chmod -R g+s /opt/tomcat/work

Na koniec dodajemy grupę tomcat, której chcemy, aby użytkownicy mogli korzystać z tomcat:

# usermod -a -G tomcat MIUSER
intropedro
źródło
4
Jeśli zrobisz to bez znacznika -a, dodasz użytkownika do grupy tomcat, ale usuniesz MIUSER ze wszystkich innych grup, do których należą (oznacza to, że nie będzie już więcej grupy sudo). Musiałem tylko działać szybko, aby odzyskać moje grupy z konta głównego na jednym z moich serwerów, odzyskując je ze starej sesji, w której nadal trzymałem te grupy. Słowo ostrzeżenia dla innych użytkowników czytających tę odpowiedź.
Axoren,
Dodałem opcję do odpowiedzi. Dzięki
intropedro
Jak uruchomić Tomcat jako użytkownik tomcat? Mój jest uruchamiany jako diamon i od teraz działa jako root.
Stephane
1
Witaj Stephane, W Ubuntu Tomcat wykonuje się z użytkownikiem tomcat i znajduje się w pliku / etc / default / tomcat8 ze zmiennymi TOMCAT8_USER i TOMCAT8_GROUP. W innych linux nie wiem.
intropedro
Czy nie +sustawiono identyfikatora użytkownika / grupy? Strona podręcznika mówi, że +tjest lepka.
bmaupin
13

Non-Tomcat settingsOdcinek howto zabezpieczeń Tomcat dostarcza użytecznych informacji na ten temat. Spójrz tutaj:

Tomcat nie powinien być uruchamiany przez użytkownika root. Utwórz dedykowanego użytkownika dla procesu Tomcat i zapewnij mu minimalne niezbędne uprawnienia dla systemu operacyjnego. Na przykład nie powinno być możliwe zdalne logowanie przy użyciu użytkownika Tomcat.

Uprawnienia do plików powinny być również odpowiednio ograniczone. Biorąc przykład instancji Tomcat w ASF (gdzie automatyczne wdrażanie jest wyłączone, a aplikacje internetowe są wdrażane jako katalogi rozstrzelone), standardowa konfiguracja polega na tym, że wszystkie pliki Tomcat są własnością root z grupą Tomcat, a właściciel ma uprawnienia do odczytu / zapisu , grupa ma tylko odczyt, a świat nie ma uprawnień. Wyjątek stanowią dzienniki, temp i katalog roboczy, które są własnością użytkownika Tomcat, a nie użytkownika root . Oznacza to, że nawet jeśli atakujący naruszy proces Tomcat, nie może zmienić konfiguracji Tomcat, wdrożyć nowych aplikacji internetowych ani modyfikować istniejących aplikacji internetowych. Proces Tomcat działa z umaską 007, aby zachować te uprawnienia.

Jacek
źródło
Zastanawiam się, czy opisane podejście można zastosować nie tylko w Tomcat, ale także w innych usługach (baza danych, odwrotne proxy itp.). Czy uważasz, że jest to wykonalne / mądre?
Paolo
1

Musisz przestrzegać zasady najmniejszych przywilejów . Serwer (prawdopodobnie www-data, ale trzeba to sprawdzić) musi być w stanie odczytać większość plików (powiedzmy wszystko) i zapisać tylko w dziennikach. Programiści mogą pisać tam, gdzie potrzebują. Ustaw lepki bit w katalogach, aby tylko właściciel pliku mógł go usunąć.

W praktyce musisz utworzyć grupę (na przykład webdev) i dodać do niej wszystkich programistów i serwer ( usermod -aG webdev <user>lub w usermod -A webdev <user>zależności od gustu Linuksa). chownwszystkie pliki i katalog dla użytkownika serwera WWW, chmod wszystkie katalogi do 500 i wszystkie pliki do 400 (z wyjątkiem binprzypadków, w których pliki wykonywalne również muszą mieć wartość 500).

Przyznaj uprawnienia /opt/tomcatdo zapisu grupie (byłoby to 570) i ​​ustaw bit lepki, aby mogli usuwać tylko pliki, które są ich własnością (chmod 1570). Przyznaj serwerowi prawo zapisu do dzienników i uprawnienia do odczytu dla programistów (0740 dla folderu, 0640 dla plików, lepki bit prawdopodobnie nie jest konieczny i nigdy nie udzielaj go plikowi, tylko folderom, ponieważ ma inne znaczenie (wykonaj z uprawnieniami właściciela, gdy plik jest wykonywalny)).

Następnie musisz udzielić uprawnień do zapisu (1570) webdevw niektórych katalogach. Będziesz potrzebować trochę prób i błędów tutaj, a to może zależeć od aplikacji. Tymi folderami musi być 1570, a niektóre inne 0500).

Deweloperzy będą musieli przyznać grupie dostęp do odczytu swoich plików, aby serwer mógł je odczytać (to jest 640), a także wykonać katalogi (to jest 750).

Calimo
źródło
1

Myślę, że zaakceptowana odpowiedź @ intropedro jest dobra. Warto zauważyć, że użycie instalatora pakietów może zaoszczędzić wiele problemów - przynajmniej dla Tomcat 7 na Ubuntu apt-get install tomcat7produkuje bardziej „standardowy” zestaw katalogów instalacyjnych:

  • /etc/tomcat7 dla plików konfiguracyjnych
  • /var/lib/tomcat7 dla bibliotek podstawowych oraz
  • /usr/share/tomcat7 dla udostępnionych zasobów.

Wszystkie uprawnienia są skonfigurowane poprawnie z zasadą najmniejszych uprawnień, tak że dodanie użytkowników do grupy tomcat7jest wystarczające, aby umożliwić wdrożenie. Ponadto serwer tomcat jest skonfigurowany jako usługa, którą można uruchamiać i zatrzymywać jak inne (np. sudo service tomcat startLub alternatywnie /etc/init.d/tomcat start). Tomcat uruchamia się automatycznie po ponownym uruchomieniu komputera i pojawia się polecenie „restart”. Jestem pewien, że istnieje równoważny pakiet yum dla użytkowników RHEL / CentOS. (I tak, jest instalator homebrew dla lokalnych instalacji OSX).

Jeśli masz problemy, w przyjemnym narzędziu o /usr/share/binnazwie configtest.shraporty, jeśli są uprawnienia lub inne błędy. Uwaga: istnieje otwarty błąd, który sugeruje dodanie niektórych dowiązań symbolicznych .

Nadal działamy Ubuntu trusty(14.04); dla tych z nowszymi wersjami uważam, że istnieje repozytorium apt-get Tomcat 8.

Tom Harrison Jr
źródło