Ubuntu iptables script

Fórumok

Sziasztok!

Egy netes leírás alapján készítettem egy firewall scriptet,
ami nem nagyon akar működni. Elindítása után még a http sem
megy :(
Bár NAT-os scriptből alakítottam át. Nem akarok NAT-olni,
csak a helyi gépet akarom védeni. Nem közvetlenül külső
ip-m van, hanem egy belső hálóról csatlakozok ki a netre egy
gatewayen keresztül. Részben a net-es támadóktól, részben a
szomszédos gépektől akarom megvédeni.



echo "0" > /proc/sys/net/ipv4/ip_forward

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

$IPTABLES -N rossz_tcp_csomagok
$IPTABLES -N megengedett
$IPTABLES -N tcp_csomagok
$IPTABLES -N udp_csomagok
$IPTABLES -N icmp_csomagok


# rossz csomagok
# $IPTABLES -A rossz_tcp_csomagok -p tcp --tcp-flags SYN,ACK SYN,ACK \
#             -m state --state NEW -j REJECT --reject-with tcp-reset	     
# $IPTABLES -A rossz_tcp_csomagok -p tcp ! --syn -m state --state NEW -j LOG \
#	     --log-prefix "New not syn:"
# $IPTABLES -A rossz_tcp_csomagok -p tcp ! --syn -m state --state NEW -j DROP

# megengedett
$IPTABLES -A megengedett -p TCP --syn -j ACCEPT
$IPTABLES -A megengedett -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A megengedett -p TCP -j DROP

# TCP szabalyok
$IPTABLES -A tcp_csomagok -p TCP -s 0/0 --dport 21 -j megengedett
$IPTABLES -A tcp_csomagok -p TCP -s 0/0 --dport 22 -j megengedett
$IPTABLES -A tcp_csomagok -p TCP -s 0/0 --dport 80 -j megengedett
$IPTABLES -A tcp_csomagok -p TCP -s 0/0 --dport 113 -j megengedett

# UDP ports
$IPTABLES -A udp_csomagok -p UDP -s 0/0 --destination-port 53 -j ACCEPT
$IPTABLES -A udp_csomagok -p UDP -s 0/0 --destination-port 123 -j ACCEPT
$IPTABLES -A udp_csomagok -p UDP -s 0/0 --destination-port 2074 -j ACCEPT
$IPTABLES -A udp_csomagok -p UDP -s 0/0 --destination-port 4000 -j ACCEPT

# windowsos broadcast ellen:
# $IPTABLES -A udp_csomagok -p UDP -i eth0 -d $BRCAST \
#             --destination-port 135:139 -j DROP
	     
# DHCP keresek ellen:
# $IPTABLES -A udp_csomagok -p UDP -i eth0 -d 255.255.255.255 \
#             --destination-port 67:68 -j DROP
	     
# ICMP szabalyok
$IPTABLES -A icmp_csomagok -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_csomagok -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT


# INPUT lanc:

# rossz TCP csomagok:
$IPTABLES -A INPUT -p tcp -j rossz_tcp_csomagok

# windowsos multicast ellen
# $IPTABLES -A INPUT -i eth0 -d 224.0.0.0/8 -j DROP

# fura csomagok:
# $IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
#             --log-level DEBUG --log-prefix "IPT INPUT packet died: "
	     
# OUTPUT lanc:

# rossz TCP csomagok
$IPTABLES -A OUTPUT -p tcp -j rossz_tcp_csomagok

# szabalyok:
$IPTABLES -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $IPCIMEM -j ACCEPT

# fura csomagok:
# $IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
#             --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "





Hozzászólások

Ja és próbáltam úgy is, h az össze komment ki van szedve. Legelőször így,
aztán kommenteltem ki a dolgokat, de így sem megy.

A parancsokat értem, h mit csinálnak. De még nem vagyok elég profi az egészből...

Ha csak ezt az érintett gépet szeretnéd védeni, akkor a FORWARD láncnak nincs szerepe, a forwarding ki van kapcsolva, policy DROP-ra állítva. Eddig tökéletes.

Az OUTPUT-ból most először a rossz_tcp_csomagok láncra ugrik, ami teljesen üres (ki van kommentezve). Aztán a 127.0.0.1 forrású mehet, ez valószínűleg most jó, de célszerűbb és általánosabb, ha az INPUT láncban input interfésznek a lo-t adod meg, és/vagy az OUTPUBAN a teljes 127.0.0.0/8 loopback tartományt. Végül kiengedi a saját IP-det, a többi a default policy alapján eldobásra kerül.

Az INPUT láncból elugrik a rossz_tcp_csomagok láncra, ami üres, és utána a default policy DROP miatt eldobásra kerül az összes csomag.

Be kellene engedni azokat a csomagokat, amelyek a te IP-dre érkeznek, ez a szabály most hiányzik, és ezért nem működik a gépedről semmilyen olyan protokoll, amely az elküldött kérésre választ vár, illetve kintről sem tudnak a te gépeden lévő szolgáltatást igénybevenni.

A megengedett, tcp_csomagok, udp_csomagok, icmp_csomagok láncok nincsenek használatban.

Természetesen ez így túl sok mindent nem ér, szűkíteni kell a be- és kiengedett csomagok körét. Egy csomagszűrő tűzfal megfelelően erős szabályainak a megalkotása meghaladja az itteni kereteket, csak néhány mondatban, amire érdemes figyelni. Tűzfalgyártásánál először meg kell vizsgálni a gépen futó alkalmazások, szolgáltatások által használt IP-ket, protokollokat, portokat, a kapcsolat kezdeményezésének irányát, és a nem szükségeseket tiltani, vagy a szükségeseket engedni. Ehhez jó kindulási alap a netstat. Megfontolandó az érvénytelen forrás- és célcímek ellenőrzése, valamint a reverse path check bekapcsolása is. Érdemes figyelni a broadcastot igénylő protokollokra (például a DHCP) is.

A windowsos multicast elé beírtam ezt, ahogy mondtad, és már jó.


#
# Rules for incoming packets from the internet.
#

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED \
-j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

Köszi szépen.

Nem használok Yahoot, de a Yahoo oldalának információjából nekem az derül ki, hogy ez a sign-in seal valójában cookie-alapú dolog, és csak a böngészővel van kapcsolatban. Nem törlődtek a cookie-k? Lépj be újra, aztán böngésző bezárása, és újra próbáld meg.

http://help.yahoo.com/l/us/yahoo/edit/privacy/edit-35.html

A tűzfalnak ehhez nem lehet köze, hacsak nem olyan megoldást is használ a cookie mellett, ami a böngészőtől függetlenül kommunikál a szerverrel (pl. Java alkalmazás). De ennek nem látom esélyét.

Másik dolog, ami nem működik. Használom a Last.FM lejátszót, szépen jön is a zene,
meg minden, de mikor kilépek, akkor nem tűnik el a tálcáról.
Csak akkor fordul elő, ha fut a tűzfal.

Ha ekkor újraindítom, akkor a következő hibaüzenettel jön:

"Something is seriously wrong with the network subsystem.
The application failed to open a socket and start listening for
submissions from player plugins

Details: Could not bind listening socket. Socket error: 98"