Bezpiecze ästwo Linuxa i BSD


Mirosław Szot
Karol Przystalski
mss at kozieglowy.one.pl
alidej at flatpla.net
Bezpieczeństwo Linuksa i BSD
od podstaw
http://czlug.icis.pcz.pl/
yródła problemów

luki w oprogramowaniu

lekkomyślność użytkowników i/lub
administratorów

błędy w konfiguracji
Polityka bezpieczeństwa

aktualizacje oprogramowania

regularne backupy

analiza logów

audyt automatyczny i ręczny

bez kompromisów

ª odrobina paranoi nigdy nie boliº
SkÄ…d intruz czerpie informacje

skanowanie portów (powolne i rozproszone)

fingerprinting

bugtraq

social engineering

google ;)
bugtraq i security advisories

http://securityfocus.com/

http://www.cert.org/advisories/

http://cc-team.org/index.php?name=bugtraq

http://www.freebsd.org/security/

http://www.freshports.org/

http://slackware.com/security/

http://www.debian.org/security/
Użytkownicy i grupy
$ id janek
uid=1001(janek) gid=1000(users) grupy=5(tty),7(lp),10(wheel),20(games),
23(audio),24(video),31(console),1000(users)
Fragment pliku /etc/passwd:
janek:x:1001:1000:Jan Kowalski:/home/users/janek:/bin/ksh
Fragment pliku /etc/group:
wheel::10:root,janek
Przykład wykorzystania grup do przydziału uprawnień:
# ls -l /dev/sound/mixer
crw-rw---- 1 root audio 14, 0 2005-03-15 08:15 mixer
Przydatne polecenia:
usermod(8), vipw(8), vigr(8), pwck(1) -- Linux
pw(8), vipw(8), chpass(8) -- FreeBSD
Administrator root
Dlaczego nie powinno się pracować jako użytkownik root:
# rm -rf / smieci/*
drobne przeoczenie
Ograniczanie su(1) z użyciem PAM(8), fragment /etc/pam.d/su:
auth required pam_wheel.so group=wheel
Sposób na podział zadań administratora:
sudo(8), visudo(8), sudoers(5)
PermitRootLogin no w openssh
Uprawnienia plików i katalogów
właściciel (user) grupa (group)
inni (other)
r = 4
7777
suid = 4000 w = 2
sgid = 2000 x = 1
rwx rwx rwx
sticky = 1000
crw-rw---- 1 root audio 14, 0 2005-03-15 08:15 /dev/sound/mixer -- 0660
-rwsr-xr-x 1 root root 27332 2004-10-23 13:28 /usr/bin/passwd -- 4755
drwxrwxrwt 8 root root 351 2005-03-15 12:37 /tmp -- 1777
Przydatne polecenia:
chown(1), chgrp(1), chmod(1) -- Linux
chown(8), chgrp(1), chmod(1) -- FreeBSD
Programy suid/sgid

Program suid uruchomiony działa z uprawnieniami właściciela pliku
wykonywanego.

Luka w programie suid-root może być wykorzystana do uzyskania
uprawnień administratora.
Tak możemy znalezć wszystkie programy suid/sgid:
# find / -perm +6000 -type f
A tak - po zastanowieniu - możemy zrezygnować z suid:
# ls -l /bin/mount
-rwsr-xr-x 1 root root 72520 2005-01-08 15:54 /bin/mount
# chmod -s /bin/mount
umask
domyślne uprawnienia
umask wybrany przez użytkownika
wybierane przez open(2)
dla nowych plików
0666 & ~022 = 0644 = rw-r--r--
uprawnienia nowego pliku
$ umask 022
$ touch plik1; ls -l plik1
-rw-r--r-- 1 janek users 0 2005-03-15 12:41 plik1
$ umask 000
$ touch plik2; ls -l plik2
-rw-rw-rw- 1 janek users 0 2005-03-15 12:41 plik2
$ umask 077
$ touch plik3; ls -l plik3
-rw------- 1 janek users 0 2005-03-15 12:42 plik3
Atrybuty plików
Linux (ext2/ext3)
FreeBSD

