Artykuł ten przedstawia kilka prostych feature'ów, jakie
posiada FreeBSD, a które mogą się przydać podczas codziennego
administrowania tym systemem. Jak powiększyć pamieć SWAP, jak zabezpieczyć tryb
single-user, jak ukryć procesy przed wścibskimi użytkownikami, jak ograniczyć dostęp do systemowego demona cron itp. - tego właśnie
(i nie tylko) dowiesz się czytając ten artykuł.
single-user
W FreeBSD w domyślnej konfiguracji tryb single-user nie jest w żaden sposób zabezpieczony. Co prawda z linii poleceń tylko root może
maszynę wprowadzić w ten stan, ale podczas bootowania może zrobić to każdy. No i co z tego ? No niby nic, ale wszystko zależy od tego jak bardzo mamy dowcipnych kolegów ;-). Lepiej tryb ten udostępniać tylko osobą upoważnionym. Więc wystarczy wprowadzić drobne zmiany w pliku
/etc/ttys:
# If console is marked "insecure", then init will ask for the
# root password when going to single-user mode.
console none unknown off secure |
czyli zgodnie z zaleceniami zmieniamy na:
console none unknown off insecure |
Teraz za każdym razem, podczas bootowania systemu lub przechodzenia z linii poleceń w tryb pojedynczego użytkownika, zostaniemy poproszeni o hasło osoby
zarządzającej tym folwarkiem :-).
Kernel / INCLUDE_CONFIG_FILE
Własny plik konfiguracyjny kernela zawiera opcje z pliku GENERIC jak i te wyłuskiwane z anielską cierpliwością z pliku
NOTES (aka LINT). Przeważnie taki optymalny plik dla maszyny nie powstaje jednego wieczoru jest on na bieżąco modyfikowany, aby był optymalny dla konkretnego zastosowania, dlatego nie można sobie pozwolić na jego przypadkową utratę. W
hanbook'u zaleca się umieszczenie w innym miejscu tego pliku i stworzenie dowiązania symbolicznego do właściwej lokalizacji. Sposób dobry, ale nie jedyny. Można ten plik również osadzić w samym kernelu. Wystarczy stworzyć sobie kernel z opcją:
# This allows you to actually store this configuration file into
# the kernel binary itself, where it may be later read by saying:
# strings -n 3 /boot/kernel/kernel | sed -n 's/^___//p' > MYKERNEL
#
options INCLUDE_CONFIG_FILE # Include this file in kernel |
Szczegóły strings(1),
sed(1).
Ktoś pukał ?
Wszelkie próby dostępu te udane jak i nie udane do usług udostępnianych na serwerze są skrzętnie odnotowywane w logach a co z portami na których nie nasłuchuje żaden demon ... przeważnie są wyłapywane przez firewall :-). Dodatkowo jednak możemy sobie zażyczyć, aby kernel informował nas o takich próbach. Wystarczy ustawić kilka parametrów dla kernela:
root@FreeBSD:~# sysctl net.inet.tcp.log_in_vain=1
net.inet.tcp.log_in_vain: 0 -> 1
root@FreeBSD:~# sysctl net.inet.udp.log_in_vain=1
net.inet.udp.log_in_vain: 0 -> 1
Domyślnie komunikaty te lądują do /var/log/messages:
... kernel: Connection attempt to TCP 192.168.10.1:12345 from 192.168.10.2:1025
... kernel: Connection attempt to UDP 192.168.10.1:5428 from 192.168.10.2:5428
... last message repeated 31 times
Jeśli jesteśmy pewni, że chcemy być informowani o tego typu zdarzeniach wystarczy zadbać o to, aby możliwość taka aktywowała się już podczas procedury startowej systemu. Wykorzystując do tego
/etc/sysctl.conf lub /etc/rc.conf ze zmienną 'log_in_vain':
root@FreeBSD:~# cat >> /etc/rc.conf
log_in_vain="YES"
^D
Lock
Do chwilowej lub permanentnej blokady konta możemy wykorzystać na przykład standardowy 'pw':
root@FreeBSD:~# pw lock kaczy
odblokowanie:
root@FreeBSD:~# pw unlock kaczy
Szczegóły
pw(8).
nologin
Jeśli chcemy chwilowo zabronić logowania do systemu to wystarczy stworzyć plik 'nologin':
root@FreeBSD:~# cat > /var/run/nologin
Aktualizacja systemu zapraszamy jutro
System w tej sytuacji nie zezwoli na nowe sesje interaktywne (ssh, scp, sftp, telnet, ftp) wyświetlając jednocześnie zawartość pliku
nologin w którym z grzeczności powinien być podany powód, ustrzeże to nas przed niepotrzebnymi sesjami telefonicznymi z użytkownikami :-).
Uchylenie tego zakazu to usunięcie pliku nologin:
root@FreeBSD:~# rm /var/run/nologin
Ograniczenie to nie dotyczy root'a.
Jeśli potrzebujemy większej chwili samotności to oczywiście:
root@FreeBSD:~# shutdow now
Szczegóły nologin(8),
shutdown(8).
Ukrywanie procesów
Jeśli chcemy, aby użytkownicy systemu nie widzieli procesów swoich współużytkowników to w FreeBSD 5.x wystarczy ustawić:
root@FreeBSD:~# sysctl security.bsd.see_other_uids=0
Na stałe wpis ten można wprowadzić w:
root@FreeBSD:~# cat >> /etc/sysctl.conf
security.bsd.see_other_uids=0
^D
Ograniczenie to nie dotyczy użytkownika root.
Szczegóły sysctl(8),
sysctl.conf(5).
Swap file
Jeśli w logach pojawią się tego typu komunikaty:
... kernel: swap_pager_getswapspace: failed
... kernel: pid 20683 (htnotify), uid 0, was killed: out of swap space
... kernel: pid 7062 (httpd), uid 80, was killed: out of swap space
to pierwszym środkiem zaradczym jest powiększenie dostępnej pamięci swap. Można tą operację przeprowadzić na kilka sposobów, ale najwygodniejszym wydaje się skorzystanie z 'swap file' czyli swap w pliku.
Tworzymy sobie odpowiedniej wielkości 'swap file' (w tym przypadku 128MB):
root@FreeBSD:~# dd if=/dev/zero of=/usr/swap0 bs=1024k count=128
root@FreeBSD:~# chmod 0600 /usr/swap0
Dokonujemy wpisu w /etc/rc.conf, aby dodatkowy swap automatycznie aktywował się podczas "wstawania" FreeBSD:
root@FreeBSD:~# cat >> /etc/rc.conf
swapfile="/usr/swap0"
^D
No i najważniejsza rzecz, upewniamy się czy w naszym konfigu do kernela figuruje wpis:
device md # Memory "disks" |
jeśli nie to dodajemy i rekompilujemy kernel. Po reboocie dodatkowy swap powinien już być dostępny. Jeśli już wcześniej mieliśmy wpis dotyczący
'md' w konfigu to reboot jest zbyteczny wystarczy swap aktywować "z palca":
root@FreeBSD:~# mdconfig -a -t vnode -f /usr/swap0 -u 0
root@FreeBSD:~# swapon /dev/md0
root@FreeBSD:~# swapinfo
Device 1K-blocks Used Avail Capacity Type
/dev/ad0s1b 131072 0 131072 0%
Interleaved
/dev/md0 131072 0 131072 0% Interleaved
Total 262144 0 262144 0%
Tak to powinno odbyć się na FreeBSD 5.X.
Szczegóły md(4),
mdconfig(8),
swapon(8),
swapoff(8),
swapinfo(8).
Vixie Cron
Do systemowego demona cron defaultowo mają dostęp wszyscy użytkownicy, jeśli ten stan rzeczy nam nie odpowiada wystarczy stworzyć plik z loginami upoważnionych użytkowników:
root@FreeBSD:~# cat > /var/cron/allow
root
otp
^D
root@FreeBSD:~# chmod 640 /var/cron/allow /etc/crontab
Reszta userów będzie zbywana komunikatem:
kaczy@FreeBSD:~% crontab -e
crontab: you (kaczy) are not allowed to use this program
Szczegóły cron(8),
crontab(1).
Autor: KaCzY
kaczy(at)xl.wp.pl
Oryginał tego artykułu znajduje się pod adresem
http://www.freebsd.friko.pl/ShowMe.php?txt=Tips Tylko zarejestrowani użytkownicy mogą pisać komentarze. Prosze zaloguj się i dodaj komentarz. Powered by AkoComment! |