Firewalle i proxy serwery: Instalowania serwera proxy - TIS
Następna strona
Poprzednia strona
Spis treści
7. Instalowania serwera proxy - TIS
7.1 Pobranie oprogramowania
TIS FWTK jest dostępny pod adresem:
ftp://ftp.tis.com/.
Nie popełnij tego błędu co ja. Kiedy dostaniesz się na serwer TIS
PRZECZYTAJ ,,README''
Pakiet TIS fwtk jest w ukrytym katalogu na ich serwerze.
TIS wymaga być wysłał email do fwtk-request@tis.com
zawierającego tylko słowo SEND w ,,ciele''
wiadomości aby poznać nazwę tego ukrytego katalogu (nie jest
potrzebny temat
dla tego listu).
Ich system wyśle Ci wiadomość z nazwą katalogu w ciągu 12 godzin.
Piszę o wersji 2.0 (beta) TIS FWTK. Wersja ta kompiluje się dobrze
(z pewnymi
wyjątkami) i wygląda że wszystko pracuje (u mnie). Gdy zostanie
opublikowana wersja pełna uaktualnię to HowTo.
Aby zainstalować FWTK stwórz katalog fwtk-2.0
w /usr/src. Przenieś tak kopię (fwtk-2.0.tar.gz)
odpakuj ją (tar zxf fwtk-2.0.tar.gz).
FWTK nie pośredniczy w przekazywaniu SSL (bezpieczne dokumenty w
WWW)
ale posiada dodatek napisany przez Jean-Christophe Touvet. Jest on
dostępny pod
adresem
ftp://ftp.edelweb.fr/pub/contrib/fwtk/ssl-gw.tar.Z. Touvet nie świadczy wsparcia technicznego dla tego kodu.
Używam zmodyfikowanej wersji: włączyłem moduł dostępu do
bezpiecznych
serwerów news Netscape napisany przez Eric Wedel
ftp://mdi.meridian-data.com/pub/tis.fwtk/ssl-gw/ssl-gw2.tar.Z.
W naszych przykładach będę używał wersji Wedel'a.
Aby go zainstalować po prostu strwóż katalog ssl-gw w
katalogu
/usr/src/fwtk-2.0 i wsadź tam odpowiednie pliki.
Kiedy instalowałem tę bramę potrzebne były drobne zmiany zanim mogłem
skompilować
resztę zestawu.
Pierwsza zmiana nastąpiła w pliku ssl-gw.c .
Nie potrafił włączyć jednego z plików include.
#if defined(__linux)
#include <sys/ioctl.h>
#endif
Druga zmiana polegała na stworzeniu pliku Makefile.
Skopiowałem jeden z innej ,,bramy'' i zastąpiłem nazwę tego modułu
nazwą ssl-gw.
7.2 Kompilacja TIS FWTK
Wersja 2.0 FWTK kompiluje się łatwiej niż poprzednie. Wciąż jednak
jest kilka
rzeczy które powinny być zmienione zanim wersja beta będzie się
kompilować bez
przeszkód. Pozostaje mieć nadzieję, że do tak się stanie w pełnej
wersji.
Aby to poprawić zacznij zmiany od katalogu
/usr/src/fwtk/fwtk
i skopiuj plik Makefile.config.linux na
Makefile.config.
Nie uruchamiaj FIXMAKE.
Instrukcja mówi byś to zrobił. Jeśli chcesz zniszczyć Makefile
we wszystkich podkatalogach...
Wykonałem poprawkę do fixmake Problem polegał na tym,
że fixmake dodawał '.' i '' do włączanych do
Makefile
linii.
sed 's/^include[ ]*\([^ ].*\)/include \1/' $name .proto > $name
Następnie będziemy musieli wyedytować Makeconfig.file.
Potrzebne będą dwie zmiany.
Autor programu ustawił źródła programu w swoim $HOME/.
My kompilujemy w /usr/src i powinniśmy zmienić zmienną
FWTKSRCDIR.
FWTKSRCDIR=/usr/src/fwtk/fwtk
Po drugie, przynajmniej niektóre Linuxy używają bazy danych w
formacie
gdbm. W Makefile.config jest używana dbm
Zapewne będziesz musiał to zmienić.
Ja w RedHacie 3.0.3 musiałem.
DBMLIB=-lgdbm
Ostania poprawka jest w katalogu x-gw. Błąd w wersji beta jest w
pliku
socket.c. Poprawka polega na usunięciu tych linii.
#ifdef SCM_RIGHTS /* 4.3BSD Reno and later */
+ sizeof(un_name->sun_len) + 1
#endif
Jeśli dodałeś ssl-gw do swojego katalogu źródeł trzeba
jeszcze dodać
do listy katalogów w Makefile.
DIRS= smap smapd netacl plug-gw ftp-gw tn-gw rlogin-gw http-gw
x-gw ssl-gw
Teraz uruchom make.
7.3 Instalacja TIS FWTK
Uruchom make install.
Standardowo katalogiem instalacyjnym jest /usr/local/etc.
Możesz to zmienić (ja tego nie zrobiłem) na bardziej bezpieczny
katalog.
Ja zmieniłem prawa dostępu do niego na chmod 700 .
Na koniec pozostała nam konfiguracja firewalla.
7.4 Konfiguracja firewalla TIS FWTK
Teraz naprawdę rozpoczynamy. Musisz nauczyć system wywoływania tych
nowych
usług i stworzyć tablice do ich kontroli.
Nie próbuję przepisywać tutaj dokumentacji do TIS FWTK. Chcę pokazać
takie ustawienia jakie u mnie działały i wyjaśnić problemy jakie
spotkałem.
Istnieją trzy pliki kontrolujące firewalla.
/etc/services
mówiący systemowi jaki port obsługuje jaką usługę.
/etc/inetd.conf
mówiący serwerowi inetd jaki program wywołać gdy ktoś będzie się
dobijał do zadanego portu.
/usr/local/etc/netperm-table
mówiący FWTK kto jest dopuszczony a kogo winno się odrzucać
przy danej usłudze.
Aby uzyskać poprawne funkcjonowanie FWTK powinieneś wyedytować te
pliki
poczynając od góry. Edycja jedynie services bez inetd.conf
i
netperm-table ustawionych prawidłowo uczyni twój system
niedostępnym.
Plik netperm-table
Plik ten odpowiada za kontrolę kto ma dostęp do usług nadzorowanych
przez TIS
FWTK. Powinieneś myśleć o ruch z obu stron firewalla. Ludzie z
zewnątrz twojej
sieci powinni zidentyfikować się przed otrzymaniem dostępu, ale
ludzie
z wewnątrz mogą zostać dopuszczeni od razu.
Aby ludzie moli się zidentyfikować firewall używa programu o nazwie
authsrv
do trzymania bazy danych o użytkownikach i ich hasłach.
Sekcja dotycząca autentyfikacji w netperm-table pozwala kontrolować
gdzie jest trzymana baza danych i kto ma do niej dostęp.
Miałem trochę kłopotów z blokowaniem dostępu do usług. Weź pod
uwagę że linia
którą pokazuję używa '*' do dawania dostępu dla każdego do tej
usługi.
Prawidłowe ustawienie tej linii jest następujące:
'' authsrv: premit-hosts localhost jeśli chcesz zachować
ją pracującą.
#
# tablica konfiguracji serwera proxy
#
# Autentyfikacja: reguły serwera i klienta
authsrv: database /usr/local/etc/fw-authdb
authsrv: permit-hosts *
authsrv: badsleep 1200
authsrv: nobogus true
# Aplikacje klienckie używające serwera autentyfikacji
*: authserver 127.0.0.1 114
Aby zaincjalizować bazę danych wykonaj su do root`a i
uruchom
./authsrv w katalogu /var/local/etc
by stworzyć rekord opisujący administratora systemu.
Oto jest przykładowa sesja.
Przeczytaj dokumentację FWTK, by dowiedzieć się jak dodać
użytkowników i
grupy.
#
# authsrv
authsrv# list
authsrv# adduser admin " Auth DB admin "
ok - user added initially disabled
authsrv# ena admin
enabled
authsrv# proto admin pass
changed
authsrv# pass admin " plugh "
Password changed.
authsrv# superwiz admin
set wizard
authsrv# list
Report for users in database
user group longname ok? proto last
------ ------ ------------------ ----- ------ -----
admin Auth DB admin ena passw never
authsrv# display admin
Report for user admin (Auth DB admin)
Authentication protocol: password
Flags: WIZARD
authsrv# ^D
EOT
#
Kontrola przez bramę telnetu (tn-gw) polega na prostym przesłaniu
i jest to pierwsza którą powinieneś ustawić.
W moim przykładzie pozwoliłem komputerom z wnętrza sieci prywatnej
na dostęp bez autentyfikacji (permit-hosts 19961.2.* -passok).
Ale inni użytkownicy powinni wprowadzić swoją nazwę użytkownika i
hasło.
(permit-hosts * -auth)
Poza tym pozwoliłem jednemu innemu systemowi (196.1.2.202) na
dostęp
do firewalla bezpośrednio, bez przechodzenia przez procedury na
nim.
Sprawiają to dwie linie z inetacl-in.telnetd
Wyjaśnię ich działanie potem.
Powinieneś zachować krótki czas timeoutu.
# reguły dostępu telnetu do firewalla:
tn-gw: denial-msg /usr/local/etc/tn-deny.txt
tn-gw: welcome-msg /usr/local/etc/tn-welcome.txt
tn-gw: help-msg /usr/local/etc/tn-help.txt
tn-gw: timeout 90
tn-gw: permit-hosts 196.1.2.* -passok -xok
tn-gw: permit-hosts * -auth
# Tylko administrator może wykonać telnet na port 24 firewalla.
netacl-in.telnetd: permit-hosts 196.1.2.202 -exec
/usr/sbin/in.telnetd
I to samo z r-command.
# reguły dostępu rlogin do firewalla
rlogin-gw: denial-msg /usr/local/etc/rlogin-deny.txt
rlogin-gw: welcome-msg /usr/local/etc/rlogin-welcome.txt
rlogin-gw: help-msg /usr/local/etc/rlogin-help.txt
rlogin-gw: timeout 90
rlogin-gw: permit-hosts 196.1.2.* -passok -xok
rlogin-gw: permit-hosts * -auth -xok
# Tylko administrator może wykonać telnet na port 24 firewalla.
netacl-rlogind: permit-hosts 196.1.2.202 -exec /usr/libexec/rlogind
-a
Nie powinieneś dawać nikomu bezpośredniego dostępu do firewalla,
włączając w to dostęp prze FTP (tak pobieranie jak i wkładanie).
Jeszcze raz, linie zawierające permit-hosts pozwalają każdemu w
chronionej
na wolny dostęp do Internetu, zaś wszyscy inni muszą się
autentyfikować.
Włączyłem zapisywanie każdego pliku pobranego i wysłanego do mojej
konfiguracji.
(-log { retr stor })
Timeouty FTP dają ci kontrolę nad tym jak długo będą utrzymywane
,,złe'' połączenia i jak długo będą utrzymywane połączenia bez
żadnej
aktywności.
# reguły dostępu ftp do firewalla
ftp-gw: denial-msg /usr/local/etc/ftp-deny.txt
ftp-gw: welcome-msg /usr/local/etc/ftp-welcome.txt
ftp-gw: help-msg /usr/local/etc/ftp-help.txt
ftp-gw: timeout 300
ftp-gw: permit-hosts 196.1.2.* -log { retr stor }
ftp-gw: permit-hosts * -authall -log { retr stor }
WWW, Gopher i bazujące na przeglądarkach FTP jest kontrolowane
przez
http-gw. Pierwsze dwie linie tworzą katalog gdzie będą składowane
pliki i dokumenty z FTP i WWW. Przy czym są one własnością root`a
i
są składowane w katalogu dostępnym tylko dla niego.
Połączenia WWW powinny być bardzo krótki. W ten sposób można
kontrolować jak
długo użytkownicy będą utrzymywać błędne połączenia.
# reguły dostępu dla WWW i Gophera
http-gw: userid root
http-gw: directory /jail
http-gw: timeout 90
http-gw: default-httpd www.afs.net
http-gw: hosts 196.1.2.* -log { read write ftp }
http-gw: deny-hosts *
ssl-gw ustawia się tak samo ja i inne bramy. Bądź z nią
ostrożny.
W tym przykładzie pozwalam wszystkim z sieci chronionej na łączenie
się
z każdym z serwerów na zewnątrz z wyjątkiem adresów 127.0.0.*
i 192.1.1.*
oraz (wtedy) na otwieranie portów 443 do 563 używanych jako znane
porty
dla SSL.
# zasady dla bramy ssl:
ssl-gw: timeout 300
ssl-gw: hosts 196.1.2.* -dest { !127.0.0.* !192.1.1.*
*:443:563 }
ssl-gw: deny-hosts *
Poniżej znajduje się przykład jak użyć plug-gw aby pozwolić
na
połączenie do serwera news. W tym przykładzie zezwalam każdemu z
sieci
lokalnej na dostęp do tylko jednego systemu i tylko na porcie
zajętym przez
news.
W drugiej linii pozwalam serwerowi news przesłać dane z powrotem do
chronionej
sieci.
Ponieważ większość klientów spodziewa się, że pozostaje podłączenie
w czasie
gdy użytkownik czyta wiadomości timeout dla news powinien być
długi.
# brama dla modułu plug-gw i NetNews
plug-gw: timeout 3600
plug-gw: port nntp 196.1.2.* -plug-to 199.5.175.22 -port nntp
plug-gw: port nntp 199.5.175.22 -plug-to 196.1.2.* -port nntp
Brama dla fingera jest prosta. Każdy z chronionej sieci powinien się
załogować i wtedy pozwalamy mu na użycie fingera na firewallu.
Pozostali nie po prostu dostają wiadomość.
# uruchomienie usługi finger
netacl-fingerd: permit-hosts 196.1.2.* -exec /usr/libexec/fingerd
netacl-fingerd: permit-hosts * -exec /bin/cat
/usr/local/etc/finger.txt
Nie mam ustawionych usług dla poczty elektronicznej i X-Windows
więc nie daję przykładów. Jeśli ktoś ma działający przykład, proszę
o
przysłanie mi.
Plik inetd.conf
Oto jest kompletny plik /etc/inetd.conf .
Wszystkie niepotrzebne usługi zostały wykomentowane.
Włączyłem pełny plik aby pokazać co wyłączyć i jak ustawić nową
usługę
w ścianie ognia.
{od tłumacza: nie przekładam typowych dla tego pliku linii}
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
# brama FTP w ścianie ognia
ftp-gw stream tcp nowait.400 root /usr/local/etc/ftp-gw ftp-gw
# brama Telnetu w ścianie ognia
telnet stream tcp nowait root /usr/local/etc/tn-gw
/usr/local/etc/tn-gw
# local telnet services
telnet-a stream tcp nowait root /usr/local/etc/netacl in.telnetd
# brama Gophera w ścianie ognia
gopher stream tcp nowait.400 root /usr/local/etc/http-gw
/usr/local/etc/http-gw
# brama WWW w ścianie ognia
http stream tcp nowait.400 root /usr/local/etc/http-gw
/usr/local/etc/http-gw
# SSL w ścianie ognia
ssl-gw stream tcp nowait root /usr/local/etc/ssl-gw ssl-gw
# NetNews firewall proxy (using plug-gw)
nntp stream tcp nowait root /usr/local/etc/plug-gw plug-gw nntp
#nntp stream tcp nowait root /usr/sbin/tcpd in.nntpd
# SMTP (email) w ścianie ognia
#smtp stream tcp nowait root /usr/local/etc/smap smap
#
# Shell, login, exec and talk are BSD protocols.
#
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#talk dgram udp wait root /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp waut nobody /usr/sbin/tcpd in.dtalkd
#
# Pop and imap mail services et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
#
# The Internet UUCP service.
#
#uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico
-l
#
# Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as " boot servers. "
Do not uncomment
# this unless you *need* it.
#
#tftp dgram udp wait root /usr/sbin/tcpd in.tftpd
#bootps dgram udp wait root /usr/sbin/tcpd bootpd
#
# Finger, systat and netstat give out user information which may be
# valuable to potential "system crackers." Many sites choose to
disable
# some or all of these services to improve security.
#
# cfinger is for GNU finger, which is currently not in use in RHS
Linux
#
finger stream tcp nowait root /usr/sbin/tcpd in.fingerd
#cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd
#systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx
#netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f
inet
#
# Time service is used for clock syncronization.
#
#time stream tcp nowait root /usr/sbin/tcpd in.timed
#time dgram udp wait root /usr/sbin/tcpd in.timed
#
# Authentication
#
auth stream tcp wait root /usr/sbin/tcpd in.identd -w -t120
authsrv stream tcp nowait root /usr/local/etc/authsrv authsrv
#
# End of inetd.conf
Plik /etc/services
Tutaj się wszystko zaczyna. Gdy klient łączy się ze ścianą ognia
dzieje się to na tzw. dobrze znanym porcie (niższym od
1024).
Na przykład telnet łączy się na porcie 23. Serwer inetd
słyszy prośbę o połączenie, i szuka nazwy tej usługi w
/etc/services. Później wzywa programy wyznaczony dla tej
usługi
w /etc/inedt.conf
Niektóre z usług nie są normalnie tworzone przez wywołanie w
/etc/serwices.
Można przydzielać niektóre porty jak chcemy, Na przykład ja
przydziałem usłudze ,,telnet administratora'' (telnet-a) port 24.
Ty możesz przydzielić tę usługę na portowi 2323, jeśli chcesz.
Dla administratora (CIEBIE) bezpośrednie połączenie ze ścianą ognia
na porcie 24 nie 23 noże być potrzebne, jeśli masz ustawioną swoją
chronionej sieci.
telnet-a 24/tcp
ftp-gw 21/tcp # this named changed
auth 113/tcp ident # User Verification
ssl-gw 443/tcp
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
firewall howto plfirewall howto pl 8firewall howto plfirewall howto pl 9Firewall HOWTO plfirewall howto pl 3firewall howto pl 1firewall howto pl 10firewall howto pl 2firewall howto pl 4firewall howto pl 5firewall howto pl 6bootdisk howto pl 8PPP HOWTO pl 6 (2)NIS HOWTO pl 1 (2)cdrom howto pl 1jtz howto pl 5Keystroke HOWTO pl (2)więcej podobnych podstron