Dotaz na pridelovani portu v IP

Ing. Pavel PaJaSoft Janousek janousek na fonet.cz
Pondělí Listopad 13 10:31:42 CET 2000


> Pokud to probehne normalne pres
> 
> fd=socket();
> bind(fd);
> listen(fd);
> fd2=accept(fd);  <---> connect();
>     ...
> 
> Tak ta komunikace s daemonem bude probihat porad na stejnem portu.
> (Pokud je 200 uzivatelu pripojeno na server pres ssh, veskera komunikace
> se vede pres port 22 ...).

	Rozumim tomu spravne, ze na strane serveru se demultiplexuje pouze
podle src_addr a src_port?
Priznam se, ze jsem se do fd2 co mi vraci accept nedival, ale mel jsem
za to, ze data na server uz jdou fyzicky pres jiny port na strane
serveru (resp. ze read (fd2) na serveru jiz data necte z portu, na ktery
se klient prihlasoval). Mel jsem za to, ze pokud mam neco ala:

while (1)
{
  fd2=accept(srv2)
  if (fork()
  {
    //syn
    //zpracovani
  }
}

pak v synovi zpracovavam request a rodic muze dostat behem teto doby
obslouzit dalsi zadost na well-known port (coz ma za nasledek 2. syna).
A ja jsem si prave myslel, ze synove 'lokalne' se serverem jiz
komunikuji (implicitne) na jinem portu (dostanou ho prave ve fd2) nez
fd.

> Rekl bych, ze ohledne staveni firewallu je prehrsel dostupne literatury
> a dokumentace ... a velka cast z toho je "dobra". Proti cemu konkretnimu
> se chcete firewallem chranit? Jakym firewallem? ipchains?

	Ano pouzivam ipchains (IMHO dostacuje plne). Z toho, co jsem ted
nacerpal mi vyplyva, ze rekneme, ze na stanici AXYZ chci mit verejne
pristupny jen port A. Pak mohu udelat tyto forwardovaci pravidla:

1. -s 0/0 -d XYZ/32 A -j ACCEPT
2. -s XYZ/32 -d 0/0 -j ACCEPT
3. -s 0/0 -d 0/0 -j REJECT (pro paranoidni DENY:))

	a mam zaruceno, ze z venku se nema utocnik sanci nikam jinam pripojit
(bavim se o filtraci na urovni firewallu, ne na urovni daneho stroje),
ale veskera komunikace z vnitrku ven jde bez problemu (zde v podstate
_nesmim_ filtrovat nic, protoze nevim, ktery lokalni port OS prideli).
Sice trochu neprijemne, protoze porty < 1024 nemuze alespon v Linuxu
bindnout nikdo jiny nez root (coz jsem ja) a v tomto pripade vim, co
pouzivam, ale co uz... Vysledoval jsem, ze implicitne se pri komunikaci
client -> server na strane klienta (OS Linux krnl 2.2.17) pouzivaji
porty 1023,1022... (nevim az kam)

	Za objasneni predem dekuji.

-----------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft)                 FoNet, spol. s r. o.
Vyvoj software, Intranet / Internet          Anenska 11, 602 00  Brno
E-mail: mailto:Janousek na FoNet.Cz             Tel.: +420  5  4324 4749
SMS:    mailto:P.Janousek na SMS.Paegas.Cz      Fax.: +420  5  4324 4751
WWW:    http://WWW.FoNet.Cz/               E-mail: mailto:Info na FoNet.Cz
-----------------------------------------------------------------------


Další informace o konferenci Linux