/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
IPtables: giv kun SSHadgang fra bestemte I~
Fra : Kim Emax


Dato : 05-09-04 15:19

Hej

Burde det ikke være muligt at give adgang til bestemte IPer og afvise alle
andre? Jeg kan ikke få det til at spille, jeg har prøvet lidt frem og
tilbage, men får ikke det ønskede resultat, hvis jeg har dette i
/etc/sysconfig/iptables:

-A INPUT -p tcp -s 213.237.12.252 --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 22 --syn -j REJECT

Burde give min IP adgang og afvise alle andre, men efterfølgende får jeg
overhovedet ikke adgang til svinet, hvad enten jeg har REJECT
reglen øverst eller nederst. Overskriver regel 2 den første regel eller?

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



 
 
Tonni Aagesen (06-09-2004)
Kommentar
Fra : Tonni Aagesen


Dato : 06-09-04 17:54

Kim Emax wrote:
> Hej
>
> Burde det ikke være muligt at give adgang til bestemte IPer og afvise alle
> andre? Jeg kan ikke få det til at spille, jeg har prøvet lidt frem og
> tilbage, men får ikke det ønskede resultat, hvis jeg har dette i
> /etc/sysconfig/iptables:
>
> -A INPUT -p tcp -s 213.237.12.252 --dport 22 -j ACCEPT
> -A INPUT -p tcp --dport 22 --syn -j REJECT
>
> Burde give min IP adgang og afvise alle andre, men efterfølgende får jeg
> overhovedet ikke adgang til svinet, hvad enten jeg har REJECT
> reglen øverst eller nederst. Overskriver regel 2 den første regel eller?
>

Skal du ikke tillade SYN pakker fra din IP også... ellers kan du vel
ikke connecte?

(disclaimer: laaang tid siden jeg har kigget på IP-tables)

--
Mvh
Tonni Aagesen
www.cazoo.dk

Kim Emax (07-09-2004)
Kommentar
Fra : Kim Emax


Dato : 07-09-04 22:51

"Tonni Aagesen" <goto@dev.null> skrev i en meddelelse
news:LC0%c.3316$_u4.1431@news.get2net.dk...

>> -A INPUT -p tcp -s 213.237.12.252 --dport 22 -j ACCEPT
>> -A INPUT -p tcp --dport 22 --syn -j REJECT

> Skal du ikke tillade SYN pakker fra din IP også... ellers kan du vel ikke
> connecte?

Aner ikke, hvad --syn gør, men det skal jeg lige have fundet ud af! Jeg
lavede dette efter jeg læste din post:

-A INPUT -p tcp -s 213.237.12.252 --dport 22 --syn -j ACCEPT
-A INPUT -p tcp --dport 22 -j REJECT

Og nu kan jeg slet ikke komme til svinet, så der er dømt onsite besøg
imorgen

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Michael Rasmussen (07-09-2004)
Kommentar
Fra : Michael Rasmussen


Dato : 07-09-04 23:56

On Tue, 07 Sep 2004 23:51:26 +0200, Kim Emax wrote:

>
> Aner ikke, hvad --syn gør, men det skal jeg lige have fundet ud af! Jeg
> lavede dette efter jeg læste din post:
>
Før der initieres en tcp-connection, foretager klient og server et 3-fase
handshake. Handshake består i, at klient sender en tcp-pakke med
syn-bitten sat til 1 og ack-bit sat til 0. Accepterer serveren
forespørgslen, sendes en tcp-pakke tilbage med syn-bit=1 og ack-bit=1.
Klient sender herpå også en tcp-pakke med syn-bit=1 og ack-bit=1. Nu er
der etableret en tcp-connection.

Af ovenstående fremgår det, at hvis tcp-pakker med syn-bit=1 rejectes,
kan der ikke oprettes en tcp-forbindelse. I dette tilfælde må man så
thy til udp - om udp kan anvendes til ssh, vil jeg stærkt tvivle på.

--
Hilsen/Regards
Michael Rasmussen

Get my public GnuPG keys:
mir <at> datanom <dot> net
http://search.keyserver.net:11371/pks/lookup?op=get&search=0xE501F51C
mir <at> miras <dot> org
http://search.keyserver.net:11371/pks/lookup?op=get&search=0xE3E80917
--------------------------------------------------------------
Are you a turtle?



Kim Emax (08-09-2004)
Kommentar
Fra : Kim Emax


Dato : 08-09-04 07:10

Michael Rasmussen wrote:

