HWSW Informatikai Kerekasztal: Kéne egy-két iptables ötlet - HWSW Informatikai Kerekasztal

Ugrás a tartalomhoz

Mellékleteink: HUP | Gamekapocs

  • (7 Oldal)
  • +
  • 1
  • 2
  • 3
  • Utolsó »
  • Nem indíthatsz témát.
  • A téma zárva.

Kéne egy-két iptables ötlet Értékeld a témát: -----

#1 Felhasználó inaktív   idoru 

  • Tag
  • PipaPipa
  • Csoport: Alkalmi fórumtag
  • Hozzászólások: 114
  • Csatlakozott: --

Elküldve: 2003. 06. 01. 15:56

Az alaphelyzet az, hogy egy Debian tűzfal mögött van három win-es gép. Az egyiken egy filecserélő progi van ami elég agresszív és ha töltenek a gépről akkor az egész sávszélességet elfoglalja, lehetetlen netezni mellette. Ha lenne ötleteket arra, hogy hogyan tudnám egy kicsit megzabolázni (sávszűkítés, vagy tiltás) légyszi véssétek ide. Előre is köszi.

#2 Felhasználó inaktív   Sipi- 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 21.928
  • Csatlakozott: --

Elküldve: 2003. 06. 01. 16:21

Fájlcserélő program: dc? Abból van korlátos is :)

Egyébként pedig azthiszem QoS kell a sávszélesség szabályozásához. Vagy pedig valahogy belövöd a limit taggal, hogy hany csomagot fogadjon el maximum a tűzfal egységnyi idő alatt.

#3 Felhasználó inaktív   idoru 

  • Tag
  • PipaPipa
  • Csoport: Alkalmi fórumtag
  • Hozzászólások: 114
  • Csatlakozott: --

Elküldve: 2003. 06. 01. 18:21

idézet:
Ezt írta Sipi-:
Fájlcserélő program: dc? Abból van korlátos is :)

Egyébként pedig azthiszem QoS kell a sávszélesség szabályozásához. Vagy pedig valahogy belövöd a limit taggal, hogy hany csomagot fogadjon el maximum a tűzfal egységnyi idő alatt.
[/quote]

igen dc-ről van szó, de én ahhoz nem igazán konyítok az az öcsém reszortja. A limit tag nekem is eszembe jutott. Nincs valami ötleted az értékekre?

#4 Felhasználó inaktív   Sipi- 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 21.928
  • Csatlakozott: --

Elküldve: 2003. 06. 01. 18:33

idézet:
Ezt írta idoru:
igen dc-ről van szó, de én ahhoz nem igazán konyítok az az öcsém reszortja. A limit tag nekem is eszembe jutott. Nincs valami ötleted az értékekre?[/quote]Értékekre nincs ötletem...
Itt egy korlátos dc: [url="http://"http://bcdc.webhop.org/"]http://bcdc.webhop.org/[/url] Rakassd ezt fel öcsédhez átmeneti megoldásként. A korlátot meg majd leszedi amikor nem netezik senki.

#5 Felhasználó inaktív   idoru 

  • Tag
  • PipaPipa
  • Csoport: Alkalmi fórumtag
  • Hozzászólások: 114
  • Csatlakozott: --

Elküldve: 2003. 06. 01. 19:13

idézet:
Ezt írta Sipi-:
Értékekre nincs ötletem...
Itt egy korlátos dc: [url="http://"http://bcdc.webhop.org/"]http://bcdc.webhop.org/[/url] Rakassd ezt fel öcsédhez átmeneti megoldásként. A korlátot meg majd leszedi amikor nem netezik senki.
[/quote]

köszi, megprobálom.

#6 Felhasználó inaktív   leslie 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 34.039
  • Csatlakozott: --

Elküldve: 2003. 06. 01. 20:52

Az iptables manjaban a limit szoban keress ra.

Mukodik, anno probaltam. :)
Az nevet utoljára, aki először üt.

#7 Felhasználó inaktív   idoru 

  • Tag
  • PipaPipa
  • Csoport: Alkalmi fórumtag
  • Hozzászólások: 114
  • Csatlakozott: --

Elküldve: 2003. 06. 01. 22:18

idézet:
Ezt írta leslie:
Az iptables manjaban a limit szoban keress ra.

Mukodik, anno probaltam. :)
[/quote]

Igazándiból próbálkoztam már, de nem igazán jött össze. Ha lenne egy tuti tipp azt megköszönném.

#8 Felhasználó inaktív   Alen 

  • Tag
  • PipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 288
  • Csatlakozott: --

Elküldve: 2003. 06. 03. 20:39

A legjobb megoldas tenyleg a limites DC... A legdurvabb az iptables/limit paros... A legelegansabb meg a QoS, amihez ezek kellenek a kernelbe:

