Bezpieczeństwo skryptów administracyjnych

Gaśnica ustawiona przy jasnej ścianie

Skrypt administracyjny ma zwykle pełne uprawnienia do danych. Jeden plik zostawiony w niewłaściwym miejscu wystarcza, żeby oddać do nich dostęp.

Poza katalogiem publicznym

Skrypt dostępny przez przeglądarkę jest dostępny dla każdego, kto zgadnie nazwę. Miejsce narzędzi administracyjnych jest poza katalogiem serwowanym przez serwer.

Zgadywanie nie jest zresztą potrzebne. Nazwy plików trafiają do dzienników serwera, do historii przeglądarki i do automatycznych skanów, które sprawdzają typowe nazwy po kolei. Ochrona polegająca na nietypowej nazwie to nie jest ochrona.

Jeśli narzędzie musi być dostępne przez przeglądarkę, potrzebuje logowania i ograniczenia do znanych adresów sieciowych. Zabezpieczenie samym hasłem w adresie nie wystarcza — adres zostaje w historii i w zakładkach.

Hasła poza kodem

W pliku konfiguracyjnym z ograniczonymi uprawnieniami albo w zmiennych środowiskowych. Dane dostępowe wpisane w kodzie trafiają wszędzie, dokąd trafia kod.

Ten sam plik konfiguracyjny nie powinien być czytelny dla wszystkich kont na serwerze. Warto też rozdzielić dostępy: inne dane do środowiska testowego, inne do produkcyjnego. Wspólne hasło oznacza, że każdy, kto pracuje na kopii testowej, ma dostęp do danych rzeczywistych.

Uprawnienia minimalne

Skrypt odczytujący dane nie potrzebuje prawa zapisu. Osobne konto bazy dla zadań odczytowych ogranicza skutki błędu i włamania.

To samo dotyczy systemu plików i konta, z którego skrypt się uruchamia. Narzędzie działające z najwyższymi uprawnieniami zamienia każdą pomyłkę w regule na awarię obejmującą cały serwer, a nie jeden katalog.

Skrypty tymczasowe

Narzędzie wgrane na chwilę do jednorazowej operacji musi zostać usunięte natychmiast po użyciu. Pliki zapomniane w ten sposób są typowym punktem wejścia.

Do tej samej kategorii należą kopie bazy zostawione w katalogu dostępnym z sieci, pliki z eksportem danych i archiwa robione „na wszelki wypadek" przed zmianą. Bywają większym zagrożeniem niż sam skrypt, bo zawierają gotowe dane.

Kopie i repozytorium

Plik konfiguracyjny z hasłami nie należy do repozytorium ani do kopii przekazywanych na zewnątrz. Historia zmian pamięta wszystko, także usunięte hasła.

Jeśli hasło raz tam trafiło, jedynym skutecznym działaniem jest jego zmiana — usunięcie pliku z bieżącej wersji niczego nie cofa. Same kopie zapasowe wymagają przy tym takiej samej ochrony jak dane produkcyjne, bo zawierają dokładnie to samo.

Zapis użycia

Kto i kiedy uruchomił skrypt o wysokich uprawnieniach. Przy wyjaśnianiu nieprawidłowości to jedyne dostępne źródło.

Wpis powinien zawierać nazwę narzędzia, konto, czas i zakres operacji, ale nie same dane. Zasady prowadzenia takich zapisów opisuje tekst o dziennikach zdarzeń i ich przeglądzie. Osobno warto ustalić, kto w firmie ma prawo uruchamiać narzędzia administracyjne — lista krótsza niż lista pracowników działu jest normą, a nie brakiem zaufania.