Podczas instalacji instancji mojego serwera wirtualnego wymagam budowy niektórych aplikacji make
. Czy są jakieś zagrożenia bezpieczeństwa związane z make
zainstalowaniem? Czy powinienem to wyczyścić przed wdrożeniem instancji?
Mam również gcc
kompilator na serwerze, którego używam do tworzenia aplikacji przed wdrożeniem.
Odpowiedzi:
Niektórzy twierdzą, że obecność narzędzi programistycznych na maszynie produkcyjnej ułatwi życie atakującemu. Jest to jednak tak niewielka przeszkoda dla atakującego, że każdy inny argument za lub przeciw instalacji narzędzi programistycznych będzie ważył więcej.
Jeśli atakujący był do tej pory w stanie przeniknąć do systemu, aby mógł wywołać dowolne narzędzia znajdujące się na serwerze, oznacza to poważne naruszenie bezpieczeństwa. Bez narzędzi programistycznych istnieje wiele innych sposobów zapisywania danych binarnych do pliku, a następnie uruchomienia chmod na tym pliku. Osoba atakująca, która chce w tym momencie użyć niestandardowego pliku wykonywalnego kompilacji w systemie, może równie dobrze skompilować ją na własnym komputerze i przenieść na serwer.
Należy zwrócić uwagę na inne, bardziej odpowiednie rzeczy. Jeśli zainstalowane oprogramowanie zawiera błąd bezpieczeństwa, istnieje kilka sposobów na ujawnienie go atakującemu:
Nie spodziewałbym się, że narzędzia programistyczne będą pasować do jednego z powyższych i jako taki nie jest pakietem wysokiego ryzyka.
Jeśli masz przepływy pracy, w których korzystasz z narzędzi programistycznych, musisz najpierw zdecydować, czy są to uzasadnione przepływy pracy, a jeśli tak, to zainstaluj narzędzia programistyczne.
Jeśli okaże się, że tak naprawdę nie potrzebujesz tych narzędzi na serwerze, powinieneś powstrzymać się od ich instalowania z wielu powodów:
Jeśli zdecydujesz, że ze względów bezpieczeństwa nie zezwolisz nieuprzywilejowanym użytkownikom na umieszczanie własnych plików wykonywalnych na serwerze, to powinieneś unikać nie narzędzi programistycznych, ale raczej katalogów zapisywalnych dla tych użytkowników w systemach plików zamontowanych z uprawnieniami do wykonywania. Narzędzia programistyczne mogą być nadal przydatne, nawet w takich okolicznościach, ale nie jest to bardzo prawdopodobne.
źródło
gcc
nie chcą przedstawiać wyższego ryzyka niż te. Jak mówisz, osoba atakująca, która jest w stanie korzystać z kompilatorów zainstalowanych w systemie, zazwyczaj jest w stanie robić gorsze rzeczy, na przykład przesyłając własny (prawdopodobnie statycznie powiązany) plik wykonywalny.echo
instrukcji do pliku. Cały proces jest zautomatyzowany za pomocą skryptu znajdującego się w tym samym łączu.make
jest powłoką, która ma inną składnię niżbash
.Kompilator podobny
gcc
do potężnego jestawk
skonfigurowany z zestawem podstawień, których standardawk
nie obsługuje. Jest niezgodny z POSIXsort
lubcat
wprowadza śmieci do wyjścia. Jest to interaktywny edytor tekstowy (pomyślvi
), który jest skonfigurowany do edycji po uruchomieniu, a następnie wyjścia przed wyświetleniem interfejsu użytkownika.Nie ma w nich nic z natury niepewnego, nie powodują, że twoja maszyna jest bardziej niepewna niż ta, w której masz
cat
przekierowanie powłoki bash + +.źródło
make
samo w sobie jest w porządku.make
jest jedynie strukturą śledzenia i automatyzacji zależności. Jest jednak zwykle używany w połączeniu z kompilatorami, a te najlepiej nie powinny być dostępne w systemie produkcyjnym, ponieważ są całkowicie niepotrzebne. To samo dotyczy wszystkich niepotrzebnych pakietów, niezależnie od tego, czy są to biblioteki współużytkowane, tłumacze itp. Oprogramowanie zainstalowane w systemach produkcyjnych powinno być ściśle kontrolowane i powinny być obecne tylko te pakiety, które są wymagane przez aplikację.Powinieneś budować aplikację na serwerze kompilacji, pakować ją, a następnie wdrażać pakiet binarny w systemach produkcyjnych.
Uwaga: natywne narzędzia do pakowania są do kitu . Nawet nie zawracaj sobie głowy próbowaniem ich zetrzeć. Zamiast tego sprawdź Jordan Sissel's
fpm
. Sprawia, że pakowanie jest absolutną radością.źródło
echo
ibase64
. W rzeczywistości możesz to zrobić za pomocą szereguecho
instrukcji i żadnego innego narzędzia .Przeciwnie, potencjalnym problemem nie jest posiadanie
make
na serwerze produkcyjnym, potencjalnym problemem jest budowanie aplikacji na serwerze produkcyjnym zamiast wdrażania przetestowanych, wcześniej zbudowanych obrazów. Być może istnieją uzasadnione powody tej metodologii, ale jest to jedna z nich, z którą zdecydowanie się sprzeczałbym, gdyby ją poproszono.źródło
Pytasz, czy
make
powinien zostać zainstalowany na serwerze produkcyjnym, ale moje prawdziwe pytanie brzmiałoby: kto ma dostęp do tego serwera produkcyjnego i jakie masz zabezpieczenia, aby poradzić sobie z wtargnięciem? Jeślimake
nie został zainstalowany, ale ktoś uzyskałroot
dostęp, zgadnij co? Mogą ręcznie zainstalowaćmake
i cokolwiek chcą.Surowa rzeczywistość związana z bezpieczeństwem komputera polega na tym, że chcesz zapobiec niechcianemu dostępowi, obsesja na punkcie blokowania dostępu nie jest tak ważna, jak:
Wszystko zależy od rodzaju wykonywanej pracy. Pracuję przede wszystkim w świecie serwerów WWW, a moje podejście jest zasadniczo takie, że każdy, kto otrzymuje ode mnie dostęp do serwera produkcyjnego, musi udowodnić swoje umiejętności, wiedzę i dojrzałość. Otóż to. Czasami zajmuje to kilka dni. Czasami zajmuje to miesiące. Ale w zasadzie najlepszą linią bezpieczeństwa na serwerach produkcyjnych jest kontrolowanie dostępu do wielu innych rzeczy, które robimy, aby wzmocnić serwery.
źródło
make
sam w sobie jest nieszkodliwy. Wszystko, co robi, to uruchamianie aplikacji w ustalonej kolejności, w zależności od określonych zależności i plików już istniejących w systemie. Może być nawet przydatny jako część procesu instalacji: możesz go użyć do umieszczenia gotowych plików tam, gdzie są potrzebne, do uruchomienia testów jednostkowych lub innych rzeczy.Musisz jednak rozważyć, do czego dokładnie chcesz go użyć. Jest często używany w połączeniu z kompilatorami i innymi narzędziami do budowania aplikacji, a te mogą być użyte do zanegowania niektórych linii obrony. Ale
make
nie można tego robić, jeśli narzędzia nie są dostępne.źródło