#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_CBQ=y
# CONFIG_NET_SCH_HTB is not set
# CONFIG_NET_SCH_CSZ is not set
CONFIG_NET_SCH_PRIO=y
# CONFIG_NET_SCH_RED is not set
CONFIG_NET_SCH_SFQ=y
# CONFIG_NET_SCH_TEQL is not set
CONFIG_NET_SCH_TBF=y
# CONFIG_NET_SCH_GRED is not set
# CONFIG_NET_SCH_DSMARK is not set
# CONFIG_NET_SCH_INGRESS is not set
CONFIG_NET_QOS=y
# CONFIG_NET_ESTIMATOR is not set
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_TCINDEX is not set
# CONFIG_NET_CLS_ROUTE4 is not set
CONFIG_NET_CLS_FW=y
CONFIG_NET_CLS_U32=y
# CONFIG_NET_CLS_RSVP is not set
# CONFIG_NET_CLS_RSVP6 is not set
# CONFIG_NET_CLS_POLICE is not set

...aztan meg apt-get install shaper, es innentol az /etc/shaper-be lehet mindenfele szabalyokat irkalni...lekorlatozhatod egybol az egesz gepet, vagy ha van turelmed kinyomozni melyik portokat hasznalja a DC, akkor egyenkent, azokat...

Teljes IP tiltasa:

DEVICE=eth1,100Mbit,10Mbit
RATE=55Kbit
WEIGHT=128kbit
PRIO=5
RULE=192.168.1.0/24,

Portok tiltasa:

DEVICE=eth0,100Mbit,10Mbit
RATE=55Kbit
WEIGHT=1kbit
PRIO=5
RULE=:1214,
RULE=:41000,
RULE=:41001,
RULE=:41002,
RULE=:41003,
RULE=:41004,
RULE=:41005,
RULE=:41006,
RULE=:41007,
[.........]

Stbstb... az /etc/init.d/shaper scriptben egesz hasznalhato dokumentacio van a lehetosegekrol...
Világhírű vonósnégyesbe keresünk elsőhegedűst, brácsást, és csellistát.

#9 Felhasználó inaktív   idoru 

  • Tag
  • PipaPipa
  • Csoport: Alkalmi fórumtag
  • Hozzászólások: 114
  • Csatlakozott: --

Elküldve: 2003. 06. 04. 03:49

idézet:
Ezt írta Alen:
A legjobb megoldas tenyleg a limites DC... A legdurvabb az iptables/limit paros... A legelegansabb meg a QoS, amihez ezek kellenek a kernelbe:...[/quote]

KÖszi a kimeritő választ. Szerintem is a legkönnyebb a limites dc. Már rá is szabadítottam az öcsémet. Azért próbálkoztam a iptables/limit-tel is. Bár csak keveset tudtam tesztelni, de a "-limit 200/s --limit-burst 1" közelítőleg jónak néz ki. A shaper-rel kapcsolatban: sajnos a dc, úgy vettem észre, hogy passzív módban abszolút véletlenszerű portokat használ. De ha lehetne egy bizonyos IP-re is szabályt írni az kircsó lenne, mert tényleg ez lenne a legszebb megoldás szerintem is.

#10 Felhasználó inaktív   Mono 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 16.750
  • Csatlakozott: --

Elküldve: 2005. 01. 05. 17:58

Picit felhoznám ezt a topikot, következő dolgot szeretném megvalóítani: van egy szerver, belső hálón, belső fix IP címmel, egy hálókártyával. Fut rajta néhány olyan szolgáltatás, melyet el kellene érni hálózaton, ill. néhány, melyet nem.
Azt szeretném iptables-szel megvalósítani, hogy minden szerver felé irányuló kérés tiltva legyen, azon portok kivételével, melyekre szükségem van. Alapvetően mail szerverről lenne szó, tehát 25 (SMTP), 993 (IMAP-SSL), 443 (https) lennének azon szolgáltatások, melyeket engedélyezni akarok. Nyilván van még egy-két port, melyet engedélyeznem kellene, pl. - ha jól gondolom - 53-as (DNS).
További gondom az a protokoll. Ha nézem pl. az imap-ssl-t, akkor az 993-as port, tcp és udp is megadva. Kell-e az udp mindenképpen, vagy elég csak a tcp? Kell-e DNS esetében az 53-as portot is kinyitnom? Elviekben az belülről irányulna kifelé kérés szinten, ekkor is meg kell adnom azt, hogy az 53-as portot kinyitom? - mert ez esetben egy, a mail szerveren futó bind-ot (DNS Cache miatt telepítem csak) használhatná boldog-boldogtalan mint DNS szerver, nem?

A következőt adagoltam be az iptables-nek, gondolom nem igazán jó, de kicsit homályos még a dolog, emellett nem igazán működött úgy, ahogy szerettem volna. Nem tudtam az általam kinyitott portok egyikére sem telnetelni (pl. SMTP) kintről, ill. bentről sem tudtam kifelé web-ezni. Mi a gond, vagy mi kellhet még ehhez?

iptables -A INPUT -p tcp -m tcp -m multiport -d 192.168.1.1 -j ACCEPT --dports 22,25,443,993