schg, uchg i Ä… immutable

sappnd, uappnd a Ä… append only
# chattr +i /boot/vmlinuz

sunlnk, uunlnk # chattr -i /boot/vmlinuz
chattr(1), lsattr(1), lcap(8)
# chflags schg /boot/kernel/* /boot/kernel
# touch /boot/kernel/kernel
touch: /boot/kernel/kernel: Operation not permitted
# ls -lo /boot/kernel/kernel
-r-xr-xr-x 1 root wheel schg 3,6M 10 Gru 17:10 /boot/kernel/kernel*
# chflags noschg /boot/kernel/* /boot/kernel
Poziomy bezpieczeństwa FreeBSD

-1 ą insecure ą domyślnie po instalacji

0 ą zmieniany na 1 po wejściu w tryb wielu użytkowników

1 ą zakaz ładowania/usuwania modułów, zakaz zmian znaczników plików,
zakaz bezpośredniego zapisu do pamięci (/dev/mem) i zamontowanych
dysków.

2 ą zakaz bezpośredniego zapisu do niezamontowanych dysków, zakaz
zmiany czasu więcej niż o 1 sekundę

3 ą tryb sieciowy ą zakaz zmian reguł filtrów IPFW i IPFilter
Przykład wykorzystania
# sysctl -a | grep securelevel
kern.securelevel: 1
# chflags noschg /boot/kernel/kernel
chflags: /boot/kernel/kernel: Operation not permitted
# sysctl kern.securelevel=-1
kern.securelevel: 1
sysctl: kern.securelevel: Operation not permitted
Wady:

nie wolno pominąć żadnego z plików uruchamianych przy starcie!!

zarządzanie jest uciążliwe

na poziomie 3 nie można przerwać aktywnego ataku przez dodanie
reguły do firewalla
Access Control Lists

Zapewniają bardziej szczegółową kontrolę uprawnień plikowych

Nie ograniczajÄ… konta root!

Samba z obsługą ACL pozwala na ich edycję z poziomu systemu
Windows
Uaktywnienie ACL w systemie FreeBSD (tryb single-user):
# /sbin/tunefs -a enable /home
Uaktywnienie przez edycjÄ™ /etc/fstab:
/dev/ad0s1g /home ufs rw,nosuid,nodev,acls 1 2
Wykorzystanie ACL
Chcemy lepiej zabezpieczyć katalogi użytkowników posiadających strony
/home# chmod og-rwx janek/
/home# setfacl -m u:www:x janek/
/home# ls -ldo janek/
drwx--x---+ 2 janek users - 1,5K 15 Mar 19:00 janek/
/home# getfacl janek
#file:janek
#owner: 1001
#group: 1000
user::rwx
user:www:--x
group::---
mask::--x
other::---
/home# id rysio
uid=1009(rysio) gid=1000(users) groups=1000(users)
/home# sudo -u rysio ls -l janek/public_html/index.html
ls: janek/public_html/index.html: Permission denied
/home# sudo -u www ls -l janek/public_html/index.html
-rw-r--r-- 1 janek users 2012 11 Mar 13:12 janek/public_html/index.html
Demony samodzielne

