•
Kup książkę
•
Poleć książkę
•
Oceń książkę
•
Księgarnia internetowa
•
Lubię to! » Nasza społeczność
:V]HONLHSUDZD]DVWU]HĪRQH1LHDXWRU\]RZDQHUR]SRZV]HFKQLDQLHFDáRĞFL
OXEIUDJPHQWXQLQLHMV]HMSXEOLNDFMLZMDNLHMNROZLHNSRVWDFLMHVW]DEURQLRQH
:\NRQ\ZDQLHNRSLLPHWRGąNVHURJUDILF]QąIRWRJUDILF]QąDWDNĪHNRSLRZDQLH
NVLąĪNLQDQRĞQLNXILOPRZ\PPDJQHW\F]Q\POXELQQ\PSRZRGXMHQDUXV]HQLH
SUDZDXWRUVNLFKQLQLHMV]HMSXEOLNDFML
:V]\VWNLH]QDNLZ\VWĊSXMąFHZWHNĞFLHVą]DVWU]HĪRQ\PL]QDNDPLILUPRZ\PL
EąGĨWRZDURZ\PLLFKZáDĞFLFLHOL
$XWRURUD]:\GDZQLFWZR+(/,21GRáRĪ\OLZV]HONLFKVWDUDĔE\]DZDUWH
ZWHMNVLąĪFHLQIRUPDFMHE\á\NRPSOHWQHLU]HWHOQH1LHELRUąMHGQDNĪDGQHM
RGSRZLHG]LDOQRĞFLDQL]DLFKZ\NRU]\VWDQLHDQL]D]ZLą]DQH]W\PHZHQWXDOQH
QDUXV]HQLHSUDZSDWHQWRZ\FKOXEDXWRUVNLFK$XWRURUD]:\GDZQLFWZR+(/,21
QLHSRQRV]ąUyZQLHĪĪDGQHMRGSRZLHG]LDOQRĞFL]DHZHQWXDOQHV]NRG\Z\QLNáH
]Z\NRU]\VWDQLDLQIRUPDFML]DZDUW\FKZNVLąĪFH
$XWRU]\/HV]HN.ĊSD3DZHá7RPDVLN6HEDVWLDQ'REU]\ĔVNL
5HGDNWRUSURZDG]ąF\%DUEDUD*DQFDU]:yMFLFND
3URMHNWRNáDGNL-DQ3DOXFK
)RWRJUDILDQDRNáDGFH]RVWDáDZ\NRU]\VWDQD]D]JRGą6KXWWHUVWRFN
:\GDZQLFWZR+(/,21
XO.RĞFLXV]NLF*/,:,&(
WHO
HPDLORQHSUHVV#RQHSUHVVSO
:::KWWSRQHSUHVVSONVLĊJDUQLDLQWHUQHWRZDNDWDORJNVLąĪHN
'URJL&]\WHOQLNX
-HĪHOLFKFHV]RFHQLüWĊNVLąĪNĊ]DMU]\MSRGDGUHV
KWWSRQHSUHVVSOXVHURSLQLHEH]VHF
0RĪHV]WDPZSLVDüVZRMHXZDJLVSRVWU]HĪHQLDUHFHQ]MĊ
,6%1
&RS\ULJKW+HOLRQ
3ULQWHGLQ3RODQG
SPIS TRE"CI
PRZEDMOWA
9
WST P
15
Podstawowe informacje o e-commerce
18
Czego chc$ cyberprzest%pcy?
21
Podstawy bezpiecze(stwa
24
1. PRAWO WOBEC E-COMMERCE
33
Jakie prawo dotyczy e-handlu?
34
Regulamin serwisu
37
+wiadcz$c us,ugi drog$ elektroniczn$
54
Przetwarzanie danych osobowych
57
Zawarcie umowy mi%dzy stronami
60
O czym nale1y informowa2
65
Kodeks spó,ek handlowych
72
Prawo wobec cyberprzest%pców
72
2.
BEZPIECZE#STWO OGÓLNE
77
Informacje o systemie
78
Zapasowe kopie danych
82
3.
BEZPIECZNY HOSTING
89
Hosting czy w,asny serwer?
89
DirectAdmin
90
4.
ZABEZPIECZENIA SERWERA WWW
97
Zabezpieczenia hosta
98
Zabezpieczenia Apache
102
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
6 | B E Z P I E C Z E & S T W O S Y S T E M U E - C O M M E R C E
Konfiguracja PHP
108
Zabezpieczenie kodu PHP
116
Przegl$danie logów
117
Obs,uga komunikatów 403, 404 etc.
118
Zabezpieczanie plików konfiguracyjnych
119
Tripwire
120
Obrona przed atakami DoS — Fail2ban
122
5.
BAZA DANYCH
125
Po,$czenie z baz$
128
Szyfrowanie danych
130
6.
BEZPIECZNA TRANSMISJA DANYCH
133
Dlaczego warto szyfrowa2?
136
Szyfrowanie komunikacji webowej
137
A je;li nie ma szans na SSL?
153
Komunikacja przez e-mail
154
Administrowanie poprzez sie2
156
Integralno;2 danych podczas transmisji
159
7.
IDENTYFIKACJA STRON W BIZNESIE
165
Wiarygodny sprzedawca
166
Zidentyfikowany u1ytkownik
168
8. KONTA I HAS$A
177
Data wprowadzenia danych
177
Hasz zamiast has,a
179
Provisioning — zak,adanie konta
184
Cookies
185
Sesje w aplikacji
189
Sprawdzanie, czy po,$czenie odbywa si% „po SSL”
195
Autoryzacja transakcji
196
9.
ZABEZPIECZENIA KODU APLIKACJI
197
Specyfika j%zyka
198
Jak przesy,a2 dane — GET czy POST?
198
Walidowanie danych przesy,anych do serwera
201
Zabezpieczenia przed automatami
208
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
S P I S T R E . C I | 7
SQL injection
212
File inclusions
222
Ataki XSS
226
Ataki CSRF i XSRF
230
HTTP_REFERER
232
Badanie kodu PHP
233
10. KODOWANIE DANYCH
235
ZAKO#CZENIE
239
O AUTORACH
240
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
8 | B E Z P I E C Z E & S T W O S Y S T E M U E - C O M M E R C E
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
Rozdzia6 2.
BEZPIECZE%STWO OGÓLNE
Wspomnieli;my ju1 wcze;niej, 1e zagadnienie bezpiecze;stwa
systemu e-commerce jest z\o]one. Sk,ada si% na nie:
bezpiecze(stwo fizyczne serwerów, na których znajduje si% apli-
kacja, serwer WWW, baza danych itd.;
zabezpieczenie systemów operacyjnych, w których s$ zainsta-
lowane aplikacja, serwer WWW i baza danych;
takie bezpiecze(stwo transmisji, aby danych w trakcie przesy-
,ania nikt nie pods,ucha, ani nie zmieni,;
bezpiecze(stwo serwera DNS i domeny — to, 1eby nikt nie
ukrad, „nazwy internetowej” serwisu ani nie przekierowa, ruchu
do innego, podrobionego systemu;
bezpiecze(stwo aplikacji, a wi%c takie jej utworzenie, aby nie
mo1na by,o ni$ manipulowa2;
ci$g,o;2 dzia,ania, tj. takie zorganizowanie systemu i uzyskanie
takiej jego odporno;ci, aby nawet mimo ataku móg, on dalej
funkcjonowa2 lub wznowi2 aktywno;2;
bezpiecze(stwo organizacyjne, czyli procesy zwi$zane z admi-
nistrowaniem aplikacj$, zarz$dzanie zmianami i wszystko to,
co jest dooko,a systemu, a ma na niego (znacz$cy) wp,yw;
bezpiecze(stwo prawne, a wi%c zarz$dzanie stanem zgodno;ci
z prawem.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
7 8 | B E Z P I E C Z E & S T W O S Y S T E M U E - C O M M E R C E
Tutaj chcemy przedstawi2 najogólniejsze zagadnienia zwi$za-
ne z bezpiecze(stwem systemu e-commerce.
INFORMACJE O SYSTEMIE
Zapewne nieraz si% zastanawia,e;, jak to si% dzieje, 1e haker w ko(cu
„dopada” okre;lon$ witryn%. Mog$ by2 tego dwa g,ówne powody.
Pierwszy mo1e by2 taki, 1e witryna jest s,abo zabezpieczona i stanowi
dla hakera ,atwy ,up — b%dzie on móg, jej zhakowanie wpisa2 do
ewidencji swoich sukcesów. Drugi to celowy atak na w,a;nie ten,
a nie inny serwis. Na pewno jednak nieod,$cznym elementem
ka1dego ataku jest rekonesans, czyli rozpoznanie. Odbywa si% to
zupe,nie tak jak w „realu” — zanim z,odziej przyst$pi do dzia,ania,
obserwuje i zbiera informacje. Ka]da informacja mo]e by_
dla hakera przydatna, a szczególnie o:
systemie operacyjnym (rodzaj, wersja, uruchomione programy
i us,ugi);
bazie danych (rodzaj i wersja);
kodzie aplikacji;
chronionych cz%;ciach aplikacji;
konfiguracji i zabezpieczeniach systemu.
Znajomo;2 wersji oprogramowania pozwala hakerowi znaleU2
luki w zabezpieczeniach — przy odrobinie szcz%;cia mo1e on trafi2
na wersj%, w której nie zosta,y one za,atane. Do wyszukania luk za-
bezpiecze( w okre;lonej wersji oprogramowania haker mo1e u1y2
np. bazy CVE
1
. Ty z niej korzystasz, aby wiedzie2, co jest dziurawe,
i 1eby to zaktualizowa2, a cyberprzest%pcy u1ywaj$ jej, aby mie2 in-
formacje o tym, jakie systemy (i jakie ich wersje) „choruj$”, s$ po-
datne na atak.
1
https://cve.mitre.org/
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
B E Z P I E C Z E & S T W O O G Ó L N E | 7 9
Wiedza o rodzaju bazy danych pozwala z kolei dostosowa2 ata-
ki polegaj$ce na wstrzykiwaniu kodu SQL — ju1 sama ta informacja
jest istotna, bo niektóre ataki s$ specyficzne dla rodzaju bazy da-
nych, np. dzia,aj$ w przypadku PostgreSQL, ale nie z MySQL.
Nawet rodzaj j%zyka, w którym napisano aplikacj%, ma znaczenie.
SprawdUmy, jak mo1e wygl$da2 atak cyberprzest%pcy, który
dla zabawy chce spróbowa2 swoich si, w hackingu. Pierwsze, co mo1e
on zrobi2, to wpisanie w wyszukiwarce ci$gu
sql dorks
. Oto przy-
k,adowe ci$gi tego typu:
allinurl:showimg.php?id=
allinurl:view.php?id=
allinurl:website.php?id=
allinurl:hosting_info.php?id=
allinurl:gallery.php?id=
Haker kopiuje i wkleja jeden z nich do wyszukiwarki, a nast%pnie
otwiera strony b%d$ce wynikami wyszukiwania i przeprowadza re-
konesans. Naj,atwiej jest zacz$2 od sprawdzenia, czy dany ci$g (okre-
;lany mianem SQL dorka) zadzia,a. Przyk,adowo http://www.
witryna.com/gallery.php?id=1 zawiera SQL dork
gallery.php?id=
.
Wystarczy w pasku adresowym na ko(cu doda2 znak apostrofu
i w wyniku otrzymujemy:
Fatal error: Uncaught exception 'Exception' with message 'SQL Query
failed: SELECT image,title,location,description,height,width from
tblSCAImages WHERE id=83\\\'You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version for the right
syntax to use near '\\\'' at line 1' in
/home/sca/wwwlib/gallery_lib.php:16 Stack trace: #0
/home/sca/www/gallery.php(21): sca_gallery_get_image_meta('83\'') #1
{main} thrown in /home/sca/wwwlib/gallery_lib.php on line 16
Mamy tu informacje o b,%dach i ju1 co; wiemy o witrynie —
wiemy, 1e jest to MySQL, a tak1e o nazwach tabel i ich kolumn,
o funkcjach PHP, a nawet o systemie plików. To si% przyda.
SprawdUmy, jak witryna internetowa zareaguje na wpisanie b,%dnego
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
8 0 | B E Z P I E C Z E & S T W O S Y S T E M U E - C O M M E R C E
adresu strony http://www.witryna.com/coscokolwiek. Tu te1 otrzy-
mujemy komunikat:
Not Found
The requested URL /coscokolwiek was not found on this server.
Apache/2.2.3 (CentOS) Server at www.allspeedperformance.com Port 80
Znamy ju1 wersj% serwera Apache. Zobaczmy jeszcze, jakie
cz%;ci witryny s$ chronione. Wpiszmy http://www.witryna.com/
robots.txt. Otrzymamy:
User-agent: *
Disallow: /checkout/
To tylko przyk,ad tego, jak mo1na zacz$2. Dalej mo1na „grze-
ba2” w cookies, u1y2 programu
sqlmap
, r%cznie wstrzykiwa2 kod…
Mo1liwo;ci jest wiele. To pokazuje, 1e ujawnianie zbyt wielu infor-
macji mo1e dzia,a2 na szkod% systemu, bo pozwala przeprowadzi2
rekonesans. Dla hakera mo1e by2 przydatna w zasadzie ka1da infor-
macja, zadbaj wi%c o to, aby nie wypuszcza2 na zewn$trz komuni-
katów o b,%dach wraz z ich detalami oraz informacjami o wersji
oprogramowania. Pozwala to hakerowi odnaleU2 s,abe punkty da-
nej wersji.
Jak wprowadziG hakera w b6Ld
Uwa1amy, 1e skoro podstaw$ ataków jest rekonesans, to mo1e warto
atakuj$cego wyprowadzi2 w pole. Gdy wida2 wyraUnie, 1e co; jest
porz$dnie chronione, to pewnie jest warte tego, aby to ukra;2.
Mo1na to wykorzysta2 do stworzenia pu,apki na cyberprzest%pc%.
B%dzie on d,ugo ,ama, zabezpieczenia, aby w efekcie uzyska2 do-
st%p do nic nie wartych informacji lub uruchomi2 alarm informuj$cy,
1e dzieje si% co; z,ego. Takie rozwi$zanie nazywa si% z angielskiego
honeypot. Tak$ pu,apk% mo1na przyk,adowo zastawi2, korzystaj$c
z pliku robots.txt, który s,u1y do zezwalania na indeksowanie lub
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
B E Z P I E C Z E & S T W O O G Ó L N E | 8 1
do wykluczania z indeksowania tych cz%;ci witryny, na których
przeszukiwanie nie chcemy pozwoli2 tzw. robotom (np. botowi in-
deksuj$cemu strony dla Google). Plik ten znajduje si% w roocie (ka-
talogu g,ównym) witryny, np. http://ecommerce/robots.txt. Mo1na
go u1y2 do zmylenia przeciwnika, wpisuj$c w nim fa,szywe odnie-
sienia, a nast%pnie monitorowa2 te fa,szywie podstawione punkty.
User-agent: *
Crawl-delay: 10
Disallow: /strona_administracyjna/
Disallow: /admin_password.txt
Inn$ mo1liwo;ci$ „wkr%cania” atakuj$cego jest wprowadzanie go
w b,$d co do wykorzystanego oprogramowania. Przyk,adowo po
zmianie rozszerzenia i nag,ówków kod PHP mo1e udawa2 inny kod:
<?php
error_reporting(0);
header("X-Powered-By: ASP.NET");
?>
Nale1y wtedy jeszcze pami%ta2, aby korzystaj$c z
session_name()
,
ustawi2 nazw% sesji na przyk,ad na
SessionID
, poniewa1 domy;lne
PHPSESSID
od razu wskazuje na PHP.
Rewrite
Parametry kategorii, subkategorii i rozmaitych podstron wyst%puj$ce
w adresie URL mo1na z ,atwo;ci$ ukry2, korzystaj$c z
mod_rewrite
2
.
Je;li Twój system prezentuje adres w postaci http://strona/news.
php?kategoria=10&rodzaj=4, to mo1na to zmieni2, zapisuj$c przy-
k,adowo w .htaccess
3
na serwerze nast%puj$cy ci$g:
2
Coraz cz%;ciej pojawiaj$ si% opinie, 1e modu, ten umiarkowanie wp,ywa
na bezpiecze(stwo, dlatego trzeba mie2 zainstalowan$ aktualn$ wersj%
i stosowa2 go ostro1nie.
3
Nazwa pliku .htaccess zaczyna si% od kropki. Obecno;2 kropki na po-
cz$tku nazwy pliku (lub folderu) oznacza, 1e jest to plik (folder) ukryty.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
8 2 | B E Z P I E C Z E & S T W O S Y S T E M U E - C O M M E R C E
RewriteEngine On
RewriteRule ^([a-z0-9-_]+),([a-z0-9-_]+),([a-z0-9-_]+).html$
$1.php?kategoria=$2&rodzaj=$3 [L,NC,NS]
Zmienne
$
z cyfr$ odpowiadaj$ poszczególnym nawiasom regu,-
ki, natomiast
^
rozpoczyna, a
$
ko(czy wyra1enie regularne. Jesz-
cze ciekawszy wydaje si% zapis
RewriteRule ^artykul/([0-9]+)_(.*)\.html$ articles.php?id=$1
W tym przyk,adzie
/artykul/24_wielka_wojna
i
/artykul/24_protesty_
acta
zostan$ zamienione na
/articles.php?id=24
(odniesienie
$2
jest ignorowane). Jak widzisz, je;li dobrze wykorzystasz ten modu,,
to ci$gi sql-dork nie b%d$ w serwisie widoczne.
ZAPASOWE KOPIE DANYCH
Znamy osoby, które pisz$c prac% magistersk$, nie wykona,y zapa-
sowej kopii danych. Po stracie plików (pó,rocznej pracy) musia,y
napisa2 j$ w ci$gu miesi$ca. W takich przypadkach zwykli;my
1artowa2, 1e ludzie dzielc sid na tych, którzy robic kopie za-
pasowe, i na tych, którzy bddc je robi_. Bezpowrotna utrata
danych jest jedn$ z najgorszych rzeczy, jakie si% mog$ przedsi%-
biorcy przydarzy2 — mo1e to prowadzi2 nawet do bankructwa. Skra-
dzione komputery mo1na kupi2, a danych niestety nie. W tej materii
;wiadomo;2 nie jest jednak zbyt wysoka, a sam temat kopii zapaso-
wych (zwanych backupami) staje si% wa1ny dopiero wtedy, gdy co;
si% wydarzy. Tak samo jest w przypadku systemów e-commerce,
szczególnie tych ma,ych i ;rednich. Tymczasem ci$g,y i poprawny
proces wykonywania kopii zapasowych oraz testowania, czy da si%
z nich odtworzy2 dane konieczne do prowadzenia biznesu, pozwala
zminimalizowa2 ryzyko ich bezpowrotnej utraty. Wiedz$ to bez
w$tpienia ci, którzy interesuj$ si% zagadnieniami zachowania ci$-
g,o;ci dzia,ania (tzw. BCM
4
).
4
BCM — ang. business continuity management.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
B E Z P I E C Z E & S T W O O G Ó L N E | 8 3
W jakiej sytuacji kopia danych mo1e si% przyda2? Chyba najle-
piej odpowiedzie2, 1e w ka1dej:
awaria urz$dze( (najcz%;ciej ulegaj$ jej no;niki danych — dys-
ki twarde);
b,$d ludzki, czyli utrata danych w wyniku niecelowego dzia,a-
nia pracownika (co; si% niechc$cy usun%,o);
sabota1 — utrata danych w wyniku celowego szkodliwego
dzia,ania na przyk,ad niezadowolonego pracownika;
dzia,anie wirusów (oprogramowania z,o;liwego), których celem
mo1e by2 usuni%cie b$dU zaszyfrowanie danych, aby uniemo1-
liwi2 do nich dost%p;
atak hakerów, czyli celowe usuni%cie, zmodyfikowanie czy znisz-
czenie danych.
kradzie1 sprz%tu i utrata no;ników danych;
zdarzenie losowe — uszkodzenie sprz%tu w wyniku przepi%cia,
zalania itp.
Jedno z praw Murphy’ego mówi, 1e je0li co0 mo1e pój02 3le, to
z pewno0ci5 pójdzie 3le, wi%c nie ma co liczy2, 1e nic si% nie zda-
rzy. Na pewno si% zdarzy — to tylko kwestia czasu.
Co naleYy backupowaG?
Przede wszystkim wykonuje si% kopie zapasowe danych bizneso-
wych. B%d$ to bazy danych, pliki i katalogi serwisu e-commerce.
W przypadku hostingu zajmuje si% tym hostingodawca, ale je;li ser-
wery s$ w ca,o;ci pod Twoim w,adaniem, to zadanie to spada na
Ciebie (rysunek 2.1).
Je;li zarz$dzasz ca,ym systemem, niezb%dny b%dzie backup
konfiguracji aplikacji, bazy danych, systemów operacyjnych czy
te1 urz$dze( sieciowych.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
8 4 | B E Z P I E C Z E & S T W O S Y S T E M U E - C O M M E R C E
Rysunek 2.1. Hosting — mo1liwo02 wykonania samodzielnie
backupu z poziomu panelu hostingowego (DirectAdmin)
To, jak cz%sto nale1y wykonywa2 zapasow$ kopi% danych biz-
nesowych, zale1y od systemu i jego specyfiki. Trzeba odpowiedzie2
sobie na pytanie o to, z jakiego okresu dane mog$ zosta2 utracone.
Je;li serwis jest ma,o aktywny, to zapasowa kopia danych wyko-
nywana raz na tydzie( te1 mo1e by2 dobra, jednak w przypadku
aktywnych systemów na pewno powinna ona by2 tworzona co-
dziennie. Pami%taj, 1e serwisy pracujcce w klastrze to nie
backup; nie stanowi go te1 np. disk mirroring.
Dane dotycz$ce konfiguracji mo1na backupowa2 nieco rza-
dziej, ale nale1y to robi2 przed ka1d$ zmian$ i po niej.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
B E Z P I E C Z E & S T W O O G Ó L N E | 8 5
Je;li chodzi o hosting, to wi%kszo;2 hostingodawców — je;li nie
wszyscy — tworzy zapasowe kopie danych i udost%pnia je u1yt-
kownikowi (rysunek 2.2).
Rysunek 2.2. Backup danych dost=pny w us>udze hostingu
W wi%kszo;ci przypadków dost%pny jest tak1e backup na 1$-
danie. Przydaje si% on na przyk,ad przed dokonaniem w serwisie
istotnych zmian, które s$ na tyle ryzykowne, 1e lepiej zapewni2
sobie kopi%. Operacj$ tak$ jest cho2by aktualizacja systemu czy
zmiana struktury bazy danych. System informatyczny to nie cz,o-
wiek — wi%kszo;ci operacji nie powinno si% wykonywa2 na „1y-
wym organizmie”.
Kopia zapasowa mo1e by2 niewiele warta, je1eli oka1e si%, 1e
zosta,a nieprawid,owo wykonana, dlatego okresowo nale1y spraw-
dza2, czy w kopii zapisane s$ potrzebne dane i czy da si% je odtwo-
rzy2. Za bardzo wa1ne uwa1amy to, aby backup by, przechowywany
tak1e poza siedzib$ firmy, nawet w domu, je;li zostan$ zapewnione
odpowiednie warunki. Dzi%ki temu w przypadku du1ej awarii b%dzie
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
8 6 | B E Z P I E C Z E & S T W O S Y S T E M U E - C O M M E R C E
mo1liwe szybkie odtworzenie systemu na przyk,ad na innym sprz%cie
i (lub) w innej lokalizacji.
Kopia zapasowa danych zawiera wszystko to, co jest w orygi-
nalnym ;rodowisku e-commerce, wi%c mog,aby by2 cenn$ zdoby-
cz$ dla konkurencji. W zwi$zku z tym backup powinien by2 chro-
niony na poziomie nie ni1szym ni1 sam system e-commerce.
Dost%p do niego powinny mie2 tylko wybrane osoby. Dobrze by by,o,
aby dane na no;nikach by,y szyfrowane, szczególnie je1eli maj$
by2 one przechowywane w domu. Zapewnienie tego jest akurat
proste, bo ca,y backup mo1na zabezpieczy2 has,em:
~# gpg -c backup.tar #zaszyfrowanie
~# gpg backup.tar.gpg #odszyfrowanie
Nawiasem mówi$c, polecenie
gpg
domy;lnie kompresuje dane
przed szyfrowaniem. Wystarczaj$ce jest te1 spakowanie danych do
pliku ZIP i zabezpieczenie go has,em. Dzi%ki temu jest ma,e ryzy-
ko, 1e dane, za pomoc$ których mo1na by utworzy2 „duplikat fir-
my”, wpadn$ w niepowo,ane r%ce.
Warto te1 zauwa1y2, 1e do zabezpieczania plików mo1na u1y2
pakietu openssl. Przyk,adem s$ nast%puj$ce polecenia do szyfro-
wania i (póUniej) odszyfrowywania danych:
~# openssl aes-128-cbc -salt -in plik.tar -out plik.tar.aes
enter aes-128-cbc encryption password:
Verifying - enter aes-128-cbc encryption password:
~# openssl aes-128-cbc -d -salt -in plik.tar.aes -out plik.tar
Mo1na te1 zrobi2 to nieco inaczej — „starowa2” katalog, spa-
kowa2 do pliku ZIP, póUniej zaszyfrowa2:
~# tar -zcf - caly_katalog | openssl aes-128-cbc -salt -out
caly_katalog.tar.gz.aes
a w ko(cu odszyfrowa2:
~# openssl aes-128-cbc -d -salt -in caly_katalog.tar.gz.aes | tar -xz -f
-
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
B E Z P I E C Z E & S T W O O G Ó L N E | 8 7
Nie zalecamy u1ywania opcji
-k "hasvo"
po wyra1eniu
aes-128-cbc
— wtedy co prawda unikamy interaktywnego pytania o has,o, ale
prowadzi to do zapisania go na przyk,ad w pliku .history
5
. Mo1na
te1 u1y2
aes-256-cbc
zamiast
aes-128-cbc
, je;li jest potrzebne silniejsze
szyfrowanie, ale naszym zdaniem rzadko kiedy jest to konieczne.
Mówili;my o backupie wszystkich danych, ale mo1e si% te1
zdarzy2, 1e pracuj$c na pojedynczych plikach (np. kodzie PHP),
b%dziesz w trakcie ich modyfikacji tworzy, podr%czne kopie zapaso-
we. Chodzi nam o 1ywy organizm, tj. dzia,aj$cy system e-commerce.
Przyk,adowo edytuj$c plik dbconnect.inc, mo1esz zrobi2 kopi% te-
go pliku i zapisa2 j$ jako dbconnect.inc.old. Jest to bardzo niebez-
pieczne, gdy1 mo1e si% okaza2, 1e o ile pliki *.inc serwer mo1e bloko-
wa2 przy u1yciu dyrektywy
<Files "*.inc">
, to mo1e tego nie robi2 dla
plików *.old czy *.backup. Wtedy atakuj$cy b%dzie móg, je odczyta2
przez przegl$dark%, wpisuj$c na przyk,ad adres http://ecommerce/
dbconnect.inc.old. Powiniene; wi%c doda2 do konfiguracji webserwe-
ra odpowiedni$ dyrektyw% i konsekwentnie trzyma2 si% nazewnic-
twa takich „backupów” tymczasowych (podr%cznych).
Backup hase6
Has,o mo1na zapomnie2, wi%c je te1 warto w pewien sposób bac-
kupowa2, czyli zapisywa2. Najlepiej u1y2 to tego oprogramowania
— nie zalecamy przechowywania hase, w postaci jawnej w note-
sach, na „1ó,tych karteczkach” etc. Korzy;ci zwi$zane z ich zapi-
sywaniem z u1yciem elektronicznego sejfu s$ do;2 du1e — mo1esz
tworzy2 unikalne, z,o1one has,a dla ka1dego serwisu i nie przej-
mowa2 si% tym, 1e je zapomnisz. Elektroniczny sejf to po prostu
zaszyfrowany plik z has,ami; pisali;my ju1 wcze;niej o programie
KeePass. Musisz mie_ jego backup! Najlepiej mie2 ich kilka
5
W pliku .history przechowywana jest historia wszystkich polece( wy-
dawanych w oknie terminalu.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ
8 8 | B E Z P I E C Z E & S T W O S Y S T E M U E - C O M M E R C E
i w ró1nych miejscach — wtedy prawdopodobie(stwo jednocze-
snej utraty ich wszystkich jest niewielkie.
Piszemy o tym, bo przy tworzeniu has,a na przyk,ad do po,$-
czenia z baz$ systemu e-commerce niekiedy brakuje nam fantazji.
KeePass „wymy;li” has,o za Ciebie (rysunek 2.3), a poniewa1 jed-
nocze;nie je zachowa, nie b%dziesz musia, przejmowa2 si% tym,
jakie ono jest, i b%dziesz móg, pozwoli2 sobie na to, by by,o hard-
core’owe — d,ugie i wr%cz niemo1liwe do zapami%tania. Zalecamy,
aby tworzy2 z u1yciem tego programu przede wszystkim has,a
administracyjne (a najlepiej wszystkie).
Rysunek 2.3. Generowanie hase> przy u1yciu programu KeePass
Na koniec warto jeszcze wspomnie2 o tym, 1e plik z has,ami
powinien by2 zabezpieczony porz$dnym has,em i przechowywany
poza serwerem, na którym znajduje si% Twoja aplikacja.
Kup ksi
ąĪkĊ
Pole
ü ksiąĪkĊ