Belépés
IPTABLES célportok tiltása
2010. október 18. – 00.26 – Anonymous
Sziasztok!
Teljes kétségbeesésem közepette fordulok hozzátok; a problémám a következő:
BitTorrent forgalmat szeretném blokkolni a célgép 1000-1800 és 1800-65534 portjainak letiltásával. Olvastam az Iptables zsebkönyvet de nekem a téma magas. :(
Kérésem a megfelelő iptables parancs szintaxisa lenne azaz hogy tudnám beállítani, hogy a nat-olt hálózatból ne mehessenek tovább a fent megadott portokra a csomagok.
Remélem a megoldás csak nekem bonyolult, várom tisztelettel a segítséget esetleg alternatív megoldásokat.
Előre is köszönöm:
Andor
- A hozzászóláshoz regisztráció és belépés szükséges
Fordítsuk meg a dolgot. Csak azokat engedélyezd, amik a működéshez szükségesek.
Gufw, Firestarter
Túl profi akarsz lenni, akkor meg Squid Proxy-t is összedobsz.
Google tele van mindezekkel, csak keresni kell.
Akkor valami ilyesmi lesz:
iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -p tcp --dport 1000:65534 -j DROP
Értelemszerűen a 192.168.0.0/24 a belső hálód adataira cserélendő.
(Gyakorlatilag úgy írod, hogy 1000 felett minden port tiltva legyen. Jól látom?)
Kipróbáltam amit javasoltál, sajnos, a következő hibaüzenetet kaptam:
user@domain:~# iptables -A POSTROUTING -t nat -s 10.10.1.0/24 -p tcp --dport 1000:65534 -j DROP
iptables v1.4.6:
The "nat" table is not intended for filtering, the use of DROP is therefore inhibited.
Try `iptables -h' or 'iptables --help' for more information.
user@domain:~#
A portok tiltását úgy gondoltam, hogy 1000-től 1800-ig majd 1900-tól 65534-ig legyenek tiltva.Az 1801-től 1899-ig terjedő tartomány az MSN és a Skype miatt kellenek.
Meg lehet oldani a filter táblán szabályokkal?
Üdv:
Andor
Miért nem csinálod ahogy ajánlottam? Nem tiltó szabályokat kell létrehozni, hanem az ellenkezőjét, engedélyezőket, tehát alapból minden DROP ( iptables -P INPUT DROP ), kivéve ez/az/amaz.
Ezzel az lenne a baj, hogy a DNS-től kezdve a HTTP-n keresztül a Skype portjáig mindegyiket egyesével engedélyeznem kellene.
Ez nem baj, ez a szokás, így kell(ene). Csak egyszer kell egy jó tűzfal scriptet összerakni. Na mindegy.
Megfogadom a tanácsod és elkezdem írni azt a scriptet. :)
Az a baj, hogy - amint írja is az iptables - a nat tábla nem szűrésre való. Tehát helyesen:
iptables -A FORWARD -s 10.10.1.0/24 -p tcp --dport 1000:1800 -j DROP
iptables -A FORWARD -s 10.10.1.0/24 -p tcp --dport 1900:65534 -j DROP
iptables -A FORWARD -s 10.10.1.0/24 -j ACCEPT
Viszont valóban úgy jobb, ha alapból mindent tiltunk és ami szükséges, azt engedjük ki. Ebben az esetben:
iptables -F FORWARD
iptables -P FORWARD DROP
iptables -A FORWARD -s 10.10.1.0/24 -p tcp --dport "ide jön az engedélyezett port" -j ACCEPT
iptables -A FORWARD -s 10.10.1.0/24 -p tcp --dport "ide jön az engedélyezett port" -j ACCEPT
stb.
Nem tudom, mi állítgatja neked csomagszűrést (Firestarter?), de figyelj rá, hogy ne írja felül, amit beírsz szabályt.
Amennyiben nem továbbított csomagról van szó - tehát a cél egy helyi folyamat - akkor a FORWARD helyett PREROUTING-al kell kiadni a parancsot?
A FORWARD lánc azt szabályozza, hogy miképpen bánjon a kernel az átmenő csomagokkal, tehát azokkal amelyeknek sem a forrása sem pedig a célja nem az adott gép.
A PREROUTING, POSTROUTING pedig címfordításra használandó attól függően, hogy útválasztás előtt vagy pedig után natolunk.
Próbáld konkrétan leírni, mi a célod!
PC1 az asztali gép, a PC2 a router-ként használt gép.
PC2-nek van két hálókártyája eth0 -> LAN, eth1 WAN ként használva.
PC1 a PC2 eth0-ján van.
1. feltétel
PC1-ről csak az engedélyezett szolgáltatások mehessenek ki a netre PC2-n keresztül.
Ezt fent kitárgyaltuk. Ezt már értem.
2. feltétel
PC1 elérhesse a PC2-n futtatott folyamatokat pl.: SSH, FTP, stb.
(Ha jól tudom ide kellene a PREROUTING.)
3. feltétel a PC2-n futtatott folyamatok elérhessék a netet.
2. feltétel
Ez a PC2 szempontjából az INPUT láncot érinti az eth0 interfészen. Ha te magad vagy az asztali gép gazdája (és megbízol magadban :) ), én itt nem korlátoznék semmit:
iptables -A INPUT -s 10.10.1.0/24 -i eth0 -j ACCEPT
Prerouting ide nem kell, hiszen ahhoz a géphez szánod a csomagokat, amik benne vannak a tcp fejlécben.
Tegyük fel, hogy a PC1-en futtatsz egy szervert a 10000 porton, amit el kell érned kivűlről. Ekkor a PC2-n a szabály:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 10000 -j DNAT --to 10.10.0.1
3. feltétel
Ez pedig a PC2 eth1-es interfészén az OUTPUT lánccal kapcsolatos.
Az alapokat tanulmányozd át mégegyszer:
http://pcforum.hu/cikkek/111/Linux+kernel+alapu+csomagszures+IPTABLES-sz...
Köszönöm szépen a sok segítséget.
Andor
Sziasztok!
DHCP szervert készítettem, az működik!
Viszont a kliens nemtud internetezni.
Amit el szeretnék érni, hogy internetezni lehessen, de torrent, stb. ne. A következőt csináltam, biztosan rossz, de nem tudom, hogy mi hiányzik:
# Generated by iptables-save v1.4.4 on Thu Feb 3 10:58:18 2011
*nat
:PREROUTING ACCEPT [1063:114611]
:OUTPUT ACCEPT [64:6568]
:POSTROUTING ACCEPT [2:120]
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Thu Feb 3 10:58:18 2011
# Generated by iptables-save v1.4.4 on Thu Feb 3 10:58:18 2011
*mangle
:PREROUTING ACCEPT [13380:8984305]
:INPUT ACCEPT [634:104239]
:FORWARD ACCEPT [12537:8862651]
:OUTPUT ACCEPT [561:168014]
:POSTROUTING ACCEPT [13069:9026049]
COMMIT
# Completed on Thu Feb 3 10:58:18 2011
# Generated by iptables-save v1.4.4 on Thu Feb 3 10:58:18 2011
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -p tcp -m multiport --dports 20,21,22,80,443,10000 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -j DROP
-A FORWARD -i eth0 -o eth1 -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -s 87.229.26.244/32 -i eth1 -j DROP
-A FORWARD -s 194.71.107.15/32 -i eth1 -j DROP
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -j DROP
COMMIT
# Completed on Thu Feb 3 10:58:18 2011
Először webminen keresztül próbáltam beállítani a tűzfalat, de mint kiderült két fájlból vette a szabályokat és mindig megszakadt a net.
Végül konzolos módban kezdtem újra a beállítást és a fenti beállítással most működik a net, de nem vesz figyelembe semmit, mivel a FORWARD részbe a következőket tettem: -A FORWARD -i eth0 -o eth1 -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
Ezzel jóformán megadtam neki, hogy mindent figyelmen kívül hagyjon és mehet minden. Ha e kettőt kiveszem, akkor csak a belső hálóra jók a szabályok, tehát a multiportos rész. Segítsetek, mi lehet a gond. Az eth0 megy az internet felé, az eth1 pedig a kliensre. Weboldalakat is tiltani szeretnék, de most ezt is figyelmen kívül hagyja.