iptables -A INPUT ! -s 127.0.0.1 -d 192.168.1.1 -i eth0 -j REJECT --reject-with icmp-port-unreachable


Segítsetek már légyszi abban, mik kellenének még a mellett, vagy mi lenne a helyes szabály, melyet meg kellene adjak.
Tehát egy gép, melyet kintről (itt már a LAN is annak számít) kellene védeni, alapból minden befelé irányuló portot tiltani, azok kivételével, melyeket én akarok, hogy elérhető legyen (plusz még a szükséges(ek), ha van(nak) ilyen(ek)), valamint belülről (tehát a szerverről) kifelé irányuló kérések menjenek (azaz pl. lehessen WEB-ezni a szerverről), az operációs rendszer Debian Sarge.

Előre is köszi!

Szerkesztette: Mono 2005. 01. 05. 18:04 -kor

Adjon az Isten, szebb jövőt!

#11 Felhasználó inaktív   Yv@n 

  • Senior tag
  • PipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 2.069
  • Csatlakozott: --

Elküldve: 2005. 01. 05. 19:35

Net felől hogyan éred el a gépet?

53as porttal sok gondod nem lehet, szűrd hogy csak a belső tartományból fogadjon kéréseket.

#12 Felhasználó inaktív   Friczy 

  • Senior tag
  • PipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 2.362
  • Csatlakozott: --

Elküldve: 2005. 01. 06. 10:48

Idézet: Mono - Dátum: 2005. jan. 5., szerda - 17:58

Picit felhoznám ezt a topikot, következő dolgot szeretném megvalóítani: van egy szerver, belső hálón, belső fix IP címmel, egy hálókártyával. Fut rajta néhány olyan szolgáltatás, melyet el kellene érni hálózaton, ill. néhány, melyet nem.
Azt szeretném iptables-szel megvalósítani, hogy minden szerver felé irányuló kérés tiltva legyen, azon portok kivételével, melyekre szükségem van. Alapvetően mail szerverről lenne szó, tehát 25 (SMTP), 993 (IMAP-SSL), 443 (https) lennének azon szolgáltatások, melyeket engedélyezni akarok. Nyilván van még egy-két port, melyet engedélyeznem kellene, pl. - ha jól gondolom - 53-as (DNS).
További gondom az a protokoll. Ha nézem pl. az imap-ssl-t, akkor az 993-as port, tcp és udp is megadva. Kell-e az udp mindenképpen, vagy elég csak a tcp? Kell-e DNS esetében az 53-as portot is kinyitnom? Elviekben az belülről irányulna kifelé kérés szinten, ekkor is meg kell adnom azt, hogy az 53-as portot kinyitom? - mert ez esetben egy, a mail szerveren futó bind-ot (DNS Cache miatt telepítem csak) használhatná boldog-boldogtalan mint DNS szerver, nem?

A következőt adagoltam be az iptables-nek, gondolom nem igazán jó, de kicsit homályos még a dolog, emellett nem igazán működött úgy, ahogy szerettem volna. Nem tudtam az általam kinyitott portok egyikére sem telnetelni (pl. SMTP) kintről, ill. bentről sem tudtam kifelé web-ezni. Mi a gond, vagy mi kellhet még ehhez?

iptables -A INPUT -p tcp -m tcp -m multiport -d 192.168.1.1 -j ACCEPT --dports 22,25,443,993

iptables -A INPUT ! -s 127.0.0.1 -d 192.168.1.1 -i eth0 -j REJECT --reject-with icmp-port-unreachable


Segítsetek már légyszi abban, mik kellenének még a mellett, vagy mi lenne a helyes szabály, melyet meg kellene adjak.
Tehát egy gép, melyet kintről (itt már a LAN is annak számít) kellene védeni, alapból minden befelé irányuló portot tiltani, azok kivételével, melyeket én akarok, hogy elérhető legyen (plusz még a szükséges(ek), ha van(nak) ilyen(ek)), valamint belülről (tehát a szerverről) kifelé irányuló kérések menjenek (azaz pl. lehessen WEB-ezni a szerverről), az operációs rendszer Debian Sarge.

Előre is köszi!

Ha jól értem, itt csak az adott serveren lévő beállítás a kérdéses, az internet felőli kérések forwardolása (és a NAT) nem. Ezzel tehát nem foglalkozom.

Az, hogy még a bentről indított dolgok sem műkodtek (pl. web), amiatt lehet, hogy egyszerűen a válaszcsomagokat is kiszűröd, ha csak annyi van az tűzfalkonfigban, amennyit itt leírtál. Ki lehet használni, hogy az iptables elég intelligens, és tud csomagállapotot kezelni.

Ebből a szemopontból roppant hasznos az

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

parancs, ezzel megengeded, hogy pl. a kifelé menő kapcsolat (pl. a web) válaszai is bejöjjenek. Sőt, mivel a conntrack nem csak a tcp kapcsolatokat kezeli jól, a server által indított dns kérések válaszai is automatikusan megérkeznek ezáltal (persze ha ez a server önmagában DNS server is, akkor az 53-as portot is engedélyezni kell, de ha csak mind DNS kliens, akkor nem).

