1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
<chapter id="security">
<title>Kwestie związane z bezpieczeństwem w &kppp;</title>
<para>Ta część dokumentacji przeznaczona jest dla Administratorów systemu (użytkownika <systemitem>root</systemitem>), osób o wysokich wymaganiach dotyczących bezpieczeństwa, lub osób zainteresowanych technicznymi kwestiami funkcjonowania systemu. Nie jest konieczne czytanie tego tekstu, jeżeli wykorzystujesz Linuksa w domu dla swoich potrzeb, jednak zawsze możesz nauczyć się czegoś interesującego.</para>
<sect1 id="security-restricting-access">
<title>Ograniczanie dostępu do &kppp; </title>
<para>Administrator systemu może decydować kto może wykorzystywać &kppp;Istnieją dwie możliwości realizacji tego zadania.</para>
<sect2 id="security-group-permissions">
<title>Ograniczanie dostępu z wykorzystaniem grupowych praw dostępu</title>
<para>Utwórz nową grupę (możesz ją nazwać na przykład <systemitem>dialout</systemitem>) i przypisz do niej wszystkich użytkowników, którzy będą mogli korzystać z &kppp;, a nasŧępnie wpisz następującego polecenia:</para>
<screen><prompt>#</prompt> <userinput><command>chown</command> <option>root.dialout</option> <filename>/opt/kde/bin/kppp</filename></userinput>
<prompt>#</prompt> <userinput><command>chmod</command> <option>4750</option> <filename>/opt/kde/bin/kppp</filename></userinput>
</screen>
<para>W powyższym przykładzie, zakłada się iż &kde; zainstalowano w katalogu <filename class="directory"> /opt/kde/</filename> oraz, że nowo utworzona grupa nosi nazwę <systemitem>dialout</systemitem>.</para>
</sect2>
<sect2 id="security-kppps-way">
<title>Ograniczanie dostępu z wykorzystaniem mechanizmów &kppp;</title>
<para>Zanim program &kppp; wykona cokolwiek, najpierw sprawdza on istnienie pliku <filename>/etc/kppp.allow</filename>. Zawiera on listę wszystkich użytkowników, którzy mogą skorzystać z programu &kppp;. Plik ten powinien posiadać ustawione prawo odczytu dla każdego użytkownika (ale oczywiście <emphasis>BEZ</emphasis> prawa zapisu). Program &kppp; rozpoznaje jedynie nazwy (loginy) użytkowników, tak więc nie możesz wykorzystywać numerów <acronym>UID</acronym> użytkownika. Poniżej przedstawiono krótki przykład:</para>
<screen># /etc/kppp.allow
# komentarze oraz linie puste są ignorowane
krzys
antek
monika
</screen>
<para>W powyższym przykładzie, jedynie użytkownicy: <systemitem>krzys</systemitem>, <systemitem>antek</systemitem> oraz <systemitem>marta</systemitem> mogą wykorzystać program &kppp; i zadzwonić do dostawcy internetowego. Poza wymienionymi w pliku loginami, pełne możliwości programu może wykorzystywać użytkownik o numerze <acronym>UID</acronym> równym 0 (co oznacza, że nie musisz wpisywać tutaj użytkownika: root)</para>
</sect2>
</sect1>
<sect1 id="security-why-suid">
<title>Program &kppp; ma ustawiony znacznik <acronym>SUID</acronym> ? Czy nie wpływa to negatywnie na bezpieczeństwo?</title>
<para>Jest praktycznie niemożliwe napisanie programu, który ma dostęp do sprzętu (modemu), bez zastosowania znacznika <acronym>SUID</acronym> w sposób jednocześnie bezpieczny i łatwy dla niedoświadczonego użytkownika. Program &kppp; radzi sobie z tym problemem w sposób następujący:</para>
<itemizedlist>
<listitem>
<para>Natychmiast po uruchomieniu program &kppp; rozdziela się (fork) na osobne procesy..</para>
</listitem>
<listitem>
<para>Proces główny, obsługujący interfejs użytkownika (<acronym>GUI</acronym>), pozbywa się znacznika <acronym>SUID</acronym> i działa dalej na prawach zwykłego użytkownika.</para>
</listitem>
<listitem>
<para>Proces pomocniczy utrzymuje podwyższone uprawnienia, gdyż jest on odpowiedzialny za wszystkie działania wymagające uprawnień Administratora. Aby jego działanie było bezpieczne, to ta część programu nie wykorzystuje żadnych funkcji środowiska &kde; lub bibliotek &Qt;. Kod źródłowy procesu pomocniczego jest krótki (około 500 linii) oraz dobrze udokumentowany, tak aby możliwe było szybkie wykrycie wszelkich luk i zagrożeń dla bezpieczeństwa.</para>
</listitem>
<listitem>
<para>Procesy główny oraz pomocniczy komunikują się ze sobą z wykorzystaniem standardowego mechanizmu <acronym>IPC</acronym>. systemu &UNIX; </para>
</listitem>
</itemizedlist>
<para>Specjalne podziękowania należą się Harri'emu Portenowi za napisanie tego wspaniałego programu. Wszyscy myśleli, że jest to niemożliwe, ale jemu udało się to w ciągu tygodnia.</para>
</sect1>
</chapter>
|