> Før der initieres en tcp-connection, foretager klient og server et
> 3-fase handshake. Handshake består i, at klient sender en tcp-pakke
> med syn-bitten sat til 1 og ack-bit sat til 0. Accepterer serveren
> forespørgslen, sendes en tcp-pakke tilbage med syn-bit=1 og ack-bit=1.
> Klient sender herpå også en tcp-pakke med syn-bit=1 og ack-bit=1. Nu
> er der etableret en tcp-connection.
>
> Af ovenstående fremgår det, at hvis tcp-pakker med syn-bit=1 rejectes,
> kan der ikke oprettes en tcp-forbindelse. I dette tilfælde må man så
> thy til udp - om udp kan anvendes til ssh, vil jeg stærkt tvivle på.

Tak for din grundige posting, jeg nupper lige Tannenbaum med på arbejde og
nærlæser

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Tonni Aagesen (08-09-2004)
Kommentar
Fra : Tonni Aagesen


Dato : 08-09-04 07:53

Kim Emax wrote:

> -A INPUT -p tcp -s 213.237.12.252 --dport 22 --syn -j ACCEPT
> -A INPUT -p tcp --dport 22 -j REJECT

I første linje åbner du for SYN-pakker for din ip på port 22.
I anden linje lukker du for SYN på alle IP'er på port 22 igen.

Flowet bør være noget alá:

1) Luk for alt SSH.
-A INPUT -p tcp --dport 22 -j --syn REJECT
-A INPUT -p tcp --dport 22 -j REJECT

2) Åbn for det nødvendige.
-A INPUT -p tcp -s 213.237.12.252 --dport 22 --syn -j ACCEPT
-A INPUT -p tcp -s 213.237.12.252 --dport 22 -j ACCEPT


--
Mvh
Tonni Aagesen
www.cazoo.dk

Rasmus Bøg Hansen (08-09-2004)
Kommentar
Fra : Rasmus Bøg Hansen


Dato : 08-09-04 08:02

Tonni Aagesen <goto@dev.null> hit the keyboard.
Afterwards the following was on the screen:

> Kim Emax wrote:
>
>> -A INPUT -p tcp -s 213.237.12.252 --dport 22 --syn -j ACCEPT
>> -A INPUT -p tcp --dport 22 -j REJECT
>
> I første linje åbner du for SYN-pakker for din ip på port 22.
> I anden linje lukker du for SYN på alle IP'er på port 22 igen.
>
> Flowet bør være noget alá:
>
> 1) Luk for alt SSH.
> -A INPUT -p tcp --dport 22 -j --syn REJECT
> -A INPUT -p tcp --dport 22 -j REJECT

Nej. Her åbner du først for første pakke i handshake-fasen og lukker
derefter for alt andet. Inklusiv den forbindelse, du er ved at
etablere.

Forudsat selvfølgelig, at du tidligere har tilladt al ESTABLISHED
trafik; så er det helt fint.

> 2) Åbn for det nødvendige.
> -A INPUT -p tcp -s 213.237.12.252 --dport 22 --syn -j ACCEPT
> -A INPUT -p tcp -s 213.237.12.252 --dport 22 -j ACCEPT

Den anden linje her medfører den første, hvorfor den første er helt
overflødig. Specificerer man ikke --syn (eller tilsvarende) medfører
det automatisk at reglen passer på alle kombinationer af TCP-flag;
herunder SYN.

/Rasmus

--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
Stop the trolling. Make code, not war.
- Dana Lacoste
----------------------------------[ moffe at amagerkollegiet dot dk ] --

Tonni Aagesen (08-09-2004)
Kommentar
Fra : Tonni Aagesen


Dato : 08-09-04 19:53

Rasmus Bøg Hansen wrote:

> Nej. Her åbner du først for første pakke i handshake-fasen og lukker
> derefter for alt andet. Inklusiv den forbindelse, du er ved at
> etablere.

[Klip]

Jeg burde måske have gentaget denne linje fra mit første indlæg i denne
tråd :)

> (disclaimer: laaang tid siden jeg har kigget på IP-tables)


--
Mvh
Tonni Aagesen
www.cazoo.dk

Kasper Nordal Lund (07-09-2004)
Kommentar
Fra : Kasper Nordal Lund


Dato : 07-09-04 07:17

On Sun, 5 Sep 2004 16:19:29 +0200, "Kim Emax"
<newsgroup@remove-emax.dk> wrote:

>Hej
>
>Burde det ikke være muligt at give adgang til bestemte IPer og afvise alle
>andre? Jeg kan ikke få det til at spille, jeg har prøvet lidt frem og
>tilbage, men får ikke det ønskede resultat, hvis jeg har dette i
>/etc/sysconfig/iptables:
>
>-A INPUT -p tcp -s 213.237.12.252 --dport 22 -j ACCEPT
>-A INPUT -p tcp --dport 22 --syn -j REJECT
>
>Burde give min IP adgang og afvise alle andre, men efterfølgende får jeg
>overhovedet ikke adgang til svinet, hvad enten jeg har REJECT
>reglen øverst eller nederst. Overskriver regel 2 den første regel eller?

alternativt kan du bruge /etc/hosts.allow og /etc/hosts.deny filerne.


Jesper Krogh (08-09-2004)
Kommentar
Fra : Jesper Krogh


Dato : 08-09-04 07:42

I dk.edb.system.unix, skrev Kasper Nordal Lund:
> >Burde det ikke være muligt at give adgang til bestemte IPer og afvise alle
> >andre? Jeg kan ikke få det til at spille, jeg har prøvet lidt frem og
> >tilbage, men får ikke det ønskede resultat, hvis jeg har dette i
> >/etc/sysconfig/iptables:
> >
> >-A INPUT -p tcp -s 213.237.12.252 --dport 22 -j ACCEPT
> >-A INPUT -p tcp --dport 22 --syn -j REJECT
> >
> >Burde give min IP adgang og afvise alle andre, men efterfølgende får jeg
> >overhovedet ikke adgang til svinet, hvad enten jeg har REJECT
> >reglen øverst eller nederst. Overskriver regel 2 den første regel eller?
>
> alternativt kan du bruge /etc/hosts.allow og /etc/hosts.deny filerne.

Elller AllowUsers i /etc/ssh/sshd_config, så kan man også specificere at
det kun må være brugeren "jesper" der må logge ind fra 192.168.0.7
Og lignende.. men hvis det er for at beskytte en gammel installation af
ssh, så er det nok en dårlig plan.

--
../Jesper Krogh, jesper@krogh.cc
Jabber ID: jesper@jabbernet.dk


Dennis Jørgensen (08-09-2004)
Kommentar
Fra : Dennis Jørgensen


Dato : 08-09-04 11:22


Bemærk: Jeg er _ikke_ iptables mester.

"Kim Emax" <newsgroup@remove-emax.dk> writes:

> Burde det ikke være muligt at give adgang til bestemte IPer og afvise alle
> andre? Jeg kan ikke få det til at spille, jeg har prøvet lidt frem og
> tilbage, men får ikke det ønskede resultat, hvis jeg har dette i
> /etc/sysconfig/iptables:
>
> -A INPUT -p tcp -s 213.237.12.252 --dport 22 -j ACCEPT
> -A INPUT -p tcp --dport 22 --syn -j REJECT

Nu ved jeg ikke hvad du ellers har af regler, men det der ser
umiddelbart ikke forkert ud[1]. Står reglerne præcis sådan, eller er
noget af det sat ind som variable? I så fald, er variabelnavnene skrevet
rigtigt?

Jeg ville nok have lavet det sådan:

-A INPUT -m state --state NEW -p tcp -s <ip> --dport ssh -j ACCEPT
-A INPUT -p tcp --dport ssh -j REJECT

Men forskellen til din er vist til at overse.

Hvis du bruger de to regler skal en af dine første[2] INPUTregler være
noget i retning af:

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Ellers er det helt sikkert at det ikke virker.

Hvis du kun har de to regler til forskel for om du har adgang eller ej,
må det jo være den sidste der ødelægger det, så prøv at skifte den ud
med en log-regel:

-A INPUT tcp --dport 22 --syn -j LOG --log-prefix "AURGH: "

Så kan du greppe efter 'AURGH' i /var/log/messages efter du har logget
ind, og se om du kan tyde hvad der sker.

Hvis det ikke virker, og der samtidig ikke er logget noget, så er det en
anden regel der spiser din forbindelse.

> Burde give min IP adgang og afvise alle andre, men efterfølgende får jeg
> overhovedet ikke adgang til svinet, hvad enten jeg har REJECT
> reglen øverst eller nederst. Overskriver regel 2 den første regel eller?

Reglerne tjekkes fra første regel i kæden til sidste, og den første der
hopper (-j) til ACCEPT, REJECT eller DROP kommer til at gælde, de næste
regler bliver ikke set. -A sætter regler ind til sidst i kæden, så
REJECTreglen skal nederst.

Jeg mener iøvrigt at det er omtrent omvendt i openbsds pf: Den sidste
regel der matcher kommer til at gælde, med mindre man bruger
"quick". Det virker lidt usmart på mig, men der er nok noget jeg overser.



