Kirjoittaja Aihe: Iptables ja ssh-serveri  (Luettu 2456 kertaa)

mango

  • Käyttäjä
  • Viestejä: 18
    • Profiili
Iptables ja ssh-serveri
« : 20.04.07 - klo:14.15 »
Moi!

Minulla on toisessa koneessa openssh-serveri, ja konetta käytän siis lähennä siihen, että voin irkata muualtakin kuin kotoa.
Koneessa on Ubuntu 6.06LTS ja server-asennus, eli x:ää ei ole.
Kysyisin, miten saan iptablesin avulla portit piiloon?
Muita portteja kuin tuo ssh-portti ei ole auki, ja sekin on vaihdettu muuhun kuin oletuksena olevaan 22-porttiin.
Olen koittanut etsiä neuvoja googlaamalla, mutta suurin osa neuvoo miten saa vain tavallisen työpöytäkoneen iptablesin conffattua, tai ohjeissa käytetään firestarteria, mitä minulla ei ole mahdollista käyttää.

Kalle Kipinä

  • Käyttäjä
  • Viestejä: 78
    • Profiili
Vs: Iptables ja ssh-serveri
« Vastaus #1 : 22.04.07 - klo:04.45 »
Moi!

Minulla on toisessa koneessa openssh-serveri, ja konetta käytän siis lähennä siihen, että voin irkata muualtakin kuin kotoa.
Koneessa on Ubuntu 6.06LTS ja server-asennus, eli x:ää ei ole.
Kysyisin, miten saan iptablesin avulla portit piiloon?
Muita portteja kuin tuo ssh-portti ei ole auki, ja sekin on vaihdettu muuhun kuin oletuksena olevaan 22-porttiin.
Olen koittanut etsiä neuvoja googlaamalla, mutta suurin osa neuvoo miten saa vain tavallisen työpöytäkoneen iptablesin conffattua, tai ohjeissa käytetään firestarteria, mitä minulla ei ole mahdollista käyttää.
Itselläni on yleispätevästi toimiva järjestely, jossa hakemistossa /etc/rc2.d (palvelinkäytössä hakemisto voisi siis olla /etc/rc1.d ehkä?) on symbolinen linkki nimeltä S21firewall, joka osoittaa puolestaan tiedostoon /sbin/myfirewall (joka on rootin omistama ja jonka voi ajaa).

myfirewall-tiedosto puolestaan sisältää tällaista:
Koodia: [Valitse]
#!/bin/sh

#malli
#iptables -I INPUT -j ACCEPT -p tcp -m osf --genre Linux --log 1 --smart

# prep
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# high ports
iptables -A OUTPUT -p tcp --sport 1024: -j ACCEPT
iptables -A INPUT -p tcp --dport 1024: ! --syn -j ACCEPT

# udp
iptables -A INPUT -p udp --dport 1: -j ACCEPT
iptables -A OUTPUT -p udp --dport 1: -j ACCEPT

# ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

# Skype
iptables -A INPUT -p tcp --dport 62930 -j ACCEPT

# web
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
#iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT

# icmp
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT

Tätä nyt pitää tietysti soveltaa hiukan, sillä siinä UDP-portit ovat auki ja Skypellekin on aukaistu reikä erikseen ja ssh:kin ottaa vastaan nimenomaan portissa 22. Tuo icmp-osio puolestaan piilottaa koneen icmp-paketeilta (mm. ping), mutta sallii kuitenkin pingaamisen koneelta muualle verkkoon. Koodissa siis merkki # toimii kommenttimerkkinä luonnollisesti, esimerkiksi http- ja https-porttien osio on kommentoitu pois kokonaan itseltänikin, portit siis ovat kiinni.

Lyhykäisyydessään ilmeisesti tämän järjestelmän luominen sujuisi siis näin:
Koodia: [Valitse]
sudo nano /sbin/myfirewall
->liitetään yllä oleva myfirewallin sisältö ja muokataan halutulla tavalla. Lopuksi tietysti tallennetaan.

