Tag: grsecurity

jak wyłączyć grsecurity

for a in /proc/sys/kernel/grsecurity/chroot_*; do echo 0 > $a; done

Czyli technicznie oznacza to wyłączenie wszystkich opcji (poprzez ustawienie „0”), który status wygląda dziś tak:

audit_chdir:1
audit_ipc:1
audit_mount:1
chroot_caps:1
chroot_deny_chmod:0
chroot_deny_chroot:1
chroot_deny_fchdir:1
chroot_deny_mknod:1
chroot_deny_mount:1
chroot_deny_pivot:1
chroot_deny_shmat:1
chroot_deny_sysctl:1
chroot_deny_unix:1
chroot_enforce_chdir:1
chroot_execlog:1
chroot_findtask:1
chroot_restrict_nice:1
disable_modules:0
dmesg:1
exec_logging:1
fifo_restrictions:1
forkfail_logging:1
grsec_lock:0
linking_restrictions:1
resource_logging:1
signal_logging:1
timechange_logging:1

włączanie

Ponowne włączenie jest bardzo proste, sprowadza się do wykonania polecenia:

sysctl -p

grsecurity

grsecurity nie jest softem samo w sobie, jest to zestaw poprawek i zmian, które służą do zwiększenia bezpieczeństwa maszyny do której jest zdalny dostęp z miejsc o niepotwierdzonym statusie bezpieczeństwa np. logowanie do shell’a.

po co mi to wszystko

Zainstalowanie pakietu poprawek zwiększa bezpieczeństwo systemu i jest kolejnym elementem zabezpieczenia przed atakami zarówno z zewnątrz jaki i z wewnątrz systemu.

  • losowo przydzielane: uid, gid i pid
  • zabezpieczenie /proc przed pokazywaniem właścicieli procesów
  • zabezpieczenie symlinków przed wyścigiem/tmp
  • zabezpiczenie FIFO
  • zabezpieczenie dmesg(8)
  • audyty i alerty mogą logować IP atakującego

Użycie tego zestawu do środowiska w którym używamy chroot’ów pozwala na

  • uniemożliwia wyjście z chroota, nawet rootowi
  • zabezpiecza pamięć używaną przez chrooty
  • uniemożliwia killowanie procesów nie należących do chroota
  • uniemożliwia wykonania z zewnątrz chroota poleceń: ptrace, capget, setpgid, getpgid, getsid
  • brak możliwości przeglądania procesów z poza chroota
  • uniemożliwia mount i remount
  • wyłącza komendę pivot_root
  • zabezpiecza przed podwójnym chrootowaniem
  • wyłącz fchdir poza chrootem
  • inne…

instalacja i konfiguracja

Proces instalacji wygląda dość ciekawie, ponieważ nie polega na „zwykłym” instalowaniu pakietów, tylko na przekompilowaniu kernela wraz z poprawkami grsecurity. W tym celu należy ściągnąć grsecurity, gradm oraz niezmodyfikowane, oficjalne źródło kernela. Ważne jest to aby wybrać wersję dokładnie zgodne ze sobą.

Ze względów bezpieczeństwa (chcemy przecież je zwiększyć) należy po ściągnięciu zweryfikować archiwa za pomocą GPG i dostępnych sygnatur. Proces weryfikacji plików jest dokładnie opisany po angielsku i nie ma sensu go przepisywać.

Następnym krokiem jest nałożenie patcha na źródła kernela i skompilowanie go. Mamy do wybory trzy poziomy od niskiego do wysokiego oraz wybór ręczny dla zaawansowanych użytkowników.

Po skompilowaniu najłatwiej użyć nowego jądra na debianowatych, po prostu poprzez stworzenie deb’a i jego instalację, co również opisane jest na wikibooks.

Oparte na WordPress & Theme by Anders Norén