Sada je: 23 sij 2020, 06:35.
Linux, poslužitelj, mreže i sigurnost

Moderator/ica: Moderatori/ce

# Generated by iptables-save v1.4.8 on Mon Mar 19 16:36:46 2012
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:firewall-eth0-INPUT - [0:0]
-A INPUT -j firewall-eth0-INPUT
-A FORWARD -j firewall-eth0-INPUT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m time --timestart 16:36:00 --timestop 16:40:00 -m tcp --dport 80 -j DROP
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A OUTPUT -s 192.168.200.17/32 -d 192.168.200.30/32 -p tcp -m state --state NEW -m tcp --dport 23 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -j LOG --log-prefix "fw-eth0-out-rejected"
-A OUTPUT -p udp -j LOG --log-prefix "fw-eth0-out-rejected"
-A OUTPUT -j DROP
-A firewall-eth0-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A firewall-eth0-INPUT -i lo -j ACCEPT
-A firewall-eth0-INPUT -p icmp -m icmp --icmp-type any -m limit --limit 3/sec -j ACCEPT
-A firewall-eth0-INPUT -j DROP
COMMIT
# Completed on Mon Mar 19 16:36:46 2012

Neka vas ne zbuni vrijeme u kojem je stavljena zabrana da nebi mislili da je to krivo! To je zato jer sam to sada pokusavao pa je zato stavljeno 16:35!
Postovi: 177
Postovi: 177
Pridružen/a: 26 pro 2010, 16:12
Podijelio/la zahvalu: 3 puta
Primio/la zahvalu: 0 puta
OS: Debian
khm, ovo zahtijeva dublju analizu, rekao bih da si to nepotrebno zakomplicirao, ali ajde pokusaj maknuti state NEW iz -A OUTPUT -p tcp -m state --state NEW -m time --timestart 16:36:00 --timestop 16:40:00 -m tcp --dport 80 -j DROP
...."Have you mooed today?"...
..It’s that time of the decade: I’m reinstalling Debian..
Avatar
Postovi: 5677
Postovi: 5677
Pridružen/a: 28 vel 2009, 16:36
Podijelio/la zahvalu: 1 puta
Primio/la zahvalu: 41 puta
Pa ubiti vrlo jednostavno je :) znaci defaultni chainovi su stavljeni na DROP, promet iz INPUT I FORWARD chaina sam preusmjerio u novo kreirani chain po nazivu firewall-eth0-INPUT. Dozvoljen je samo dolazni promet generiran sa loopback sucelja, icmp protokol i veza koja u related i established stanju,sve ostalo je odbijeno. Prema van (OUTPUT) chain dovzoljeni su uobicajni protokoli, a to su http za web, smtp i pop za mail, https, dozvoljeno je telnet sa mog kompa prema ruteru i sve ostalo je odbijeno. Ako maknem state NEW onda to nece valjati jer promet je generiran sa mog racunala i izlazi van. Npr zelim surfati netom, moje racunalo salje zahtijev nekom web serveru na http 80 port (tocnije tcp syn paket),on mu odgovara i veza je uspostavljena. Znaci ja sam inicirao konekciju i zato tu mora bit state NEW jer inace paketi se nece zakacit za to pravilo!
Postovi: 177
Postovi: 177
Pridružen/a: 26 pro 2010, 16:12
Podijelio/la zahvalu: 3 puta
Primio/la zahvalu: 0 puta
OS: Debian
tech_soul8 je napisao/la:Pa ubiti vrlo jednostavno je :) znaci defaultni chainovi su stavljeni na DROP, promet iz INPUT I FORWARD chaina sam preusmjerio u novo kreirani chain po nazivu firewall-eth0-INPUT. Dozvoljen je samo dolazni promet generiran sa loopback sucelja, icmp protokol i veza koja u related i established stanju,sve ostalo je odbijeno. Prema van (OUTPUT) chain dovzoljeni su uobicajni protokoli, a to su http za web, smtp i pop za mail, https, dozvoljeno je telnet sa mog kompa prema ruteru i sve ostalo je odbijeno. Ako maknem state NEW onda to nece valjati jer promet je generiran sa mog racunala i izlazi van. Npr zelim surfati netom, moje racunalo salje zahtijev nekom web serveru na http 80 port (tocnije tcp syn paket),on mu odgovara i veza je uspostavljena. Znaci ja sam inicirao konekciju i zato tu mora bit state NEW jer inace paketi se nece zakacit za to pravilo!