Koodia: [Valitse]
sudo chmod u+x /sbin/myfirewall
sudo ln -s /sbin/myfirewall /etc/rc1.d/S21firewall

Palomuuri (oikeammin kyseessä lie pakettisuodatin?) lähtee käyntiin vaikka ihan sanomalla
Koodia: [Valitse]
sudo /etc/rc1.d/S21myfirewall
mutta myös jokaisen buutin yhteydessä.

mango

  • Käyttäjä
  • Viestejä: 18
    • Profiili
Vs: Iptables ja ssh-serveri
« Vastaus #2 : 23.04.07 - klo:03.04 »
Kiitos vastauksesta!

Toi ei kuitenkaan tehnyt mitään muutosta, suljetut ja avatut portit näkyi vieläkin. Sen sijaan seuraava:

Koodia: [Valitse]
iptables -P INPUT DROP
iptables -F INPUT
iptables -N inbound
iptables -A INPUT -i eth0 -j inbound
iptables -A INPUT -i lo -j ACCEPT

iptables -A inbound -m state --state ESTABLISHED -j ACCEPT
iptables -A inbound -m state --state RELATED -j ACCEPT

teki tehtävän. Nyt ainakin nmap näyttää, että kaikki portit ovat filteröityjä. Se saa ainakin toistaiseksi riittää minulle.

Kiitos silti.

Kalle Kipinä

  • Käyttäjä
  • Viestejä: 78
    • Profiili
Vs: Iptables ja ssh-serveri
« Vastaus #3 : 23.04.07 - klo:12.40 »
Toi ei kuitenkaan tehnyt mitään muutosta, suljetut ja avatut portit näkyi vieläkin.

Erikoista. Itselläni kyllä yllä listattu iptables-säännöstö aiheuttaa esimerkiksi Shields Upissa sen, että kaikki portit paitsi 0 ja 22 ovat stealth-tilassa. Testasin jopa tätä vielä, kun jäi epävarma olo, tekemällä port forwardin wlan-routeriin portille 443: kun iptables oli edellä mainitussa tilassa, 443 näytti stealthia. Kun kommenttimerkit poisti porrtia 443 koskevien rivien edestä ja suoritti /sbin/myfirewall-tiedoston, näytti Shields Up portin olevan Closed-tilassa Stealthin sijaan.

Eli itselläni kyllä toimii tuo listaamani skripti ihan mainiosti, tiedä sitten missä sinulla on mennyt vinoon. Pitää vielä tutustua omaan versioosi, josko siitä voisi kuitenkin jotain uutta oppia. :)

mango

  • Käyttäjä
  • Viestejä: 18
    • Profiili
Vs: Iptables ja ssh-serveri
« Vastaus #4 : 24.04.07 - klo:19.50 »
Joo ei toi munkaan toimi :D
Tai toimii, mutten pysty enää sit avaamaan ssh-yhteyttä kun toi torjuu kaikki muualta tulevat yhteydenottoyritykset ilmeisesti.

Kalle Kipinä

  • Käyttäjä
  • Viestejä: 78
    • Profiili
Vs: Iptables ja ssh-serveri
« Vastaus #5 : 25.04.07 - klo:12.00 »
Joo ei toi munkaan toimi :D
Tai toimii, mutten pysty enää sit avaamaan ssh-yhteyttä kun toi torjuu kaikki muualta tulevat yhteydenottoyritykset ilmeisesti.
Sen verran korjaisin tässä vaiheessa omaa ohjettani, että (toki Debianin suositusten vastaisesti) laittaisinkin nykytietojeni valossa linkin mieluummin hakemistoon /etc/rcS.d ja nimeksi S41firewall, niin tuo tulisi ladattua jokaiseen runleveliin. Järjestysnumeroista löytyy lisää tietoa tiedostosta /etc/rtS.d/README :)