Jak zrobić serwer na Linuxie dla małej sieci z łączem do internetu przez HiS?

Coraz więcej osób wykorzystuje SDI do podłączania swoich sieci lokalnych do Internetu. Jest to rozwiązanie tanie i niezawodne. Pojawia się jednak problem jak to połączenie udostępnić innym użytkownikom sieci. Niektórzy, ze względu na łatwość instalacji, wybierają Windows 98SE ze standardowym udostępnianiem Internetu, inni szukając bardziej profesjonalnych narzędzi, sięgają po Wingat'a. My, w poniższym artykule postaramy się przedstawić sposób instalacji SDI na Linuxie. Należy zauważyć, że artykuł ten nie powstałby, gdyby nie pomoc członków sieci Zacisze. To oni stworzyli pierwszą wersję tego dokumentu, i to u nich pierwszy raz był wykorzystany poniżej opisany system. Nasz zespół dokonał tylko małych poprawek i uzupełnił go informacjami o instalacji i konfiguracji dystrybucji Mandrake. Wersja oryginalna jest do pobrania ze strony http://zacisze.wsp.zgora.pl

SIEĆ

Pierwszą rzeczą którą trzeba koniecznie zrobić jest konfiguracja sieci. Zakładam, że zbudowana jest ona w standardzie ethernet czyli albo kabel RG58 (BNC) albo popularna skrętka + HUBy Należy zwrócić uwagę na adresowanie komputerów ponieważ KAŻDY komputer w sieci MUSI mieć własny numer IP, aby to zrobić należy zainsta
lować protokół TCP/IP i w polu numer IP wpisać swój unikalny adres IP z puli adresów prywatnych (lub zostawić konfigurację adresu IP jeśli w sieci już działa serwer DHCPd) np. 192.168.1.1 następny 192.168.1.2 i 193.168.1.3 itd. w większości sieci przyjęło się że:

192.168.1.1 adres serwera
192.168.1.2 adres admina
192.168.1.3-254 adresy ludzi z sieci
192.168.1.0 adres sieci
192.168.1.255 broadcast
255.255.255.0 maska sieci

Po poprawnym skonfigurowaniu sieci każdy z każdym powinien po wpisaniu w okienku MS-DOS polecenia np. ping 192.168.1.7 (powinien tu być podany adres IP komputera istniejącego w sieci) otrzymać odpowiedź:

Badanie 192.168.1.7 z użyciem 32 bajtów danych:
Odpowiedź z 192.168.1.7: bajtów=32 czas=1ms TTL=128
Odpowiedź z 192.168.1.7: bajtów=32 czas=10ms TTL=128
Odpowiedź z 192.168.1.7: bajtów=32 czas=10ms TTL=128

Jeżeli otrzymamy coś podobnego to, wszystko jest w porządku.

UWAGA
W naszej sieci pozostawiliśmy tylko i wyłącznie protokół TCP/IP, ale niekiedy potrzebny jest jeszcze IPX (teraz to już tylko do niektórych, starszych gier)

SERWER
Oczywiście mówimy o warunkach amatorskich wiec serwerem będzie po prostu komputer PC komputer taki powinien mieć procesor od 486DX RAM od 16MB polecam 24 :) karta sieciowa (dobra, solidna , PCI) dysk twardy od 300MB dla Stackware i od 1GB dla Mandrake (im większy i szybszy tym lepiej)

UWAGA
Naszego HISA musimy podłączyć do portu szeregowego (RS) dlatego ważne jest żeby na płycie głównej serwera był port szeregowy z układem UART 16550 (tak zwany szybki port szeregowy) wyprowadzony złączem RS 232 (9 pinowe - jak myszka). Na czas instalacji linuxa potrzebujemy jeszcze kartę grafiki, monitor, klawiaturę i CDROM potem te rzeczy są już nie potrzebne.
Należy pamiętać ze Linux woli nowego twardziela i więcej
pamięci niż nowy procek :))

Wybór Dystrybucji
Oki, co do wyboru dystrybucji Linuxa powinniśmy przestrzegać kilku zasad ...
1. Wybieramy linuxa takiego jakiego ma nasz lokalny guru :)
2. Jeśli nie mamy guru wybieramy system do którego mamy najlepsze wsparcie (gazety, książki, opisy itp.) na naszym rynku prawie wszystkie książki opisują jednak RedHat Linuxa ..
3. Kierujemy się kryterium emocjonalnym patrz grupa pl.comp.os.advacacy :))

 