Imam feeeling (i osjecam to) da ti je ovaj rule zapravo killer cijele price:
Kod: Označi sve
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
When you're a kid and you wanna go "Weee !", but you ain't got drugs yet ... You hold out for your life, hold on to your little GONADS ... and STRIFE.
Avatar
Postovi: 910
Postovi: 910
Pridružen/a: 12 svi 2010, 07:57
Podijelio/la zahvalu: 0 puta
Primio/la zahvalu: 13 puta
OS: linux
Ne,neee! Da nema toga paketi koji su uspostavljenoj vezi nebi odlazili van. Npr uspostavim vezu sa serverom to mi prodje i da nema tog pravila daljnji paketi koji bi se odnodili na tu vezu nebi odlazili.
Postovi: 177
Postovi: 177
Pridružen/a: 26 pro 2010, 16:12
Podijelio/la zahvalu: 3 puta
Primio/la zahvalu: 0 puta
OS: Debian
Problem je u tome decki sto mi sve radi kako treba podeseno na ovaj nacin kako je sano kada umjesto --timestart i --timestop koristim --datestart i --datestop
Postovi: 177
Postovi: 177
Pridružen/a: 26 pro 2010, 16:12
Podijelio/la zahvalu: 3 puta
Primio/la zahvalu: 0 puta
OS: Debian
tech_soul8 je napisao/la:Ne,neee! Da nema toga paketi koji su uspostavljenoj vezi nebi odlazili van. Npr uspostavim vezu sa serverom to mi prodje i da nema tog pravila daljnji paketi koji bi se odnodili na tu vezu nebi odlazili.


Navedeni rule kaze sljedece:

1. Propusti sve pakete kroz OUTPUT table, a koji su "novi" i vezani uz neku konekciju koja je dozvoljena (RELATED).
2. Propusti sve pakete za konekciju koja je uspostavljena (ESTABLISHED).

Onda dolazi "timestamp" rule koji kaze zabrani sve nove konekcije u nekom vremenskom razdoblju; ali sto ako je neka od tih konekcija vec vezana i/ili uspostavljena ?

Pravila u iptablesima se evauliraju po redu (prema dolje, pocevsi od vrha). Meni bi bilo logicno staviti "timestamp" rule ispred ovog ESTABLISHED/RELATED rulea.

EDIT (prilazem pojasnjenje)
ESTABLISHED
The ESTABLISHED state has seen traffic in both directions and will then continuously match those packets. ESTABLISHED connections are fairly easy to understand. The only requirement to get into an ESTABLISHED state is that one host sends a packet, and that it later on gets a reply from the other host. The NEW state will upon receipt of the reply packet to or through the firewall change to the ESTABLISHED state. ICMP reply messages can also be considered as ESTABLISHED, if we created a packet that in turn generated the reply ICMP message.


