[Ratkaisu] FireHOL varoittaa RESERVED_IPS-tiedoston vanhentumisesta

Lähtökohta
Pakettienhallinnassa firehol on asennettuna.
Ongelma
Käynnistyksen yhteydessä FireHOL antaa seuraavanlaisen varoituksen:

WARNING
File '/etc/firehol/RESERVED_IPS' is more than 90 days old.
You should update it to ensure proper operation of your firewall.

Run the supplied get-iana.sh script to generate this file.

Get-iana.sh -komentojono on tallennettu /sbin/get-iana -tiedostoon, joten sen suorittaminen tapahtuu sudo get-iana -komennolla. Komennon suorittaminen antaa kuitenkin seuraavanlaisen virheilmoituksen:

Failed to find reserved IPs.
Possibly the file format has been changed, or I cannot fetch the URL.
Ongelman syy
FireHOLin asetustiedostoihin kuuluva RESERVED_IPS on vanhentunut, samoin kuin sen päivittämiseen käytettävä komentojonotiedosto.
Ratkaisu
Lataan tuoreen version komentojonotiedostosta, ja suoritan sen.

  1. Lataan get-iana.sh -tiedoston uusimman version suoraan FireHOLin versionhallintajärjestelmästä, ja tallennan sen kotihakemistooni.
  2. Korvaan järjestelmässäni olevan, vanhentuneen version komentojonotiedostosta sen uudella versiolla, seuraavalla komennolla:
    sudo cp ~/get-iana.sh /sbin/get-iana
  3. Suoritan komentojonotiedoston varattujen IP-osoitteiden listan päivittämiseksi:
    sudo get-iana

    Ladattuaan tarvitsemansa tiedot Internetistä komentojono esittää seuraavan kysymyksen:

    Would you like to save this list to /etc/firehol/RESERVED_IPS
    so that FireHOL will automatically use it from now on?
    
    yes or no > 

    Vastaan myöntävästi kirjoittamalla yes ja painamalla sen jälkeen rivinvaihtonäppäintä.

Tämän jälkeen FireHOL ei enää käynnistyksen yhteydessä näytä varoitustaan, ennen kuin yhdeksänkymmentä päivää on kulunut, jonka jälkeen sudo get-iana -komento täytyy suorittaa jälleen.

Huomautus
Tuntuisi luontevalta määrätä get-iana suoritettavaksi automaattisesti vaikkapa kerran kuussa, mutta komentojonotiedostossa ei ole valitsinta, jota käyttämällä se kirjoittaisi muutokset asetustiedostoon kysymättä varmistusta. Olisi ilmeisesti varsin yksinkertaista muokata komentojonoa tältä osin, mutta aion toistaiseksi suorittaa komentojonon komentoriviltä aina 90 päivän välein.

[Ratkaisu] Tiedoston lähettäminen IRC-tuttavalle ei onnistu Pidginissä

Lähtökohta
Olen asentanut firehol-paketin, asettanut /etc/default/firehol -tiedostossa olevan START_FIREHOL -parametrin arvoksi YES ja muokannut /etc/firehol/firehol.conf -tiedostoa niin, että lähtökohtaisesti useimmat verkkoyhteyteni porteista on suljettu.

Olen käynnistänyt Pidgin-pikaviestimen. Olen lisännyt Pidginiin IRC-protokollan välityksellä yhdistettävän tuttavan. Olen avannut keskustelun tuttavan kanssa, ja keskusteluyhteys toimii.

Haluan lähettää tuttavalle kuvatiedoston, joten valitsen keskusteluikkunan Keskustelu-valikosta Lähetä tiedosto... -kohteen, etsin avautuneesta tiedostonvalitsimesta lähetettävän tiedoston, valitsen sen ja painan Avaa-nappia. Tiedostonsiirtoikkuna avautuu, ja sen listalla valitsemani tiedoston mainitaan odottavan lähetyksen alkamista.