w Slackware (/etc/rc.d/*) kontrolowane przez
atrybut +x

/etc/rc[0-6].d z System V kontrolowane przez
chkconfig (redhat, pld), update-rc.d (debian)

/etc/rc.conf.* w BSD
Przykład użycia
Należy wyłączyć niepotrzebne usług lub je odinstalować
# chkconfig --list httpd
httpd 0:nie 1:nie 2:nie 3:tak 4:tak 5:tak 6:nie
# chkconfig --del httpd
# chkconfig --list httpd
httpd 0:nie 1:nie 2:nie 3:nie 4:nie 5:nie 6:nie
chkconfig(8)
Narzędzia debiana: update-rc.d(8), invoke-rc.d(8), rcconf
Zapracowany root i nobody

należy ograniczyć liczbe demonów działających
na prawach root i nobody

usługi powinne mieć przydzielonych
użytkowników o minimalnych przywilejach

do poszukiwań można wykorzystać lastcomm(1)
i sa(8) z BSD System Accounting
super-serwer inetd

pozwala na Å‚atwÄ…, zcentraliziowanÄ… kontrolÄ™
drobnych usług

sam inetd nie jest niebezpieczny
może być user.group
stream, dgram, raw...
pełna ścieżka do demona
pop3 stream tcp nowait root /usr/sbin/spop3d spop3d -f /etc/spop3d.conf
argv[]
przy dgram np. wait.40
nazwa usługi z pliku /etc/services
TCP Wrappers

pośredniczy w komunikacji między inetd a
serwerem

może byc wykorzystany w samodzielnych
demonach za pomocÄ… biblioteki libwrap

pozwala na szczegółową kontrolę dostępu za
pomocą prostych reguł
tcpd lub libwrap
W Linuksie musimy jawnie użyć pośrednika tcpd:
comsat dgram udp wait root /usr/sbin/tcpd in.comsat
Przykładowa konfiguracja demona w FreeBSD:
comsat dgram udp wait tty:tty /usr/libexec/comsat comsat
We FreeBSD inetd został połączony z bilioteka libwrap:
# ldd /usr/sbin/inetd | grep wrap
libwrap.so.3 => /usr/lib/libwrap.so.3 (0x2808d000)
Uwaga: zależnie od dystrybucji z tą biblioteką może być połączony
demon sshd.
Konfiguracja w Linuksie
hosts.allow
ALL : localhost 127.0.0.1 [::1]
vsftpd: ALL EXCEPT 192.168.1.15
sshd : ALL
fingerd : 192.168.1.
auth : ALL
hosts.deny
vsftpd : ALL : (/usr/sbin/safe_finger -l @%h | /usr/bin/mail -s %d-%h root) &
ALL : ALL
hosts_access(5)
Konfiguracja w FreeBSD
FreeBSD używa tylko jednego pliku - hosts.allow
ALL : PARANOID : RFC931 20 : deny
ALL : localhost 127.0.0.1 [::1] : allow
vsftpd: ALL : allow
sshd : ALL : allow
comsat : 127.0.0.1 : allow
fingerd : 192.168.1. : allow
auth : ALL : allow
fingerd : ALL \
: spawn (echo Finger. | \
/usr/bin/mail -s "tcpd\: %u@%h[%a] fingered me!" root) & \
: deny
ALL : ALL : severity auth.info \
: twist /bin/echo "You are not welcome to use %d from %h."
hosts_access(5)
jak testować?
tcpdcheck(8) sprawdza poprawność plików konfiguracyjnych
a tcpdmatch(8) pozwala przetestować reguły
# tcpdmatch auth@1.2.3.4 rysio@jego-domena.pl
client: hostname jego-domena.pl
client: address 2.3.4.5
client: username rysio
server: hostname serwer.moja-domena.pl
server: address 1.2.3.4
server: process auth
matched: /etc/hosts.allow line 5
option: allow
access: granted
xinetd - ulepszony inetd

kontrola dostępu bez użycia tcpwrappers

kontrola logowania

reguły przekazywania

kontrola dostępu na podstawie czasu,
obciążenia, itp.

i dużo więcej
konfiguracja xinetd.conf
service ftp
{
socket_type = stream
protocol = tcp
flags = NOLIBWRAP
disable = no
port = 21
user = root
server = /usr/sbin/vsftpd
wait = no
nice = 10
only_from = 192.168.1. 127.0.0.1
no_access = 192.168.1.15
access_times = 7:00-19:00
log_type = SYSLOG local3 notice
instances = 15
log_on_success = USERID DURATION TRAFFIC
bind = 192.168.1.1
load = 2.5
}
Niepotrzebne usługi

sendmail

nfs, rpc: portmap, statd, idmapd

telnetd

rzadko używane usługi z inetd.conf: tftpd, time,
finger, talkd, chargen, echo, itp.

r-użytki (rsh, rcp...)
Zabezpieczanie X Window System
Jeżeli nie korzystamy z sieciowych funkcji Xów możemy wyłączyć
nasłuch tcp:
alias x=©startx -- -nolisten tcp &©
Można też przekazać parametry do używanego X Display Managera:
# cat /usr/lib/X11/xdm/Xservers
:0 local /usr/X11R6/bin/X vt9 -nolisten tcp
Pomocne narzędzia
netstat Ä… informacje zwiÄ…zane z siecia
t Ä… tcp, u Ä… udp, w - raw
# netstat -tnelp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:8010 0.0.0.0:* LISTEN 1001 14999 6768/psi
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 0 2348 1403/xinetd
...
# netstat --unix -p
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ] DGRAM 1696 808/udevd @udevd
unix 3 [ ] STREAM CONNECTED 16545 6748/Xwrapper /tmp/.X11-unix/X0
unix 3 [ ] STREAM CONNECTED 16544 7141/rxvt
...
# fuser -uvn tcp 8010
UŻYTKOWNIK PID DOSTP POLECENIE
8010/tcp janek 6768 f.... psi
fuser(1), netstat(8)
Narzędzia w FreeBSD
FreeBSD dysponuje sporą liczbą narzędzi posiadających bardzo dużo
ciekawych opcji:

netstat ą potężne narzędzie ;)

sockstat Ä… informacje otwartych gniazdkach

fstat Ä… informacje o otwartych plikach
# sockstat -4l -p 60-80
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
dhcpd dhcpd 28450 5 udp4 192.168.1.1:67 *:*
www httpd 21151 3 tcp46 *:80 *:*
www httpd 21140 3 tcp46 *:80 *:*
root httpd 20579 3 tcp46 *:80 *:*
Inne

lsof(8) ą lista otwartych plików

sa(8) i lastcomm(1) Ä… rozliczanie systemowe

nessus

nmap
Monitoring i audyt

kontrola integralności plików (integrit, tripwire,
aide)

John the ripper ą lepiej znajdzmy złe hasła
zanim znajdzie je intruz

analiza logów ą swatch, logcheck lub własne
rozwiÄ…zania w Perlu

snort, prelude Ä… Intrusion Detection System
Bind DNS

ograniczyć rekurencyjne zapytania do autoryzowanych
hostów (np. tylko z LAN)

zezwolić na transfery stref tylko z serwerów podrzędnych

zadbać o konfiguracje serwerów podrzędnych

zabezpieczyć dynamiczne aktualizacje

zabezpieczyć klasę CHAOS za pomocą widoków

TSIG i DNSSEC
# dig @ns1.twoja-domena.pl txt chaos version.BIND
# dig @ns1.twoja-domena.pl txt chaos authors.BIND
Apache httpd

wyłączyć wszystkie zbędne i nieużywane moduły

ukryć wersje za pomoca ServerTokens i ServerSignature

ograniczyć automatyczne indeksowanie do śledzonych
przez nas katalogów

ograniczyć lub wyłączyć konfigurację na poziomie
plików .htaccess

zabezpieczyć się przed zle skonfigurowanymi klientami
SSL za pomocÄ… SSLRequireSSL
Gdy musimy zezwolić

SymlinksIfOwnerMatch zamiast FollowSymLinks

IncludesNOEXEC zamiast Includes

Ostrożnie z AllowOverride

Zabezpieczyć CGI i SSI za pomocą suEXEC

Pliki z hasłami tylko poza katalogami serwowanymi
PHP

php_admin_flag i php_admin_value

engine = On tylko dla potrzebujÄ…cych

safe_mode = On

expose_php = Off

display_errors = Off i log_errors = On

register_globals = Off

file_uploads = Off

allow_url_fopen = Off

disable_functions = system,exec,passthru,popen,phpinfo,ini_set
Åšciany ogniowe w warstwie sieci
w Linuxie

netfilter/iptables
w *BSD
także dla Linux

ipfw

ipfilter - http://coombs.anu.edu.au/~avalon/

pf Ä… ulepszony ipfilter dla OpenBSD
Serwery proxy

Squid
http://www.squid-cache.org/
http://www.privoxy.org/

Privoxy
http://dnrd.nevalabs.org/
http://www.mcknight.de/jftpgw

DNRD

Jftpgw

mod_proxy (moduł apache)
Iptables ą Zasada działania
Ruch
przychodzÄ…cy
[Decyzja rutingu] FORWARD WychodzÄ…cy
INPUT
OUTPUT
Proces lokalny
Stateful inspection

Śledzi i zapamiętuje sesje

Zapobiega spoofingowi

Defragmentuje pakiety

Może działać również z UDP i ICMP
Åšciana ogniowa dla stacji roboczej
insmod ip_conntrack
insmod ip_conntrack_ftp
iptables -N access
iptables -A access -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A access -m state --state NEW -i ! eth0 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -j access
iptables -A FORWARD -j access
http://lukasz.bromirski.net/docs/translations/linux24-pf.html
Do czego nie służy firewall?
Firewall nie służy jako zabezpieczenie z
zewnÄ…trz.
FunkcjÄ… firewalla jest przede wszystkim
filtracja pakietów.
Przed czym nie chroni nas firewall?

Sniffing

Ataki typu DoS

Ataki typu Man in the middle

hijacking

Dziury (exploity)
Wykrywanie skanowania

scanlogd

Portsentry

Scan-detector

icmpinfo
http://www.psionic.com/tools/
ftp://coast.cs.purdue.edu/pub/COAST/tools/
ftp://hplyot.obspm.fr/net/
Metody skanowania

Ping scanning

TCP connect() scan

TCP SYN scan

TCP FIN scan

FTP bounce attack

UDP scan

ACK scan

IP.ID scan
Wady i zalety Portsentry
Zalety:

Wykrywa skanowanie

Zapobiega dalszemu skanowaniu
Wady:

Nie zapobiega atakom
Wykryj dziury zanim ktoÅ› zrobi to
za Ciebie ;)
Skanery:

SAINT (Security Administrator©s Integrated Network Tool )

ISS (Internet Security Scanner)

Nessus

Nmap (the Network Scanner)
http://www.wwdsi.com/saint
http://iss.net/
http://www.nessus.org/
http://www.insecure.org/nmap
Security by obscurity ;)

Ignorowanie pingów

Ignorowanie skanowania portów

Close Source-Software

Hasła :)
Wady

reverse-engineering

rezygnacja z funkcjonalności
Fingerprinting ą jak to działa?
Metody:

Passive fingerprinting

Active fingerprinting
Pola według których identyfikujemy system:

Window

TTL (Time To Live)

DF (Don©t fragmentation bit)

TOS (Type Of Service)
Fingerprinting - ochrona

The Kernel OS faker

Portsentry
http://www.hit2000.org/kosf/
http://www.psionic.com/abacus/portsentry
p0f Ä… Teraz Polska
Wykrywanie maskarady:
# p0f -M -i eth0
lub dodając kilka opcji można też tak:
# p0f -Mlp -i eth0
A tak uruchamiamy p0f jako demona:
# p0f -i eth0 -o /var/log/p0f.log -qdMF \
ªnot dst port ( 135 or 137 or 139 or 445 )º
Public Key Infrastructure

Urzędy certyfikujące (Certification Authority)

Urzędy rejestracyjne (Registration Authority)

Subskrybenci certyfikatów

Oprogramowanie
Zasada działania dwóch kluczy.
1. Osoba A generuje swój klucz publiczny i wysyła go do osoby B.
2. Osoba B wysyła zaszyfrowaną wiadomość M oraz zaszyfrowaną
wartość C do osoby A.
3. Osoba A mając wartość C odszyfrowywuje wiadomość
wykorzystujÄ…c klucz prywatny.
Co zawiera certyfikat?

Podpisany klucz publiczny

Nazwa (nazwa firm, osoby, komputera)

Termin ważności

URL
http://openssl.org/
Zasada działania
Secure Sockets Layer

Ustanawianie parametrów sesji

Klient wysyła żądanie do serwera

Serwer wysyła proponowane parametry

Klient odsyła odpowiedz

Ustanawianie klucza sesyjnego

Serwer wysyła swój certyfikat

Klient weryfikuje autentyczność certyfikatu

Klient wydobywa klucz publiczny serwera

Klient generuje losową wartość i tworzy z niej pojedyńczą, dużą
liczbÄ™
Zasada działania SSL cd.

Klient szyfruje losowÄ… liczbÄ™ kluczem publicznym serwera

Klient wysyła wysyła zaszyfrowaną liczbę

Serwer używając swojego klucza prywatnego (RSA)
odszyfrowuje liczbÄ™ wygenerowanÄ… przez klienta

Zaszyfrowana losowa liczba jest używana do niezależnego
generowania tajnych kluczy sesji (RC4)

Serwer uwierzytelnia się wobec klienta, udowiadniając, że
wygenerował identyczny tajny klucz
Zasada działania SSL cd.

Szyfrowana sesja

Komunikacja klient-serwer przy użyciu tajnego
klucza RC4
Pułapki SSL

Wirusy, trojany, spyware (w Linuksie :D)

Ataki typu Man in the Middle
Osoba B
Osoba A Osoba C (?)
Pretty Good Privacy na przykładzie
GNU Privacy Guard
Otwarty zamiennik PGP rozwijany przez Free
Software Foundation i wspierany przez rzÄ…d
niemiecki.
Używany algorytm szyfrowania to obecnie
przede wszystkim AES.
http://www.gnupg.org/
GPG w praktyce
Generujemy swojÄ… parÄ™ kluczy.
gpg Ä…gen-key
(1) DSA and ElGamel (default)
Wybieramy typ klucza.
Wybieramy długość klucza. What keysize do you want? (1024)
Wybieramy kiedy klucz ma
Key is valid for ? (0)
wygasnąć.
Is this correct?
Podajemy identyfikator klucza.
Podajemy hasło do klucza
prywatnego.
Pozostałe bezpieczne protkoły

SSL (Secure Sockets Layer)

TLS (Transport Layer Security)

SASL (Simple Authentication and Security
Layer)

SSH (Secure Socket Shell)
Szyfrowane systemy plików

Ncryptfs

Avfs

Cryptoloop

vnd (OpenBSD)

EFS

StegFS
http://www.filesystems.org/
co dalej?

chroot, jail, user-mode Linux

stackguard, openwall, grsecurity, libsafe

NSA SELinux, TrustedBSD MAC Framework

rexec i CerbNG


Wyszukiwarka

Podobne podstrony:
www accord6gen cba pl honda accord 6 generacji bezpiecze stwo w hondzie accord
Bezpieceństwo militarne Polski
Administracja bezpieczenstwa st
Dobór bezpieczników topikowych
Zagrożenia bezpieczeństa informacji
Bezpieczeństwo państwa instytucje bezpieczeństwa
Budowa Linuxa rfc1350
Dz U 00 40 470 bezpieczeństwo i higiena pracy przy pracach spawalniczych
08 Bezpieczeństwo elektrowni jądrowych
Prowadzenie szkoleń z zakresu bezpieczeństwa i higieny pracy
Część 4 Bezpieczeństwo pojazdu
Kryptografia a bezpieczeństwo danych
dobor bezpiecznikow

więcej podobnych podstron