RELATED
The RELATED state is one of the more tricky states. A connection is considered RELATED when it is related to another already ESTABLISHED connection. What this means, is that for a connection to be considered as RELATED, we must first have a connection that is considered ESTABLISHED. The ESTABLISHED connection will then spawn a connection outside of the main connection. The newly spawned connection will then be considered RELATED, if the conntrack module is able to understand that it is RELATED. Some good examples of connections that can be considered as RELATED are the FTP-data connections that are considered RELATED to the FTP control port, and the DCC connections issued through IRC. This could be used to allow ICMP error messages, FTP transfers and DCC's to work properly through the firewall. Do note that most TCP protocols and some UDP protocols that rely on this mechanism are quite complex and send connection information within the payload of the TCP or UDP data segments, and hence require special helper modules to be correctly understood.
When you're a kid and you wanna go "Weee !", but you ain't got drugs yet ... You hold out for your life, hold on to your little GONADS ... and STRIFE.
Avatar
Postovi: 910
Postovi: 910
Pridružen/a: 12 svi 2010, 07:57
Podijelio/la zahvalu: 0 puta
Primio/la zahvalu: 13 puta
OS: linux
tech_soul8 je napisao/la:# Generated by iptables-save v1.4.8 on Mon Mar 19 16:36:46 2012
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:firewall-eth0-INPUT - [0:0]
-A INPUT -j firewall-eth0-INPUT
-A FORWARD -j firewall-eth0-INPUT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m time --timestart 16:36:00 --timestop 16:40:00 -m tcp --dport 80 -j DROP
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A OUTPUT -s 192.168.200.17/32 -d 192.168.200.30/32 -p tcp -m state --state NEW -m tcp --dport 23 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -j LOG --log-prefix "fw-eth0-out-rejected"
-A OUTPUT -p udp -j LOG --log-prefix "fw-eth0-out-rejected"
-A OUTPUT -j DROP
-A firewall-eth0-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A firewall-eth0-INPUT -i lo -j ACCEPT
-A firewall-eth0-INPUT -p icmp -m icmp --icmp-type any -m limit --limit 3/sec -j ACCEPT
-A firewall-eth0-INPUT -j DROP
COMMIT
# Completed on Mon Mar 19 16:36:46 2012


Probaj sa:
Kod: Označi sve
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:firewall-eth0-INPUT - [0:0]
-A INPUT -j firewall-eth0-INPUT
-A FORWARD -j firewall-eth0-INPUT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -m time --timestart 16:36:00 --timestop 16:40:00 -m tcp --dport 80 -j DROP
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
-A OUTPUT -s 192.168.200.17/32 -d 192.168.200.30/32 -p tcp -m state --state NEW -m tcp --dport 23 -j ACCEPT
-A OUTPUT -p tcp -j LOG --log-prefix "fw-eth0-out-rejected"
-A OUTPUT -p udp -j LOG --log-prefix "fw-eth0-out-rejected"
-A OUTPUT -j DROP
-A firewall-eth0-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A firewall-eth0-INPUT -i lo -j ACCEPT
-A firewall-eth0-INPUT -p icmp -m icmp --icmp-type any -m limit --limit 3/sec -j ACCEPT
-A firewall-eth0-INPUT -j DROP
COMMIT
# Completed on Mon Mar 19 16:36:46 2012


Mada mi je cudno da ti radi sa:
iptables -A OUTPUT -p tcp -m state --state NEW -m time --datestart yy:mm:ddT12:00 --datestop yy:mm:ddT13:00 -m tcp --dport 80 -j DROP

ali ne i sa:
iptables -A OUTPUT -p tcp -m state --state NEW -m time --timestart 12:00 --timestop 13:00 -m tcp --dport 80 -j DROP
Postovi: 290
Postovi: 290
Pridružen/a: 13 ožu 2012, 20:14
Podijelio/la zahvalu: 0 puta
Primio/la zahvalu: 0 puta
Hm... Ajmo ovako decki posto vidim da vam je sve ovo malo zbunjuce, ali ok nisam ni ja neki expert i tu smo da pomognemo jedni drugima pa ajmo redom.

Ovako sto se tice RELATED I ESTABLISHED stanja. RELATED stanje se odnosi na neku konekciju koja se koristi da bi olaksala neku drugu konekciju. Dobra primjer si nasao gore drade di se navodi ftp protokol. Kontrolni podaci se prenose kroz jednu konekciju dok se prijenos podataka prenosi kroz drugu konekciju, to je RELATED stanje. Sto tice ESTABLISHED stanja... Established stanje se odnosi na vezu koja je u procesu prijenosa podataka. Npr ako zelis da neki servis odrzava konekciju sa nekim vanjskim klijentom ili serverom moras dozvoliti ESTABLISHED stanje. NEW stanje se odnosi na konekciju kroz koju podaci jos nisu prosli niti naprijed niti nazad. Sada da sve ovo povezemo. Npr imas podignut server i na njemu SSH. Ako zelis uspostaviti ssh vezu sa svojim serverom preko interneta, znaci povezat se s njime moras u INPUT lancu (chain) dozvoliti NEW i ESTABLISHED stanje. NEW stanje kako bi ti server uopce prihvatio dolazne zahtjeve prema ssh portu, a ESTABLISHED stanje kako bi se podaci nesmetano mogli prenositi nakon sto se uspostavi veza, a isto tako moras u OUTPUT lancu dozvolit ESTABLISHED stanje ili ti u protivnome server nece moci odgovoriti na vec uspostavljenju vezu jer OUTPUT chain se odnosi na promet generiran sa samoga hosta di je iptables implementiran. Nadam se da sam donekle bio jasan.