Ongelma
Tiedoston lähetys ei käynnisty. Mikäli tuttavani saa ilmoituksen tiedostonsiirtopyynnöstäni, sen hyväksymisellä ei ole vaikutusta yhteyden tässä päässä. Joillain yrityskerroilla tuttava ei saa edes ilmoitusta tiedostonsiirtopyynnöstäni.
Ongelman syy
FireHOL-palomuuri on tukkinut portit, joita Pidgin yrittää käyttää tiedoston siirtämiseen.
Ratkaisu
Avaan palomuurista yhden portin ja määrään sen jälkeen Pidginin käyttämään juuri sitä porttia tiedostonsiirtoihin.

  1. Avaan portin muokkaamalla /etc/firehol/firehol.conf -tiedostoa komentamalla sudo gedit /etc/firehol/firehol.conf avaamastani Päätteestä. Asetustiedoston avauduttua tekstieditorissa lisään siihen määrittelyn palvelulle, jonka nimeän pdcc:ksi:
    # Pidgin file transfer
    server_pdcc_ports="tcp/2048"
    client_pdcc_ports="any"

    Sen jälkeen määrittelen tämän portin interface any world -osion alla avattavaksi:

            # Let Pidgin file transfer through
    	server "pdcc" accept
    	client "pdcc" accept

    Muutosten jälkeen tiedoston keskiosa näyttää tässä tapauksessa seuraavalta, kun edellä lisäämäni rivit on korostettu lihavoinnilla:

    # Windows Live Messenger
    server_wlm_ports="tcp/1863 tcp/443"
    client_wlm_ports="any"
    
    # Pidgin's file transfer
    server_pdcc_ports="tcp/2048"
    client_pdcc_ports="any"
    
    interface any world
    
    	# Accept all client traffic on any interface
    	#client all accept
    
            # Let Windows Live Messenger through
    	server "wlm" accept
    	client "wlm" accept
    
    	# Let Pidgin's file transfer through
    	server "pdcc" accept
    	client "pdcc" accept
  2. Muutokset tehtyäni ja tallennettuani käynnistän FireHOL-palomuurin uudestaan sudo /etc/init.d/firehol restart -komennolla.
  3. Palomuurin käynnistyttyä uudestaan avaan Pidginin pääikkunan, ja otan Pidginin asetukset esille valitsemalla Työkalut-valikosta kohdan Asetukset. Avautuvasta ikkunasta otan esille Verkko-välilehden.
  4. Valitsen Portit-otsikon alla olevan Aseta kuunneltava porttialue -kohdan käyttöönotetuksi.
  5. Edelleen Portit-otsikon alla olevan porttialueen Ensimmäiseksi portiksi asetan edellä palomuurista avaamani portin 2048. Varmistan, että myös porttialueen Viimeinen portti on 2048.
  6. Suljen asetusikkunan sen Sulje-napista, jonka jälkeen sammutan Pidginin valitsemalla sen pääikkunan Tuttavat-valikosta kohdan Lopeta. Pidginin sulkeuduttua käynnistän sen uudestaan.

Tämän jälkeen tiedostojen siirtäminen IRC-protokollaa käyttävälle tuttavalleni onnistuu.

Huomautus
En ole varma, mutta epäilen, että mikäli tiedostonsiirtoon varattuja portteja on vain yksi kuten yllä olevan ratkaisun jälkeen on, tiedostoja voi siirtää Pidginissä vain yhden kerrallaan. Lisäksi tiedostojen siirtäminen ei onnistu, mikäli jokin toinen ohjelma käyttää sekin ratkaisussa valitsemaani porttia.
Mikäli näin on, ja mikäli minulla ilmenee tarvetta useammille yhtäaikaisille tiedostonsiirroille Pidginissä, tai tarvetta käyttää tiedostonsiirron tapahtuessa muita ohjelmia, jotka käyttävät samaa porttia, voin määrätä yhden portin sijasta haluamani kokoisen porttialueen avatuksi palomuurin asetuksissa. Sen jälkeen kerron Pidginille (ja mahdollisesti myös toiselle ohjelmalle) sen asetuksissa, että se voi käyttää tätä porttialuetta tiedostojen siirtämiseen.

[Ratkaisu] FireHOL (iptables) täyttää dmesgin ja syslogin

Lähtökohta
Haluan katsoa käynnistyksen aikana ylöskirjattuja tapahtumia dmesg-komennolla ja /var/log/syslog -tiedoston sisältöä lukemalla.
Olen asentanut FireHOL-palomuurin ja asettanut sen käynnistymään järjestelmän käynnistymisen yhteydessä.
Ongelma
Dmesg-komennon antama tuloste on täynnä palomuurin ylöskirjaamia tietoja pakettien välityksestä. Tuloste sisältää pelkästään seuraavan kaltaisia rivejä:

:08:00 SRC=130.234.192.48 DST=130.234.195.255 LEN=211 TOS=0x00 PREC=0x00 TTL=128 ID=63892 PROTO=UDP SPT=138 DPT=138 LEN=191

Myös /var/log/syslog on täynnä samanlaisia rivejä niin, että lokin muu sisältö hukkuu kokonaan niiden sekaan.

Haluan, että palomuurin ilmoitukset kirjataan erilliseen lokitiedostoon. Jos tämä ei ole mahdollista, haluan, että palomuuri kirjaa ylös ainoastaan nykyistä rajaa tärkeämmät toimet pakettien kanssa niin, että palomuurin ilmoitukset eivät hukuta lokeissa olevaa muuta tietoa alleen. Jos tämäkään ei ole mahdollista, haluan, että palomuuri ei kirjaa lokiin mitään.

Ongelman syy
FireHOL käyttää lokinpitoon syslogd:tä.
Ratkaisu
Asennan pakettienhallinnassa ulogd-paketin, ja asetan sen jälkeen FireHOLin käyttämään ulogd:tä lokinpidossaan.
Asetan FireHOLin käyttämään ulogd:tä avaamalla /etc/default/firehol -tiedoston muokattavaksi sudo gedit /etc/default/firehol -komennolla ja lisäämällä siihen sitten seuraavan rivin:

FIREHOL_LOG_MODE="ULOG"

Tallennettuani muutokset tiedostoon käynnistän FireHOLin uudestaan sudo /etc/init.d/firehol restart -komennolla. Tämän jälkeen palomuurin ilmoitukset tallentuvat /var/log/ulog/syslogemu.log -tiedostoon, eivätkä enää tallennu /var/log/syslog -tiedostoon tai dmesgin puskuriin.

[Ratkaisu] Windows Live Messenger -tili ei toimi FireHOLin asennuksen jälkeen

Lähtökohta
Olen määritellyt Pidgin-pikaviestimessä Windows Live Messenger -tilin. Pystyn kirjautumaan tilille, jos en asenna palomuuria.

Olen asentanut firehol-paketin, asettanut /etc/default/firehol -tiedostossa olevan START_FIREHOL -parametrin arvoksi YES, asentanut moblock-nfq -paketin ja muokannut /etc/firehol/firehol.conf -tiedostoa niin, että sen sisältö on Ubuntu Forumilla annetun esimerkin mukainen:

version 5

# Moblock chain
iptables --new MOBLOCK
iptables -A MOBLOCK -j NFQUEUE

# Example udp ports
server_exampleport_ports="udp/15001:15011"
client_exampleport_ports="any"

# "any" means any interface, you can substitute it
# for eth0 or whatever.

interface any world

        # Let torrent and exampleport through, and
        # filter them in moblock.
        server "exampleport" MOBLOCK

        # This will send http traffic directly
        # to accept instead of moblock
        # thus whitelisting it...
        client http accept

        # Filter all outgoing connections, and their replies.
        client all MOBLOCK

Olen käynnistänyt järjestelmän uudelleen ja kirjautunut sisään. Sisäänkirjautumisen yhteydessä käynnistyväksi ja pikaviestitileilleni sisäänkirjautuvaksi asetettu Pidgin käynnistyy, ja siihen asettelemieni IRC- ja Gtalk-tilien sisäänkirjautuminen onnistuu.

Ongelma
Windows Live Messenger -tilin sisäänkirjautuminen ei onnistu. Pidgin ilmoittaa pitkän yhteydenottoyrityksen lopuksi Yhteys katkennut ja Yhteysvirhe palvelimelta Notification: Yhteyden muodostaminen epäonnistui.
Ongelman syy
Firehol-palomuuri on sulkenut Windows Live Messenger -tilille kirjautumisessa käytettävät portit 443 ja 1863.
Ongelman ratkaisu
Avaan tarvittavat portit, jonka jälkeen käynnistän palomuurin uudelleen ja käsken Pidginin kirjautumaan Windows Live Messenger -tililleni uudestaan.

  1. Avaan tarvittavat portit muokkaamalla /etc/firehol/firehol.conf -tiedostoa komentamalla sudo gedit /etc/firehol/firehol.conf avaamastani Päätteestä. Asetustiedoston avauduttua tekstieditorissa lisään siihen määrittelyn palvelulle, jonka nimeän wlm:ksi:
    # Windows Live Messenger
    server_wlm_ports="tcp/1863 tcp/443"
    client_wlm_ports="any"

    Sen jälkeen määrittelen nämä portit interface any world -osion alla avattaviksi:

            # Let Windows Live Messenger through
    	server "wlm" accept
    	client "wlm" accept

    Muutosten jälkeen tiedoston keskiosan tulisi näyttää seuraavalta, kun Lähtökohta-osiossa annettuun listaukseen lisäämäni rivit on korostettu lihavoinnilla:

    # Example udp ports
    server_exampleport_ports="udp/15001:15011"
    client_exampleport_ports="any"
    
    # Windows Live Messenger
    server_wlm_ports="tcp/1863 tcp/443"
    client_wlm_ports="any"
    
    interface any world
    
            # Let Windows Live Messenger through
    	server "wlm" accept
    	client "wlm" accept
    
            # Let torrent and exampleport through, and
  2. Muutokset tehtyäni ja tallennettuani käynnistän FireHOL-palomuurin uudestaan komentamalla Päätteestä sudo /etc/init.d/firehol restart
  3. Palomuurin käynnistyttyä uudestaan otan Windows Live Messenger -tilini pois käytöstä Pidginissä valitsemalla Tuttavalista-näkymän Käyttäjätilit-valikosta Windows Live Messenger -tilini alta kohdan Poista käytöstä. Sen jälkeen otan tilin uudestaan käyttöön valitsemalla Windows Live Messenger -tilini Käyttäjätilit-valikon Ota tili käyttöön -alivalikosta.

Tämän jälkeen sisäänkirjautuminen Windows Live Messenger -tililleni onnistuu.

Huomautus
Fireholissa on varattu MSN:ää varten oma nimetty porttinsa, msn, mutta Windows Live Messenger käyttää eri portteja.