Bizonyos icmp csomagokat is be kell engedned (pl. destination unrachable), ezek egyszerűen szükségesek a normális működéshez. Ha nem akarsz foglalkozni azzal, hogy mik ezek (és szerintem nem érdemes túl sokat tökölni vele :)), akkor bízd ezt az iptables-re, a netfilter fejlesztői tudják, mit csinálnak :) Az alábbi parancs:

iptables -A INPUT -m state --state RELATED -j ACCEPT

megoldja, hogy a kapcsolathoz tartozó egyéb válaszok is bejussanak a gépre.

Ezen kívül már csak azokat kell engedélyezni, amit ténylegesen akarsz, tehát az a bizonyos mulitiport-os iptables parancs jónak tűnik.

Bocs, ha néhány triviális dolgot is leírtam, de a kérdésből nem derült ki, hogy milyen szinten kéred a választ. Mindenesetre így más is tanulhat belőle, aki nem merne kérdezni :)
Friczy
Death is not a bug, it's a feature
Hogyan kérdezzünk okosan?

#13 Felhasználó inaktív   Mono 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 16.750
  • Csatlakozott: --

Elküldve: 2005. 01. 06. 14:18

Idézet: Yv@n - Dátum: 2005. jan. 5., szerda - 19:35

Net felől hogyan éred el a gépet?


A szóban forgó gép belső hálón csücsül, egyenrangú minden hálózati géppel (nincs DMZ), a belső háló és az internet között pedig egy hardveres router van, külső fix IP-vel. Ezen a szükséges portok forwardolva vannak (NAT) a gép felé.

Idézet

53as porttal sok gondod nem lehet, szűrd hogy csak a belső tartományból fogadjon kéréseket.


Értem, ez is egy megoldás, köszönöm! :)
Adjon az Isten, szebb jövőt!

#14 Felhasználó inaktív   Mono 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 16.750
  • Csatlakozott: --

Elküldve: 2005. 01. 06. 14:45

Friczy!

A tőled most már megszokott, tartalmas választ nagyon köszönöm! :respect: :)

Idézet

Ha jól értem, itt csak az adott serveren lévő beállítás a kérdéses, az internet felőli kérések forwardolása (és a NAT) nem. Ezzel tehát nem foglalkozom.


Így van, igen. Egy gép, egy hálókártya, csak a gépre bejutást kellene korlátozni, minden befelé irányuló kérést tiltani azok kivételével, melyeket én engedélyezek. E mellett bentről kifelé jó lenne, ha továbbra is működne minden.

Idézet

Az, hogy még a bentről indított dolgok sem műkodtek (pl. web), amiatt lehet, hogy egyszerűen a válaszcsomagokat is kiszűröd, ha csak annyi van az tűzfalkonfigban, amennyit itt leírtál. Ki lehet használni, hogy az iptables elég intelligens, és tud csomagállapotot kezelni.


Ebből a szemopontból roppant hasznos az

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

parancs, ezzel megengeded, hogy pl. a kifelé menő kapcsolat (pl. a web) válaszai is bejöjjenek. Sőt, mivel a conntrack nem csak a tcp kapcsolatokat kezeli jól, a server által indított dns kérések válaszai is automatikusan megérkeznek ezáltal (persze ha ez a server önmagában DNS server is, akkor az 53-as portot is engedélyezni kell, de ha csak mind DNS kliens, akkor nem).

Bizonyos icmp csomagokat is be kell engedned (pl. destination unrachable), ezek egyszerűen szükségesek a normális működéshez. Ha nem akarsz foglalkozni azzal, hogy mik ezek (és szerintem nem érdemes túl sokat tökölni vele :)), akkor bízd ezt az iptables-re, a netfilter fejlesztői tudják, mit csinálnak. Az alábbi parancs:

iptables -A INPUT -m state --state RELATED -j ACCEPT

megoldja, hogy a kapcsolathoz tartozó egyéb válaszok is bejussanak a gépre.

Ezen kívül már csak azokat kell engedélyezni, amit ténylegesen akarsz, tehát az a bizonyos mulitiport-os iptables parancs jónak tűnik.

Bocs, ha néhány triviális dolgot is leírtam, de a kérdésből nem derült ki, hogy milyen szinten kéred a választ. Mindenesetre így más is tanulhat belőle, aki nem merne kérdezni :)


Közben sokat (? :) ) fejlődtem már ezzel kapcsolatban, mióta feltettem ezt a kérdést.
Az alábbi iptables sorokat adagoltam be ahhoz, hogy:
- minden tcp portot tiltsak, melyek befelé irányulnak
- kivétel legyen most a 22-es tcp port, az ssh
- bentről kifelé irányuló kéréseknek ne szabjon gátat az iptables
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT 
iptables -A INPUT -p tcp -m tcp -m multiport --dports 22 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT -m limit --limit 2/second --limit-burst 5
iptables -A INPUT -j DROP