Serwer na HiS - opis konfiguracji Mandrake

Instalacja Linuxa nie jest wcale tak łatwa jak próbuje nam się to wmówić ... Przede wszystkim należy zmieścić się na naszym małym dysku twardy. W przypadku Mandrake jest to spora sztuka ponieważ domyślna konfiguracja zajmuje ok. 650MB. Jeśli nasz komuter ma być tylko i wyłącznie serwerem to zmieścimy się w 450MB (nie instalujcie niczego czego nie używacie p.: X KDE GNOME TCL Mulitmedia GRY Tex i wiele innych) Podczas instalacji należy zwrócić uwagę na konfiguracje sieci. (przykładowo)

HOSTNAME: alfa
domena: twoja_domena.pl
IP:
192.168.1.1
bramka: (TRZEBA ZOSTAWIĆ PUSTE)
dns: 194.204.159.1
adres sieci: 192.168.1.0
netmask: 255.255.255.0

Nie instalujmy modemu !!! - konfiguracja HISA zajmiesz się po zainstalowaniu wszystkich pakietów. Jeszcze raz powtarzam nie instalujmy niczego czego nie będziemy używać Jeśli jest to nam to nie potrzebne to tylko zajmuje miejsce i stanowi ewentualne zagrożenie dla systemu.

Zakładam ze instalacja nam się powiodła W przypadku Slacka 7 mamy już praktycznie wszystko gotowe, teraz zabieramy się
do konfigurowanie HISA i usług udostępniających łącze w sieci. Wg mnie należy zainstalować (skonfigurować) następujące składniki:

Serwer na HiS
Plik /etv/hosts

W pliku tym określamy nazwy własne dla komputerów pozwala nam to na wyeliminowanie numerów IP przy prostych zadaniach np. wpis:

# IP name
192.168.1.2 alfa

pozwala nam na wykonanie komendy:

ping alfa

która jest identyczna z komendą:

ping 192.168.1.2

W naszej sieci wszystkie komputery są wpisane do tego pliku :)

Serwer na HiS - opis konfiguracji Mandrake

Komenda arp służy do zbadania jaki adres MAC ma dany numer IP czyli polecenie:

/sbin/arp 192.168.1.2

pokaże nam MAC adres komputera 192.168.1.2 w naszym przypadku komendę tę wykorzystamy w celu zablokowania możliwości zmiany adresu IP przez danego członka sieci (np. po to żeby dany koleś nie miał Internetu jak nie płaci :)

do tego celu wykorzystuje skrypt ip_arp skrypt ten umieszczamy np. w /sbin/ip_arp i robimy linka do katalogu /etc/rc.d/rc3.d/ poleceniem:

ln -s /sbin/ip_arp /etc/rc.d/rc.3/S11ARPwatch

Warunkiem działania skryptu jest istnienie pliku /etc/hosts.arp w którym mamy następujące wpisy:

# IP MAC
192.168.1.2 00:00:00:00:00
192.168.1.3 00:00:00:00:00
# itd.

skrypt ten można odpalić i zatrzymać ręcznie

/sbin/ip_arp start [stop:restart:status]

Jeżeli wszystko działa mamy sytuacje taka że: komputer z windows dostaje automatycznie adres IP od dhcpd, a jeśli użytkownik tego kompa chce być sprytny i zmienić adres ręcznie to skrypt arp odrzuca go od serwera ...

 

Serwer na HiS
Demon Oidentd

Demon ident jest potrzebny to prawidłowego rozpoznawania użytkownika (usera) w systemie poprzez takie usługi jak np. IRC. Niestety standartowy (ident) nie jest w stanie poprawnie współpracować z masqaradą wynikiem czego w jednym czasie na IRC mogą przebywać tylko 2 lub 3 osoby (na jednym serwerze) z sieci. Jest to dość frustrujące dlatego polecam instalacje oidenta. Stąd pobieramy źródła, rozpakowywujemy i kompilujemy je:

tar vxfz oidentd-verxxx.tar.gz
cd oidentd-verxxx
./configure
make
make install

edytujemy plik /etc/inetd.conf i linie:

auth stream tcp wait nobody \
/usr/sbin/in.identd in.identd -P /dev/null

zmieniamy na:

auth stream tcp nowait nobody \
/usr/sbin/oidentd oidentd -i -m

zapisujemy zmiany..
teraz tworzymy plik /etc/oidentd.users

