iptables/Reititin

Linux.fista


Huomautus: Artikkeli on pahasti kesken ja sitä päivitetään lähitulevaisuudessa.


Useimmissa valmiissa reitittimissä on joku mini-Linux ja joihinkin saa jälkeenpäin asennettua OpenWrt:n. Valmiissa purkeissa turvallisuus on pääsääntöisesti varsin puutteellinen ja OpenWrt on vähän hankala ylläpitää. Mikään ei luomasta reititintä itse. Pelkkä Raspberry Pi tai vanhempi kannettava voi riittää jos tarvitsee vain langattoman lähiverkon. Joku sopiva mini-PC useammalla LAN-portilla toimii, ja jos haluaa oikean kotipalvelimen, voi käyttää jotain vanhaa työpöytä-konetta.

Sivulla esitetään kolmet ohjeet eri ratkaisuille. Ensimmäisessä tapauksessa tehdään PC-koneesta tavallinen lähiverkko-reititin, toisessa Virtualbox-virtuaalikoneesta Whonix-tyylinen portti Tor-verkkoon ja kolmannessa Raspberry Pi:stä WLAN-reititin. Ensimmäisessä tapauksessa käytetään 64-bittistä Debian-versiota 10.10.0, toisessa 32-bittistä Debian-versiota 9.13.0 ja kolmannessa kirjoitushetkellä uusinta Raspberry Pi OS-jakelua. Lähtökohtana kahdessa ensimmäisessä tapauksessa on täysin uunituore, asetuksia vailla oleva Debian-asennus ilman mitään työkaluja (base system). Koneissa tulee olla kaksi verkkolaitetta.

LAN-reititin[muokkaa]

PC:stä voi tehdä LAN-reitittimen jos siinä on vähintään kaksi LAN-porttia. Tässä tapauksessa oletetaan että ne on nimetty enp3s0 ja enp4s0, ja että enp3s0 liitetään nettiin ja enp4s0 käyttäjän sisäverkkoon. Wifi-purkin tekeminen HostAPD:ta käyttäen mutta sitä ei käsitellä täällä verkkokorttien laajan kirjon takia. Helpoiten selviää valitsemalla dnsmasq:in DNS- ja DHCP-palvelimeksi. Niiden lisäksi pitäisi konffata iptables, kiinteät ja oletettavasti dynaamiset ip-osoitteet sekä ottaa ip_forward käyttöön. Ensin asennetaan dnsmasq käskyllä apt-get install dnsmasq. Seuraavaksi muokataan asetuksia tiedostossa /etc/dnsmasq.conf. Tiedoston kuuluu näyttää seuraavalta:

interface=enp4s0
bind-interfaces
dhcp-range=192.168.1.50,192.168.1.60,12h

Loput rivit voi poistaa tai kommentoida pois. Seuraavaksi asetetaan IP-osoitteet tiedostossa /etc/network/interfaces:

auto lo
iface lo inet loopback
allow-hotplug enp3s0
iface enp3s0 inet dhcp
auto enp4s0
iface enp4s0 inet static
address 192.168.1.250
netmask 255.255.255.0
gateway 192.168.1.250
network 192.168.1.0

Tallennetaan molemmat muutokset. Tässä vaiheessa dnsmasqin voi käynnistää käskyillä systemctl enable dnsmasq.service. Seuraavaksi tehdään iptables-säännöt. Luodaan tiedosto käskyillä touch /etc/iptables.save ja muokataan sitä seuraavasti:

# Generated by iptables-save v1.8.7 on Sun Mar 27 12:52:14 2022
*filter
:INPUT DROP [174647:10066454]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [24876483:69841164843]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -d 192.168.1.250/32 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i enp4s0 -p udp -m udp --dport 67 -j ACCEPT
-A FORWARD -i enp3s0 -o enp4s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i enp4s0 -o ene3s0 -j ACCEPT
-A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
COMMIT
# Completed on Sun Mar 27 12:52:14 2022
# Generated by iptables-save v1.8.7 on Sun Mar 27 12:52:14 2022
*nat
:PREROUTING ACCEPT [243858:20317139]
:INPUT ACCEPT [29875:1979367]
:OUTPUT ACCEPT [61228:4493121]
:POSTROUTING ACCEPT [27228:1646052]
-A POSTROUTING -o enp4s0 -j MASQUERADE
COMMIT
# Completed on Sun Mar 27 12:52:14 2022

Tässä vaiheessa palomuurisäännöt ei vielä selviä uudelleenkäynnistyksestä. Sen voi tehdä vaikka asentamalla iptables-persistent-paketti. Aivan lopulta muokataan tiedostoa /etc/sysctl.conf ja lisätään siihen net.ipv4.ip_forward=1. Tässä vaiheessa tehdään uudelleenkäynnistys käskyllä reboot. Tämän jälkeen tietokoneen pitäisi toimia reitittimenä.

Tor-reititin[muokkaa]

Tarvitaan paketit apt-transport-tor, openssh-server ja isc-dhcp-server. iptables-säännöt otetaan käyttöön itsetehdyllä skriptillä ja unohdetaan esimerkiksi ufw ja iptables-persistent.

v  k  m
Fxemoji u1F5A5.svg Palvelin
 Ylläpito  SSH | Tietoturva | Käyttäjien hallinta | Systemd | iptables | Security-Enhanced Linux | AppArmor
 Palvelintyypit  Web-palvelin | Sähköposti | Tietokanta | NFS | Samba
 Komentorivi  Komentorivin perusteet | Komentorivikomennot | Bash-skriptaus
 Tekstieditoreja  nano | vi | emacs
Palvelin-luokka