Ez látszólag működget, de - itt most nagyon nem leszek képben - olyasvalamit hallottam, hogy a ping-en kívül "élnek" más icmp csomagok is, azaz más dolgokra is használatosak az icmp csomagok, mint pingelésre. Hallottam olyat, hogy egyes SMTP szerverek, ill. routerek is használják az icmp csomagokat. Gondolom nem pingelnek, hanem valami más, de icmp csomagokat küldözgetnek. Erre a fentebbi írásod alapján akkor ez a sor megoldást kínál, így nem kell attól tartanom, hogy egy SMTP kapcsolódáskor, ha valaki icmp-t is szeretne tőlem, nem kapja meg?

Idézet

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


Továbbá nagyon nem vagyok tisztába még ezekkel az icmp csomagokkal, "mire való"-ságukkal, biztonságilag követek-e el nagy hibát, ha úgy gondolom, hogy az összes icmp csomagot engedélyezem, szűrni csak udp és tcp-re szűrök :think:
Megoldható-e ez ez a két sor helyett:

Idézet

iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT -m limit --limit 2/second --limit-burst 5


Ezzel:

Idézet

iptables -A INPUT -p icmp --icmp-type any -j ACCEPT

:think:

Továbbá szeretném az 53-as udp-n kívül minden udp port tiltását befelé, ezt akkor megtehetem a tcp-hez hasonlóan így: ?

Idézet

iptables -A INPUT -p udp -j REJECT



A "végső" konfig valami ilyesmi lenne a mostani elképzeléseim, tudásom alapján:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT 
iptables -A INPUT -p tcp -m tcp -m multiport --dports 22 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT
iptables -A INPUT -p udp -j REJECT
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
iptables -A INPUT -j DROP


Jó ez így? :)
Vagy mit kellene módosítanom, ahhoz, hogy teljesítse a fenti kívánalmakat ?

Továbbá lenne még egy kérdésem, ami csak részben tartozik ide. Ha megnézem akár a /etc/services fájlt, akár interneten keresgélek olyasmi után, ahol listaszerűen felsorolják a portok neveit, hozzá tartozó számokkal, legtöbb esetben szerepel tcp-re és udp-re is, azaz pl. az SMTP, vagy POP3 így néz ki ezeken a listákon:
25   SMTP   tcp
25   SMTP   udp
110 POP3    tcp
110 POP3    udp


Namost eddigi tudásom szerint ezek közül mindkét port tcp port, mármint tcp-n keresztül kapcsolódnak a kliens programok, ill. más smtp szerverek is ezen portokhoz. Miért van udp? Kell-e mindenképpen az udp? Miben csorbulhat a dolog, ha azt "mondom", hogy minden udp-t tiltok, az 53-ason kívül? Azaz tiltom a 25-ös udp-t, tiltom a 110-es udp-t, de mindkettőből marad a tcp. Lesz-e akkor műkdőképes, "teljes értékű" levelező szerverem ?

(Sorry, hogy ilyen mogorvának tűnök, de ekkora hozzászóláshoz már kevés a felhasználható szmájli.)
Adjon az Isten, szebb jövőt!

#15 Felhasználó inaktív   Friczy 

  • Senior tag
  • PipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 2.362
  • Csatlakozott: --

Elküldve: 2005. 01. 06. 15:51

Idézet: Mono - Dátum: 2005. jan. 6., csütörtök - 14:45

Továbbá nagyon nem vagyok tisztába még ezekkel az icmp csomagokkal, "mire való"-ságukkal, biztonságilag követek-e el nagy hibát, ha úgy gondolom, hogy az összes icmp csomagot engedélyezem, szűrni csak udp és tcp-re szűrök :think:
Megoldható-e ez ez a két sor helyett:


Ezzel:

:think:

Továbbá szeretném az 53-as udp-n kívül minden udp port tiltását befelé, ezt akkor megtehetem a tcp-hez hasonlóan így: ?



A "végső" konfig valami ilyesmi lenne a mostani elképzeléseim, tudásom alapján:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT 
iptables -A INPUT -p tcp -m tcp -m multiport --dports 22 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT
iptables -A INPUT -p udp -j REJECT
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
iptables -A INPUT -j DROP


Jó ez így? :)
Vagy mit kellene módosítanom, ahhoz, hogy teljesítse a fenti kívánalmakat ?

Továbbá lenne még egy kérdésem, ami csak részben tartozik ide. Ha megnézem akár a /etc/services fájlt, akár interneten keresgélek olyasmi után, ahol listaszerűen felsorolják a portok neveit, hozzá tartozó számokkal, legtöbb esetben szerepel tcp-re és udp-re is, azaz pl. az SMTP, vagy POP3 így néz ki ezeken a listákon:
25   SMTP   tcp
25   SMTP   udp
110 POP3    tcp
110 POP3    udp


