#include <stdlib.h>
#include <unistd.h>
int main()
{
while(1)
fork();
}
To jest kod bomby widelcowej.
W naszej szkole łączymy się przez telnet, tj. Protokół obsługujący klienta. Około 100 systemów jest podłączonych do serwera. Nagle serwer spowolnił się i po pewnym czasie zawiesił się. Dowiedziałem się, że sombody zaimplementowało bombę widełkową.
Jak możemy wykryć, w którym systemie jest zaimplementowana bomba widełkowa? I jak możemy to zatrzymać?
Jedną z metod jest ograniczenie maksymalnej liczby procesów, które może posiadać pojedynczy użytkownik. Czy jest jakiś sposób, aby go zatrzymać i dowiedzieć się, z którego systemu został zaimplementowany?
c
process
operating-systems
telnet
Rajesh M.
źródło
źródło
Odpowiedzi:
Jednym ze sposobów jest ograniczenie liczby procesów, które użytkownik może uruchomić.
Zaloguj się jako root i edytuj ten plik, aby dodać użytkowników i skonfigurować ich limit.
Dodaj ten wiersz do pliku
Teraz użytkownik John może utworzyć tylko 10 procesów.
źródło
/etc/security/limits.conf
zaczęły obowiązywać.Aby zatrzymać działającą bombę widelcową, możesz być w stanie
killall <name>
zabić wszystkie procesy bomby. Jednak ponieważ bomba widełkowa zwykle powoduje niewiarygodnie duże obciążenie systemu, możesz nie być w stanie SSH do niego włączyć lub wykonać tego. Ponowne uruchomienie może być konieczne lub co najmniej znacznie szybsze.Jeśli każdy użytkownik ma własne konto w systemie, możesz po prostu sprawdzić katalog domowy każdego użytkownika i wyszukać plik wykonywalny. Są duże szanse, że przesłał również kod źródłowy, więc znalezienie go nie powinno być zbyt trudne. Jeśli było to wspólne konto dla wszystkich studentów, nie masz szczęścia. Zwłaszcza po zakończeniu sesji telnet lub ssh użytkownika nie ma szansy dowiedzieć się, kto ją uruchomił.
Jednak zamiast karać użytkownika, który zdetonował bombę widełkową, powinieneś raczej naprawić konfigurację systemu, by rozbroić bombę widełkową. Możesz ustawić limity procesów dla poszczególnych użytkowników,
/etc/security/limits.conf
a tym samym zapobiec wymykaniu się bomby widelcowej - dzięki np. Zaledwie 50 procesom bomba widelca nie wyrządzi dużych szkód.źródło