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 accordBezpieceństwo militarne PolskiAdministracja bezpieczenstwa stDobór bezpieczników topikowychZagrożenia bezpieczeństa informacjiBezpieczeństwo państwa instytucje bezpieczeństwaBudowa Linuxa rfc1350Dz U 00 40 470 bezpieczeństwo i higiena pracy przy pracach spawalniczych08 Bezpieczeństwo elektrowni jądrowychProwadzenie szkoleń z zakresu bezpieczeństwa i higieny pracyCzęść 4 Bezpieczeństwo pojazduKryptografia a bezpieczeństwo danychdobor bezpiecznikowwięcej podobnych podstron