E sada ajmo nazada na moje postavke :)

Kao sto se vidi iz ovog pravila:

-A INPUT -j firewall-eth0-INPUT
-A FORWARD -j firewall-eth0-INPUT

sav promet koji dolazi na moje racunalo, znaci namjenjen je meni sa vanjske mreze (interneta, lokalnog lana...nevazno) preusmjeren je u dodatni lanac koji sam ja kreirao cisto zbog preglednosti, a zove se "firewall-eth0-INPUT". Tamo se dolazni paketu susrecu sa pravilima koji se nalaze u firewall-eth0-INPUT lancu, a to su:

-A firewall-eth0-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A firewall-eth0-INPUT -i lo -j ACCEPT
-A firewall-eth0-INPUT -p icmp -m icmp --icmp-type any -m limit --limit 3/sec -j ACCEPT
-A firewall-eth0-INPUT -j DROP

Kao sto je jasno vidiljivo sve dolazne konekcije koje su u RELATED i ESTABLISHED stanju su dozvoljene, dozvoljena je konekcija prema loopback suceljeu (mnogi programi, servisi koriste loopback adapter i zbog toga koneckija prema njemu mora biti dovoljena) i dozvoljen je icmp protokol. Sve ostale konekcije su odbijene. Znaci npr da ja imam ssh server na svom racunalu i da se zelim spojiti na njega nebih bio to u stanju uciniti jer u firewall-eth0-INPUT lancu nisam dozvolio uopce konekcije prema portu 22.

Sada cu malo preskocit na sljedeca cetri pravila iz OUTPUT lanca kako bih dodaatno pojasnio zasto u firewall-eth0-INPUT lancu mora biti dozvoljeno stanje RELATED I ESTABLISHED. Znaci ta cetri pravila su:

-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

Ovako posto smo rekli da se OUTPUT lanc odnosi na promet koji je generiran sa naseg hosta di je podesen iptables ako zelim recimo otici na www.index.hr sto se desava.

Kada otvorim browser i upisem www.index.hr prvo sto se desava, a to je da se rasclanjuje OUTPUT lanac i tamo se gleda dali mi je dozvoljen novo inicirani (NEW state) promet prema DNS serveru?
Kao sto vidimo iz slj. pravila DNS promet je dozvoljen:

-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT

E sada u ulogu vec stupa firewall-eth0-INPUT lanac i slj.pravilo:

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

Zasto? Pa nakon sto je moje racunalo, router poslalo zahtjev za name rezolucijom nekom dns serveru, dns server odgovara na taj zahtjev i povratni paket koji sadrzi ip adresu za index.hr presrece firewall-eth0-INPUT lanac. Kako u tom lancu imamo dozvoljeno stanje RELATED i ESTABLISHED paket je propusten, u suprtnom dns odgovor na nas zahtjev na www.index.hr nebih mogao doci do nas.

Nakon sto smo saznali ip adresu za index.hr zelimo uspostavit vezu sa web serverom i tada na snagu stupa slj. pravilo:

-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

Kako smo mi ti koji zelimo uspostaviti vezu sa serverom, znaci mi iniciramo novu konekciju prema indexovom serveru, primjenjuje se gore navedeno pravilo.

E sada prije nego pojasnim zasto se u OUTPUT lancu mora nalaziti slj.pravilo

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

