Siirry sisältöön
Secret Knock

Miksi porttikoputus ei avaa ovea

Koputus joko ei koskaan saavu palvelimelle, saapuu muodossa, jota taustaprosessi ei hyväksy, tai avaa oven osoitteelle, jota et käytä. Käy luettelo läpi ylhäältä alkaen — se on järjestetty syiden yleisyyden mukaan.

1. Ovi avautui toiselle osoitteelle

Palomuuri avaa portin lähdeosoitteelle, jonka palvelin näki. Jos koputit IPv6:n kautta ja SSH muodostaa yhteyden IPv4:n kautta — tai päinvastoin — ovi on auki osoitteelle, jota et käytä. Mobiilidata, operaattorin NAT ja VPN:t muuttavat myös osoitetta.

Vertaa Secret Knockin aloitusnäkymässä näyttämää osoitetta (”Koputat osoitteesta …”) palvelimen lokissa olevaan osoitteeseen ja lukitse ovelle IPv4 tai IPv6, jos ne eroavat toisistaan.

2. Paketit eivät saavu palvelimelle

Hotelli-, toimisto- ja mobiiliverkot estävät toisinaan epätavallisia portteja, ja palvelimen edessä oleva pilvipalomuuri voi hylätä paketit ennen kuin knockd tai fwknopd näkee ne. Tarkkaile palvelimen liikennettä koputtaessasi:

# knockd (UseSyslog): every recognised step and the command it ran
sudo journalctl -u knockd -f

# Do the packets reach the server at all? (use your interface and ports)
sudo tcpdump -ni eth0 'tcp port 7311 or tcp port 8822 or udp port 9133'

# fwknopd in the foreground with verbose output
sudo fwknopd -f -v
Palvelimella

3. Sarja saapuu väärässä muodossa

  1. 1Uudelleenlähetetyt SYN:t: kun TCP-koputus ei saa vastausta, asiakkaan käyttöjärjestelmä lähettää saman SYN:n uudelleen. knockd 0.8 nollaa sarjan tällaisen toiston yhteydessä. Secret Knock lähettää jokaisen TCP-koputuksen yhtenä SYN:nä ja lopettaa yrityksen heti; muut asiakkaat eivät välttämättä toimi näin.
  2. 2Ajoitus: kaikkien vaiheiden on saavuttava järjestyksessä seq_timeout-ajan kuluessa. Lisää lyhyt viive ennen vaihetta, jos välissä oleva reititin järjestää paketteja uudelleen.
  3. 3Protokolla: UDP-vaihe on lähetettävä UDP:nä ja TCP-vaihe TCP:nä — tarkista jokainen vaihe knockd.conf-tiedostosta.
  4. 4tcpflags = syn saa knockd:n ohittamaan TCP-paketit, joissa ei ole SYN-lippua. Ilman sitä myös saman portin yhteyden muut paketit lasketaan osumiksi, ja ne voivat rikkoa sarjan.

4. fwknop: avaimet, kellot ja toistot

  1. 1Molempien avainten on vastattava access.conf-tiedostoa: Rijndael-avain ja HMAC-avain sekä sama tiivistealgoritmi (oletuksena SHA-256).
  2. 2fwknopd hylkää MAX_SPA_PACKET_AGE-arvoa (oletuksena 120 sekuntia) vanhemmat paketit, joten pahasti väärässä oleva laitteen kello saa jokaisen paketin näyttämään vanhalta.
  3. 3Jokaista SPA-pakettia voi käyttää vain kerran; fwknopd hylkää toistetun paketin tarkoituksella.
  4. 4Jos koputat HTTP:n kautta, jonkin on hyväksyttävä TCP-yhteydet kyseisessä portissa, tai pyyntöä ei koskaan lähetetä.

5. Ovi avautuu, mutta SSH epäonnistuu silti

  1. 1Sääntöjen järjestys: taustaprosessin lisäämän säännön on oltava ennen portin hylkäävää sääntöä — iptables -A lisää säännön olemassa olevan DROP-säännön jälkeen, jolloin se ei koskaan täsmää.
  2. 2Aikaikkuna: cmd_timeout tai FW_ACCESS_TIMEOUT sulki oven ennen kuin SSH muodosti yhteyden. Muodosta yhteys aikaikkunan aikana; muodostetut istunnot jatkavat toimintaansa, jos palomuurisi hyväksyy muodostetut yhteydet.
  3. 3Secret Knockin porttitarkistus koputuksen jälkeen kertoo erillään SSH-todennuksesta, vastasiko portti lainkaan.

Kaikki esimerkit GitHubissa → Jokainen tämän sivun määritys valmiina kopioitavaksi: github.com/mobilcomm/secretknock-examples (public domain).

Kysymyksiä

Miten näen, mitä appi todella lähetti?

Oven historia näyttää jokaisen koputuksen ajan, tuloksen ja osoiteperheen kanssa, ja muokkausnäkymä näyttää saman koputuksen päätekomentona, jonka voit suorittaa tietokoneella vertailua varten.

Oppaita määritystäsi varten