Namost eddigi tudásom szerint ezek közül mindkét port tcp port, mármint tcp-n keresztül kapcsolódnak a kliens programok, ill. más smtp szerverek is ezen portokhoz. Miért van udp? Kell-e mindenképpen az udp? Miben csorbulhat a dolog, ha azt "mondom", hogy minden udp-t tiltok, az 53-ason kívül? Azaz tiltom a 25-ös udp-t, tiltom a 110-es udp-t, de mindkettőből marad a tcp. Lesz-e akkor műkdőképes, "teljes értékű" levelező szerverem ?

(Sorry, hogy ilyen mogorvának tűnök, de ekkora hozzászóláshoz már kevés a felhasználható szmájli.)

Idézet

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT 
iptables -A INPUT -p tcp -m tcp -m multiport --dports 22 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT -m limit --limit 2/second --limit-burst 5
iptables -A INPUT -j DROP


Ebből elvileg a
iptables -A INPUT -p tcp -j REJECT
sor felesleges, majd később visszatérek rá. Bajt persze nem csinál.

Hasonlóképpen a
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
sor is, mert ezt az ESTABLISHED,RELATED állapotszabály amúgy is be fogja engedni. Az echo-request korlátozása nem rossz ötlet.

Idézet

Ez látszólag működget, de - itt most nagyon nem leszek képben - olyasvalamit hallottam, hogy a ping-en kívül "élnek" más icmp csomagok is, azaz más dolgokra is használatosak az icmp csomagok, mint pingelésre. Hallottam olyat, hogy egyes SMTP szerverek, ill. routerek is használják az icmp csomagokat.


Az icmp (Internet Control Message Protocol) elég sokféle dolog jelzésére, különféle forgalomvezérlésekre használatos. Pl. ha kapcsoódni akarsz valahova, de a gép nem elérhető, akkor feltehetőleg vissza fogsz kapni egy icmp-destination-unreachable csomagot. De icmp-vel vezérelhető pl. az is, ha a router szól a gépnek, hogy ezt a csomagot ne felé, hanem más irányba kell küldeni, és még elég sok létezik. Viszont - ahogy írtam - a RELATED engedélyezése erre megoldást ad.

Idézet

Gondolom nem pingelnek, hanem valami más, de icmp csomagokat küldözgetnek. Erre a fentebbi írásod alapján akkor ez a sor megoldást kínál, így nem kell attól tartanom, hogy egy SMTP kapcsolódáskor, ha valaki icmp-t is szeretne tőlem, nem kapja meg?

Pontosabban nem arról van szó, hogy tőled valaki icmp-t szeretne, hanem hogy neked icmp üzenetet küld, amely egy általad korábban kezdeményezett csomaghoz kapcsolódik. A te géped bármikor tud küldeni icmp csomagot, ha valamiért kellene, mert az output láncban nem szűrsz.

Idézet

Továbbá nagyon nem vagyok tisztába még ezekkel az icmp csomagokkal, "mire való"-ságukkal, biztonságilag követek-e el nagy hibát, ha úgy gondolom, hogy az összes icmp csomagot engedélyezem, szűrni csak udp és tcp-re szűrök :think:
Megoldható-e ez ez a két sor helyett:


Megoldható, hogy az összes icmp-t beengeded, de erre nincs szükség. Mint írtam, a RELATED engedélyezi azokat, amelyek valóban a jogos forgalomhoz kellenek, a pinget engedélyezted, más meg nem igazán szükséges.

Idézet


Továbbá szeretném az 53-as udp-n kívül minden udp port tiltását befelé, ezt akkor megtehetem a tcp-hez hasonlóan így: ?
iptables -A INPUT -p udp -j REJECT



Megoldható, de igazából felesleges, mindjárt kitérek rá (ahogy a tcp-nél is írtam a REJECT szabályodra.) Bajt nem csinál persze.

Idézet

Ha megnézem akár a /etc/services fájlt, .... (tcp ill udp egyes portokra) ...


A services file illetve a port listák nem minden esetben mérvadóak. Sok esetben - akár biztonság kedvéért, akár lustaságból - lefoglalják az adott protokollra a tcp-t és udp-t, de nem használják ki. Az smtp, pop3 egyértelműen csak tcp-t használnak (ez a megfelelő rfc-ből derül ki, de hacsak nem akarsz túl sok időt ráfordítani ezek olvasgatására, pillanatnyilag hidd el nekem :)
Viszont pl. a dns adott esetben használhatja a tcp-t is, ezt nem árt azoknak tudni, akik dns servert üzemeltetnek. Ha klienst használsz (főleg, ha csak Linuxos klienst), akkor ezzel többnyire nem kell foglalkoznod.

Nézzük a végső (?) :) konfigot:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT 
iptables -A INPUT -p tcp -m tcp -m multiport --dports 22 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT
iptables -A INPUT -p udp -j REJECT
iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
iptables -A INPUT -j DROP


