Jeśli skrypt może połączyć się z dowolnym z tych serwerów, każdy z dostępem do skryptu (lub uprzywilejowanym dostępem do komputera, na którym działa skrypt) może połączyć się z dowolnym z tych serwerów.
Jeśli skrypt musi działać autonomicznie, wszystkie zakłady są wyłączone. Odpowiedź brzmi: nie, nie ma absolutnie bezpiecznego sposobu przechowywania haseł w takim środowisku . Nie ma absolutnie bezpiecznego i praktycznego sposobu robienia czegokolwiek.
Zamiast próbować uniknąć tego, co nieuniknione, powinieneś skupić się na głębokiej obronie .
Oczywiście, po pierwsze, należy odpowiednio chronić hasła . Zazwyczaj oznacza to trzymanie ich w pliku osobnym od skryptu i konfigurowanie restrykcyjnych uprawnień systemu plików . To wszystko, co możesz zrobić na tym froncie, z perspektywy bezpieczeństwa.
Inne środki z pewnością mogą przyczynić się do zaciemnienia procesu. Szyfrowanie haseł sprawi, że atakujący będzie musiał poszukać klucza deszyfrującego. Korzystanie z pewnego rodzaju pamięci chronionej przez system operacyjny ogólnie chroni przed dostępem innych użytkowników do Twojego klucza (więc nie daje przewagi nad uprawnieniami systemu plików, poza tym, że jest trudny do zaatakowania i użycia). Środki te opóźnią atak, ale z pewnością nie zapobiegną atakowi przeciwko zdecydowanemu atakującemu.
Teraz przez chwilę traktujmy hasła jako publiczne . Co możesz zrobić, aby zmniejszyć szkody?
Starym i przetestowanym rozwiązaniem jest ograniczenie możliwości tych poświadczeń. W systemie UNIX dobrym sposobem na to jest skonfigurowanie osobnego użytkownika dla twojego skryptu i ograniczenie możliwości tego użytkownika , zarówno na serwerze dostępowym, jak i dostępnym. Możesz ograniczyć możliwości użytkownika na poziomie SSH , na poziomie powłoki lub ewentualnie za pomocą mechanizmu obowiązkowej kontroli dostępu, takiego jak SELinux .
Można również rozważyć przeniesienie logiki skryptu na serwery . W ten sposób otrzymujesz mniejszy interfejs, który łatwiej kontrolować, a zwłaszcza ...
Monitorować . Zawsze monitoruj dostęp do serwerów. Najlepiej, aby uwierzytelnianie dziennika i komendy były wykonywane tylko w dzienniku dołączającym . Nie zapomnij na przykład monitorować zmian w pliku skryptu auditd
.
Oczywiście wiele z tych mechanizmów nie jest użytecznych, jeśli nie masz kontroli nad serwerami, jak sugeruje twoje pytanie. W takim przypadku radzę skontaktować się z osobami administrującymi serwerami i poinformować ich o skrypcie i potencjalnych pułapkach bezpieczeństwa.