Mvh.


Dennis Jørgensen


[1]Der er dog ingen grund til --syn i den anden regel: Det er vel
_alting_ til sshporten fra resten af verden du ikke vil se, ikke bare
forsøg på at starte nye forbindelser. Du har jo tilladt den maskine du
gerne vil snakke med.

[2]I hvert fald før REJECTreglen.

Kim Emax (08-09-2004)
Kommentar
Fra : Kim Emax


Dato : 08-09-04 20:29

"Dennis Jørgensen" wrote:
> Bemærk: Jeg er _ikke_ iptables mester.

>> -A INPUT -p tcp -s 213.237.12.252 --dport 22 -j ACCEPT
>> -A INPUT -p tcp --dport 22 --syn -j REJECT
>
> Nu ved jeg ikke hvad du ellers har af regler, men det der ser
> umiddelbart ikke forkert ud[1]. Står reglerne præcis sådan, eller er
> noget af det sat ind som variable? I så fald, er variabelnavnene
> skrevet rigtigt?

Det er klippet direkte fra /etc/sysconfig/iptables, det er de eneste
parametre jeg har omkring port 22

> Jeg ville nok have lavet det sådan:
>
> -A INPUT -m state --state NEW -p tcp -s <ip> --dport ssh -j ACCEPT
> -A INPUT -p tcp --dport ssh -j REJECT
>
> Men forskellen til din er vist til at overse.

Det skal jeg vidst lige læse på state, aner heller ikke, hvad det gør

> Hvis du bruger de to regler skal en af dine første[2] INPUTregler være
> noget i retning af:
>
> -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
>
> Ellers er det helt sikkert at det ikke virker.

Det har jeg lige i tankerne så.

> Hvis du kun har de to regler til forskel for om du har adgang eller
> ej, må det jo være den sidste der ødelægger det, så prøv at skifte
> den ud med en log-regel:
>
> -A INPUT tcp --dport 22 --syn -j LOG --log-prefix "AURGH: "
>
> Så kan du greppe efter 'AURGH' i /var/log/messages efter du har logget
> ind, og se om du kan tyde hvad der sker.

okay, interessant, det vil jeg prøve

> Hvis det ikke virker, og der samtidig ikke er logget noget, så er det
> en anden regel der spiser din forbindelse.

Øhh, hvad mener du med spiser?

>> Burde give min IP adgang og afvise alle andre, men efterfølgende får
>> jeg overhovedet ikke adgang til svinet, hvad enten jeg har REJECT
>> reglen øverst eller nederst. Overskriver regel 2 den første regel
>> eller?
>
> Reglerne tjekkes fra første regel i kæden til sidste, og den første
> der hopper (-j) til ACCEPT, REJECT eller DROP kommer til at gælde, de
> næste regler bliver ikke set. -A sætter regler ind til sidst i kæden,
> så REJECTreglen skal nederst.

Ahh.. så burde dette vel virke?:

-A INPUT -p tcp -s 213.237.12.252 --dport 22 --syn ACCEPT
-A INPUT -p tcp --dport 22 --syn -j REJECT

Jeg tror jeg piller en udfaset server herhjemme frem og smider iptables på,
så jeg er fri for ræse til Glostrup fra Amager, hvis jeg igen skulle komme
til at låse mig ude... Men underligt at der ikke er masser af eksempler
på dette på nettet, man skulle tro mange gerne ville have denne begrænsning?

> Jeg mener iøvrigt at det er omtrent omvendt i openbsds pf: Den sidste
> regel der matcher kommer til at gælde, med mindre man bruger
> "quick". Det virker lidt usmart på mig, men der er nok noget jeg
> overser.

Det nævnte min kollega også, men det er en RedHat9, der er tale om. Om man
skal tænke "luk alt, giv derefter specifik adgang" eller "giv specifik
adgang og afvis derefter alt" er nok en religionssnak. Når jeg konfigurerer
f.eks. Routere så bruger jeg første metode.

> [1]Der er dog ingen grund til --syn i den anden regel: Det er vel
> _alting_ til sshporten fra resten af verden du ikke vil se, ikke bare
> forsøg på at starte nye forbindelser. Du har jo tilladt den maskine du
> gerne vil snakke med.

tjaeee... jeg fik i hvert fald ingen adgang overhovedet, da jeg
fjernede --syn fra REJECT reglen:

-A INPUT -p tcp -s 213.237.12.252 --dport 22 --syn -j ACCEPT
-A INPUT -p tcp --dport 22 -j REJECT