Mint írtam, az összes icmp engedélyezésénél elegánsabb, ha ráhagyod a dolgot az iptablesre, és te csak az icmp-echo-requestet engedélyezed (mondjuk a korlátozásoddal, tehát ebből a szempontból az előbbi konfig jobban tetszett.) Az icm-echo-reply-t viszont felesleges külön engedélyezni, mert az normál esetben csak egy echo-requestre jöhet válaszként (vagyis amikor te pingelsz másik gépet), így ez gyakorlatilag az ESTABLISHED állapotban lekezelődik.

Ha te csak DNS kliens vagy, akkor felesleges az udp 53 engedélyezése is, kifelé ki tud menni a kérés, a válasz pedig megint csak be tud jönni, mert az ESTABLISHED állapot lekezeli. (Ne tévesszen meg, hogy az UDP kapcsolat nélküli protokoll, az iptables nem ebből a szempontból tekint felépítettnek egy kapcsolatot) udp 53 engedélyezése csak akkor kell, ha te DNS servert is szeretnél működtetni, vagy DNS cache-t a belső háló többi gépe számára. (ez esetben viszont elképzelhető, hogy a tcp 53-at is engedni kell, láttam már olyat, hogy windowsos kliens egyetlen cím lekéréséhez is tcp-n kezdeményezte a dns kérést, ami ugyan hülyeség és pazarlás, de ez nem érdekelte).

Na akkor térjünk rá arra, hogy miért mondtam feleslegesnek az
ptables -A INPUT -p tcp -j REJECT
iptables -A INPUT -p udp -j REJECT


sorokat. Azért, mert a lánc utolsó szabálya igy iptables -A INPUT -j DROP, vagyis minden olyan csomagot eldob, amely eddig nem futott valamilyen szabályra rá. Emiatt felesleges külön REJECT.

Még egy megjegyzés, a REJECT és DROP különbségére. A DROP a csomagot eldobja mindenféle visszajelzés nélkül, a REJECT pedig visszaküld egy jelzést (icmp), hogy a gép (vagy a port) nem érhető el. Ez azt eredményezi, hogy REJECT esetén a kezdeményező oldal azonnal értesül arról, hogy nem fogadta valaki a csomagot, míg DROP esetén nem. A mi szempontunkból szinte mindegy, de a kezdeményező szempontjából nem, mert DROP esetén várnia kell. Emiatt általában a DROP szabályt szokták jobban szeretni tűzfalon, mert pl. egy portscan sokkal tovább tart a potenciális támadónak. Viszont van egy port (tcp 113 - ident), amit ez esetben is érdemes REJECT-re küldeni. Sok service működik úgy, hogy amikor kezdeményezés érkezik hozzá, akkor visszaküld egy kérést az ident portra, amiből ki tudja találni, hogy mely felhasználó kezdeményezte a kapcsolatot. Ez ugyan nem kívánatos, ezért ezt vissza is szokás utasátani (meg amúgy sem fut okvetlenül az ident daemon), viszont ha a 113-as portra érkező kérést DROP-oljuk, akkor a kért service a timeout lejártáig várni fog, és csak utána jön rá, hogy tőlünk bizony identet nem kap, és csak akkor enged be. (kicsit idejétmúlt viselkedés, de van ilyen) Ha viszont REJECT van, akkor nincs ez a várakozási idő. (irc-zők sokszor tapasztalhatják, hogy a server elég sokára engedi őket be, ennek ez az oka).

Tehát én úgy zárnám az iptables szabályaimat:
iptables -A INPUT -p tcp --dport 113 -j REJECT
iptables -A INPUT -j DROP


Huh, ez megint hosszó lett, sorry :)
Friczy
Death is not a bug, it's a feature
Hogyan kérdezzünk okosan?

#16 Felhasználó inaktív   Mono 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 16.750
  • Csatlakozott: --

Elküldve: 2005. 01. 06. 17:04

Friczy! Nem idézlek be, mert az már nagyon hosszú lenne :) De nagyon-nagyon köszönöm! :respect:
Rettentő sokat segítettél ezzel, azt kell mondjam, hogy amit eddig nem, vagy nem igazán láttam tisztán, az már sokkal világosabb számomra!
Nos, akkor ennek tükrében a következő lenne a "végleges" konfig, "áldásod" adod rá? :)

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT 
iptables -A INPUT -p tcp -m tcp -m multiport --dports 22 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT -m limit --limit 2/second --limit-burst 5
iptables -A INPUT -p tcp --dport 113 -j REJECT 
iptables -A INPUT -j DROP 


Ajánlásodra kivettem az 53-as portot is, mivel elsődleges körben nem szeretnék DNS szervert, mail szerver lenne majd, bár ezzel a tudással, amit itt szereztem ez már minden linuxos gépre mehet, természetesen a megfelelő portok nyitogatásával. Mivel levelezne, nyilván neki kell DNS hozzáférés, de csak kliens szinten, mivel kifelé minden mehet, ESTABLISHED miatt képes megjönni a DNS válasz is, akkor ne tovább, nem nyitok 53-as portot :)

Ezzel részben kapcsolatos dolog miatt küldtem egy privit!  :look:  :)