echo > /etc/oidentd.users

w pliku tym wpiszemy naszych użytkowników wg. wzoru:

192.168.1.2 user1 UNIX
192.168.1.3 user2 UNIX
192.168.1.4 user3 UNIX
itd....

Po wydaniu polecenia:

killall -HUP inetd

Wszystko powinno poprawnie działać (przekonamy się o tym wchodząc na Irc i wydając polecenie whois nick , jeśli ircujemy z maszyny 192.168.1.2 Powinno ukazać się: (user1@twoja.domena.sdi.tpnet.pl)

Serwer na HiS - opis konfiguracji Mandrake

Serwer DHCP zapewni nam łatwy sposób przydzielania numerów IP w naszej małej sieci lokalnej. Oczywiście dla 2 komputerów nie ma to większego sensu, ale dla 10 jest tu już celowe. Rozwiązanie to po pierwsze centralizuje naszą sieć. Po drugie użytkownicy nie musza znać konfiguracji swoich maszyn wszystko robimy z poziomu plików konfiguracyjnych demona DHCPd. Poza tym sami przydzielamy numery IP użytkownika co w powiązaniu z ARP i masqarada daje bardzo dobre wyniki.

DHCPd może przydzielać IP w sposób dynamiczny i statyczny

dynamicznie - komputer logując się do sieci dostaje 1 wspólny numer IP, a więc możliwe jest otrzymywanie za każdym razem innego numeru IP rozwiązanie to polecane jest dla bardzo dużych sieci gdzie nie potrzebny jest jeden stały IP dla konkretnego komputera (np. w średnim biurze, czy w szkolnej pracowni)

statycznie - komputer logując się do sieci otrzymuje zawsze ten sam numer IP rozwiązanie idealne dla małych sieci, sieci ASK, biur z udostępnianiem zasobów itd. można tez powiązać te dwie metody ... tak aby tylko wybrane komputery dostawały stałe IP, a reszta losowe.

Konfiguracja DHCPd sprowadza się do poprawnych wpisów w pliku /etc/dhcpd
oto przykładowy plik konfiguracyjny ....
Linie poprzedzone znakiem # są komentarzami

# dhcpd.conf
#
# Sample configuration file for ISC
dhcpd #
# moja_domena.pl - zmian na swoją domene ...

option domain-name "moja_domena.pl";

# server DNS - dla TPSA jest to :

option domain-name-servers 194.204.159.1;

# maska sieci

option subnet-mask 255.255.255.0;

# czasy odwierzania

defau
lt-lease-time 21600;
max-lease-time 86400;
# IP sieci

subnet 192.168.1.0

# parametry dla "pytających hostow"
# zakres numerów IP - tu od .1.2 do .1.40
# routers to numer naszego Linuxa - bramka do Internetu

netmask 255.255.255.0 {
range 192.168.
1.2 192.168.1.40;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
}

#Linie dla komputerów którym my przydzielamy IP

host alfa {
hardware ethernet 00:00:00:00:00:00;
fixed-address 192.168.1.2;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
}

Każdy komputer z sieci dostaje adresy IP z puli 192.168.1.2 do 192.168.1.40, a komputer alfa ma na sztywno przypisany numer IP 192.168.1.2 zamiast 00:00:00:00:00 wpisujemy MAC karty sieciowej. wg. podanego wzoru możemy przydzielić nr IP każdemu członkowi naszej sieci Polecenie:

dhcpd

odpali nam nasz serwer DHCP. Powinniśmy zobaczyć cos takiego:

Internet Software Consortium DHCP Server 2.0
Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
All rights reserved.
Please contribute if you find this software useful.
For info, please visit http://www.isc.org/dhcp-contrib.html
Listening on LPF/eth0/00:48:54:64:5f:ca/192.168.1.0
Sending on LPF/eth0/00:48:54:64:5f:ca/192.168.1.0
Sending on Socket/fallback/fallback-net

Aby teraz dhcpd uruchamiał się nam w czasie startu systemu należy go zainstalować. Robimy to przy pomocy polecenia, wpisywanego w shellu: linuxconf Pojawi się nam okienko, gdzie wybieramy po kolei: Control panel -> Control service Actitity -> dhcpd

 

 

W okienku, które się pokaże, wybieramy opcję Automatic i potwierdzamy klawiszem Accept.

Teraz po uruchomieniu komputera, zawsze będzie uruchamiany demon dhcpd. Adres MAC karty sieciowej poznamy po wydaniu polecenia arp numer_ip_karty lub winipcfg w Windows. W komputerach z Windows należy teraz zaznaczyć "automatyczne pobieranie IP" po restarcie windows poleceniem ping 192.168.1.1 sprawdzamy czy wszystko jest OK

Serwer na HiS
Marqurada na Mandrake

Maskowanie IP umożliwia nam wykorzystanie łącza internetowego z jednym numerem IP do podłączenia do Internetu całej sieci z numerami IP z puli prywatnej. W przypadku Mandrake 7.1 masqarada jest już zainstalowana, należy tylko wygenerować reguły filtrowania. Najpierw tworzymy przykładowy skrypt ip_masq:

pico /sbin/ip_masq
chmod 700 /sbin/ip_masq

# skrypt ip_masq
/sbin/modprobe ip_masq_autofw
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_mfw
/sbin/modprobe ip_masq_portfw
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_user
/sbin/modprobe ip_masq_vdolive

/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -i ppp0 -j MASQ \
-s 192.168.1.2 -d 0.0.0.0/0
/sbin/ipchains -A forward -i ppp0 -j MASQ \
-s 192.168.1.3 -d 0.0.0.0/0
echo 1 > /proc/sys/net/ipv4/ip_forward
#koniec

który to ładuje wszystkie niezbędne moduły oraz udostępnia łącze internetowe tylko i wyłącznie numerom 192.168.1.2 i 192.168.1.3 . Aby dodać do tej puli następne komputery należy dodać kolejne linie do tego pliku. Adresy IP można zastąpić nazwami z pliku /etc/hosts Jeśli chcemy się trochę pobawić to możemy udostępniać (lub blokować) poszczególne porty:

# Blokada IRC dla 192.168.1.4 (port 6667 - to Irce)
/sbin/ipchains -I inpu
t -p tcp \
-s 192.168.1.4/32 1024:65535 \
-d 0/0 6667 -j REJECT

# Blokada IRC na wszystkich - trochę sadystyczne ;)
/sbin/ipchains -I input -p tcp \
-s 0/0 1024:65535 \
-d 0/0 6667 -j REJECT

# Blokada BattleNet dla hosts "host"
/sbin/ipchains -I
input -p tcp \
-s host/32 1024:65535 \
-d 0/0 6112 -j REJECT

/sbin/ipchains -I output -p tcp \
-s host/32 1024:65535 \
-d 0/0 6112 -j REJECT

Bardziej praktyczne przykłady znajdziecie w artykule o Firewallu. Jeszcze jedna sprawa. Regułki ipchains odpowiednio użyte pozwalają na monitorowanie tego kto z jakich stron WWW korzysta. Do tego służy ipchains -M -L Przypuszczalnie trzeba będzie podać całą ścieżkę dostępu czyli: /sbin/ipchains -M -L . Aby maskowanie było uruchamiane po każdym restarcie serwera robimy link symboliczny do katalogu /etc/rc.d/rc3.d:

ln -s /sbin/ip_masq /etc/rc.d/rc3.d/S93Firewall

a plik ip_masq umieszczamy w /sbin

Serwer na HiS - opis konfiguracji Mandrake

W Mandrake 7.1 wszystko sprowadza się do zmiany wpisów w plikach które są w katalogu /etc/ppp/ Tutaj znajdziecie pliki które wystarczy skopiować na już istniejące i pozmieniać wpisy dotyczące swojego IP, logina i hasła (w pap-secrets) HISa odpalamy poleceniem ...

pppd /dev/ttyS0 115200 modem persist defaultroute lock crtscts noauth user sdiuser

gdzie:

/dev/ttyS0 - numer portu szeregowego do którego podpięty jest HIS w tym przypadku jest to COM1
defaultroute -zapewnia nam domyślny routing przez to urządzenie?...
crtscts - sprzętowa korekcja błędów
persist - nasz HIS sam wstanie jeśli łącze zostanie na chwilkę przerwane

Aby HISa odpalać zawsze podczas startu komputera wystarczy pobrać plik his-go który należy umieścić w /sbin/ następnie zrobić link symboliczny do katalogu /etc/rc.d/rc3.d

ln -s /sbin/his-go /etc/rc.d/rc3.d/S94HiS

To praktycznie wszystko. Wystarczy jeszcze raz uruchomić serwer a powinno wszystko działać bez problemów.

Serwer na HiS
Zabezpieczenie Komputera

Każda dystrybucja jest standartowo jakoś tam zabezpieczona. W jednych jest to zabezpieczenie porządne w innych nie ma go prawie wcale ;)) Mandrake jest całkiem dobrze zabezpieczony. Posiada specjalne narzędzie zwane msec. Można w nim wybrać poziom bezpieczeństwa. Mamy do wyboru poziomy od bardzo niskiego po wręcz paranoidalny. W tym ostatnim nie mamy właściwie możliości korzystania z serwera. Mimo tych opcji i tu musimy poświęcisz trochę uwagi bezpieczeństwu naszego serwera. Powinniśmy skupić się na kilku rzeczach:

Uruchomione usługi. Największym błędem początkujących jest pozostawienie wszystkich usług domyślnie pracujących - nawet jeśli nigdy z nich nie korzystali. Zabieramy się więc do edycji pliku /etc/inetd i 'wyhaszujmy' wszystko to czego nie znamy lub nie używamy wg mnie powinniśmy zostawić tylko te linie:

ftp stream tcp nowait root /usr/sbin/proftpd in.proftpd
# jeśli chcemy mieć serwer ftp (tu proftpd)

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
# jeśli chcemy mieć usługę telnet
# (do przemyślenia jest to czy naprawdę tego chcemy)

pop3 stream tcp nowait root /usr/sbin/tcpd gnu-pop3
# jeśli mamy mieć server poczty (pop3)

auth stream tcp wait nobody /usr/sbin/in.identd in.identd -P/dev/null
# wpis konieczny do działania pewnych usług

Resztę mam wyłączoną - szczególnie finger i 'Ruzytki' Przechodzimy do plików /etc/hosts.allow i hosts.deny. W pierwszym określamy "zaufane" komputery, w drogim zabraniamy dostępu najlepiej jest wstawić wpis do /etc/hosts.deny

ALL:ALL

w ten sposób nikt nie ma dostępu do (bezpośredniego) do serwera