ajde da prvo pojasnimo kako se uspostavlja veza preko tcp protokola. Da bi dva racunala uspostavila vezu preko tcp ip protokola moraju prvo uspostaviti konekciju prije nego sto krenu slati podatke jer je tcp konekcijski orijentiran protokol. To uspostavljanje konekcije zove se trostruko rukovanje i sastoji se od 3 koraka. 1. Racunalo koje zeli uspostaviti konekciju salje tako zvani SYN paket. U tom paketu nalazi se sequence broj s kojim zapocinje komunikaciju, velicina paketa,izvorni port i port na koji se zeli spojiti. Racunalo koje je primilo taj paket odgovara SYN/ACK paketom. To je paket u kojem se nalazi njegov sequence broj i velicina paketa. Racunalo koje je zeljelo uspostaviti konekciju na taj paket odogovara ACK paketom. U tom trenutku uspostavljen je sesija i razmjena podataka moze poceti.

E sada da se vratiom malo na nas iptables. Kada netfilter aplikacija smatra stanje veze uspostavljenom (ESTABLISHED)? Nakon sto mi posaljemo SYN paket, server odg SYN/ACK paketom. Iptables taj dolazni paket smatra kao paket u NEW stanju, tek nakon sto mi odgovorimo sa nasim SYN paketom i uvecmo sequence broj za 1 iptables smatra vezu uspostavljenom.

Znaci ako zelimo da nas host moze komunicirati sa web serverom s kojim je uspostavio vezu pravilo:

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

mora se nalaziti u OUTPUT lancu.

Ajmo sada opet nazad na moju konfiguraciju i na problem sa vremenski ogranicenjem :)

Ovako kao sto smo rekli iptables rasclanjuje pravila po redsoljedu od gore prema dolje ili ti ga od prvoga prema zadnjem.

"Netko" zasto tvoj primjer sa:

-A OUTPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -m time --timestart 16:36:00 --timestop 16:40:00 -m tcp --dport 80 -j DROP

ovakim redsoljedom nije dobar?? U ovom slucaju pravilo sa vremenskim ogranicenjem nikada nece stupiti na snagu jer tko god zeli uspostaviti vezu na Internet docekat ce ga pravilo broj jedan u kojem je svaka konekcija prema nekom web serveru (--dport 80) prihvacena i na taj nacin pravilo broj dva uopce ne dolazi na red.

Moj problem je ubiti samo taj sto meni sve radi kako treba kada koristim pravilo primjenjujuci --datestart i --datestop paramtre umjesto --timestart --timstop. Zasto mi ovo sta --timestart i stop ne prolazi zasista nemam pojma, a trebalo bi. Zasto ne zelim koristiti --date opciju? Pa zato jer zelim da i se pravilo primjenjuje stalno, bez obzira na datum. E sada kao --datestop mogu ja navest i npr. 2038-12-31 datum, ali nije mi to to jer ja zelim da to radi onako, a ne ovako :))

Malo sam se pogubio u cijelom ovom postu pokusavajuci obajsniti sve svoje "zanje", "ne znaje" o iptables-u pa ako netko me uhvati da sam negdje pogrijesio slobodno neka me ispravi. Nadam se da sam bio od pomoci, a sto se tice mog problem....hm, vidjet cemo :) ako rjesim, postam pa neka svi znaju za ubuduce :)

Hvala svima jos jednom!
Postovi: 177
Postovi: 177
Pridružen/a: 26 pro 2010, 16:12
Podijelio/la zahvalu: 3 puta
Primio/la zahvalu: 0 puta
OS: Debian
Ja se ispricavam, iz nekog razloga sam zabrijo da iptables parse-a sve ruleove i da ono zadnje prevlada... Ocito mi "jump" nije dovoljno intuativno :facepalm . Jos jednom se ispricavam...
Postovi: 290
Postovi: 290
Pridružen/a: 13 ožu 2012, 20:14
Podijelio/la zahvalu: 0 puta
Primio/la zahvalu: 0 puta

Na mreži
Trenutno korisnika/ca: / i 1 gost.