og så fik jeg SLET ikke adgang

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Dennis Jørgensen (08-09-2004)
Kommentar
Fra : Dennis Jørgensen


Dato : 08-09-04 23:24

"Kim Emax" <newsgroup@remove-emax.dk> writes:

> "Dennis Jørgensen" wrote:
>> Bemærk: Jeg er _ikke_ iptables mester.
>
>>> -A INPUT -p tcp -s 213.237.12.252 --dport 22 -j ACCEPT
>>> -A INPUT -p tcp --dport 22 --syn -j REJECT
>>
>> Nu ved jeg ikke hvad du ellers har af regler, men det der ser
>> umiddelbart ikke forkert ud[1]. Står reglerne præcis sådan, eller er
>> noget af det sat ind som variable? I så fald, er variabelnavnene
>> skrevet rigtigt?
>
> Det er klippet direkte fra /etc/sysconfig/iptables, det er de eneste
> parametre jeg har omkring port 22

Det behøver ikke nødvendigvis være noget med port 22, det kunne være en
mere generel regel.

For eksempel kunne mange finde på at slutte en kæde af med:

-A INPUT -j REJECT

For at sige at alt der ikke er tilladt endnu skal afvises.

Hvis du så ikke opdager det, kan du komme nok så mange regler på
bagefter, men de gør ingen forskel, der er ikke noget der når til dem.

>> Jeg ville nok have lavet det sådan:
>>
>> -A INPUT -m state --state NEW -p tcp -s <ip> --dport ssh -j ACCEPT
>> -A INPUT -p tcp --dport ssh -j REJECT
>>
>> Men forskellen til din er vist til at overse.
>
> Det skal jeg vidst lige læse på state, aner heller ikke, hvad det gør

Det starter connection tracking. Så den første regel tillader nye
sshforbindelser fra din ip, og den anden afviser alt ssh.

>> Hvis du bruger de to regler skal en af dine første[2] INPUTregler være
>> noget i retning af:
>>
>> -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Og den siger "Alle forbindelser jeg tidligere har tilladt må gerne
fortsætte".

>> Hvis det ikke virker, og der samtidig ikke er logget noget, så er det
>> en anden regel der spiser din forbindelse.
>
> Øhh, hvad mener du med spiser?

Gør at du ikke kan forbinde til din maskine.


>>> Burde give min IP adgang og afvise alle andre, men efterfølgende får
>>> jeg overhovedet ikke adgang til svinet, hvad enten jeg har REJECT
>>> reglen øverst eller nederst. Overskriver regel 2 den første regel
>>> eller?
>>
>> Reglerne tjekkes fra første regel i kæden til sidste, og den første
>> der hopper (-j) til ACCEPT, REJECT eller DROP kommer til at gælde, de
>> næste regler bliver ikke set. -A sætter regler ind til sidst i kæden,
>> så REJECTreglen skal nederst.
>
> Ahh.. så burde dette vel virke?:
>
> -A INPUT -p tcp -s 213.237.12.252 --dport 22 --syn ACCEPT
> -A INPUT -p tcp --dport 22 --syn -j REJECT

Det vil acceptere den første pakke i et forsøg på at forbinde til ssh
fra din ip, og afvise tilsvarende pakker fra alle andre.

De efterfølgende pakker har du ikke en regel for her, så det er ikke til at
vide hvad resultatet bliver uden at kende til flere af dine regler
(og hvilken policy du har valgt for INPUT).


> Jeg tror jeg piller en udfaset server herhjemme frem og smider iptables på,
> så jeg er fri for ræse til Glostrup fra Amager, hvis jeg igen skulle komme
> til at låse mig ude... Men underligt at der ikke er masser af eksempler
> på dette på nettet, man skulle tro mange gerne ville have denne begrænsning?

Ja det er godt at have en legemaskine hvor keyboardet er indefor rækkevidde.


>> [1]Der er dog ingen grund til --syn i den anden regel: Det er vel
>> _alting_ til sshporten fra resten af verden du ikke vil se, ikke bare
>> forsøg på at starte nye forbindelser. Du har jo tilladt den maskine du
>> gerne vil snakke med.
>
> tjaeee... jeg fik i hvert fald ingen adgang overhovedet, da jeg
> fjernede --syn fra REJECT reglen:
>
> -A INPUT -p tcp -s 213.237.12.252 --dport 22 --syn -j ACCEPT
> -A INPUT -p tcp --dport 22 -j REJECT

Jeg ville ikke have --syn i nogen af reglerne.

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste