Lokalna konfiguracja routera do pracy w innej sieci (iptables, vpn, dhcp)
: 28 października 2010, 17:52
Parę dni temu dostałem nowe zadanie w pracy - chodziło o skonfigurowanie dla jakiegoś człowieka/znajomego szefa komputera, który będzie działał u niego jako router/firewall. W sumie pierwszy raz konfiguruje w firmie komputer, który będzie działał jako wyżej wymienione urządzenie w innej firmie. Zawsze wolałem robić to na miejscu, ale mniejsza z tym. Chciałbym jedynie, żeby ktoś rzucił okiem na moją konfigurację i może powiedział mi czy czegoś nie robię źle.
Po pierwsze schemat "sieci" i rola serwera.

Więc jak widać. Serwer posiada dwie karty sieciowe.
[INDENT]eth0 - 192.168.0.1 - na niej odpalone jest dhcp. Przez eth0 użytkownicy sieci wychodzą do internetu.
eth1 - zew. ip (ustawione na dhcp) - ip przydzielany przez modem.[/INDENT]
Ustawienia /etc/network/interfaces
W związku z tym, że w sieci jest parę urządzeń, które coś tam robią (serwer Windows z udostępnianiem plików i możliwe, że coś jeszcze) a ja nie wiem, jak przydzielane IP one mają, to postanowiłem rozpocząć adresacja dhcp od numeru 100.
I tak przedstawia się konfiguracja /etc/dhcp3/dhcpd.conf:
Teraz zabezpieczenia. Ponieważ komputer ten ma pełnić w jakimś stopniu rolę firewalla to postanowiłem zablokować wszystkie porty, oprócz dwóch.
Otwarte porty to 1337 - ssh i 1194 0 openvpn. SSH jest odblokowane na wypadek gdyby padł VPN. Na dodatek ma zablokowane logowanie się konto roota.
Co do samego VPN-a to adresowanie sieci VPN jest 192.168.150.0. W konfigu dodatkowo, aby była możliwość podłączenia się do komputerów w sieci lokalnej dodana jest linijka:
VPN hula na protokole TCP i tak jak wspomniałem wcześniej porcie 1194.
Teraz chyba najważniejsze. Konfiguracja firewalla. Stworzyłem skrypt, który uruchamia się przy starcie systemu i uruchamia konfigurację iptables. Sama konfiguracja iptables, prezentuje się następująco.
Czy nie zepsułem czegoś w konfiguracji? Szczerze mówiąc wydaje mi się, że mniej więcej jest dobrze, ale byłbym spokojniejszy gdyby ktoś jeszcze rzucił okiem na konfiguracja choćby iptables. Skromną bo skromną, ale powinna spełniać swoją rolę.
Po pierwsze schemat "sieci" i rola serwera.

Więc jak widać. Serwer posiada dwie karty sieciowe.
[INDENT]eth0 - 192.168.0.1 - na niej odpalone jest dhcp. Przez eth0 użytkownicy sieci wychodzą do internetu.
eth1 - zew. ip (ustawione na dhcp) - ip przydzielany przez modem.[/INDENT]
Ustawienia /etc/network/interfaces
Kod: Zaznacz cały
#DHCP
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
#MODEM
allow-hotplug eth1
iface eth1 inet dhcp
I tak przedstawia się konfiguracja /etc/dhcp3/dhcpd.conf:
Kod: Zaznacz cały
ddns-update-style none;
option domain-name-servers 8.8.8.8, 194.204.152.34;
default-lease-time 86400;
max-lease-time 604800;
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.240
option subnet-mask 25.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
}
Otwarte porty to 1337 - ssh i 1194 0 openvpn. SSH jest odblokowane na wypadek gdyby padł VPN. Na dodatek ma zablokowane logowanie się konto roota.
Co do samego VPN-a to adresowanie sieci VPN jest 192.168.150.0. W konfigu dodatkowo, aby była możliwość podłączenia się do komputerów w sieci lokalnej dodana jest linijka:
Kod: Zaznacz cały
push "route 192.168.0.0 255.255.255.0"
Teraz chyba najważniejsze. Konfiguracja firewalla. Stworzyłem skrypt, który uruchamia się przy starcie systemu i uruchamia konfigurację iptables. Sama konfiguracja iptables, prezentuje się następująco.
Kod: Zaznacz cały
# CZYSZCZENIE WPISOW
iptables -F
iptables -X
# DOMYSLNA POLITYKA
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# DOPUSZCENIE ISTNIEJACYCH JUZ POLACZEN
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# IP FORWARDING
echo 1 > /proc/sys/net/ipv4/ip_forward
# FORWARDOWANIE IP Z 192.168.0.0 DO INTERNETU
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
# FORWARDOWANIE IP Z 192.168.150.0 (VPN)
iptables -A FORWARD -s 192.168.150.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.150.0/24 -j MASQUERADE
# DOPUSZCZENE RUCHU WYCHODZACEGO Z LAN BEZ OGRANICZEN
iptables -t filter -A FORWARD -i eth1 -s 192.168.0.0/24 -d 0/0 -j ACCEPT
# _______________
# ETH1 - INTERNET
# SSH
iptables -A INPUT -i eth1 -p tcp --dport 1337 -j ACCEPT
# OPENVPN
iptables -A INPUT -i eth1 -p tcp --dport 1194 -j ACCEPT
# DOPUSZCZENIE PING
iptables -A INPUT -i eth1 -p icmp -j ACCEPT
# ______________
# LO - LOCALHOST
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
# ___________________
# ETH0 - SIEC LOKALNA
iptables -A INPUT -i eth0 -p tcp -j ACCEPT
iptables -A INPUT -i eth0 -p udp -j ACCEPT
# ______________
# TUN0 - OPENVPN
iptables -A INPUT -i tun0 -p tcp -j ACCEPT
iptables -A INPUT -i tun0 -p udp -j ACCEPT