Szerkesztette: Mono 2005. 01. 06. 17:08 -kor

Adjon az Isten, szebb jövőt!

#17 Felhasználó inaktív   diab303 

  • Törzsvendég
  • PipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 1.182
  • Csatlakozott: --

Elküldve: 2005. 01. 07. 01:35

apro kiegeszites.. mindegyik demont aminek nem kell kifele latszania konfigurald be hogy csak a belso interfacen figyeljen, igy meg veletlenul sem lehet kintrol elerni :)
pl egy gateway/tuzfal linuxon szokott egy caching DNS server futni ami a belso halonak ad dns-t, beirod a /etc/bind/named.conf (vagy named.options) -ba az options { } koze, hogy (ha pl 192.168.1.101 a belso ip cime)
        listen-on {
                192.168.1.101;
                127.0.0.1;
        };


#18 Felhasználó inaktív   Mono 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 16.750
  • Csatlakozott: --

Elküldve: 2005. 01. 07. 08:18

Idézet: diab303 - Dátum: 2005. jan. 7., péntek - 1:35

apro kiegeszites.. mindegyik demont aminek nem kell kifele latszania konfigurald be hogy csak a belso interfacen figyeljen, igy meg veletlenul sem lehet kintrol elerni :)
pl egy gateway/tuzfal linuxon szokott egy caching DNS server futni ami a belso halonak ad dns-t, beirod a /etc/bind/named.conf (vagy named.options) -ba az options { } koze, hogy (ha pl 192.168.1.101 a belso ip cime)
        listen-on {
                192.168.1.101;
                127.0.0.1;
        };

Igen, köszi, ez jó ötlet, gondoltam már erre is. Alapvetően most is így van a dolog, csak van egy pár olyan szolgáltatás, amiről nem sok fogalmam van, de kintről tuti nem kellene látszódnia.
Adjon az Isten, szebb jövőt!

#19 Felhasználó inaktív   diab303 

  • Törzsvendég
  • PipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 1.182
  • Csatlakozott: --

Elküldve: 2005. 01. 09. 01:21

Idézet

Igen, köszi, ez jó ötlet, gondoltam már erre is. Alapvetően most is így van a dolog, csak van egy pár olyan szolgáltatás, amiről nem sok fogalmam van, de kintről tuti nem kellene látszódnia.

egyszer kb 2 eve debianeknal megvaltozott valami a samba configban es egyszeruen az (akkor mar) hibasnak velt interface megadast/limitet figyelmen kivul hagyta, es szepen kisharelte jelszo nelkul a filejaimat a net fele is. egett is a pofam mikor valaki szolt miatta (ugy hogy krealt egy beszedes nevu konyvtarat a share gyokerebe..).
ugyhogy kell az az iptables :D

#20 Felhasználó inaktív   kroozo 

  • Őstag
  • PipaPipaPipaPipaPipa
  • Csoport: Fórumtag
  • Hozzászólások: 21.900
  • Csatlakozott: --

Elküldve: 2005. 01. 09. 01:36

Idézet: diab303 - Dátum: 2005. jan. 9., vasárnap - 1:21

egyszer kb 2 eve debianeknal megvaltozott valami a samba configban es egyszeruen az (akkor mar) hibasnak velt interface megadast/limitet figyelmen kivul hagyta, es szepen kisharelte jelszo nelkul a filejaimat a net fele is. egett is a pofam mikor valaki szolt miatta (ugy hogy krealt egy beszedes nevu konyvtarat a share gyokerebe..).
ugyhogy kell az az iptables :D

hmm, na igen, természetesen senki nem vitatja, hogy szükség van a tűzfalra (naná) meg rengeteg mindent el lehet vele intézni (lásd a fenti hosszú és tartalmas beszélgetést (bw :respect: Friczy, ennyit gépelni :D)), de alapvetően azért illik a szolgáltatásainkat eleve úgy beállítani, hogy tűzfal nélkül is csak onnan látszanak ahonnan muszáj, és csak annak legyenek exploit nélkül is elérhetőek, akinek kell (bele se merek gondolni egy olyan samba.confba ami anon lusernek megengedi az írást... brrrr. :shoot: ). Ez szerintem egy igen jó és hasznos gyakorlat, ha másért nem, mint egy második védelmi vonal..... Jah igen, és ki is kell próbálni.... :)

Meg egyébként is, az egy másik rendszer, ami -többek között- kbelső szerkezetének hibáit egyre erőszakosabb határvédelmi megoldásokkal próbálja megoldani. (nem akarok ujjal mutogatni az SP2-re :Đ)
And as we wind on down the road
Our shadows taller than our soul.


“It is often said that before you die your life passes before your eyes. It is in fact true. It's called living.”

Téma megosztása:


  • (7 Oldal)
  • +
  • 1
  • 2
  • 3
  • Utolsó »
  • Nem indíthatsz témát.
  • A téma zárva.

1 felhasználó olvassa ezt a témát.
0 felhasználó, 1 vendég, 0 anonim felhasználó