Teraz w /etc/hosts.allow wpisujemy nasze zaufane maszyny np.:

ALL:192.168.1.2
ALL:192.168.1.22
ALL:192.168.1.4
in.telnet:192.168.1.3

W powyższym przykładzie wszystkie komputery z IP 192.168.2, 22 i 4 maja dostęp do wszystkich usług (ALL) a host 192.168.1.3 tylko do telnetu.Następnym krokiem powinno być zainstalowanie pakietu ssh. Zapewnia on nam szyfrowanie połączeń między hostami i dlatego powinno się go stosować zamiast telnet !!! Dokładny opis instalacji i konfiguracji demone SSH znajdziecie tutaj.

Kolejna czynność to usunięcie demona ftp - wuftpd. Może i nie jest to konieczne, ale ja po tym śpię spokojniej. W zasadzie, jeśli chodzi o demony ftp to nie ma 100% pewności ostatnio jednak na prowadzenie wychodzi proftpd - i tego tez polecam. Instalacja tego programu jest prosta Wystarczy pobrać ten plik proftpd-1.2.0rc2-2.i386.rpm i uruchomić następujące polecenie:

rpm --install -v proftpd-1.2.0rc2-2.i386.rpm

odszykujemy plik proftpd.conf - i zamiast ServerType standalone wpisujemy ServerType inetd. Następnie sprawdzamy czy w pliku /etc/inetd mamy:

ftp stream tcp nowait root /usr/sbin/proftpd in.proftpd

upewniamy się ze plik proftpd znajduje się faktycznie w katalogu /usr/sbin jeśli nie robimy link do innej lokalizacji. Jeśli chcemy się trochę pobawić to możemy zablokować lub ograniczyć dostęp do naszego serwera odszukajcie sekcje # Limit the maximum number of anonymous logins i dopiszcie lub pozmieniajcie te linie:

MaxClients 5 ">>> Za duzo polaczen... <<<"
MaxClientsPerHost 2 ">>> Za duzo polaczen z jednego IP <<<"

a w ten sposób zrobimy anonimowy dostęp do naszego katalogu incoming sekcja:

# Limit WRITE everywhere in the anonymous chroot
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
<Directory incoming>
<Limit STOR MKD>
AllowAll
</Limit>
<Limit READ RNFR RNTO DELE RMD>
DenyAll
</Limit>
</Directory>
</Anonymous>

potem:

chown root.bin /home/ftp/incoming
chmod 777 /home/ftp/incoming

i to w zasadzie wszystko :)