Pár napon belül be kel üzemelnem egy szervert, amin egy squid fog müködni transzparens proxy-ként, a gépen még dhcp szolgáltatás fog futni.(+ssh,apache2 stb..)
Átnéznétek az alábbi scriptet hogy milyen hibák vannak benne?
kösszi, fontos lenne
Imre
#!/bin/sh
echo -n 'Configuring firewall '
#allandok
NET_INT=192.168.0.0/255.255.0.0 #belsõ halozatot lefedõ teljes cimtartomany
IFACE_INT=eth0 #belsõ csatolo
IFACE_EXT=eth1 #kulsõ csatolo
IP_GW=192.168.1.1
PORT_SSH_EXT=10000 #SSH external port
MORE_F_TCP_PORTS="544 1755 2628 6881 81"
MORE_F_UDP_PORTS="544 1755"
#544-RealMedia 1755-WindowsMedia 2628-JDictionary 6880-BitTorrent
#IP_INT=192.168.100.1 #belsõ IP cim
IP_INT="`ifconfig $IFACE_INT | grep inet\ addr | cut -f2 -d: | cut -f1 -d\ `"
IP_EXT="`ifconfig $IFACE_EXT | grep inet\ addr | cut -f2 -d: | cut -f1 -d\ `" #külső IP cím
#regi szabalyok tõrlese
iptables -F
iptables --delete-chain
iptables -t nat -F
iptables -t nat --delete-chain
iptables -Z
#alapertelemzetten mindent eldob
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#visszahurkolo engedélyezése
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#tovabbi lancok letrehozasa:
iptables -N security
iptables -N dosattack
iptables -N sinput
iptables -N portscan
#gw elerhetõsege
iptables -A INPUT -s $IP_GW -j ACCEPT
iptables -A OUTPUT -d $IP_GW -j ACCEPT
#Portscan & PoD loggolas
iptables -A security -p tcp --tcp-flags ALL ALL -j LOG --log-prefix "FW: Xmas-tree scan (?) "
iptables -A security -p tcp --tcp-flags ALL NONE -m state --state ! ESTABLISHED -j LOG --log-prefix "FW: Null scan (?) "
iptables -A security -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A security -p icmp --icmp-type echo-request -j LOG --log-prefix "FW: PingofDeath attack (?) "
iptables -A security -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -j security
iptables -A FORWARD -j security
#DoS tamadasok & portscanek szurese, loggolasa
iptables -A dosattack -p tcp --syn -m limit --limit 8/s -j sinput
iptables -A dosattack -p tcp --syn -j LOG --log-prefix "FW: Syn-Flood attack (?) "
iptables -A dosattack -p tcp --syn -j DROP
iptables -A dosattack -j sinput
#bejovo szabalyok
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED #jovahagyott kapcsolatok elfogadasa
iptables -A INPUT -j dosattack
iptables -A sinput -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "FW: hidded portscan ? "
iptables -A sinput -p tcp ! --syn -m state --state NEW -j DROP
iptables -A sinput -i $IFACE_INT -p tcp -s $NET_INT --dport 20 -m state --state NEW -j ACCEPT #ftp
iptables -A sinput -i $IFACE_INT -p tcp -s $NET_INT --dport 21 -m state --state NEW -j ACCEPT #ftp
iptables -A sinput -i $IFACE_INT -p udp -s $NET_INT --dport 20 -m state --state NEW -j ACCEPT #ftp
iptables -A sinput -i $IFACE_INT -p udp -s $NET_INT --dport 21 -m state --state NEW -j ACCEPT #ftp
iptables -A sinput -i $IFACE_INT -p tcp -s $NET_INT --dport 22 -m state --state NEW -j ACCEPT
iptables -A sinput -i $IFACE_INT -p tcp -s $NET_INT --dport 3128 -m state --state NEW -j ACCEPT
iptables -A sinput -i $IFACE_INT -p tcp -s $NET_INT --dport 25 -m state --state NEW -j ACCEPT
iptables -A sinput -p tcp --dport 443 -j ACCEPT
iptables -A sinput -p icmp -j ACCEPT
#iptables -A sinput -j LOG --log-prefix "FW: Rejected default (in) "
iptables -A sinput -j REJECT
#kimenõ szabalyok
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT #ftp
iptables -A OUTPUT -p udp --dport 21 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 20 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT #dns
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT #http
iptables -A OUTPUT -p udp --dport 80 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 123 -m state --state NEW -j ACCEPT #ntp
iptables -A OUTPUT -p tcp --dport 123 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT #https
iptables -A OUTPUT -p udp --dport 443 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp -d $NET_INT --sport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d $NET_INT --sport 25 -j ACCEPT
iptables -A OUTPUT -j LOG --log-prefix "FW: Rejected default (out) "
iptables -A OUTPUT -j REJECT
#tovabbitt szabalyok
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 16/s -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A FORWARD -i $IFACE_INT -p tcp --dport 80 -m state --state NEW,RELATED -j ACCEPT #http
iptables -A FORWARD -i $IFACE_INT -p udp --dport 80 -m state --state NEW,RELATED -j ACCEPT
iptables -A FORWARD -i $IFACE_INT -p tcp --dport 20 -m state --state NEW,RELATED -j ACCEPT #ftp-data
iptables -A FORWARD -i $IFACE_INT -p udp --dport 20 -m state --state NEW,RELATED -j ACCEPT
iptables -A FORWARD -i $IFACE_INT -p tcp --dport 21 -m state --state NEW,RELATED -j ACCEPT #ftp-ctrl
iptables -A FORWARD -i $IFACE_INT -p udp --dport 21 -m state --state NEW,RELATED -j ACCEPT
iptables -A FORWARD -i $IFACE_INT -p udp --dport 53 -m state --state NEW,RELATED -j ACCEPT #dns
iptables -A FORWARD -i $IFACE_INT -p tcp --dport 443 -m state --state NEW,RELATED -j ACCEPT #https
iptables -A FORWARD -i $IFACE_INT -p tcp --dport 25 -m state --state NEW,RELATED -j ACCEPT #smtp
iptables -A FORWARD -i $IFACE_INT -p tcp --dport 43 -m state --state NEW,RELATED -j ACCEPT #whois
iptables -A FORWARD -i $IFACE_INT -p udp --dport 43 -m state --state NEW,RELATED -j ACCEPT #whois
iptables -A FORWARD -i $IFACE_INT -p tcp --dport 110 -m state --state NEW,RELATED -j ACCEPT #pop3
iptables -A FORWARD -i $IFACE_INT -p tcp --dport 123 -m state --state NEW,RELATED -j ACCEPT #ntp
iptables -A FORWARD -i $IFACE_INT -p udp --dport 123 -m state --state NEW,RELATED -j ACCEPT
#Tovabbitasra a MORE_F_TCP_PORTS tombben tarolt portok kinyitasa
if test -n "$MORE_F_TCP_PORTS"
then
for i in $MORE_F_TCP_PORTS
do iptables -A FORWARD -i $IFACE_INT -p tcp --dport $i -m state --state NEW,RELATED -j ACCEPT
done
fi
if test -n "$MORE_F_UDP_PORTS"
then
for i in $MORE_F_UDP_PORTS
do iptables -A FORWARD -i $IFACE_INT -p udp --dport $i -m state --state NEW,RELATED -j ACCEPT
done
fi
#iptables -A FORWARD -j LOG --log-prefix "FW: Rejected default (fwd) "
iptables -A FORWARD -j REJECT
#NAT
iptables -t nat -A POSTROUTING -o $IFACE_EXT -j MASQUERADE
#transzparens proxy engedalyezase
iptables -t nat -A PREROUTING -i $IFACE_INT -s $NET_INT -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp --dport $PORT_SSH_EXT --syn -m limit --limit 60/hour -j LOG --log-prefix "FW: Permitted SSH connect "
iptables -t nat -A PREROUTING -p tcp --dport $PORT_SSH_EXT --syn -m limit --limit 60/hour -j DNAT --to $IP_INT:10000
iptables -t nat -A PREROUTING -p tcp --dport $PORT_SSH_EXT --syn -j LOG --log-prefix "FW: Unpermitted SSH Connect "
iptables -t nat -A PREROUTING -p tcp --dport $PORT_SSH_EXT --syn -j DROP
iptables -t nat -A PREROUTING -p tcp --dport $PORT_SSH_EXT -j DNAT --to $IP_INT:10000
echo 'Done'
- 23527 megtekintés
Hozzászólások
Az X-MAS scan-t szerinte elírtad, az nmap oldala alapján nekem máshogy jött ki (nálam: http://panther.inf.elte.hu/linux/scripts/fwon.new.txt ), lásd itt: http://www.insecure.org/nmap/man/man-port-scanning-techniques.html
forward láncban a 22-es portot direkt nem engedélyezed?
Egyébként jónak tűnik.
- A hozzászóláshoz be kell jelentkezni
Miért nem használod a multiport kapcsolót?
Még Csákk Norisz sem bogozza ki hogy mit is akarsz. :)
Szerintem sokkal áttekinthetőbb igy...
iptables -A FORWARD -i $IFACE_INT -p tcp -m multiport --dport http,ftp,smtp -m state --state NEW,RELATED -j ACCEPT
--
maszili
- A hozzászóláshoz be kell jelentkezni
oks, kösszi,átírtam, de még mindig nem jó valami :(
#!/bin/sh
echo -n 'Configuring firewall '
echo "1" > /proc/sys/net/ipv4/ip_forward
#allandok
NET_INT=192.168.0.0/255.255.0.0 #belsõ halozatot lefedõ teljes cimtartomany
IFACE_INT=eth0 #belsõ csatolo
IFACE_EXT=eth1 #kulsõ csatolo
IP_GW=192.168.1.1
PORT_SSH_EXT=10000 #SSH external port
MORE_F_TCP_PORTS="544 1755 2628 6881 81"
MORE_F_UDP_PORTS="544 1755"
#544-RealMedia 1755-WindowsMedia 2628-JDictionary 6880-BitTorrent
#IP_INT=192.168.100.1 #belsõ IP cim
IP_INT="`ifconfig $IFACE_INT | grep inet\ addr | cut -f2 -d: | cut -f1 -d\ `"
IP_EXT="`ifconfig $IFACE_EXT | grep inet\ addr | cut -f2 -d: | cut -f1 -d\ `" #külső IP cím
#regi szabalyok tõrlese
iptables -F
iptables --delete-chain
iptables -t nat -F
iptables -t nat --delete-chain
iptables -Z
#alapertelemzetten mindent eldob
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#visszahurkolo engedélyezése
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#tovabbi lancok letrehozasa:
iptables -N security
iptables -N dosattack
iptables -N sinput
iptables -N portscan
#gw elerhetõsege
iptables -A INPUT -s $IP_GW -j ACCEPT
iptables -A OUTPUT -d $IP_GW -j ACCEPT
#Portscan & PoD loggolas
iptables -A security -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix "FW: Xmas-tree scan (?) "
iptables -A security -p tcp --tcp-flags ALL NONE -m state --state ! ESTABLISHED -j LOG --log-prefix "FW: Null scan (?) "
iptables -A security -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A security -p icmp --icmp-type echo-request -j LOG --log-prefix "FW: PingofDeath attack (?) "
iptables -A security -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -j security
iptables -A FORWARD -j security
#DoS tamadasok & portscanek szurese, loggolasa
iptables -A dosattack -p tcp --syn -m limit --limit 8/s -j sinput
iptables -A dosattack -p tcp --syn -j LOG --log-prefix "FW: Syn-Flood attack (?) "
iptables -A dosattack -p tcp --syn -j DROP
iptables -A dosattack -j sinput
#bejovo szabalyok
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED #jovahagyott kapcsolatok elfogadasa
iptables -A INPUT -j dosattack
iptables -A sinput -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "FW: hidded portscan ? "
iptables -A sinput -p tcp ! --syn -m state --state NEW -j DROP
iptables -A sinput -i $IFACE_INT -p tcp -s $NET_INT -m multiport --dport 20,21,25,53,80,3128 -m state --state NEW -j ACCEPT
iptables -A sinput -i $IFACE_INT -p udp -s $NET_INT -m multiport --dport 20,21,25,53,80,3128 -m state --state NEW -j ACCEPT
iptables -A sinput -p tcp --dport 443 -j ACCEPT
iptables -A sinput -p icmp -j ACCEPT
#iptables -A sinput -j LOG --log-prefix "FW: Rejected default (in) "
iptables -A sinput -j REJECT
#kimenõ szabalyok
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dport 20,21,25,53,80,110,443 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dport 20,21,25,53,80,110,443 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -d $NET_INT --sport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d $NET_INT --sport 25 -j ACCEPT
iptables -A OUTPUT -j LOG --log-prefix "FW: Rejected default (out) "
iptables -A OUTPUT -j REJECT
#tovabbitt szabalyok
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 16/s -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A FORWARD -i $IFACE_INT -p tcp -m multiport --dport 20,21,53,80,110,123,443 -m state --state NEW,RELATED -j ACCEPT
iptables -A FORWARD -i $IFACE_INT -p udp -m multiport --dport 20,21,53,80,110,123,44
#Tovabbitasra a MORE_F_TCP_PORTS tombben tarolt portok kinyitasa
if test -n "$MORE_F_TCP_PORTS"
then
for i in $MORE_F_TCP_PORTS
do iptables -A FORWARD -i $IFACE_INT -p tcp --dport $i -m state --state NEW,RELATED -j ACCEPT
done
fi
if test -n "$MORE_F_UDP_PORTS"
then
for i in $MORE_F_UDP_PORTS
do iptables -A FORWARD -i $IFACE_INT -p udp --dport $i -m state --state NEW,RELATED -j ACCEPT
done
fi
#iptables -A FORWARD -j LOG --log-prefix "FW: Rejected default (fwd) "
iptables -A FORWARD -j REJECT
#NAT
iptables -t nat -A POSTROUTING -o $IFACE_EXT -j MASQUERADE
#transzparens proxy engedalyezase
iptables -t nat -A PREROUTING -i $IFACE_INT -s $NET_INT -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp --dport $PORT_SSH_EXT --syn -m limit --limit 60/hour -j LOG --log-prefix "FW: Permitted SSH connect "
iptables -t nat -A PREROUTING -p tcp --dport $PORT_SSH_EXT --syn -m limit --limit 60/hour -j DNAT --to $IP_INT:10000
iptables -t nat -A PREROUTING -p tcp --dport $PORT_SSH_EXT --syn -j LOG --log-prefix "FW: Unpermitted SSH Connect "
iptables -t nat -A PREROUTING -p tcp --dport $PORT_SSH_EXT --syn -j DROP
iptables -t nat -A PREROUTING -p tcp --dport $PORT_SSH_EXT -j DNAT --to $IP_INT:10000
echo 'Done'
- A hozzászóláshoz be kell jelentkezni
Én a "echo "1" > /proc/sys/net/ipv4/ip_forward" -t a végére tennén, a biztonság kedvéért.
Milyen netre csatlakozik a $IFACE_EXT ?
- A hozzászóláshoz be kell jelentkezni
egy cisco routerre, ami egy adsl-re,
Linux közvetlenül látszik az interneten...
Script valahol hibás, mert igy a belső hálón (külsőn meg se mertem nézni:) nem látszik az apache (80) és az ftp -se (21).
- A hozzászóláshoz be kell jelentkezni
megvan a hiba..
input lánc másnkét viselkedik ha az eth0 és az eth1 cime megegyezik..
- A hozzászóláshoz be kell jelentkezni
nem maradt ki véletlenül (vagy csak én nem látom...) a köv sor?:
iptables -A INPUT -j sinput
szabályokat alkotsz a sinput láncon, de nem látok hivatkozást rá.
- A hozzászóláshoz be kell jelentkezni
Emberek!
Próbaképpen beküldtem a debianos tuzfalamra ezt a konfigot saját hálóra igazitva. az eredmény: megállt minden.
Tuti, hogy menni fog?
Konfigom:
Linksys router IP:192.168.1.1 (net felé ADSL kapcsolat)
Firewall IP:
router felé: 192.168.1.10
belso hálo: 192.168.0.254
Mivel esetemben a router némi tűzfalat biztosít, csak egy egyszerübb konfigot irtam:
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -X
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 20 -m state --state ! INVALID -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 21 -m state --state ! INVALID -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state ! INVALID -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state ! INVALID -j ACCEPT
#iptables -A INPUT -j LOG --log-level warning
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -i eth0 -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state ! INVALID -j ACCEPT
iptables -A OUTPUT -j ACCEPT
(Erre is ránéztek?)
Husi
- A hozzászóláshoz be kell jelentkezni
Csak érdeklődésképpen:
- szerintem praktikus lenne a belső háló felől kimenő kapcsolatot maszkolni;
- hivatkozol az eth0-ra, az éppen melyik? a router vagy a belső háló felé csatoló kártya?
- nem látom a default policy-t (nem lehet, hogy a két kártyát keverted és az alapértelmezett szabály emiatt eldob mindent?)
Azt is írd meg légyszi, hogy az "az eredmény: megállt minden." gondolatod mit jelent pontosan? A szerverre nem tudtál a netről csatlakozni? A belső háló felől nem láttad? Ha a szerveredre belépsz, maga a szerver nem lát, nem hall?
- A hozzászóláshoz be kell jelentkezni
eth0 a net felé esik, az eth1 a belső háló felé néz. (bocsesz, ezt elfelejtettem leírni)
"az eredmény: megállt minden." alatt azt értettem, hogy nem volt látható a net a belső hálóról.
default policy accept, ugyanis ha a policy-t a köv képpen állítom be akkor szintén megáll a net bentről kifele, és kintről is.
iptables -P INPUT DROP
iptables -P FORWARD DROP
A szerveren sincs ilyen esetben net. (lynx nem hoz be oldalt, pingre a netfelől nem jön válasz).
- A hozzászóláshoz be kell jelentkezni
Akkor a következők megoldást nyújthatnának:
- a POSTROUTING-ot cseréld PREROUTING-ra;
- csináld meg a szabályokat az eth1-re is az INPUT láncon illetve a FORWARD-on is, az eth0->eth1 és eth1->eth0 irányokba is;
- engedd az INPUT láncon az eth0-on befelé azokat a forgalmatkat is, amelyeket te indítottál (tehát aminek 1024 feletti a célportja és nem NEW vagy INVALID állapotúak);
- ezután állítsd be a default policy-ket DROP-ra (vagy REJECT-re, amelyik neked szimpatikusabb).
Ha ezután sem megy, írj újra, de másold be a módosított verziót is.
Ja és praktikussági okokból nyiss neki egy másik fórumthread-et (később könnyebb rátalálni).
- A hozzászóláshoz be kell jelentkezni
Szerintem a portscan és egyéb szűrés felesleges, mivel azt már a cisco megszűri, gondolom, hogy ott csak azok a portok vannak nyitva amiket használsz. a DOS és egyéb ellen meg van védelme.
A ssh-s prerouting rész egy kicsit zavaros. miért kell meg csinálni?
Ez olyan mint egy hurok. Mire jó? lehet ,hogyén nem értem, de szerintem egy kicsit felesleges.
- A hozzászóláshoz be kell jelentkezni
nem, mert lehet hogy néha az iptables szabály segitségével átpakolom másik portra... az ssh-t
- A hozzászóláshoz be kell jelentkezni
átfaragtam a konfigom az itt említett alapján, de csaknem akar rendesen menni. A levelezés a klienseknél nem működik ( külső mail szervert nem érnek el), és egyes, főleg külföldi oldalak amik eddig bejöttek nem jönnek be. pölö microsoft.com, scan.sygate.com de az origo, meg az index simán jön....
Mit böktem el?
eth0 belső háló eth1 ppp0 külső háló, a gép közvetlenül csatlakozik a nethez. Ping terén a linuxos gép is ugyanúgy viselkedik, mint a kliensek. ping origo.hu jön válasz, ping microsoft.com névfeloldás ok, válasz nincs. (route tábla rendben.)
IP: 192.168.0.1 a belső háló felé
futó szervizek: ssh, apache, mysql, ftp néha
#!/bin/sh
echo "Starting firewall"
external_ip="`ifconfig ppp0 |grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"
echo " External IP: $external_ip"
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -Z
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
#iptables -t nat -A PREROUTING -i ppp0 -s eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -A INPUT -i ppp0 -p icmp --icmp-type echo-request -m limit --limit 16/s -j ACCEPT
iptables -A INPUT -p tcp --syn -m limit --limit 8/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
iptables -A INPUT -m state --state ! INVALID -j ACCEPT
#iptables -A INPUT -j LOG --log-level warning
for i in 21 22 25 53 80 110 123 139 443 1863
do
iptables -A INPUT -i ppp0 -p tcp --dport $i -m state --state ! INVALID -j ACCEPT
done
for i in 21 22 25 53 80 110 123 443 1863
do
iptables -A INPUT -i ppp0 -p udp --dport $i -m state --state ! INVALID -j ACCEPT
done
for i in 21 22 25 53 80 110 123 139 443 1863
do
iptables -A INPUT -i eth0 -p tcp --dport $i -m state --state ! INVALID -j ACCEPT
done
for i in 21 22 25 53 80 110 123 443 1863
do
iptables -A INPUT -i eth0 -p udp --dport $i -m state --state ! INVALID -j ACCEPT
done
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -i ppp0 -m state --state ! INVALID -j ACCEPT
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 16/s -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A OUTPUT -j ACCEPT
echo 'Done'
1863-as port elvileg a messengernek kell m$ oldal alapján...
- A hozzászóláshoz be kell jelentkezni
FORWARD láncba ha nem engedélyezed a 110 (143) portot, akkor nem is fog menni a levelezés...
- A hozzászóláshoz be kell jelentkezni
Én azt szoktam csinálni - nem tudom mennyire rossz dolog - hogy default policy ACCEPT, és a lánc végén van két rule, az egyik a LOG-ba irányítja a nem engedett forgalmat, utána pedig DROP. Persze éles rendszernél a LOG-os sort kiveszem, de így el tudom küldeni a DROP-olandó csomikat debug céljából a syslogba. Ez mondjuk azért jó, mert soxor futottam már rá, hogy ennek-annak kellett ez-meg-az és valahol le kell fülelni a hiányzó portot. Szerintem ha a default policy a DROP akkor nem lehet LOG-olni...
Javítsatok ki kérlek ha tévednék.
- A hozzászóláshoz be kell jelentkezni
Tevedsz; DROP policyvel is lehet logolni.
A szabalylistat kulonbozo utilitk kulonbozokeppen toltik be;
van amelyik egyszerre, hiba eseten kiszall, van amelyik egyenkent a hibas sorokat pedig kihagyja.
DROP policyvel konnyebben zarod ki magad, de masokat is -
ACCEPT policyvel viszont konnyebben hagyod nyitva a rendszert ;-P
- A hozzászóláshoz be kell jelentkezni
Igen de DROP policy-nél milyen sort tennél a végére, hogy amit amúgy eldobna az szaladjon bele a LOG-ba előbb? Az egy dolog, hogy DROP policy alatt is küldhetek dolgokat a LOG-ba, de nekem pont azokat a csomikat kell oda küldeni, ami közvetlen utána eldobódik (mert hiszen akkor ez az utolsó rule). Nekem ez a fő gondom.
- A hozzászóláshoz be kell jelentkezni
iptables -A INPUT -j LOG --log-prefix "DROP: "
utana pedig eldobja a policy
- A hozzászóláshoz be kell jelentkezni
Nahát, a legtriviálisabb megoldás nem jut az ember eszébe soha... :pirul:
- A hozzászóláshoz be kell jelentkezni
Miért kellene engedélyeznie? A NAT megoldja a dolgot nem?
- A hozzászóláshoz be kell jelentkezni
a NAT csak az ip címet/portot változatja. Attól még átmegy a forward láncon.
Lásd itt:
http://iptables-tutorial.frozentux.net/
Én meg elteszem magam holnapra, mivel a tűzijátokon eláztam :(
- A hozzászóláshoz be kell jelentkezni
:részvét:
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Nem nyitok külön topicot, gondolom passzol a témához.
Problémám: Amint DROP-ra állitom az OUTPUT láncot, hiába engedem ki az ntpdate-t, nem akar szinkronizálni. netstat -alpn-el megnéztem, azt a portot is beirtam de nem megy. Kernelben van ipv6 támogatás, de ipv4-es szerverrel is ugyanez a gond. Milyen ötletek van? Ill. ha kicsit debugolnátok, hogy jó lesz-e igy, külön megköszönném:)
Ime a tűzfal script:
#!/bin/bash
iptables -F
iptables -F -t mangle
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#####################
## INPUT szabályok ##
#####################
#engedelyezzuk befele, ami tolunk szarmazik
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#-------------------------------------------------------------
#DoS elleni védelem
------------------------
#portscan elleni vedelem
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#ping-flood elleni vedelem
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#tiltas MS portoknak
iptables -A INPUT -i eth0 -p TCP --dport 135 -j DROP
iptables -A INPUT -i eth0 -p TCP --dport 139 -j DROP
iptables -A INPUT -i eth0 -p TCP --sport 135 -j DROP
iptables -A INPUT -i eth0 -p TCP --sport 139 -j DROP
#--------------------------------------------------------------
#Loopback
iptables -A INPUT -i lo -j ACCEPT
#DNS
#iptables -A INPUT -i eth0 -p UDP --sport 53 -j ACCEPT
#iptables -A INPUT -i eth0 -p TCP --sport 53 -j ACCEPT
#NS SERVERRE becsatlakozas(ha nameserverkent akarjak hasznalni a serverunket:))
iptables -A INPUT -i eth0 -p UDP --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p TCP --dport 53 -j ACCEPT
#SSH SERVERRE becsatlakozas
iptables -A INPUT -i eth0 -p TCP --dport 22 -s 10.2.25.2 -j ACCEPT
#FTP SERVERRE becsatlakozas
iptables -A INPUT -i eth0 -p TCP --dport 21 -j ACCEPT
#POP3 SERVERRE becsatlakozas
iptables -A INPUT -i eth0 -p TCP --dport 110 -j ACCEPT
#SMTP SERVERRE becsatlakozas
iptables -A INPUT -i eth0 -p TCP --dport 25 -j ACCEPT
#IMAP SERVERRE becsatlakozas
iptables -A INPUT -i eth0 -p TCP --dport 143 -j ACCEPT
#HTTP SERVERRE becsatlakozas
iptables -A INPUT -i eth0 -p TCP --dport 80 -j ACCEPT
#HTTPS SERVERRE becsatlakozas
iptables -A INPUT -i eth0 -p TCP --dport 443 -j ACCEPT
#ICMP(ping) befele
iptables -A INPUT -i eth0 -p ICMP -j ACCEPT
iptables -A INPUT -i eth0 -p ICMP --icmp-type ! echo-request -j ACCEPT
#maradek eldobasa
iptables -A INPUT -i eth0 -j DROP
######################
## OUTPUT szabályok ##
######################
## jóváhagyott kapcsolatok engedélyezése
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#iptables -A OUTPUT -o eth0 -j ACCEPT
#DNS kifele(localrol inditva)
iptables -A OUTPUT -o eth0 -p TCP --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -o eth0 -p UDP --dport 53 -m state --state NEW -j ACCEPT
#ICMP(ping) kifele
iptables -A OUTPUT -o eth0 -p ICMP -j ACCEPT --icmp-type echo-request
#Kulso serverek elerese#
#======================#
#Kulso SSH-ra KI
iptables -A OUTPUT -o eth0 -p TCP --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
#Kulso FTP-re KI
iptables -A OUTPUT -o eth0 -p TCP --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
#Kulso HTTP-re KI
iptables -A OUTPUT -o eth0 -p TCP --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
#Kulso HTTPS-re KI
iptables -A OUTPUT -o eth0 -p TCP --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
#NTP date
iptables -A OUTPUT -d 148.6.0.1 -o eth0 -p tcp --dport 37 -m state --state NEW,ESTABLISHED -j ACCEPT
- A hozzászóláshoz be kell jelentkezni
ntpdate a 123-as portot használja, nem a 37-et (utolsó sor; legalábbis a /etc/services szerint).
- A hozzászóláshoz be kell jelentkezni
igen, úgy is próbáltam, de nem megy.
Erről az oldalról vettem a 37-es portot, de hiába.
http://config.hu/content.php?article.38
Tuti az OUTPUT-nál van gond, de ha arra állitom, h --dport 123 v. 37, IP-re le sem korlátozom, akkor sem jó.
Nem vagyok nagy iptables guru,de azt hiszem, hogy ez azért igy igazán mehetne..vagy elnéztem vmit?
- A hozzászóláshoz be kell jelentkezni
UDP-n is és TCP-n is engedélyezd a 123-as portot (célportot), akkor talán megy.
- A hozzászóláshoz be kell jelentkezni
Ez bizony bejött! Sosem gondoltam volna udpre, köszönöm szépen a segitséget!:)
- A hozzászóláshoz be kell jelentkezni
kiegészitésként annyit, hogy úgy néz ki elég neki az udp
- A hozzászóláshoz be kell jelentkezni
Üdv!
"Gyorsba" össze kellett dobnom egy tűzfalat iptables-el!Előtte még nem igen volt dolgom ezzel, viszont kiindulásnak nagyon jó volt (sőt), amit itt találtam az abszolut használható és a nagyját képezi a tűzfalamnak.Mégis vannak vele gondok és nem igazán értek 1-2 dolgot!Szeretném,ha valaki lemeózná a szabályokat és segítségemre lenne!
Egy DNS szerverként funkcionáló gép tűzfala lenne!
Script: (Ahol vmit nem értek oda teszek egy "?"-et!)
-------
#!/bin/bash
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -F
iptables -X /?
iptables -N in_attack
iptables -N drop_icmp
#----------------------------------------------------------------------------------#
# INPUT lánc szabályai: #
#----------------------------------------------------------------------------------#
#lo interface mehet
iptables -A INPUT -i lo -j ACCEPT
#Meglévő és kapcsolódó folyamatokat engedélyezi
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#ping
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j drop_icmp
iptables -A INPUT -p icmp --icmp-type echo-request -m state --state NEW -j drop_icmp
iptables -A INPUT -d 255.255.255.0 -j DROP /?
iptables -A INPUT -d 224.0.0.0/8 -j DROP /?
#Gyanus csomagok eldobása
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j in_attack /?
iptables -A INPUT -i eth0 -s 172.16.0.0/16 -j in_attack /?
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j in_attack /?
#SSH engedése a megadott tartományról + loggolás
iptables -A INPUT -s x.x.x.x/24 -p tcp --dport 22 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "Bejövő SSH kapcsolat: "
iptables -A INPUT -s x.x.x.x/24 -p tcp --dport 22 -m limit --limit 1/hour --limit-burst 1 -j ACCEPT
iptables -A INPUT -s x.x.x.x/24 -p tcp --dport 22 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "3 Sikertelen próbálkozás: "
#dns
iptables -A INPUT -p udp --dport 53 -m state --state NEW,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW,RELATED -j ACCEPT
#Minden más bejövő eldobása és loggolása:
iptables -A INPUT -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "Tíltott bejövő kapcsolat: "
iptables -A INPUT -j DROP
#----------------------------------------------------------------------------------#
# OUTPUT lánc szabályai: #
#----------------------------------------------------------------------------------#
#lo interface mehet
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 255.255.255.0 -j DROP /?
iptables -A OUTPUT -d 224.0.0.0/8 -j DROP /?
#Meglévő, új és a kapcsolódó folyamatokat engedélyezi
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#ftp
iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport 21 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport 20 -m state --state NEW,RELATED -j ACCEPT
#dns
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW,RELATED -j ACCEPT
#http
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport 80 -m state --state NEW,RELATED -j ACCEPT
#smtp
iptables -A OUTPUT -p udp --dport 25 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -m state --state NEW,RELATED -j ACCEPT
#Minden más loggolva lesz
iptables -A OUTPUT -m limit --limit 3/min -j LOG --log-prefix "Eldobott kimenő kapcsolat: "
iptables -A OUTPUT -j DROP
#accept icmp
iptables -A drop_icmp -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "Kitíltott ping: " /?
iptables -A drop_icmp -j DROP
#----------------------------------------------------------------------------------#
# Betörések elleni védekezés: #
#----------------------------------------------------------------------------------#
#Syn-flood elleni védelem
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
#Portscan elleni védelem
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#Ping-flood elleni védelem
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Tehát ez egy DNS szerver tűzfala lesz.
-Csak a saját tartományból akarom engedni az ssh-t!
-Dns szerver 53-as port mehet.
-Ftp mivel akarom,h frissíteni a csomagokat
-Jelenleg be van kapcsolva a http is,de az nem kell
-Smtp 25-ös port,h a szerver tudjon levelet küldeni!
A Forward részt nem teljesen világos számomra!
Így lefuttatom a scriptet, hiba nélkül megy is és "működik", viszont állandóan tiltott bejövő kapcsolatot jelez a saját tartományunkból. Gondolom túl erős a log vagy?Ezt hol tudnám állítani?
Még egy olyan kellene nekem,h ne a klog-ba mentsen,hanem egy általam kinevezett fájlba és a logokat bizonyos időközönként küldje el nekem!
Előre is köszönöm
Üdv Corvin
- A hozzászóláshoz be kell jelentkezni
iptables -X: összes nem beépített (pl. nem INPUT, stb) lánc törlése, amennyiben az üres (nincs benne szabály). Ez az iptables -F segítségével garantálható, utána törölhetőek a láncok. Egy a fontos: az iptables -F előtt állítsd a default policy-t ACCEPT-re mindenhol (pl. iptables -P INPUT ACCEPT), különben kizárod magad.
ptables -A INPUT -d 255.255.255.0 -j DROP /?
iptables -A INPUT -d 224.0.0.0/8 -j DROP /?
no, ezek nekem sem világosak. A broadcast cím (vagy a hálózat címe) sem ez, szóval szvsz mindkettő felesleges.
A "gyanús csomagok eldobása" - gondolom neten érvényes címe van az eth0 interface-nek. Ekkor viszont a csak NAT mellett működő (interneten nem érvényes) címtartományok nyugodtan letilthatóak. Ezek pont azok.
Ami a logot illeti: gondolom van a hálózaban windows, az meg ész nélkül próbál a 139, 445, stb. portokhoz kapcsolódni, ezért a LOG targetre mindig jutni fog pár csomag.
A drop_icmp lánc a tipikus hozzáállást valósítja meg: LOG&DROP, és nem akarsz minden csomagot logolni. Biztos, hogy azt a szabályt nem értetted?
Nem klog => nem LOG, hanem ULOG target + ulogd daemon kell neked. Beállításait nem ismerem, mindenesetre tud adatbázisba is menteni.
- A hozzászóláshoz be kell jelentkezni
FORWARD rule-ok nem kellenek , ha nincs a gépen átmenő forgalom (nem gateway/router).
a 224.0.0.0/8 a multicasthoz tartozik, a 255.255.255.0-t nem értem én sem.
A többit Panther elmondta.
- A hozzászóláshoz be kell jelentkezni
1.
iptables -A OUTPUT -d 255.255.255.0 -j DROP /?
iptables -A OUTPUT -d 224.0.0.0/8 -j DROP /?
- szerintem is feleslegesek.
2.
Gyanús csomagok eldobása
Ehhez fel kéne töltened a hivatkozott "in_attack" láncot valamilyen LOG&DROP-pal a végén.
Így simán átfut rajta minden.
3.
SSH engedélyezéses rész.
Itt van szerintem egy eb elhantolva.
Ez így percenként 3 próbálkozást logol. Óránként egyet beenged.
Aztán meg az első után 3-t a második logoló soron logol. De, hogy ez miért jó azt nem tudom.
Mindenesetre, mivel egy órán belül többször be akarsz menni ezért az első utáni próbálkozások DROP-pal végződnek, mert ezen a három szabálysoron át fognak menni.
Szerintem egyébként sem szerencsés ezt a limitesdit belekavarni az az elfogadásos szabályokba,
mert csak kuszálódáshoz vezet.
4. jó lenne tudni, hogy milyen hálóinterfészeid vannak és azok milyen subnetre néznek.
Ez a script valszeg valamilyen valódi IP-n lógó masináról származhat, gondolom ezért vannak benne a lokális subnetként működő IP tartományok tiltva. (gyanus csomagok eldobása rész pl.)
5.
az OUTPUT láncban szintén broadcast tiltást jelent az a két szabály. Tök felesleges szerintem.
6.
#accept icmp
iptables -A drop_icmp -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "Kitíltott ping: " /?
iptables -A drop_icmp -j DROP
Ez egy érdekes felállás. A commentben accept ICMP van egyébként meg drop_icmp láncba pakol icmp tiltó szabályokat. Ami ide jön abból percenként 3 logolódik, majd eldobásra kerül.
---------------------
Kicsit többet kéne tudni arról, hogy hány NIC van a masinán, melyik milyen hálókra néz és merről merre mit szeretnél engedni és mit eldobni.
A FORWARD láncba rakott cuccoknak akkor van értelme általában, ha a masina route-ol is hálózatok közt és az ip_forward engedélyezett. Ilyenkor érdekes lehet, hogy miket engedsz át egyik hálózatból a másikba. De itt jelenleg nem nagyon értem ezt, ha csak egy NIC-ed van, mire jó, hogy a FORWARD-on bármit hegesszen az ember.
A logolási dolgokat a syslogd manpage-éből ki lehet deríteni.
Meg lehet adni, hogy milyen szolgáltatás milyen szintű logolási üzenete milyen logfájlba menjen.
Az IPTABLES log szabályánál meg ezt (a szintet) kézileg is lehet állítani az alapértelmezéshez képest. Akár direkt másik szerverre is logolhatsz, ha akarsz.
Ja és a Microsoftos protokollok szeretik teletrombitálni a hálózatot jó kis broadcast üzenetekkel, ezért ilyen packeteket nem kéne logolgatni (hacsak nem pont ez a cél), hanem eldobni, mert pillanatok alatt kilós logfájljaid lesznek. Én a 135-139,445 porttal foglalkozó dolgokat el szoktam hajigálni.
Üdv,
t
- A hozzászóláshoz be kell jelentkezni
Azt lefelejtettem, hogy érdemes az iptables-export-tal kinyomni az éles szabálylistát egy állományba és azon végig elemezni, hogy mit is csinál.
Szoktak néha meglepő dolgok lenni, mivel esetenként bizonyos (pl pppoe) interfészek szeretnek iptables szabályokat pakolászni anélkül, hogy tudnál róla. Esetleg ez is bezavarhat, hogy ha nem egészen úgy működik a dolog ahogy szeretnéd.
Egyszer már elküldtem itt valakinek egy eléggé jól paraméterezhető tűzfal script hegyemet valakinek, aki azóta se szólt vissza, hogy akkor bikmakk tudta-e használni vagy sem. Ha az segít, elküldhetem neked is. (Bár az RedHat, Fedora linuxokon megy, de könnyen adaptálható szerintem.)
Üdv,
t
- A hozzászóláshoz be kell jelentkezni
Üdv talisker!
Szívesen venném!Előre is köszönöm!
- A hozzászóláshoz be kell jelentkezni
Mondj egy emilcímet és küldöm.
Üdv,
t
- A hozzászóláshoz be kell jelentkezni
Köszönöm a nagy aktivitást...
Most otthon vagyok nem melóba így nem tudom átalakítani a tűzfalat!
Holnap az első dolgaim között lesz, hogy nekiesek, mivel a zónafájlok megvannak így maradt még a tűzfal, szoftveres raid meg a szerver vétele és kernelfordítás...
- A hozzászóláshoz be kell jelentkezni
Üdv!
Így nézne ki a módosított tűzfalkonfigom:
#!/bin/bash
#----------------------------------------------------------------------------------#
# A láncok alaphelyzetbe állítása #
#----------------------------------------------------------------------------------#
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -F
iptables -X
iptables -N in_attack
iptables -N drop_icmp
#----------------------------------------------------------------------------------#
# INPUT lánc szabályai: #
#----------------------------------------------------------------------------------#
#lo interface mehet
iptables -A INPUT -i lo -j ACCEPT
#Meglévő és kapcsolódó folyamatokat engedélyezi
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#ping
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j drop_icmp
iptables -A INPUT -p icmp --icmp-type echo-request -m state --state NEW -j drop_icmp
#Gyanus csomagok eldobása
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j in_attack
iptables -A INPUT -i eth0 -s 172.16.0.0/16 -j in_attack
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j in_attack
#SSH engedése a megadott tartományról + loggolás
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "Bejövő SSH kapcsolat: "
iptables -A INPUT -s x.x.x.x/24 -p tcp --dport 22 -j ACCEPT
#dns
iptables -A INPUT -p udp --dport 53 -m state --state NEW,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW,RELATED -j ACCEPT
#Winfos ellen:
iptables -A INPUT -p tcp -m multiport --dport 135,136,137,138,139,445 -j REJECT
iptables -A INPUT -p udp -m multiport --dport 135,136,137,138,139,445 -j REJECT
#Minden más bejövő eldobása és loggolása:
iptables -A INPUT -j LOG --log-prefix "Tíltott bejövő kapcsolat: "
iptables -A INPUT -j DROP
#----------------------------------------------------------------------------------#
# OUTPUT lánc szabályai: #
#----------------------------------------------------------------------------------#
#lo interface mehet
iptables -A OUTPUT -o lo -j ACCEPT
#Meglévő, új és a kapcsolódó folyamatokat engedélyezi
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#ftp
iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport 21 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport 20 -m state --state NEW,RELATED -j ACCEPT
#dns
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW,RELATED -j ACCEPT
#http
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport 80 -m state --state NEW,RELATED -j ACCEPT
#smtp
iptables -A OUTPUT -p udp --dport 25 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -m state --state NEW,RELATED -j ACCEPT
#Minden más loggolva lesz
iptables -A OUTPUT -j LOG --log-prefix "Eldobott kimenő kapcsolat: "
iptables -A OUTPUT -j DROP
#droped icmp
iptables -A drop_icmp -j LOG --log-prefix "Kitíltott ping: "
iptables -A drop_icmp -j DROP
-------------------------------------------------------------------------------------------------------
Beletettem a windows-os portokat, amikhez próbál kapcsolódni:
#iptables -A INPUT -p tcp -m multiport --dport 135,136,137,138,139,445 -j REJECT
#iptables -A INPUT -p udp -m multiport --dport 135,136,137,138,139,445 -j REJECT
Sztem vmi gond van még vele,mivel még mindig kapom a Tíltott bejövő kapcsolatos logokat a képernyőre a tartományunkból!!!
A DNS szerver 6-7 saját domain-t fog kezelni és természetesen saját ügyfeleink részére cachelni is fog!
Nagyjából teljes lenne így (szvsz), még a loggolással fogok szenvedni,h külön fájlba szedje a dolgokat!
Mit szóltok hozzá?
- A hozzászóláshoz be kell jelentkezni
1.
#ping
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j drop_icmp
iptables -A INPUT -p icmp --icmp-type echo-request -m state --state NEW -j drop_icmp
Ha csak az eth0 NIC-ed van, akkor nem értem hogy a drop_icmp-re ugrásnak mi értelme van.
Ugyanis az eth0-ra érkező pinget beengeded, ami meg nem onnan jön és ... azokat meg dropolod.
2.
#Gyanus csomagok eldobása
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j in_attack
iptables -A INPUT -i eth0 -s 172.16.0.0/16 -j in_attack
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j in_attack
Ahogy látom in_attack láncod továbbra sincsen, itt mégis hivatkozol rá.
Ha lenne és lenne benne DROP a végén akkor működne úgy, hogy a lokál subnetekből
az eth0-án bejövő packeteket hajigálná el.
3. FTP-vel nem tudom, hogy hogyan éred el a szervert, mert az az INPUT láncon nem tud bejönni.
Szerintem érdemes először cím alapján szelektálni, hogy egyáltalán honnan fogadsz el valamit, aztán meg protokoll alapján továbbszűrni, hogy mit.
Minden más LOG&DROP.
Üdv,
t
- A hozzászóláshoz be kell jelentkezni
Korrekció ...
Az aktuális szabályokat nem az iptables-export, hanem iptables-save paranccsal lehet kiíratni.
:)
- A hozzászóláshoz be kell jelentkezni
Üdv!
talisker: dj_crow@freemail.hu | Előre is köszönöm!
Kivettem az általad javasoltakat!Ftp-vel nem is akarom elérni a szervert,csak le akarom szedni a frissítéseket crontab segítségével a gépre!Ezért hagyom ezt kimenni, bejönni viszont nem kell,mert ftp nem fut a gépen!
smpt szintén csak azért van a kimenőbe,mert a logokat akarom hogy küldje nekem a gép!
A Winfosos portpásztázást kitíltottam:
#iptables -A INPUT -p tcp -m multiport --dport 135,136,137,138,139,445 -j REJECT
#iptables -A INPUT -p udp -m multiport --dport 135,136,137,138,139,445 -j REJECT
De még így is a tűzfal indulása után elkezdi a tartományból "Tíltott bejövő kapcsolat néven a loggolást..." - Lehet, hogy a végével van a probléma, hogy mindent logolok és utánna dobok el mindent???
Most engedem az icmp-t,erre érdemes lenne vmi megszorítást tenni?Pl, ha vki túl nagy csomaggal bombázza a szervert stb stb...
Vmilyen szabályt érdemes lenne még belefűzni?
Előre is köszönöm!
-------------------------------------------------------------------------------------------------------
Itt vannak a változtatások:
#!/bin/bash
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -F
iptables -X
#----------------------------------------------------------------------------------#
# INPUT lánc szabályai: #
#----------------------------------------------------------------------------------#
#lo interface mehet
iptables -A INPUT -i lo -j ACCEPT
#Meglévő és kapcsolódó folyamatokat engedélyezi
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#ping
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
#Gyanus csomagok eldobása
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i eth0 -s 172.16.0.0/16 -j DROP
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
#SSH engedése a megadott tartományról + loggolás
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "Bejövő SSH kapcsolat: "
iptables -A INPUT -s x.x.x.x/24 -p tcp --dport 22 -j ACCEPT
#dns
iptables -A INPUT -p udp --dport 53 -m state --state NEW,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW,RELATED -j ACCEPT
#Winfos ellen:
iptables -A INPUT -p tcp -m multiport --dport 135,136,137,138,139,445 -j REJECT
iptables -A INPUT -p udp -m multiport --dport 135,136,137,138,139,445 -j REJECT
#Minden más bejövő eldobása és loggolása:
iptables -A INPUT -j LOG --log-prefix "Tíltott bejövő kapcsolat: "
iptables -A INPUT -j DROP
#----------------------------------------------------------------------------------#
# OUTPUT lánc szabályai: #
#----------------------------------------------------------------------------------#
#lo interface mehet
iptables -A OUTPUT -o lo -j ACCEPT
#Meglévő, új és a kapcsolódó folyamatokat engedélyezi
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#ftp
iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport 21 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport 20 -m state --state NEW,RELATED -j ACCEPT
#dns
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW,RELATED -j ACCEPT
#http
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport 80 -m state --state NEW,RELATED -j ACCEPT
#smtp
iptables -A OUTPUT -p udp --dport 25 -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -m state --state NEW,RELATED -j ACCEPT
#Minden más loggolva lesz
iptables -A OUTPUT -j LOG --log-prefix "Eldobott kimenő kapcsolat: "
iptables -A OUTPUT -j DROP
- A hozzászóláshoz be kell jelentkezni
Így minden ok lenne?
- A hozzászóláshoz be kell jelentkezni
Vki segítene?
talisker:
dj_crow@freemail.hu - Itt a mailem, légyszíves akkor küldjed át a szabályokat!Előre is köszönöm!
- A hozzászóláshoz be kell jelentkezni
Megkaptam talisker a konfigod...
Huhh mit ne mondjak csak pislogok!
Lehet,h most erre nem lesz időm,h élesbe betegyem, mert miliónyi dolog van még, amivel nem vagyok tisztába (sajnos)!!!
Az enyém, ami fent van egy pár hozzászólással feljebb, az nagyon fapad?
Amiket írtam hibákat azt még csinálja,de "elvileg" megyeget!
Jah, bocs ez kimaradt!
Köszönöm!
- A hozzászóláshoz be kell jelentkezni
Feleim,
mélek mentek.
Üdv,
t
- A hozzászóláshoz be kell jelentkezni
köszönöm a mailt, most értem haza munkából, nemsokára neki esek, elolvasgatom:)
- A hozzászóláshoz be kell jelentkezni
megkaphatom én is esetleg?
szabo.david@kaotika.hu
kösz.
- A hozzászóláshoz be kell jelentkezni
ööö, ejha.
ha én is szeretném megkapni esetleg, az már nagyon gáz lenne?:)
folyamatosan olvasom a topicot és más howto-kat is, de kicsit nehezen békülök ki az iptables lelkivilágával.
talán egy jól összerakott scriptból többet tudnék tanulni;)
előre is köszi: husumo@gmail.com
üdv
- A hozzászóláshoz be kell jelentkezni
Hello!
Egy szerverre szeretnék iptables scriptet írni. Azt szeretném, ha csak a megadott IP címről, az adott IP-hez rendelt MAC address-el, és csak megadott portokra lehetne csatlakozni.
Ilyesmire gondolok:
INPUT lánc policy DROP
-A INPUT --dport port1,port2,...,portn -s (IP) -m mac --mac (MAC) -j ACCEPT
Tehát hogy csak a szerver port1,port2,...,portn portjaira lehessen csatlakozni a megadott IP-jű, megadott MAC address-ű gépről.
Ez így jó? Vagy máshogy kell?
Petya
- A hozzászóláshoz be kell jelentkezni
Próbálkozom, ezt írtam:
*filter
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport ! port1 -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport ! port2 -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport ! port3 -j DROP
-A INPUT -i eth0 -s (IP1) -m mac --mac (MAC1) -j ACCEPT
-A INPUT -i eth0 -s (IP1) -m mac --mac (MAC2) -j ACCEPT
....
-A INPUT -i eth0 -s (IPn) -m mac --mac (MACn) -j ACCEPT
COMMIT
Szerintetek jó?
Petya
- A hozzászóláshoz be kell jelentkezni
inkabb rossz.
a szabalyokat sorban az 1. illeszkedesig ertelmezi,
-A INPUT -i eth0 -p tcp -m tcp --dport ! port1 -j DROP
el fog dobni minden nem port1 celu tcp csomagot - port2, port3 -t is
-A INPUT -i eth0 -p tcp -s 1.2.3.4 -m multiport --dports 80,81,1234 -m mac --mac 00:11:22:33:44:55 -j ACCEPT
icmp -bol a 0(ping) tipus elhagyhato, a 3,4,(5),11,12 sokkal fontosabb.
...
- A hozzászóláshoz be kell jelentkezni
Hello!
*filter
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 3,4,5,11,12 -j ACCEPT
-A INPUT -i eth0 -p tcp -s (IP1) -m multiport --dports port1,port2,port3 -m mac --mac-source (MAC1) -j ACCEPT
-A INPUT -i eth0 -p tcp -s (IP2) -m multiport --dports port1,port2,port3 -m mac --mac-source (MAC2) -j ACCEPT
....
-A INPUT -i eth0 -p tcp -s (IPn) -m multiport --dports port1,port2,port3 -m mac --mac-source (MACn) -j ACCEPT
COMMIT
Így jó?
Petya
- A hozzászóláshoz be kell jelentkezni
Az icmp nem jo egy sorban, a tcp jo. pl. dns (udp/53,tcp/53) nem kell?
http://hup.hu/node/30146
- A hozzászóláshoz be kell jelentkezni
Ugy látom akik ebben a fórumban írtak hozá értő emberek!!! és ha kérhetném valamelikötök aki tud nekem segíteni az iptables-ban léci jeletkezzetek nálam. peter.sinka@web.de
- A hozzászóláshoz be kell jelentkezni
Hali!
Szabadidőmben kísérletezgettem 1-2 dologgal, és akadt egy érdekes problémám.
Kipróbáltam, hogy működik e az ha percenként csak 3-szor engedek ssh kapcsolatot a gépmhez, így:
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/m -j LOG --log-prefix "SSH_ACCEPT: "
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/m -j ACCEPT
Működik szépen. A pingeléssel ez már nem olyan szépen működik:
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 3/m -m length --length 0:85 -j LOG --log-prefix "rovid_ping_ACCEPT: "
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 3/m -m length --length 0:85 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 3/m -m length --length 86:65535 -j LOG --log-prefix "hosszu_ping_DROP: "
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 3/m -m length --length 86:65535 -j DROP
Úgy működik, hogy ha megpingelem magam kívülről akkor az első 5 ping válasz megérkezik mintha misem történt volna, a 6. ping választól úgy jön ahol kell, 20 másodpercenként. Vajon miért "szökik" be az az 5 ping? Mindegy mit állítok a limithez (1/m) akkor is ugyan ez történik.
Tudja valaki miért?
- A hozzászóláshoz be kell jelentkezni
mi jelenik meg a logban? 5x ráfut az első accept-re? Amúgy az icmp echot teljesen felesleges engedni.
- A hozzászóláshoz be kell jelentkezni
A logot megnézem amint tudom.
Miért felesleges engedni az echo-request-et?
Szerk.: igen, ötször kapok "rovid_ping_ACCEPT" logot. Nem értem miért.
- A hozzászóláshoz be kell jelentkezni
miért jó, ha lehet pingelni egy gépet? Nálam _csak_ az a hálózati forgalom van beengedve, aminek feltétlenül mennie kell.
- A hozzászóláshoz be kell jelentkezni
Ez már másik kérdés, de szívesen folytatok egy barátságos vitát erről is, de az eredeti problémámra lenne tipped? Esetleg ki tudod próbálni? Nagyon kíváncsi vagyok miért csinál így.
Köszi!
- A hozzászóláshoz be kell jelentkezni
tedd hozzá a --limit-burst 3 opciót és menni fog. Legalább 5 csomagnak kell a szabályra esnie, hogy aktiválódjon (5 az alepértelmezett értéke a --limit-burst-nek)
- A hozzászóláshoz be kell jelentkezni
Köszi, utánaolvasok a --limit-burst-nek.
De ssh-val rendesen működik :S
- A hozzászóláshoz be kell jelentkezni
Pl egy is_alive ellenőrzésnél a legegyszerűbb metódus a ping.
- A hozzászóláshoz be kell jelentkezni
Hello!
A segítségeteket kérném:
Van egy router, a FORWARD-on csináltam egy saját láncot, itt szerepelnek azok az IP-t, akiknek a forgalmát korlátozni szeretném.
Ilyen szabályok vannak jelenleg:
-A sajat_lanc_neve -s a.gep.ip.cime -d 0.0.0.0/0 -p tcp -m multiport --dport ! 80,443 -j DROP
Itt én csak egy portot, vagy port tartományt tudok megadni, de pl azt, hogy "http,https,ftp", nem. Hogyan tudnám megoldani ezt a problémát?
Tehát: azt szeretném, hogy:
-A sajat_lanc_neve -s a.gep.ip.cime -d 0.0.0.0/0 -p tcp -m multiport --dport http,https,ftp -j DROP
Csakhogy ezt nem fogadja el az iptables.
Petya
- A hozzászóláshoz be kell jelentkezni
--dports
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Van egy szerverem, ami 1 tartományban van, de kintről is szeretném, ha különböző szolgáltatásai is elérhetőek lennének különböző címekről. A gépnek van publikus címe. Amire szükség van:
helyi hálózatból minden engedélyezett
Internet felől:
ssh elérés néhány ip címről,
80-as, 8080-as portok elérése (egyelőre) néhány ip címről,
1194-es udp (OpenVPN) port elérése néhány ip címről.
ftp szerver elérése néhány címről
11111-es port továbbítása a helyi háló adott gépe felé mindenhonnan (de jobb lenne, csak Magyarországra szűrni)
1099, 1100, 1199, 1200 portok engedélyezése néhány ip címről
Kérlek benneteket, segítsétek a munkámat annyival, hogy átnézitek az elkészített scriptemet, és ha valami hiányzik\nem jó, szóljatok!
A script:
#!/bin/sh
echo -n 'Configuring firewall '
# 1. firewall script by csonkasanyi
#
#Allandok
intface='192.168.10.252'
extface='1.2.3.4'
dns1='x.x.x.x'
dns2='y.y.y.y'
#A policy-t minden esetben DROPra állítjuk
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -t nat -P PREROUTING DROP
iptables -t nat -P POSTROUTING DROP
iptables -t nat -P OUTPUT DROP
iptables -t mangle -P INPUT DROP
iptables -t mangle -P FORWARD DROP
iptables -t mangle -P OUTPUT DROP
iptables -t mangle -P PREROUTING DROP
iptables -t mangle -P POSTROUTING DROP
#Töröljük a korábbi bejegyzéseket
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
iptables -t nat -F OUTPUT
iptables -t mangle -F INPUT
iptables -t mangle -F FORWARD
iptables -t mangle -F OUTPUT
iptables -t mangle -F PREROUTING
iptables -t mangle -F POSTROUTING
#Kezdjünk el engedélyezni... :-)
#A localhostról, és a helyi hálózatról engedélyezzük a hozzáférést
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -s 192.168.10.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.10.0/24 -j ACCEPT
#DNS jó, ha van...
iptables -A INPUT -s $dns1 -j ACCEPT
iptables -A INPUT -s $dns2 -j ACCEPT
#Az általunk kezdeményezett kapcsolatokra szeretnénk választ kapni!
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#22-es, 80-as, illetve a 8080-as portok engedélyezése
iptables -A INPUT -s a.a.a.a -p tcp -m multiport --dport 22,80,8080 -j ACCEPT
iptables -A INPUT -s b.b.b.b -p tcp -m multiport --dport 22,80,8080 -j ACCEPT
iptables -A INPUT -s c.c.c.c -p tcp -m multiport --dport 22,80,8080 -j ACCEPT
iptables -A INPUT -s d.d.d.d -p tcp -m multiport --dport 22,80,8080 -j ACCEPT
#a 21, 22-es portok engedélyezése
iptables -A INPUT -s e.e.e.e -p tcp -m multiport --dport 21,22 -j ACCEPT
iptables -A INPUT -s e.e.e.e -p tcp -m multiport --dport 21,22 -j ACCEPT
#Telephelyről 22-es, 80-as, 8080-as tcp, 1194-es udp portok engedélyezése
iptables -A INPUT -s f.f.f.f -p tcp -m multiport --dport 22,80,8080 -j ACCEPT
iptables -A INPUT -s g.g.g.g -p udp --dport 1194 -j ACCEPT
#1099-es, 1100-as, 1199-es 1200-as tcp portok engedélyezése
iptables -A INPUT -s h.h.h.h -p tcp -m multiport --dport 1099,1100,1199,1200 -j ACCEPT
iptables -A INPUT -s i.i.i.i -p tcp -m multiport --dport 1099,1100,1199,1200 -j ACCEPT
iptables -A INPUT -s j.j.j.j -p tcp -m multiport --dport 1099,1100,1199,1200 -j ACCEPT
iptables -A INPUT -s k.k.k.k -p tcp -m multiport --dport 1099,1100,1199,1200 -j ACCEPT
iptables -A INPUT -s l.l.l.l -p tcp -m multiport --dport 1099,1100,1199,1200 -j ACCEPT
#A 11111-es portra érkező kéréseket továbbítjuk a belső gépünk felé
iptables -t nat -A PREROUTING -i eth0 -p tcp -d $extface --dport 11111 -j DNAT --to 192.168.10.246:11111
Köszi, Sanyi
- A hozzászóláshoz be kell jelentkezni
valaki esetleg? :-)
- A hozzászóláshoz be kell jelentkezni
FTP-hez a 20-as port is kell... 20-21 a két port.
A végére egy
echo 1 > /proc/sys/net/ipv4/ip_forward
sem árt. ;)
Amúgy nekem jónak tűnik, bár hozzáteszem: nem vagyok pro iptables-ből. :P
[szerk] De mielőtt élesbe úgy hagynád, ki kell próbálni mindent!
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
Én az -m state rule-kat átraknám -m conntrack alá, mert annak biztosan tudom, hogy van FTP protokollhoz pluginje.
- A hozzászóláshoz be kell jelentkezni
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
ezzel a szabállyal szerintem minden kimenő kapcsolatot engedélyeztél, így az elején kiadott OUTPUT -P DROP sosem fog egyezni. Plusz én annyit szoktam még, hogy az adott portra érkező szabályoknál csak a -m state --state NEW
csomagokat engedem be, a többit az ESTABILESHED,RELATED rész elintézi, valamint -m state --state INVALID
csomagokat pedig még az elején dobom, mer' minek. A szavaim nem 100%, hogy igazak megerősítést|cáfolatot igényelhetnek.
- A hozzászóláshoz be kell jelentkezni
A portok felsorolásánál mindenhova beszúrtam a "-m state --state NEW" részletet, valamint az OUTPUT-ból kivettem a NEW state-et.
Viszont mi a helyzet, akkor, ha pl.: upgradelni akarok, vagy bármit, ahol én kezdeményezek kifele kapcsolatot? Akkor szvsz kell engedni a kifele menő NEW kéréseket is...
Az echo sort szintén felvettem a végére, illetve a 20-as portot, ahol ftp-zni akarok.
Mégvalami észrevétel?
Sanyi
- A hozzászóláshoz be kell jelentkezni
Amennyiben akarsz kifelé kapcsolatot kezdeményezni, természetesen azt ki kell engedni. A topicnyitó scriptben találsz rá példát is. Esetleg még az üres láncokat is törölném az elején, bár igaz, hogy most nem használsz saját láncokat, de később még előfordulhat. Ezt megteheted ugyanúgy mint a lánc ürítésnél (-F), csak -F-et -X-re kell cserélni.
--
HUP Firefox extension
- A hozzászóláshoz be kell jelentkezni
Jesszus... Ilyenkor áldom a SuSEfirewall-t :P
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
Kicsit bővebben?
- A hozzászóláshoz be kell jelentkezni
Hát annak azért kicsit egyszerűbb a beállítása. A saját konfig fájlából az is iptables rule-okat csinál.
Igaz, hogy ezzel talán precízebben be lehet állítani, de nagyon oda kell figyelni, és nagyon könnyű elrontani/elnézni valamit...
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
Amit nem mondtam: Debianról van szó...
Azért köszi, Sanyi
- A hozzászóláshoz be kell jelentkezni
Shorewall?
- A hozzászóláshoz be kell jelentkezni
Hali!
Az itt olvasottak alapjan gondoltam, en is osszealitok egy kis tuzfalat. Persze nem akar ugy mukodni, ahogy kellene. A belso halozatban meghalnak a szolgaltatasok, amikre szuksegem lenne.
A halozat es az igenyek a kovetkezok:
ADSL kapcsolat van az eth0 ppp0 interfacen.
A belso halo az eth1 interfacre csatlakozik.
Szeretnem, ha a server (ami egy hazi webserver csupan webprogramozas celjara, mindenfele dolgokkal: apache, php, mysql, ruby on rails...) internet felol tokeletes vedelmet elvezne, belso halorol pedig minden megengedett lenne.
Itt a hozzaszolasokban lattam a --dport port1,port2 -vel valo port felsorolast, ezzel szerettem volna a ki/be meno portokat engedelyezni internet felol. Sajnos tobb oranyi kiserletezes utan is lehalat a halozat fele:(
A problema meg az, hogy belso halozati geprol internetezek es eleg sokfele szolgaltatast hasznalok, amik persze nem tudom milyen porton csatlakoznak a nethez. Tehet a kimeno kapcsolataimat is ugy kellene beallitani, hogy barhova lehetseges legyen a kapcsolodas.
Az alap scriptem ennyi lenne, amivel a netmegosztas mukodik:
# Adatforgalom megosztasa a helyi halozatra
iptables -A FORWARD -i ppp0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# IP tovabbitas engedelyezese
echo "1" > /proc/sys/net/ipv4/ip_forward
Par mintat szivessen vennek, amivel mukodne par dolog, mert ahogy en osszeolloztam, az halal volt a halozatra:)
Elore is koszi!
- A hozzászóláshoz be kell jelentkezni
Oke, vegre sikerult osszedobni egy egesz jol mukodo tuzfalat, csupan egyetlen dolog nem akar mukodni internet felol, meghozza az FTP. Belso halorol tokeletes, kivulrol nem csatlakozik. Ranyomtam egy port scannert ami szerint a 20-as port zarva, 21-es nyitva. De mindent ugyanazzal a parancsal nyit ki, akor miert lehet zarva csak a 20-as?
Egyebkent mas hiabat, vagy otletet lattok benne?
#!/bin/sh
# Enable IP forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
# IPTables
IPT="iptables"
# Internet Interface
INET_IFACE="ppp0"
INET_ADDRESS="195.228.0.234"
# Local Interface Information
LOCAL_IFACE="eth1"
LOCAL_IP="192.168.0.1"
LOCAL_NET="192.168.0.0/24"
# Flush the tables
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F -t nat
# Define default policy to DROP packets
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
# Delete the optional user-defined chains specified
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
# Allow ICMP types ('echo request/reply' and 'time exceeded') traffic
$IPT -A INPUT -i $INET_IFACE -p icmp --icmp-type 0 -j ACCEPT
$IPT -A INPUT -i $INET_IFACE -p icmp --icmp-type 8 -j ACCEPT
$IPT -A INPUT -i $INET_IFACE -p icmp --icmp-type 11 -j ACCEPT
$IPT -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
$IPT -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
$IPT -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT
# Permit DNS traffic
$IPT -A INPUT -i $INET_IFACE -p udp --dport 53 -j ACCEPT
$IPT -A OUTPUT -p udp --sport 53 -j ACCEPT
# Accept network return traffic from the internet:
$IPT -A INPUT -i $INET_IFACE -m state -p tcp --dport 1024:65535 --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state -p tcp --sport 1024:65535 ! --state INVALID -j ACCEPT
# Accept SSH traffic from the internet
$IPT -A INPUT -i $INET_IFACE -m state -p tcp -s 0/0 --dport 22 ! --state INVALID -j ACCEPT
$IPT -A OUTPUT -m state -p tcp --sport 22 --state ESTABLISHED,RELATED -j ACCEPT
# Accept FTP traffic from the internet
$IPT -A INPUT -i $INET_IFACE -m state -p tcp -s 0/0 --dport 21 ! --state INVALID -j ACCEPT
$IPT -A OUTPUT -m state -p tcp --sport 21 --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i $INET_IFACE -m state -p tcp -s 0/0 --dport 20 ! --state INVALID -j ACCEPT
$IPT -A OUTPUT -m state -p tcp --sport 20 --state ESTABLISHED,RELATED -j ACCEPT
# Accept HTTP traffic from the internet
$IPT -A INPUT -i $INET_IFACE -m state -p tcp -s 0/0 --dport 80 ! --state INVALID -j ACCEPT
$IPT -A OUTPUT -m state -p tcp --sport 80 --state ESTABLISHED,RELATED -j ACCEPT
# Accept RoR traffic from the internet
$IPT -A INPUT -i $INET_IFACE -m state -p tcp -s 0/0 --dport 3000 ! --state INVALID -j ACCEPT
$IPT -A OUTPUT -m state -p tcp --sport 3000 --state ESTABLISHED,RELATED -j ACCEPT
# Accept all local (loopback) traffic on the lo interface
$IPT -A INPUT -s 127.0.0.1 -i lo -j ACCEPT
$IPT -A OUTPUT -d 127.0.0.1 -o lo -j ACCEPT
# Accept private subnet traffic on LOCAL_IFACE
$IPT -A INPUT -s $LOCAL_NET -i $LOCAL_IFACE -j ACCEPT
$IPT -A OUTPUT -d $LOCAL_NET -o $LOCAL_IFACE -j ACCEPT
# Allow forwarding packets:
$IPT -A FORWARD -p ALL -i $LOCAL_IFACE -j ACCEPT
$IPT -A FORWARD -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
# Packet masquerading
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
- A hozzászóláshoz be kell jelentkezni
Csak meglett az FTP hiba is, kellet a 'modprobe ip_conntrack_ftp' :)
Furcsa modon, most viszont lasabban csatlakozik, mint a tuzfal elott :S
- A hozzászóláshoz be kell jelentkezni
Ujrairtam a tuzfalamat, eddig minden mukodik vele ami kell. Kintrol, bentrol, azt erek el amit engedek.
De gondoltam kicsit tovabbfejlesztem. A serevren es a kliens gepen is FTP server van, mert szamomra ez a legjobb file megosztasi eljaras. De mindigis problema volt ha nem voltam otthon es kellet valami a belso geprol. Gondoltam most a belso gep FTP portjat bellitom 1021-re a tuzfalban pedig ezt atiranyitom a belso gep IP-jere. De az istenert sem akar mukodni!
Ime az eddigi tuzfalam:
#!/bin/bash
# Kernel modulok betolltese
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# IP tovabbitas engedelyezese
echo "1" > /proc/sys/net/ipv4/ip_forward
# Tuzfal szabalyok torlese es alapertelmezesbe allitasa
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F -t nat
# INPUT lanc
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 20,21,22,80,1021 -j ACCEPT
iptables -A INPUT -j LOG --log-prefix "FW_INPUT_DROP: "
iptables -A INPUT -j DROP
# OUTPUT lanc
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dport 20,21,22,80,1863,6667,1021 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -j LOG --log-prefix "FW_OUTPUT_DROP: "
iptables -A OUTPUT -j DROP
# Belso gep FTP eleresenek engedelyezese a 1021-as porton
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 1021 -j DNAT --to-destination 192.168.0.2:1021
# Adatforgalom megosztas a helyi halozatra
iptables -A FORWARD -i ppp0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Mar rengeteg kombinaciot csialtam a port tovabbitasra, de egyszeruen nem megy. Arra gondoltam, hogy tobb kell hozza mint sima tovabbitas. Ebben az esetben vajon mi?
Segitsegul nehagy halozati adatom:
ppp0 az internet interface
eth0 amire a DSL modem van dugva
eth1 a belso halozat interface
a server belso IP cime: 192.168.0.1
a kliens IP cime: 192.168.0.2
Megkoszonnem a segitsegeteket!
- A hozzászóláshoz be kell jelentkezni
A PREROUTING lancban az eth1-es interface-t adtad meg, de az a belso halozatod, nem a kulso.
A 1021-es portot be kell rakni a FORWARD lancba is.
- A hozzászóláshoz be kell jelentkezni
AZ FTP két porton megy!!! Amit tudsz állítani, az a 21-es, ezen megy az ADAT. A 20-as port fix, az mindig 20-as marad, ezen megy a kommunikáció kliens-server között (kapcsolatfelvétel, hitelesítés, stb...)
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
Fordítva!
ftp-data 20/tcp File Transfer [Default Data]
ftp-data 20/udp File Transfer [Default Data]
ftp 21/tcp File Transfer [Control]
ftp 21/udp File Transfer [Control]
Tehát a 21-es a control (command) port és a 20-as az adat.
- A hozzászóláshoz be kell jelentkezni
Igaz, elírtam...
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
Egyebkent ezt azert is konnyu megjegyezni, mert ezt a portot nyitogatjak az ilyen okos conntrack helperek, mint a nf_conntrack_ftp.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Nekem ezek kellettek a VPN forwardolásához:
eht0 = public IP
eth1 = private IP
a 192.168.2.45 a belső gép IP-je amina VPN szerver fut.
# INPUT chain
iptables -A PREROUTING -t nat -d $eth0 -p udp --dport 1194 -j DNAT --to-destination 192.168.2.45:1194
iptables -A POSTROUTING -t nat -d 192.168.2.45 -p udp --dport 1194 -j SNAT --to-source $eth1
#FORWARD chain
iptables -A FORWARD -d 192.168.2.45 -p udp --dport 1194 -j ACCEPT
iptables -A FORWARD -s 192.168.2.45 -p udp --sport 1194 -j ACCEPT
Mjad tenyél minden lánc végére egy mindent loggol és ledob szabályt, abból látni fogod, hogy a próbálkozások során milyen csomagok vesznek el.
- A hozzászóláshoz be kell jelentkezni
Nos en a fentebbi scriptemet millonyi mas dologgal kiprobaltam, es nem mukodik at FTP eleres. (Azota a 40004-es porton kellene)
Ime nehany kiprobalt beallitas:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 40004 -j DNAT --to-destination 192.168.0.2:40004
iptables -A FORWARD -i eth1 -o eth0 -p TCP --sport 1024:65535 --dport 1024:65535 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p TCP --sport 1024:65535 --dport 1024:65535 -j ACCEPT
iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 40004 -j ACCEPT
iptables -A FORWARD -s 192.168.0.2 -p tcp --sport 40004 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 195.228.0.234 --dport 40004 -j DNAT --to-destination 192.168.0.2
iptables -A FORWARD -i eth0 -o eth1 -p tcp --syn -d 192.168.0.5 --dport 40004 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -i eth1 --dport 40004 -j DNAT --to 192.168.0.2:40004
iptables -A FORWARD -i eth1 -p tcp -d 192.168.0.2 --dport 40004 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ppp0 -m tcp -p tcp --sport ftp-data:ftp
iptables -A FORWARD -o ppp0 -m tcp -p tcp --dport ftp-data:ftp
UNPRIVPORTS="1024:65535"
iptables -A FORWARD -i eth0 -o eth1 -p tcp -s 192.168.0.2 --sport $UNPRIVPORTS -d 192.168.0.1 --dport 40004 -m state --state NEW -j ACCEPT
# This will handle active FTP data transfers
iptables -A FORWARD -i eth1 -o eth0 -p tcp -s 192.168.0.1 -d 192.168.0.2 --sport $UNPRIVPORTS --dport $UNPRIVPORTS -m helper --helper ftp -m state --state RELATED -j ACCEPT
# This will handle passive FTP data transfers
iptables -A FORWARD -i eth0 -o eth1 -p tcp -s 192.168.0.2 -d 192.168.0.1 --sport $UNPRIVPORTS --dport $UNPRIVPORTS -m helper --helper ftp -m state --state RELATED -j ACCEPT
Most annyi tortenik, hogy Connectizal az FTP kliens, majd befagy 1-2 perc utan :D
Ha agyon utnek sem jovok ra, miert nem jo:( Google-ben mar 15. oldalnal tartok ezugyben :S
- A hozzászóláshoz be kell jelentkezni
Nem egészen tiszta mit szeretnél, de sztem nem kezeled le, hogy a FTP mindenképp keresi a 20-as portot, független attól hogy hanyas porton szeretnéd ezt a forgalmat látni. Ja, és a OUTPUT láncon a ESTABLISHED,RELATED státuszú csomagok ki vannak engedve? A conntrack modult probáltad már?
- A hozzászóláshoz be kell jelentkezni
Már mondtam egy párszor: 20-AS PORT!!!!
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
Van az alábbi scriptem. A problémám az, hogy hiába állítom be a portokat, mégsem megy az SSMTP és az SPOP3 (465 és 995 portok). Elvileg más rendben, de az nmap nem jelzi, hogy ezek nyitva vannak. A squid is fennt van és az SSL_ports -nál megadtam a 465 és 995 portokat, de nem megy.
Szerintetek mi lehet a gond?
Íme a teljes script
#!/bin/bash
TITLE="myfw"
IPTABLES=/sbin/iptables
SYSCTL=/sbin/sysctl
INET_IF=eth0 #külső interfész
LNET_IF=eth1 #belső interfész
INET_ADDR="a.b.c.d" #külső IP cím
FW_ADDR="192.168.0.1" #belső IP cím
LNET_ADDR="192.168.0.0/24" #védett hálózat IP címe
CLASS_A="10.0.0.0/8"
CLASS_B="172.16.0.0/12"
CLASS_C="192.168.0.0/16"
CLASS_D_MULTICAST="224.0.0.0/4"
CLASS_E_RESERVED="240.0.0.0/5"
DENIED_IPS="61.31.0.0/16
61.140.0.0/11
61.220.0.0/10
62.165.226.178
62.165.227.56
62.165.227.223
62.165.225.99
62.165.224.86
62.165.215.44
62.165.224.241
62.165.215.19
62.165.227.41
62.165.227.97
64.12.24.161
66.137.176.6
89.132.26.222
86.106.44.179
200.195.0.0/10
210.73.133.22
210.212.0.0/16
218.248.35.62
218.188.23.45
218.248.35.62
218.13.0.0/11
218.160.0.0/12
219.80.0.0/15
219.128.0.0/12
222.156.0.0/15
"
#
# Szűrési láncok létrehozása
#
create_chains() {
# Beállítjuk az alapértelmezett policykat: DROP Eldobunk minden
# csomagot alapból, előtte válogatunk.
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
# Csoportosított láncok a forgalom iránya alapján
# a gépről az internetre menő csomagok
$IPTABLES -N fw_to_inet
# az internetről a gépre jövő csomagok
$IPTABLES -N inet_to_fw
# a lokális hálózatról az internetre menő csomagok (forward)
$IPTABLES -N lnet_to_inet
# az internetről a lokális hálózatra menő csomagok
$IPTABLES -N inet_to_lnet
# a lokális hálózatról a gépre jövő csomagok
$IPTABLES -N lnet_to_fw
# a gépről a lokális hálózatra menő csomagok
$IPTABLES -N fw_to_lnet
# szűrési lánc
$IPTABLES -N security
}
#
# Láncok törlése
#
delete_chains() {
# Táblák tisztítása
$IPTABLES -F
$IPTABLES -X
$IPTABLES -F -t nat
$IPTABLES -X -t nat
$IPTABLES -F -t mangle
$IPTABLES -X -t mangle
# Csomagszámlálók nullázása
$IPTABLES -Z
# Minden forgalom engedélyezése
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
}
#
# Ătirányítások
#
basic_rules() {
# Loopbacken mindent fogadunk
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
# Bejövő csomagok
$IPTABLES -A INPUT -i $INET_IF -j inet_to_fw
$IPTABLES -A INPUT -i $LNET_IF -s $LNET_ADDR -j lnet_to_fw
# Kimenő csomagok
$IPTABLES -A OUTPUT -o $INET_IF -j fw_to_inet
$IPTABLES -A OUTPUT -o $LNET_IF -d $LNET_ADDR -j fw_to_lnet
# Ătmenő csomagok - továbbítás
$IPTABLES -A FORWARD -i $INET_IF -o $LNET_IF -d $LNET_ADDR -j inet_to_lnet
$IPTABLES -A FORWARD -i $LNET_IF -o $INET_IF -s $LNET_ADDR -j lnet_to_inet
}
#
# Az internetről a tűzfalra érkező csomagok
#
inet_to_fw() {
# Tiltott IP-k szűrése
for i in `echo $DENIED_IPS`; do
$IPTABLES -A inet_to_fw -s $i -j DROP
done
# Hamisított IP-k szűrése (sysctl-k bebiztosítása)
$IPTABLES -A inet_to_fw -s $CLASS_A -j LOG --log-prefix "$TITLE : fake IP source "
$IPTABLES -A inet_to_fw -s $CLASS_A -j DROP
$IPTABLES -A inet_to_fw -s $CLASS_B -j LOG --log-prefix "$TITLE : fake IP source "
$IPTABLES -A inet_to_fw -s $CLASS_B -j DROP
$IPTABLES -A inet_to_fw -s $CLASS_C -j LOG --log-prefix "$TITLE : fake IP source "
$IPTABLES -A inet_to_fw -s $CLASS_C -j DROP
$IPTABLES -A inet_to_fw -s $CLASS_D_MULTICAST -j LOG --log-prefix "$TITLE : fake IP source "
$IPTABLES -A inet_to_fw -s $CLASS_D_MULTICAST -j DROP
$IPTABLES -A inet_to_fw -s $CLASS_E_RESERVED -j LOG --log-prefix "$TITLE : fake IP source "
$IPTABLES -A inet_to_fw -s $CLASS_E_RESERVED -j DROP
# SYN-Flood
$IPTABLES -A inet_to_fw -p tcp --syn -m limit --limit 1/s --limit-burst 4 -j ACCEPT
$IPTABLES -A inet_to_fw -p tcp --syn -j LOG --log-prefix "$TITLE : SYN-Flood attack "
$IPTABLES -A inet_to_fw -p tcp --syn -j DROP
# Nmap FIN/URG/PSH
$IPTABLES -A inet_to_fw -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 5/m -j LOG --log-prefix "$TITLE : Nmap XMAS scan "
$IPTABLES -A inet_to_fw -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
# SYN/RST
$IPTABLES -A inet_to_fw -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/m -j LOG --log-prefix "$TITLE : SYN/RST scan "
$IPTABLES -A inet_to_fw -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
#SYN/FIN
$IPTABLES -A inet_to_fw -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/m -j LOG --log-prefix "$TITLE : SYN/FIN scan "
$IPTABLES -A inet_to_fw -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# Portscan,PoD
$IPTABLES -A inet_to_fw -p tcp --tcp-flags ALL ALL -j LOG --log-prefix "$TITLE : XMAS-tree scan "
$IPTABLES -A inet_to_fw -p tcp --tcp-flags ALL NONE -m state --state ! ESTABLISHED -j LOG --log-prefix "$TITLE : NULL scan "
# PING -re ne válaszoljunk
$IPTABLES -A inet_to_fw -m state --state NEW -p icmp -j DROP
$IPTABLES -A inet_to_fw -p icmp --icmp-type echo-request -m limit --limit 3/s -j ACCEPT
$IPTABLES -A inet_to_fw -p icmp --icmp-type echo-request -j LOG --log-prefix "$TITLE : PoD attack "
$IPTABLES -A inet_to_fw -p icmp --icmp-type echo-request -j DROP
# Az Ăşj kapcsolatok helyesen kezdődjenek ( közvetett DoS )
$IPTABLES -A inet_to_fw -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "$TITLE : hidden portscan "
$IPTABLES -A inet_to_fw -p tcp ! --syn -m state --state NEW -j DROP
# Jóváhagyott kapcsolatok elfogadása
$IPTABLES -A inet_to_fw -m state --state ESTABLISHED,RELATED -j ACCEPT
# Szolgáltatások engedélyezése (nyitott portok)
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 20 -j ACCEPT # Ftp-data
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 20 -j ACCEPT # Ftp-data
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 21 -j ACCEPT # Ftp
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 21 -j ACCEPT # Ftp
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 23 -j ACCEPT # Telnet
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 23 -j ACCEPT # Telnet
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 25 -j ACCEPT # SMTP
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 25 -j ACCEPT # SMTP
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 465 -j ACCEPT # Secure SMTP
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 465 -j ACCEPT # Secure SMTP
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 53 -j ACCEPT # DNS
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 53 -j ACCEPT # DNS
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 80 -j ACCEPT # HTTP
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 80 -j ACCEPT # HTTP
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp -s $LNET_ADDR --dport 22 -j ACCEPT # ssh
$IPTABLES -A inet_to_fw -m state --state NEW -p udp -s $LNET_ADDR --dport 22 -j ACCEPT # ssh
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 107 -j ACCEPT # rtelnet
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 107 -j ACCEPT # rtelnet
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 110 -j ACCEPT # POP3
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 110 -j ACCEPT # POP3
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 995 -j ACCEPT # Secure POP3
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 995 -j ACCEPT # Secure POP3
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 143 -j ACCEPT # IMAP
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 143 -j ACCEPT # IMAP
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 3389 -j ACCEPT # Távsegítség
$IPTABLES -A inet_to_fw -m state --state NEW -p udp --dport 3389 -j ACCEPT # Távsegítség
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp -s 127.0.0.1 --dport 3128 -j ACCEPT # loopback engedélyezése az 5555 porton
$IPTABLES -A inet_to_fw -m state --state NEW -p udp -s 127.0.0.1 --dport 3128 -j ACCEPT # loopback engedélyezése az 5555 porton
$IPTABLES -A inet_to_fw -m state --state NEW -p tcp -s $LNET_ADDR --dport 3128 -j ACCEPT # belső hálózat engedélyezése az 5555 porton
$IPTABLES -A inet_to_fw -m state --state NEW -p udp -s $LNET_ADDR --dport 3128 -j ACCEPT # belső hálózat engedélyezése az 5555 porton
}
#
# Az internetről a LAN-ra továbbított csomagok
#
inet_to_lnet() {
# Tiltott IP-k szűrése
for i in `echo $DENIED_IPS`; do
$IPTABLES -A inet_to_fw -s $i -j DROP
done
# Hamisított IP-k szűrése (sysctl-k bebiztosítása)
$IPTABLES -A inet_to_lnet -s $CLASS_A -j LOG --log-prefix "$TITLE : fake IP source "
$IPTABLES -A inet_to_lnet -s $CLASS_A -j DROP
$IPTABLES -A inet_to_lnet -s $CLASS_B -j LOG --log-prefix "$TITLE : fake IP source "
$IPTABLES -A inet_to_lnet -s $CLASS_B -j DROP
$IPTABLES -A inet_to_lnet -s $CLASS_C -j LOG --log-prefix "$TITLE : fake IP source "
$IPTABLES -A inet_to_lnet -s $CLASS_C -j DROP
$IPTABLES -A inet_to_lnet -s $CLASS_D_MULTICAST -j LOG --log-prefix "$TITLE : fake IP source "
$IPTABLES -A inet_to_lnet -s $CLASS_D_MULTICAST -j DROP
$IPTABLES -A inet_to_lnet -s $CLASS_E_RESERVED -j LOG --log-prefix "$TITLE : fake IP source "
$IPTABLES -A inet_to_lnet -s $CLASS_E_RESERVED -j DROP
# SYN-Flood
$IPTABLES -A inet_to_lnet -p tcp --syn -m limit --limit 1/s --limit-burst 4 -j ACCEPT
$IPTABLES -A inet_to_lnet -p tcp --syn -j LOG --log-prefix "$TITLE : SYN-Flood attack "
$IPTABLES -A inet_to_lnet -p tcp --syn -j DROP
# Nmap FIN/URG/PSH
$IPTABLES -A inet_to_lnet -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 5/m -j LOG --log-prefix "$TITLE : Nmap XMAS scan "
$IPTABLES -A inet_to_lnet -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
# SYN/RST
$IPTABLES -A inet_to_lnet -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/m -j LOG --log-prefix "$TITLE : SYN/RST scan "
$IPTABLES -A inet_to_lnet -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
#SYN/FIN
$IPTABLES -A inet_to_lnet -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/m -j LOG --log-prefix "$TITLE : SYN/FIN scan "
$IPTABLES -A inet_to_lnet -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# Portscan,PoD
$IPTABLES -A inet_to_lnet -p tcp --tcp-flags ALL ALL -j LOG --log-prefix "$TITLE : XMAS-tree scan "
$IPTABLES -A inet_to_lnet -p tcp --tcp-flags ALL NONE -m state --state ! ESTABLISHED -j LOG --log-prefix "$TITLE : NULL scan "
# PING -re ne válaszoljunk
$IPTABLES -A inet_to_lnet -m state --state NEW -p icmp -j DROP
$IPTABLES -A inet_to_lnet -p icmp --icmp-type echo-request -m limit --limit 3/s -j ACCEPT
$IPTABLES -A inet_to_lnet -p icmp --icmp-type echo-request -j LOG --log-prefix "$TITLE : PoD attack "
$IPTABLES -A inet_to_lnet -p icmp --icmp-type echo-request -j DROP
# Az Ăşj kapcsolatok helyesen kezdődjenek ( közvetett DoS )
$IPTABLES -A inet_to_lnet -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "$TITLE : hidden portscan "
$IPTABLES -A inet_to_lnet -p tcp ! --syn -m state --state NEW -j DROP
# Jóváhagyott kapcsolatok elfogadása
$IPTABLES -A inet_to_lnet -m state --state ESTABLISHED,RELATED -j ACCEPT
# Szolgáltatások engedélyezése (nyitott portok)
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 20 -j ACCEPT # Ftp-data
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 20 -j ACCEPT # Ftp-data
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 21 -j ACCEPT # Ftp
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 21 -j ACCEPT # Ftp
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 23 -j ACCEPT # Telnet
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 23 -j ACCEPT # Telnet
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 25 -j ACCEPT # SMTP
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 25 -j ACCEPT # SMTP
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 465 -j ACCEPT # Secure SMTP
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 465 -j ACCEPT # Secure SMTP
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 53 -j ACCEPT # DNS
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 53 -j ACCEPT # DNS
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 80 -j ACCEPT # HTTP
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 80 -j ACCEPT # HTTP
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 22 -j ACCEPT # ssh
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 22 -j ACCEPT # ssh
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 107 -j ACCEPT # rtelnet
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 107 -j ACCEPT # rtelnet
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 110 -j ACCEPT # POP3
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 110 -j ACCEPT # POP3
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 995 -j ACCEPT # Secure POP3
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 995 -j ACCEPT # Secure POP3
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 143 -j ACCEPT # IMAP
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 143 -j ACCEPT # IMAP
$IPTABLES -A inet_to_lnet -m state --state NEW -p tcp --dport 3389 -j ACCEPT # Távsegítség
$IPTABLES -A inet_to_lnet -m state --state NEW -p udp --dport 3389 -j ACCEPT # Távsegítség
}
#
# A LAN-ról a tűzfalra érkező csomagok
#
lnet_to_fw() {
# Itt mindent engedünk
$IPTABLES -A lnet_to_fw -j ACCEPT
# Másik alternatíva : SSH-t engedünk, pingelni lehet, dhcp ok
$IPTABLES -A lnet_to_fw -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A lnet_to_fw -m state --state NEW -p tcp --dport 22 -j ACCEPT
$IPTABLES -A lnet_to_fw -m state --state NEW -p udp --dport 22 -j ACCEPT
$IPTABLES -A lnet_to_fw -m state --state NEW -p icmp -j ACCEPT
$IPTABLES -A lnet_to_fw -p udp --dport 67 -j ACCEPT # DHCP
$IPTABLES -A lnet_to_fw -j DROP
}
#
# A LAN-ról az internetre küldött csomagok
#
lnet_to_inet() {
# Itt mindent engedünk
$IPTABLES -A lnet_to_inet -j ACCEPT
}
#
# A tűzfalról a LAN-ra küldött csomagok
#
fw_to_lnet() {
# Itt mindent engedünk
$IPTABLES -A fw_to_lnet -j ACCEPT
}
#
# A tűzfalról az internetre küldött csomagok
#
fw_to_inet() {
# Itt mindent engedünk
$IPTABLES -A fw_to_inet -j ACCEPT
}
#
# Internet megosztása a LAN számára
#
nat() {
$IPTABLES -t nat -A POSTROUTING -o $INET_IF -j MASQUERADE
}
#
# Sysctl beállítások a /proc fájlrendszeren
#
sysctls() {
# ICMP redirect fogadásának kikapcsolása
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.accept_redirects=0 > /dev/null;
done
$SYSCTL -w net.ipv4.conf.all.accept_redirects=0 > /dev/null
# A forrás-routolási csomagok kikapcsolása
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.accept_source_route=0 > /dev/null;
done
$SYSCTL -w net.ipv4.conf.all.accept_source_route=0 > /dev/null
# A lehetetlen IP ről jövő csomagok loggolása
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.log_martians=1 > /dev/null;
done
$SYSCTL -w net.ipv4.conf.all.log_martians=1 > /dev/null
# Routolási háromszögelés illetve ip spoofing védelem
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.rp_filter=1 > /dev/null;
done
$SYSCTL -w net.ipv4.conf.all.rp_filter=1 > /dev/null
# ICMP redirect engedélyezése az átjáróknak
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.secure_redirects=1 > /dev/null;
done
$SYSCTL -w net.ipv4.conf.all.secure_redirects=1 > /dev/null
# ICMP redirect kikapcsolása Ha a gép router, írjuk át 1-re, és a
# többi host kap ICMP redirect-t
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.send_redirects=0 > /dev/null;
done
$SYSCTL -w net.ipv4.conf.all.send_redirects=0 > /dev/null
# PING-re válaszolunk - majd a láncokon szűrjük/kikapcsolhatjuk
$SYSCTL -w net.ipv4.icmp_echo_ignore_all=0 > /dev/null
# Ne válaszoljunk a broadcast PING-re
$SYSCTL -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null
# Ne loggoljuk a hibás router broadcastokat
$SYSCTL -w net.ipv4.icmp_ignore_bogus_error_responses=1 > /dev/null
# IP routolás engedélyezése NAT-hoz
$SYSCTL -w net.ipv4.ip_forward=1 > /dev/null
}
#
# Sysctl visszaállítások
#
unsysctls() {
# Default értékeket visszaállítjuk
# --- mégjobb lenne: config fájlban elmenteni a tűzfal előtti
# beállításokat, és onnan visszamenteni! ---
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.accept_redirects=1 > /dev/null;
done
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.accept_source_route=0 > /dev/null;
done
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.log_martians=0 > /dev/null;
done
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.rp_filter=0 > /dev/null;
done
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.secure_redirects=1 > /dev/null;
done
for f in /proc/sys/net/ipv4/conf/*; do
$SYSCTL -w net.ipv4.conf.`basename $f`.send_redirects=1 > /dev/null;
done
$SYSCTL -w net.ipv4.icmp_echo_ignore_all=0 > /dev/null
$SYSCTL -w net.ipv4.icmp_echo_ignore_broadcasts=0 > /dev/null
$SYSCTL -w net.ipv4.icmp_ignore_bogus_error_responses=0 > /dev/null
$SYSCTL -w net.ipv4.ip_forward=0 > /dev/null
}
#
# Az internethozzáférés zárása
#
lock() {
LINE=`$IPTABLES -L inet_to_lnet -n | head -3 | tail -1`
if ! ( [ `echo $LINE | awk '{print $1}'` == "DROP" ] && [ `echo $LINE | awk '{print $2}'` == "all" ] && [ `echo $LINE | awk '{print $4}'` == "0.0.0.0/0" ] && [ `echo $LINE | awk '{print $5}'` == "0.0.0.0/0" ]); then
$IPTABLES -I inet_to_lnet 1 -j DROP
fi
LINE=`$IPTABLES -L inet_to_fw -n | head -3 | tail -1`
if ! ( [ `echo $LINE | awk '{print $1}'` == "DROP" ] && [ `echo $LINE | awk '{print $2}'` == "all" ] && [ `echo $LINE | awk '{print $4}'` == "0.0.0.0/0" ] && [ `echo $LINE | awk '{print $5}'` == "0.0.0.0/0" ]); then
$IPTABLES -I inet_to_fw 1 -j DROP
fi
}
#
# Az internethozzáférés engedélyezése
#
unlock() {
LINE=`$IPTABLES -L inet_to_lnet -n | head -3 | tail -1`
if [ `echo $LINE | awk '{print $1}'` == "DROP" ] && [ `echo $LINE | awk '{print $2}'` == "all" ] && [ `echo $LINE | awk '{print $4}'` == "0.0.0.0/0" ] && [ `echo $LINE | awk '{print $5}'` == "0.0.0.0/0" ]; then
$IPTABLES -D inet_to_lnet 1
fi
LINE=`$IPTABLES -L inet_to_fw -n | head -3 | tail -1`
if [ `echo $LINE | awk '{print $1}'` == "DROP" ] && [ `echo $LINE | awk '{print $2}'` == "all" ] && [ `echo $LINE | awk '{print $4}'` == "0.0.0.0/0" ] && [ `echo $LINE | awk '{print $5}'` == "0.0.0.0/0" ]; then
$IPTABLES -D inet_to_fw 1
fi
}
case "$1" in
start)
if [ ! -x $IPTABLES ]; then
echo "No iptables found so not starting firewall..."
exit 1
fi
echo " * Starting Firewall..."
sysctls
delete_chains
create_chains
basic_rules
inet_to_fw
inet_to_lnet
lnet_to_fw
lnet_to_inet
fw_to_lnet
fw_to_inet
nat
;;
stop)
echo " * Stopping Firewall..."
delete_chains
unsysctls
;;
restart)
$0 stop
sleep 1
$0 start
;;
lock)
echo " * Locking System & LAN from Internet access..."
lock
;;
unlock)
echo " * Unlocking System & LAN for Internet acccess..."
unlock
;;
list)
$IPTABLES -L -n
;;
*)
echo "Usage : $0 {start|stop|restart|lock|unlock}"
exit 1
;;
esac
Remélem így jó. Bocsi, hogy csak így bevágtam, de eredetileg nem nem néztem, hogy más a kódolás.
- A hozzászóláshoz be kell jelentkezni
Szia!
Eloszor is:
Le tudod tesztelni, hogy az adott sorra ($IPTABLES -A inet_to_fw -m state --state NEW -p tcp --dport 995 -j ACCEPT # Secure POP3) matchel e csomag ha kilistazod az iptables szabalyokat:
Nalam a 80 port:
iptables -L -nv | grep "dpt:80"
1433 77465 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Amit kiemeltem a matchelt csomagszam (1443) es a merete byte-ban (77465).
Ebbol lathatod, hogy van forgalma, tehat a szabaly jo.
Kovetkezo lepes kb a tcpdump, ha meg mindig itt akarsz keresgelni, de szamomra nem egyertelmu abbol amit irtal, mierta tuzfaladra gyanakszol. Sokkal valoszinubb hogy a levelezo (szerver) beallitasokkal van baj. Nezz logokat kozben ...
U.i.> koszi, hogy kijavitottad. Talan meg annyi, hogy legkozelebb toltsd fel valahova es linkeld be, vagy pastebin. De nem akarok okoskodni ide, csak tanacs :)
-
budacsik
- A hozzászóláshoz be kell jelentkezni
A felállás a következő:
van egy gép, melyen keresztül osztom a netet. Rajta fut ez a script és egy Squid transzparens módban. Arra is gyanakszom, hogy a Squid felülkonfigurálja a porteléréseket (abban is vannak port szabályok: acl ports, stb., lehet hgy törölni kellene). Nem tudom, hogy ez lehetséges-e, bocs ha hülyeséget kérdezek.
Holnap megnézem a postfixet is.
Ja és a levelezőprogram a klienseken, mely nem tud leveleket letölteni: Outlook Express.
- A hozzászóláshoz be kell jelentkezni
To machobymb!
Most futottam neki masodjara (par nappal kesobb) de megint abbahagytam.
Ugye latod miert ... es valoszinuleg ezert nem jott meg valasz ra.
(Direkt nem arra valaszoltam, hogy szerkeszthesd)
-
budacsik
- A hozzászóláshoz be kell jelentkezni
én is most barátkozom a netfilter használatával, aminek képességei igencsak ámulatba ejtenek, és jó lenne benne kissé elmélyednem - így nekem is lenne 1 közszemlére váró szkriptem, ami alapvetően működik, de néhány kellemetlen hiba miatt azért elég zavaró... :
első körben sikerült kizárnom magam 1 jó távoli szerverből, amit aztán csak e-mailezgetés útján tudtam újraindíttatni, így javaslom minden hozzám hasonló kontárnak, h vagy otthoni gépen kísérletezzen először v. a crontab-ban helyesen (én pl. path nélkül adtam meg a szkriptet...:D) adjon meg 1 iptables nullázós parancsot úgy 10 percenként :)
node jelenlegi problémáim szűk szavakban azoknak, akik nem akarják átnyálazni a pastebin-es irományt:
* első körben a mindenfelé fellelhető DoS,Ping of Death és egyéb támadások elleni védelemmel kapcs. kérdezem, h ezek mennyire valós veszélyek egy serverpark-ban elhelyezett gépnél (előszűrés a gépek előtt?) ill. gondolom a portscan ellen érdemes lehet védekezni (majd tesztelem, h műdödik-e rendesen az általam használt sorhalmaz...)
* a LOG érdekesen működik, pontosabban nem sikerült annak minden csínját-bínját elsajátítanom: kb. mindig az utolsó (INPUT DROP) bejegyzést kapom... próbáltam az elején logolni a SYN-flood részt (kikommentezve a szkriptben), de ennek hatására böngészőből érvénytelen portra való kapcsolódás kapásból SYN-flood bejegyzést eredményezett (bár lehetséges, h ez normális és ilyen esetben a böngésző elárasztja?)...
ami viszont komolyabb: az SSH port védése percenkénti 3 próbálkozási lehetőséggel/IP sikeres volt, azonban az ahhoz gyártott LOG-olási kísérletem totál működésképtelennek tűnik... (mind a tiltás, mind a sikeres bejelentkezés rögzítése)
elnézéseteket kérem a hosszú bejegyzésért és köszönet előre is azoknak, akik átnézik soraimat...
- A hozzászóláshoz be kell jelentkezni
közben észrevettem, h az SSH-t teljes mértékben engedélyező sor vhogy a szűrés elé kavarodott az emészthető formába való pakolgatásnál, azonban így sem értem, h a percenkénti 3 limit miért működik, a LOG miért nem...
- A hozzászóláshoz be kell jelentkezni
1./ Javitsatok ki ha tevedek, de ezzel a szaballyal (elegge az elejen van), minden uj csomagot beengedsz, fuggetlenul attol, hogy mi az, csak az ido limitnek kell megfelelnie:
$IPTABLES -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec --limit-burst 4 -j ACCEPT
Bocs, most latom, hogy ott a DROP, csak ki van kommentezve. Miert?
2./ Feltetelezem ez egy otthoni szerver?!
3./ A kimeno lancot is szurd.
4./ Nem vagyok tisztaban az ICMP-s tamadasoknak, de biztos nem art ha azokat is limitalva engedelyezed. Biztos ami biztos :)
-
budacsik
- A hozzászóláshoz be kell jelentkezni
köszönöm a segítséged :)
amúgy épp ezzel "küzdök" újra, nagyjából sikerül már összepakolni azt hiszem... de észrevételeidből újra tanulok:)
1.) Azt a részt azért kommenteztem ki, m ha bent volt, akkor böngészőből tesztelve egy olyan portot, amin nem fut szolgáltatás (+ később ugye nem is volt engedélyezve): telepakolta a LOG-ot "SYN-flood attack" bejegyzésekkel, amit kissé furcsáltam... de gondolom ez a böngésző folyamatos kapcsolódási kísérlete miatt lehet. Viszzarakom, aztán megnézem mvmi normális próbával!
2.) Hát helyileg nem itthon fut, de nincs rajta semmi éles szolgáltatás, hobbi/tanulás célokat szolgál...
3.) Úgy lesz :)
4.) Én meg nagyon nem, így marad 1enlőre, aztán utánajárok lassan...
köszi még1szer!
- A hozzászóláshoz be kell jelentkezni
átalakítgattam a szkriptet, egyre inkább működik :)
viszont az 1. részben megjelölt szabály hatására tényleg minden csomag bejut (ezért is maradtak el a várt SSH-s logjaim...), tökmind1, h szerepel-e utána a DROP... ennek még utána kell járnom (most kiszedtem), de alakul ez!
ezt leszámítva viszont úgy tűnik minden klappol (engedélyek/tiltás/logok) + SSH-szűrésre találtam 1 kellemesebb algoritmust :)
- A hozzászóláshoz be kell jelentkezni
"1. részben megjelölt szabály hatására tényleg minden csomag bejut (ezért is maradtak el a várt SSH-s logjaim...), tökmind1, h szerepel-e utána a DROP"
Igen, mert a DROP csak azt dobja el ami nem felelt meg az időlimit meghatározásnak. Ami megfelelt az be is jutott, legyen bármi.
Tedd külön láncba.
pl.:
# vedekezesek tamadasok ellen
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "INVALID_SYN "
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# Syn-flood vedelem:
iptables -A INPUT -p tcp --syn -m state --state NEW -j syn_flood
iptables -A syn_flood -p tcp --syn -m limit --limit 1/s --limit-burst=4 -j RETURN
iptables -A syn_flood -p tcp --syn -m limit --limit 1/s --limit-burst=4 -j LOG --log-prefix "SYN_DROP "
iptables -A syn_flood -p tcp --syn -j DROP
Tehát ami megfelel az idő limitre az visszatér az eredeti láncba (INPUT) és halad tovább míg nem matchel valamire(pl ssh)
-
budacsik
- A hozzászóláshoz be kell jelentkezni
köszi szépen! és azt hiszem lassan kezdem átlátni a netfilter logikáját...
javításaid, meglátásaid immáron szokás szerint hasznosítom :)
a végső véltozat (amit valszeg fent is hagyok pastebin-en, hátha vkinek jól jön kezdő szkriptnek...) úgy néz ki, h kifogástalanul működik! de azért tesztelgetem majd még, ha nagyon unatkozom... a log-level benne maradt, h hátha egyszer átpakolom más levelre a LOG teljes elkülönítése céljából.
- A hozzászóláshoz be kell jelentkezni
Öhmm, működik az SSH lánc is? Mert úgylátom először definiálod rá a szabályokat, de csak utána küldesz rá csomagokat.
backlist szintúgy
Még egy észrevétel. Ha jól tudom az alapértelmezett loggolási szint a 4. Tehát nem kell megadni.
+1
#
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j LOG --log-prefix "XMAS-tree scan " --log-level 4
ezt csak loggolod
-
budacsik
- A hozzászóláshoz be kell jelentkezni
iptables -N ssh
iptables -A INPUT ... -j ssh
E kettő sorrendje számí,t minden más léníegtelen.
Azért jobb előbb rárakni a szabályokat, mert akkor már a legellső csomg esetén is érvényben vannak, nem csak azután,
hogy végre sikerült az összeset definiálni.
- A hozzászóláshoz be kell jelentkezni
Köszi!
Kicsit fura, mert elviekben fentről lefelé nézi a szabályokat, de ezek szerint ez borírja. (kivétel erősíti a szabályt) Engem nem zavar, inkább tartom ezután is a sorrendet :) Végülis ahogy írtad előnyösebb.
-
budacsik
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Már vagy 2 hete próbálok összerakni egy tűzfalat...de sajnos egyelőre nem túl sok sikerrel.
Már nem bírom tovább, és hozzátok fordulok segítségért.
Sajnos kezdő vagyok a témában. Pedig olvastam már egy rakás iptables example scriptet meg howto-t. Valami sohasem akar helyesen működni.
Konkrét példa:
adott egy szerver:
eth1.61 kulso fix ip
eth0 belso ip
ha ez a script fut le indulaskor akkor jo minden:
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables-restore < /root/myip
a "myip" konkretan igy nez ki:
# Generated by iptables-save v1.3.6 on Tue Feb 19 18:47:38 2008
*filter
:INPUT DROP [203:41765]
:FORWARD DROP [394:29935]
:OUTPUT ACCEPT [1580:212066]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22,80,3389,443 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -j ACCEPT
COMMIT
# Completed on Tue Feb 19 18:47:38 2008
# Generated by iptables-save v1.3.6 on Tue Feb 19 18:47:38 2008
*nat
:PREROUTING ACCEPT [9426:1250219]
:POSTROUTING ACCEPT [319:45799]
:OUTPUT ACCEPT [173:23755]
-A PREROUTING -i ! eth0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.100.2
-A POSTROUTING -o eth1.61 -j MASQUERADE
COMMIT
# Completed on Tue Feb 19 18:47:38 2008
Ezt nekem sikerult osszrakni,de ez ugye az alapnak az alapja, mindenfele vedelem nelkul.
Ha probalok (az itt lathato hozzaszolasok alapjan) lopni otletet mas scriptbol, akkor a szerver
belassul, ftp nem mukodik. Persze nem mintha a lopott otlet lenne rossz, hanem csak egyszeruen nekem nem akar mukodni az en verziomban. Legyszives segitsetek, meg ha nagyon primitiv hibakat is vetek. Valahol el kell kezdeni, de a HUP-on kivul nincs aki segítsen nekem. Koszonom!!!
A nem mukodo (es gondolom hibaktol hemzsego iptables mentesem):
# Generated by iptables-save v1.3.6 on Tue Mar 4 16:14:28 2008
*nat
:PREROUTING ACCEPT [875:122533]
:POSTROUTING ACCEPT [51:6496]
:OUTPUT ACCEPT [8:1546]
-A POSTROUTING -o eth1.61 -j MASQUERADE
COMMIT
# Completed on Tue Mar 4 16:14:28 2008
# Generated by iptables-save v1.3.6 on Tue Mar 4 16:14:28 2008
*filter
:INPUT DROP [1:52]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [176:24276]
:dosattack - [0:0]
:portscan - [0:0]
:security - [0:0]
:sinput - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -j security
-A INPUT -j dosattack
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j security
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 16/sec -j ACCEPT
-A FORWARD -p icmp -m icmp --icmp-type 8 -j DROP
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -i eth0 -p tcp -m multiport --dports 20,21,53,80,110,123,443 -m state --state NEW,RELATED -j ACCEPT
-A FORWARD -i eth0 -p udp -m multiport --dports 20,21,53,80,110,123,443 -m state --state NEW,RELATED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A dosattack -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 8/sec -j sinput
-A dosattack -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j LOG --log-prefix "FW: Syn-Flood attack (?) "
-A dosattack -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
-A dosattack -j sinput
-A security -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j LOG --log-prefix "FW: Xmas-tree scan (?) "
-A security -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -m state --state INVALID,NEW,RELATED,UNTRACKED -j LOG --log-prefix "FW: Null scan (?) "
-A security -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT
-A security -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "FW: PingofDeath attack (?) "
-A security -p icmp -m icmp --icmp-type 8 -j DROP
-A sinput -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "FW: hidded portscan (?) "
-A sinput -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A sinput -s 192.168.100.0/255.255.255.0 -i eth0 -p tcp -m multiport --dports 20,21,25,53,80,3128 -m state --state NEW -j ACCEPT
-A sinput -s 192.168.100.0/255.255.255.0 -i eth0 -p udp -m multiport --dports 20,21,25,53,80,3128 -m state --state NEW -j ACCEPT
-A sinput -p tcp -m tcp --dport 443 -j ACCEPT
-A sinput -p tcp -m tcp --dport 80 -j ACCEPT
-A sinput -p tcp -m tcp --dport 22 -j ACCEPT
-A sinput -p icmp -j ACCEPT
-A sinput -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Tue Mar 4 16:14:28 2008
---------------------------
A UNIX élt, él és élni fog!
- A hozzászóláshoz be kell jelentkezni
Szerintem indulj el a működő szkripteddel.
Majd egyessével tegyél be új szabályokat, és teszteld, mielőtt a következőt is betennéd.
És ha elakadsz egy konkrét dolognál írd ide.
Bocsi, de részemről elég fárasztó ezt átnézni sorról sorra, és így Te is jobban tanulsz.
-
budacsik
- A hozzászóláshoz be kell jelentkezni
Szerintetek egy ilyen generátorral milyen szintű tűzfalat lehet összerakni ?
Easy Firewall Generator for IPTables : http://debianszerver.hu/firewall/
- A hozzászóláshoz be kell jelentkezni
Köszönöm! Nagyon örülök már annak is, hogy egyáltalán kaphatok segítséget, ha elakadok valamivel.
Igazából azt szeretném elsődlegesen, hogy védjem a szervert mindenféle külső behatolástól.
---------------------------
A UNIX élt, él és élni fog!
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Én is kérnék egy kis segítséget iptables ügyben.
Otthonra csináltam egy kis scriptet, nagyobb részt innen a hupról meg egy két más helyről összetallózva, amit majd a routeren(WRT54GL, Tomato-val) szeretnék használni, egyenlőre a gépemen tesztelem.
Nagyjából működik is minden, de pl. bizonyos eldobott csomagokat nem logol.
Mondjuk a whois nem ment(tcp/43) vagy ha nem szabvány ftp porton akartam csatlakozni simán csak elszállt timeouttal, logban semmi.
Meg ha törlöm a láncok tartalmát(iptables -F), akkor az egész adatkommunikáció meghal, semmit nem lehet pingelni, router sem elérhető(connect: Network is unreachable).
/etc/init.d/networking restart vagy ifconfig eth0 up/down sem segít, reboot után jó.
Most meg egy reboot után azt csinálja, hogy lefut a script, de ezt a hibát adja:
iptables v1.3.8: Unknown arg `--dport'
Try `iptables -h' or 'iptables --help' for more information.
A rendszerem egy Debian testing.
Itt van maga a script:
#!/bin/sh
## otthoni tűzfal
## először törlünk minden szabályt.
iptables -F
iptables -X
iptables -Z
## alap policy
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
## INPUT szabályok.
iptables -A INPUT -i lo -j ACCEPT ## loopback -en engedélyezzük a forgalmat.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ## engedélyezzük befele, ami tőlünk származik.
iptables -A INPUT -p tcp --dport ssh -m limit --limit 3/m -j LOG --log-uid --log-prefix "SSH_ACCEPT: "
iptables -A INPUT -p tcp -s 192.168.1.1 --syn --dport ssh -m limit --limit 3/m -j ACCEPT
iptables -A INPUT -p tcp --syn --dport ssh -m recent --update --seconds 60 --hitcount 3 -j DROP
iptables -A INPUT -p tcp --syn --dport
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT ## kintről "ping" mehet.
iptables -A INPUT -p tcp --dport 54896:54897 -j ACCEPT ## torrent
iptables -A INPUT -p udp --dport 54896:54897 -j ACCEPT ## torrent
iptables -A INPUT -p tcp ! --syn -m state --state NEW -m limit --limit 2/min # uj kapcsolat
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP #nem syn-nel kezdodik, kulonben esetleg tamadas
iptables -A INPUT -j LOG --log-uid --log-prefix "INPUT_DROP: "
## OUTPUT szabályok.
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT ##kifele menő "ping" -re szükség lehet.
iptables -A OUTPUT -o lo -j ACCEPT ## loopback -en engedélyezzük a forgalmat.
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ## jóváhagyott kapcsolatok engedélyezése.
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT ## a DNS -re szükség van.
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT ## ntp mehet
iptables -A OUTPUT -p tcp --dport 123 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT ## http mehet.
iptables -A OUTPUT -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT ## https mehet
iptables -A OUTPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT ## ssh mehet.
iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT ## ftp control mehet
iptables -A OUTPUT -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT ## ftp data mehet
iptables -A OUTPUT -p tcp --dport 31337 -m state --state NEW,ESTABLISHED -j ACCEPT ## ftp
iptables -A OUTPUT -p tcp --dport 43 -m state --state NEW,ESTABLISHED -j ACCEPT ## whois
iptables -A OUTPUT -p tcp -d mail.chello.hu --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés SMTP
iptables -A OUTPUT -p tcp -d imap.gmail.com --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés IMAP4s
iptables -A OUTPUT -p tcp --dport 45761 -m state --state NEW,ESTABLISHED -j ACCEPT ## router távoli elérés
iptables -A OUTPUT -p tcp --dport 56732 -m state --state NEW,ESTABLISHED -j ACCEPT ## VNC
iptables -A OUTPUT -p tcp --dport 1863 -m state --state NEW,ESTABLISHED -j ACCEPT ## msn
iptables -A OUTPUT -p tcp --dport 6667 -m state --state NEW,ESTABLISHED -j ACCEPT ## irc
iptables -A OUTPUT -p tcp --dport 54896:54897 -m state --state NEW,ESTABLISHED -j ACCEPT ## torrent
iptables -A OUTPUT -p udp --dport 54896:54897 -m state --state NEW,ESTABLISHED -j ACCEPT ## torrent
iptables -A INPUT -j LOG --log-uid --log-prefix "OUTPUT_DROP: "
# FORWARD lanc
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 3/m --limit-burst 1 -j ACCEPT
Plusz kérdés, szerintetek a routeren is menni fog logolás?
Mert dmesg van, de amúgy a /tmp/var/log/messages fájlba logol.
Ja és légyszíves a válaszoknál vegyétek figyelembe, hogy nem vagyok egy guru, köszi. :)
- A hozzászóláshoz be kell jelentkezni
Szia,
A hibát emiatt a sor miatt adja: iptables -A INPUT -p tcp --syn --dport
Ennek itt semmi értelme nincs.
A -F után azért nem megy semmi, mert a default policyt az nem állítja át.
iptables -P OUTPUT ACCEPT; ...
hiányzik.
--
HUP Firefox extension
- A hozzászóláshoz be kell jelentkezni
Pár órája már ülök felette, ott elakartam kezdeni valamit írni, de úgy tűnik elmaradt.
Most vettem észre, hogy az OUTPUT láncnál is az INPUT dropjait logoltam, meg a router távoli elérését is a saját gépemről akartam megvalósítani, a belső háló már nem is jó. :))
Valóban a default policy volt a hibás, azt most ACCEPT-re állítottam, és minden lánc végére ment egy DROP, a logolás után, így törléskor rendben van és logol is mindent rendesen.
Köszi a segítséget!
- A hozzászóláshoz be kell jelentkezni
Még egy dolog jutott az eszembe.
iptables -A INPUT -p tcp --syn --dport ssh -m recent --update --seconds 60 --hitcount 3 -j DROP
Ez a sor ugye elvileg azt csinálja, hogy ha ugyanarról az IP-ről 3 sikertelen bejelentkezés van akkor kitiltja egy percre, igaz?
Amennyiben kihagyom az "--update --seconds 60" részt akkor véglegesen kitiltja az adott IP-t?
Ha igen, akkor a későbbiekben hogyan tudom újra engedélyzni?
- A hozzászóláshoz be kell jelentkezni
UP
Azt még sejtem is a man alapján, hogy letiltja fixen 3 próbálkozás után, de azt nem látom hogyan lehetne utána engedélyezni.
Vagy ahhoz, hogy letiltsa kellene utána ez a sor is "iptables -A INPUT -p TCP --syn --dport ssh -m recent --set -j ACCEPT"?
Bár ha jól értettem ez csak hozzáadja a forrás IP-t a listához.
- A hozzászóláshoz be kell jelentkezni
Én igy használom:
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 120 --hitcount 3 -j REJECT
Ezzel az SSH_2_perc_alatt_csak 3 kapcsolatot engedélyez! Nem kell nullázni semmit.
--
Desktop: 2.6.21-gentoo-r4 AMD Athlon(tm) 64 X2 Dual Core Processor 3800+
Laptop: 2.6.22-gentoo-r5 Mobile Intel(R) Pentium(R) 4 - M CPU 2.00GHz
- A hozzászóláshoz be kell jelentkezni
Mármint 3 kapcsolódási kísérletet 2 perc alatt, igaz?
De összesen vagy egy adott IP-ről?
Bocs a lámaságomért...
- A hozzászóláshoz be kell jelentkezni
Ez nehezebb lesz mint gondoltam.
Gépen belőttem faszán a tűzfalat, ment is minden, de ahogy felraktam a routerre összeomlott az egész, át kellett írni jó pár dolgot s őszintén szólva már totál belezavarodtam, hogy melyik láncon mit kell engedélyezni.
Most nagyjából minden megy, de a torrent nem hajlandó elindulni, a trackerekhez sem tud csatlakozni s nem vágom miért.
Itt a jelenlegi script, még eléggé gányolt verzió.
## otthoni t 171zfal
## el 151ször törlünk minden szabályt.
iptables -F
iptables -X
iptables -Z
## alap policy
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
## INPUT szabályok.
iptables -A INPUT -i lo -j ACCEPT ## loopback -en engedélyezzük a forgalmat.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ## engedélyezzük befele, ami t 151lünk származik.
iptables -A INPUT -p tcp ! --syn -m state --state NEW -m limit --limit 2/min # uj kapcsolat
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP #nem syn-nel kezdodik, kulonben esetleg tamadas
iptables -A INPUT -p tcp --dport ssh -m limit --limit 3/m -j LOG --log-uid --log-prefix "SSH_ACCEPT: "
iptables -A INPUT -p tcp -s 192.168.1.2 --syn --dport ssh -m limit --limit 3/m -j ACCEPT
iptables -A INPUT -p tcp -s 145.236.252.34 --syn --dport ssh -m limit --limit 3/m -j ACCEPT
iptables -A INPUT -p tcp -s 212.51.124.92 --syn --dport ssh -m limit --limit 3/m -j ACCEPT
iptables -A INPUT -p tcp --syn --dport ssh -m recent --update --seconds 60 --hitcount 3 -j DROP
iptables -A INPUT -p tcp --dport 45761 -m state --state NEW,ESTABLISHED -j ACCEPT ## router távoli elérés
iptables -A INPUT -p tcp --dport 56732 -m state --state NEW,ESTABLISHED -j ACCEPT ## VNC
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT ## kintr 151l "ping" mehet.
iptables -A INPUT -p tcp --dport 54896:54897 -j ACCEPT ## torrent
iptables -A INPUT -p udp --dport 54896:54897 -j ACCEPT ## torrent
iptables -A INPUT -p tcp -d kiszolgalo -m state --state NEW,ESTABLISHED -j ACCEPT ## ftp
iptables -A INPUT -p udp --dport 68 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.1.2 -j ACCEPT
iptables -A INPUT -p udp -s 192.168.1.2 -j ACCEPT
iptables -A INPUT -j LOG --log-uid --log-prefix "INPUT_DROP: "
iptables -A INPUT -j DROP
## OUTPUT szabályok.
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ## jóváhagyott kapcsolatok engedélyezése.
iptables -A OUTPUT -p tcp -d 192.168.1.2 --syn --dport ssh -m limit --limit 3/m -j ACCEPT
iptables -A OUTPUT -j LOG --log-uid --log-prefix "OUTPUT_DROP: "
iptables -A OUTPUT -j DROP
# FORWARD lanc
iptables -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT ## loopback -en engedélyezzük a forgalmat.
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ## jóváhagyott kapcsolatok engedélyezése.
iptables -A FORWARD -p udp --dport 53 -j ACCEPT ## a DNS -re szükség van.
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 123 -j ACCEPT ## ntp mehet
iptables -A FORWARD -p tcp --dport 123 -m state --state NEW -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT ## http mehet.
iptables -A FORWARD -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT ## https mehet
iptables -A FORWARD -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT ## ssh mehet.
iptables -A FORWARD -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT ## ftp control mehet
iptables -A FORWARD -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT ## ftp data mehet
iptables -A FORWARD -p tcp -d kiszolgalo -m state --state NEW,ESTABLISHED -j ACCEPT ## ftp
iptables -A FORWARD -p tcp --dport 43 -m state --state NEW,ESTABLISHED -j ACCEPT ## whois
iptables -A FORWARD -p tcp -d mail.chello.hu --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés SMTP
iptables -A FORWARD -p tcp --dport 993 -m state --state NEW,ESTABLISHED -j ACCEPT ## Levelezés IMAP4s
iptables -A FORWARD -p tcp --dport 1863 -m state --state NEW,ESTABLISHED -j ACCEPT ## msn
iptables -A FORWARD -p tcp --dport 6667 -m state --state NEW,ESTABLISHED -j ACCEPT ## irc
iptables -A FORWARD -p tcp --dport 54896:54897 -m state --state NEW,ESTABLISHED -j ACCEPT ## torrent
iptables -A FORWARD -p udp --dport 54896:54897 -m state --state NEW,ESTABLISHED -j ACCEPT ## torrent
iptables -A FORWARD -p tcp --dport 2710 -m state --state NEW,ESTABLISHED -j ACCEPT ## torrent trackerek
iptables -A FORWARD -p udp --dport 2710 -m state --state NEW,ESTABLISHED -j ACCEPT ## torrent trackerek
iptables -A FORWARD -j LOG --log-uid --log-prefix "FORWARD_DROP: "
iptables -A FORWARD -j DROP
Ha jól értelmeztem akkor minden a gépemtől érkező kapcsolatot engedélyezni kell, mert a routernek az INPUT-nak számít, amiket aztán a forward láncon továbbít a külvilágnak.
Az OUTPUT láncot csak akkor használja ha ő maga kezdeményez kapcsolatot a gépem vagy a külvilág felé.
Ez így stimmel?
Natolásra kellene nekem figyelni a tűzfal szintjén vagy azt a router elvégzi magától?
- A hozzászóláshoz be kell jelentkezni
Kezdjük a végéről! Ha jól értettem, ezek a szabályok a routerre kerülnének. A géped és a külvilág közötti forgalom nem érinti a routeren lévő INPUT és az OUTPUT láncot, csak a FORWARD-ot. Az INPUT-on és az OUTPUT-on csak a router által lokálisan generált illetve a kifejezetten neki címzett csomagok mennek át. Tehát ami a gépen az INPUT, OUTPUT láncokban biztosította a külső kommunikációt, az a routeren (csak) a FORWARD láncba kell hogy kerüljön.
Ebből az következik, hogy a fenti listából az INPUT-ból kivehető az VNC, torrent, FTP. Ha az internetelérés nem DHCP által kapott IP-n valósul meg, akkor bootpc sem fog jönni kívülről, belülről meg valószínűleg statikus IP-je van a routernek, így az nem kér IP-t. Ha viszont a router a belső hálózat számára DHCP szerver, akkor bootps kellene. Egyszóval csak a router menedzselésére használt protokollok maradjanak, plusz néhány egyéb szükséges dolog (DHCP). A TCP syn limites sorból nem hiányzik a target? Így csak számolod a csomagokat, utána meg eldobod. Nem --syn akart lenni "! --syn" helyett?
Az OUTPUT-ban most csak a géped felé indított SSH van engedélyezve, és az INPUT-ban engedett forgalomhoz tartozó visszirány. Ha esetleg a routert használnád name serverként, nem menne. Vagy például nem tudnál pingelni sem a routerből. A loopback forgalmat nem kellene tiltani.
A FORWARD láncban ha először kiengeded az ESTABLISHED állapotú kapcsolathoz tartozó csomagokat, akkor ezt a későbbieken már felesleges, elég csak a NEW-val foglalkozni. A loopback interfészről itt nem fog semmi sem kimenni. ICMP-ből is jó lenne többet átengedni, nem csak az echot. Az aktív FTP adatot is kezeli a RELATED. Az "## ftp" komment ellenére minden TCP forgalom át van engedve a "kiszolgalo" felé.
Általában érdemes megmondani a csomag forrását, célját, input vagy output interfészét, ami egyértelművé teszi az átengedni kívánt irányt, mert úgy nem olyan könnyű véletlenül kiskapukat nyitni. Ugye a 192.168.1.1 a router, és a 192.168.1.2 a mögötte lévő gép? A fenti tűzfal éppúgy átengedné például a HTTP-t úgy kifelé mint befelé kezdeményezve. Azért a feltételes mód, mert a megfelelő NAT-ok hiánya nélkül mégsem megy.
A NAT-olást valószínűleg szintén meg kell írni, de ezt ellenőrizheted a nat tábla szabályainak listázásával. Ha üres, akkor hiányzik. Kifelé SNAT vagy MASQUERADE, befelé - ha van publikus szolgáltatás a gépen - DNAT.
Ha valami nem megy, akkor viszonylag könnyű rájönni hogy mi hiányzik, mivel minden eldobott csomag megy a logba.
- A hozzászóláshoz be kell jelentkezni
Először is köszönöm a segítséget!
Igen, ezek a szabályok a routerre kerülnének.
INPUT láncból ftp-t, torrentet kivettem, de a VNC-nek maradnia kell, különben távolról hogyan csatlakozom a géphez?
UPC-nél vagyok, tőlük dhcp-vel kapom az IP-t így folyamatosan jönnek bootstrap üzenetek, ezért engedélyeztem az INPUT-ban, a belső hálón lévő gépek fix IP-t kapnak.
A --syn limites sorból valóban hiányzott a target, köszi, bár ha végiggondolon nem tudom kell-e egyáltalán az a sor, az utána lévő úgyis eldobja a nem syn-es csomagokat, a nem kívánt forgalom meg úgysem jut át a többi szabály miatt, nem?
OUTPUT-on loopbacket engedélyeztem és az 53-as portot is, valóban a router van megadva name servernek.
FORWARD javítva, ftp-nél azért van külön megadva egy kiszolgáló, mert ő a 31337-es porton kommunikál, azonban amikor teszteltem a gépen hiába engedélyeztem a portot, nem volt adatforgalmam tőle, csatlakozni tudtam rá, de pl. egy "ls" parancsra már nem jött válasz, azért lett így megoldva.
A legtöbb esteben nem fix se a forrás se a cél, ahol tudtam, ott igyekeztem megadni, de pl. amikor csak a google imap szervere felé engedélyeztem a 993-as portot nem kommunikált, amint töröltem a célt és csak a portot hagytam működött, viszont a 25-ösnél érdekes mód nem zavarja a cél megadása.
"Ugye a 192.168.1.1 a router, és a 192.168.1.2 a mögötte lévő gép?" Igen, így van.
Az interfészekkel viszont bajban vagyok, egész másképp működik látszólag mint a gépen.
ifconfig kimenete:
# ifconfig
br0 Link encap:Ethernet HWaddr 00:1C:10:88:56:71
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1157122 errors:0 dropped:0 overruns:0 frame:0
TX packets:1285335 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:228217809 (217.6 MiB) TX bytes:1345458877 (1.2 GiB)
eth0 Link encap:Ethernet HWaddr 00:1C:10:88:56:71
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2749077 errors:3 dropped:0 overruns:3 frame:3
TX packets:2406807 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:1628382191 (1.5 GiB) TX bytes:1593592113 (1.4 GiB)
Interrupt:4 Base address:0x1000
eth1 Link encap:Ethernet HWaddr 00:1C:10:88:56:73
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:2 Base address:0x5000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MULTICAST MTU:16436 Metric:1
RX packets:62 errors:0 dropped:0 overruns:0 frame:0
TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5297 (5.1 KiB) TX bytes:5297 (5.1 KiB)
vlan0 Link encap:Ethernet HWaddr 00:1C:10:88:56:71
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1157122 errors:0 dropped:0 overruns:0 frame:0
TX packets:1285334 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:232846581 (222.0 MiB) TX bytes:1350598707 (1.2 GiB)
vlan1 Link encap:Ethernet HWaddr 00:50:8D:F9:F3:E6
inet addr:86.101.4.240 Bcast:86.101.4.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1492 Metric:1
RX packets:1591955 errors:0 dropped:0 overruns:0 frame:0
TX packets:1121475 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1346053670 (1.2 GiB) TX bytes:242994974 (231.7 MiB)
Ebből elvileg az következik, hogy a br0-án kommunikál befele, a vlan1-en pedig kifele, de nem értem miért a vlan1-en és akkor mire van az eth0 és eth1?
Az OUTPUT-ban mindkettőt engedélyezni kell, mert mehet a külvilág fele is és a gépem fele is kapcsolat kezdeményezés, igaz?
INPUT-nál a br0-át kellene megadni, FORWARD-nál meg a vlan1-et?
NAT-oláshoz totál nem értek egyenlőre, de ha szükséges lesz majd utánaolvasok, egyenlőre bemásolom, hogy milyen szabályok vannak alapból a routerben.
# iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 10457 packets, 1083K bytes)
pkts bytes target prot opt in out source destination
0 0 DROP 0 -- vlan1 * 0.0.0.0/0 192.168.1.0/24
0 0 DNAT icmp -- * * 0.0.0.0/0 86.101.4.240 to:192.168.1.1
2 120 DNAT tcp -- * * 0.0.0.0/0 86.101.4.240 tcp dpt:8080 to:192.168.1.1:443
9 540 DNAT tcp -- * * 0.0.0.0/0 86.101.4.240 tcp dpt:22 to:192.168.1.1:22
0 0 DNAT tcp -- * * 0.0.0.0/0 86.101.4.240 tcp dpt:56732 to:192.168.1.2
0 0 DNAT udp -- * * 0.0.0.0/0 86.101.4.240 udp dpt:56732 to:192.168.1.2
3013 178K DNAT tcp -- * * 0.0.0.0/0 86.101.4.240 tcp dpts:54896:54897 to:192.168.1.2
742 36438 DNAT udp -- * * 0.0.0.0/0 86.101.4.240 udp dpts:54896:54897 to:192.168.1.2
6 360 DNAT tcp -- * * 0.0.0.0/0 86.101.4.240 tcp dpt:64561 to:192.168.1.2
Chain POSTROUTING (policy ACCEPT 3712 packets, 212K bytes)
pkts bytes target prot opt in out source destination
0 0 SNAT tcp -- * * 192.168.1.0/24 192.168.1.2 tcp dpt:56732 to:192.168.1.1
0 0 SNAT udp -- * * 192.168.1.0/24 192.168.1.2 udp dpt:56732 to:192.168.1.1
57 3420 SNAT tcp -- * * 192.168.1.0/24 192.168.1.2 tcp dpts:54896:54897 to:192.168.1.1
0 0 SNAT udp -- * * 192.168.1.0/24 192.168.1.2 udp dpts:54896:54897 to:192.168.1.1
0 0 SNAT tcp -- * * 192.168.1.0/24 192.168.1.2 tcp dpt:64561 to:192.168.1.1
4549 454K MASQUERADE 0 -- * vlan1 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 30 packets, 2034 bytes)
pkts bytes target prot opt in out source destination
# iptables -vnL
Chain INPUT (policy DROP 2660 packets, 398K bytes)
pkts bytes target prot opt in out source destination
0 0 DROP 0 -- br0 * 0.0.0.0/0 86.101.4.240
36 3686 DROP 0 -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
22946 1892K ACCEPT 0 -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
495 30357 ACCEPT 0 -- br0 * 0.0.0.0/0 0.0.0.0/0
8 517 ACCEPT 0 -- lo * 0.0.0.0/0 0.0.0.0/0
2 120 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:443
9 540 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.1 tcp dpt:22
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
373 22960 ACCEPT 0 -- br0 br0 0.0.0.0/0 0.0.0.0/0
0 0 DROP 0 -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
6195 335K TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 tcpmss match 1453:65535 TCPMSS set 1452
2058K 1365M ACCEPT 0 -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
7157 374K wanin 0 -- vlan1 * 0.0.0.0/0 0.0.0.0/0
5172 497K wanout 0 -- * vlan1 0.0.0.0/0 0.0.0.0/0
5172 497K ACCEPT 0 -- br0 * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 25337 packets, 3344K bytes)
pkts bytes target prot opt in out source destination
Chain wanin (1 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.2 tcp dpt:56732
0 0 ACCEPT udp -- * * 0.0.0.0/0 192.168.1.2 udp dpt:56732
4968 274K ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.2 tcp dpts:54896:54897
2183 99708 ACCEPT udp -- * * 0.0.0.0/0 192.168.1.2 udp dpts:54896:54897
6 360 ACCEPT tcp -- * * 0.0.0.0/0 192.168.1.2 tcp dpt:64561
Chain wanout (1 references)
pkts bytes target prot opt in out source destination
Nem tudom ez így megfelelő-e vagy bele kell vetnem magam a NAT rejtelmeibe? :)
A logolás még egy érdekes téma, elvileg minden lánc végén ott a szabály, de pl. amikor az imap szerverrel nem tudott kommunikálni a logok üresek voltak, a torrent szintén elszállt timeout-al, pedig a bejövő forgalomra használt és a trackerek elérését biztosító portok is engedélyezve voltak a FORWARD láncon, logokban szintén semmi, hogy miért nem tudott csatlakozni.
Nem értem, netán valamely más tábla szabályain akadna fenn?
De melyikén?
Végül bemásolom a jelenlegi scriptet:
## otthoni tuzfal
## eloszor torlunk minden szabalyt.
iptables -F
iptables -X
iptables -Z
## alap policy
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
## INPUT szabalyok.
iptables -A INPUT -i lo -j ACCEPT ## loopback -en engedelyezzuk a forgalmat.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ## engedelyezzuk befele, ami tolunk szarmazik.
iptables -A INPUT -p tcp --syn -m state --state NEW -m limit --limit 2/min -j ACCEPT # uj kapcsolat
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP #nem syn-nel kezdodik, kulonben esetleg tamadas
iptables -A INPUT -p tcp --dport ssh -m limit --limit 3/m -j LOG --log-uid --log-prefix "SSH_ACCEPT: "
iptables -A INPUT -p tcp -s 192.168.1.2 --syn --dport ssh -j ACCEPT
iptables -A INPUT -p tcp -s 145.236.252.34 --syn --dport ssh -j ACCEPT
iptables -A INPUT -p tcp -s 212.51.124.92 --syn --dport ssh -j ACCEPT
iptables -A INPUT -p tcp --syn --dport ssh -m --set -j ACCEPT
iptables -A INPUT -p tcp --syn --dport ssh -m recent --update --seconds 60 --hitcount 3 -j DROP
iptables -A INPUT -p tcp --dport 45761 -m state --state NEW -j ACCEPT ## router tavoli eleres
iptables -A INPUT -p tcp --dport 56732 -m state --state NEW -j ACCEPT ## VNC
iptables -A INPUT -p icmp -j ACCEPT ## kintrol "ping" mehet.
iptables -A INPUT -p udp --dport 68 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.1.2 -j ACCEPT
iptables -A INPUT -p udp -s 192.168.1.2 -j ACCEPT
iptables -A INPUT -j LOG --log-uid --log-prefix "INPUT_DROP: "
iptables -A INPUT -j DROP
## OUTPUT szabalyok.
iptables -A OUTPUT -o lo -j ACCEPT ## loopback -en engedelyezzuk a forgalmat.
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ## jovahagyott kapcsolatok engedelyezese.
iptables -A OUTPUT -p tcp -d 192.168.1.2 --syn --dport ssh -m limit --limit 3/m -j ACCEPT
iptables -A OUTPUT -s 192.68.1.1 -d 213.46.246.53:213.46.246.54 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -s 192.68.1.1 -d 213.46.246.53:213.46.246.54 -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -j LOG --log-uid --log-prefix "OUTPUT_DROP: "
iptables -A OUTPUT -j DROP
# FORWARD lanc
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT ## jovahagyott kapcsolatok engedelyezese.
iptables -A FORWARD -p udp --dport 53 -j ACCEPT ## a DNS -re szukseg van.
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 123 -j ACCEPT ## ntp mehet
iptables -A FORWARD -p tcp --dport 123 -m state --state NEW -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -m state --state NEW -j ACCEPT ## http mehet.
iptables -A FORWARD -p tcp --dport 443 -m state --state NEW -j ACCEPT ## https mehet
iptables -A FORWARD -p tcp --dport 22 -m state --state NEW -j ACCEPT ## ssh mehet.
iptables -A FORWARD -p tcp --dport 21 -m state --state NEW -j ACCEPT ## ftp control mehet
iptables -A FORWARD -p tcp --dport 20 -m state --state NEW -j ACCEPT ## ftp data mehet
iptables -A FORWARD -p tcp -d kiszolgalo -m state --state NEW -j ACCEPT ## ftp
iptables -A FORWARD -p tcp --dport 43 -m state --state NEW -j ACCEPT ## whois
iptables -A FORWARD -p tcp -d mail.chello.hu --dport 25 -m state --state NEW -j ACCEPT ## Levelezes SMTP
iptables -A FORWARD -p tcp --dport 993 -m state --state NEW -j ACCEPT ## Levelezes IMAP4s
iptables -A FORWARD -p tcp --dport 1863 -m state --state NEW -j ACCEPT ## msn
iptables -A FORWARD -p tcp --dport 6667 -m state --state NEW -j ACCEPT ## irc
iptables -A FORWARD -p tcp --dport 54896:54897 -m state --state NEW -j ACCEPT ## torrent
iptables -A FORWARD -p udp --dport 54896:54897 -m state --state NEW -j ACCEPT ## torrent
iptables -A FORWARD -p tcp --dport 2710 -m state --state NEW -j ACCEPT ## torrent tracker
iptables -A FORWARD -p udp --dport 2710 -m state --state NEW -j ACCEPT ## torrent tracker
iptables -A FORWARD -j LOG --log-uid --log-prefix "FORWARD_DROP: "
iptables -A FORWARD -j DROP
- A hozzászóláshoz be kell jelentkezni
"Igen, ezek a szabályok a routerre kerülnének. INPUT láncból ftp-t, torrentet kivettem, de a VNC-nek maradnia kell, különben távolról hogyan csatlakozom a géphez?"
Pont ugyanemiatt vehető ki a VNC is, mivel nem a routert szeretnéd elérni VNC-vel, hanem a routeren keresztül a gépet, ez pedig az FTP-hez hasonlóan ugyanúgy nem INPUT, hanem FORWARD forgalom. A -p tcp -s 192.168.1.2 --syn --dport ssh -j ACCEPT felesleges, ha utána -p tcp -s 192.168.1.2 -j ACCEPT következik.
Az interfészek ennek alapján:
eth0: internal interface between CPU and the 6-port switch
eth1: Wireless LAN
vlan0: wired LAN ports
vlan1: wired WAN port
br0: internal LAN bridge (configurable) for wired LAN and Wireless LAN
Tehát a LAN-ra a WLAN-nal együtt a br0, a WAN-ra a vlan1 használható.
Példa és javaslat arra, amit a szabályok irányának egyértelműsítéséről írtam. Hogy az INPUT-ban az ICMP-t beengedő szabály a mellette lévő megjegyzésnek megfeleljen, vagy ha például nincs a gépen webszerver, és ha van.
iptables -A INPUT -p icmp -j ACCEPT ## kintrol "ping" mehet.
iptables -A FORWARD -p tcp --dport 80 -m state --state NEW -j ACCEPT ## http mehet.
helyett lehet:
iptables -A INPUT -i vlan1 -p icmp -j ACCEPT ## kintrol "ping" mehet.
iptables -A FORWARD -i br0 -p tcp --dport 80 -m state --state NEW -j ACCEPT ## http mehet belulrol kifele.
iptables -A FORWARD -i vlan1 -p tcp -d 192.168.1.2 --dport 80 -m state --state NEW -j ACCEPT ## http johet kivulrol befele.
Az OUTPUT-ban nem látom értelmét a routerből a gép felé kezdeményezett SSH limitálásának.
A FORWARD láncon keresztülmenő forgalomról el kell dönteni, hogy mit szolgáljon. Most mindkét irányba kezdeményezett kapcsolatot enged, de csak felsorolt protokollokon és potokon. Biztos ez a cél? Nem az, hogy bentről kifelé minden mehessen, de kintről befelé csak néhány szükséges? Ha ezt szeretnéd, akkor megoldás lehet ez:
iptables -A FORWARD -i br0 -m state --state NEW -j ACCEPT
Ezután pluszban csak a kívülről befelé kezdeményezetteket kell engedélyezni, illetve előtte - ha vannak -, a kimenő kivételeket tiltani. Így ha nem fut a gépeden kívülről is használható HTTP, HTTPS, web, FTP, IMAP, NTP, IRC, whois szerver, ezeket a szabályokat ki lehet venni. Ha viszont az a cél, hogy a megadottakon kívül ne lehessen más módon belülről sem elérni külső (pl. POP3) szervert, akkor jó a mostani szabály is. Egy másik kérdés, hogy az eredeti tűzfalszabály-struktúrát ki akarod-e iktatni. Ha igen, akkor mehet minden odavaló a FORWARD láncba, ha nem, akkor érdemes a wanin és wanout láncok alá betenni.
A fenti iptables -t nat -vnL alapján a bentről jövő forgalmat source NAT-olja a WAN címre, így kifelé menni fog. A géped publikus szolgáltatásait, portjait be kell NAT-olni a 192.168.1.2-re, ehhez a PREROUTING lánc DNAT-ja használható (pl.:
iptables -i vlan1 -t nat -A PREROUTING -p ... --destination-port ... -j DNAT --to-destination 192.168.1.2
).
- A hozzászóláshoz be kell jelentkezni
Köszi, egy-két dolgogra én is rájöttem közben, de párat ismét sikerült megvilágítanod. :)
Azonban egyenlőre megdölni látszik a routeres tűzfel projekt, emiatt.
Ha sikerülne megoldani, akkor beleírnék még egy-két változást a javaslataid alapján, azonban ha nem jön össze akkor csak az INPUT lánc lesz korlátozva routeren, a többi pedig a gépen.
Amúgy FORWARD-nál szerintem jobb ha bentről is van szűrve, pl. hogy spamelés ne mehessen program által létrehozott smtp szerverrel vagy spyware progi ne tudjon adatokat küldeni akármelyik porton.
"Egy másik kérdés, hogy az eredeti tűzfalszabály-struktúrát ki akarod-e iktatni"
Nem igazán tudom milyen struktúrára gondolsz...
Annyiról lenne szó, hogy a FORWARD lánc alatt szedjem szét mi megy a wanra ki és mi jön befelé és ezeknek hozzak létre 2 külön láncot?
- A hozzászóláshoz be kell jelentkezni
sziasztok! én http://cvk.hu/tuzfal/ipfw ezt használom tűzfal scriptnek, de a torrentet sehogy nem tudom működésre bírni. tegnap óta szenvedek a tűzfal beállítással, a google a p2p-iptables keresésre olyat dob ki, hogy hogy kell letiltani...na az nekem megy alapból. :D rtorrentet használok, beállítottam a konfig fájlba, hogy csak a 6890-6895 terjedő portokat hasznája. tudna valaki valami segítséget adni? köszi
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
Egy gatewayen menne a lenti tűzfal script, ami működik, de ilyenekkel szorja a kern.log-t:
Apr 22 17:01:17 IBM-Server FORWARD_DROP: IN=eth2 OUT=eth3 SRC=192.168.1.74 DST=84.1.109.74 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=63895 DF PROTO=TCP SPT=3212 DPT=28554 WINDOW=65535 RES=0x00 SYN URGP=0
Apr 22 17:01:17 IBM-Server FORWARD_DROP: IN=eth2 OUT=eth3 SRC=192.168.1.74 DST=85.186.2.86 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=63896 DF PROTO=TCP SPT=3214 DPT=16488 WINDOW=65535 RES=0x00 SYN URGP=0
Apr 22 17:01:18 IBM-Server FORWARD_DROP: IN=eth2 OUT=eth3 SRC=192.168.1.74 DST=145.236.126.69 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=64200 DF PROTO=TCP SPT=3211 DPT=10211 WINDOW=65535 RES=0x00 SYN URGP=0
Apr 22 17:01:22 IBM-Server FORWARD_DROP: IN=eth2 OUT=eth3 SRC=192.168.1.74 DST=85.66.101.127 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=65054 DF PROTO=TCP SPT=3219 DPT=62675 WINDOW=65535 RES=0x00 SYN URGP=0
Apr 22 17:01:22 IBM-Server FORWARD_DROP: IN=eth2 OUT=eth3 SRC=192.168.1.74 DST=86.101.150.158 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=65055 DF PROTO=TCP SPT=3220 DPT=42091 WINDOW=65535 RES=0x00 SYN URGP=0
Apr 22 17:01:25 IBM-Server FORWARD_DROP: IN=eth2 OUT=eth3 SRC=192.168.1.74 DST=86.101.150.158 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=65534 DF PROTO=TCP SPT=3220 DPT=42091 WINDOW=65535 RES=0x00 SYN URGP=0
Apr 22 17:01:41 IBM-Server FORWARD_DROP: IN=eth2 OUT=eth3 SRC=192.168.1.74 DST=84.3.131.116 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=3380 DF PROTO=TCP SPT=3225 DPT=15312 WINDOW=65535 RES=0x00 SYN URGP=0
Mitől lehet?
Továbbá érdekelne, hogy működése mellett, biz.tech szempontból is jó lesz-e ez a script? (gw-re még nem raktam tűzfalat)
A legfontosabb: jelenleg koliban teszteljük, később adsl-en lesz. Elég csak a KULSO_ETH=ppp0-ra átirni?
#!/bin/sh
echo "Starting firewall"
BELSO_ETH=eth2
KULSO_ETH=eth3
iptables -Z
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
echo "1" > /proc/sys/net/ipv4/ip_forward # IP forwarding bekapcsolása
echo "1" >/proc/sys/net/ipv4/tcp_syncookies # DOS vedelem
echo "1" >/proc/sys/net/ipv4/conf/all/rp_filter # Source Address Verification
# INPUT lanc
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $BELSO_ETH -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $KULSO_ETH -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $KULSO_ETH -p tcp --dport 22 -m limit --limit 3/m -j LOG --log-prefix "SSH_ACCEPT: "
iptables -A INPUT -i $KULSO_ETH -p tcp -m multiport --dport 21,80 -j ACCEPT
iptables -A INPUT -i $BELSO_ETH -p tcp --syn -s 192.168.1.0/8 -dport 139 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 3/m --limit-burst 1 -j ACCEPT
iptables -A INPUT -j LOG --log-prefix "INPUT_DROP: "
# OUTPUT lanc
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT # dns
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT # dns
# iptables -A OUTPUT -o $BELSO_ETH -j ACCEPT
# iptables -A OUTPUT -o $KULSO_ETH -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dport 20,21,22,80,1863,6667,1021 -j ACCEPT
iptables -A OUTPUT -j LOG --log-prefix "OUTPUT_DROP: "
# FORWARD lanc
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 3/m --limit-burst 1 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0/8 --destination-port 80 -j REDIRECT --to-ports 3128 # squid
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu # packet fregmentálódásra
iptables -A FORWARD -j LOG --log-prefix "FORWARD_DROP: "
# NAT
iptables -t nat -A POSTROUTING -o $KULSO_ETH -s 192.168.1.0/8 -j MASQUERADE
- A hozzászóláshoz be kell jelentkezni
"tűzfal script, ami működik"
Biztos hogy úgy működik ahogy szeretnéd, vagy csak a webet próbáltad ki a transzparens proxyn keresztül?
A log azért keletkezik, illetve ezek a logolt csomagok azért kerülnek eldobásra, mert a FORWARD láncon nincsenek kiengedve a belső hálózat felől induló kapcsolatok (NEW).
Az OUTPUT lánc szabályai teljesen feleslegesek illetve a logolás félrevezető az ACCEPT default policy mellett.
Az MSS kezelése kétszer szerepel.
Mivel az ACCEPT terminál, az SSH csomagok elfogadása után már nem lesz logolás. A logolást is érdemesebb lenne csak a SYN-re korlátozni, mert így hamar teleírja a logot.
Ha a belső hálózat felől nincs védve a tűzfal, a bentről kifelé való pingelést szerintem nem kellene korlátozni, ellenben néhány más ICMP-típust illene átengedni.
Ha már a tűzfalon Samba is megy, akkor érdemes kinyitni a TCP/445-öt is a TCP/139 mellett. De ennek sincs értelme, mivel előzőleg belülről már át lett engedve.
"Elég csak a KULSO_ETH=ppp0-ra átirni?"
Igen. Vagy ha nem biztos, hogy "ppp0" lesz, akkor "ppp+"-ra.
- A hozzászóláshoz be kell jelentkezni
"Biztos hogy úgy működik ahogy szeretnéd, vagy csak a webet próbáltad ki a transzparens proxyn keresztül?"
web, ftp, msn, ssh megy kifele, azért is furcsáltam.
"A log azért keletkezik, illetve ezek a logolt csomagok azért kerülnek eldobásra, mert a FORWARD láncon nincsenek kiengedve a belső hálózat felől induló kapcsolatok (NEW)."
ilyesmi lenne a megoldás?
iptables -A FORWARD -i $BELSO_ETH -m state --state NEW -j ACCEPT
szerk.: úgy néz ki jó lett, mert ezzel a sorral már nincs forward_drop üzenet.
"Az MSS kezelése kétszer szerepel."
Igaz, köszönöm:)
SSH-t, Sambat, icmp-t köszi, javitom őket.
PPP-vel ezek szerint nem lesz gond, remek!
- A hozzászóláshoz be kell jelentkezni
Itt az enyém, egy klaszikus LAMP szervert fog védeni.
A szerver egy VPS eddig nem volt rajta semmi publikus.
Ezután egy .hu domain lesz rajta.
Kis magyarázat.
A black_list láncot egy cron szkript frissiti egy fájlból.
A wan_net_ssh és wan_net_private láncokat port kopogtató démon intézi.
Nyilván még messze nincs kész.
Arra lennék kiváncsi hogy az alap felépités logikailag helyes e.
Köszönöm.
#!/bin/bash
wan_interface=eth0
#lan_interface=eth1
wan_address=192.168.3.173
#lan_address=192.168.3.173
#ip_cim=192.168.3.173
iptables -F
iptables -X
iptables -Z
iptables -P FORWARD DROP
iptables -P INPUT DROP
#A fekete lista szabalyai
#A fekete lista vegen minden el nem dobott csomag visszater az wan_net lancba
iptables -N black_list
iptables -A black_list -j RETURN
#Letrehozzut a wan_net lancot
iptables -N wan_net
#Letrehozzut a wan_net_icmp lancot
iptables -N wan_net_icmp
iptables -A wan_net_icmp -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A wan_net_icmp -p icmp --icmp-type echo-request -j LOG --log-prefix "FW: PingofDeath attack (?) "
iptables -A wan_net_icmp -p icmp --icmp-type echo-request -j REJECT
#Letrehozzut a wan_net_ssh lancot
iptables -N wan_net_ssh
iptables -A wan_net_ssh -s 192.168.3.57 -j ACCEPT
iptables -A wan_net_ssh -j REJECT --reject-with icmp-host-unreachable
#Letrehozzut a wan_net_private lancot
iptables -N wan_net_private
iptables -A wan_net_private -j REJECT --reject-with icmp-host-unreachable
#�tengedj�k a lo interfacet
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#Atadjuk a wan_net tartalmat elemzesre a black_list lancnak
iptables -A wan_net -j black_list
#Megvizsgaljuk hogy tortent e cim hamisitast
iptables -A wan_net -s 127.0.0.1 -j DROP
#iptables -A wan_net -s $lan_address -j DROP
#Az icmp forgalmat levalasztjuk wan_net lancrol
iptables -A wan_net -p icmp -j wan_net_icmp
iptables -A wan_net -p tcp --syn -m limit --limit 8/s -j ACCEPT
iptables -A wan_net -p tcp --syn -j DROP
## DoS elleni vedelem bekapcsolva ...
iptables -A wan_net -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#ssh forgalmat atiranyitjuk a wan_net_ssh lancba
iptables -A wan_net -p tcp --dport 22 -j wan_net_ssh
#Adadjuk a maganhasznalati forgalmat a wan_net_private lancnak
iptables -A wan_net -p tcp --dport 24340 -j wan_net_private
iptables -A wan_net -p tcp --dport 232431 -j wan_net_private
iptables -A wan_net -p tcp --dport 14310 -j wan_net_private
iptables -A wan_net -p tcp --dport 14345 -j wan_net_private
iptables -A wan_net -p tcp --dport 13213 -j wan_net_private
iptables -A wan_net -p tcp --dport 80 -j ACCEPT
iptables -A wan_net -p tcp --dport 25 -j ACCEPT
iptables -A wan_net -j DROP
# felol jon es nem a mi ipcimunk a celja
iptables -A INPUT -i $wan_interface -d ! $wan_address -j DROP
#A wan interface forgamat a wan_net lancba kuldjuk
iptables -A INPUT -i $wan_interface -j wan_net
- A hozzászóláshoz be kell jelentkezni
Az a syn limit biztos jó helyen van ott? Ezzel minden, nem a 192.168.3.57-ről jövő új TCP-kapcsolatot limitálsz. Elképzelhető, hogy a tervezett terhelésre elég a 8 új kapcsolat másodpercenként, de ezt külső körülmények is befolyásolják. Az OUTPUT láncra felesleges szabályt írni, mivel a default policy ACCEPT. Az ICMP-ből miért csak az echo request van beengedve? Mi történik az erről a gépről kezdeményezett kapcsolatok visszajövő forgalmával? Javasolnám a state modul használatát.
- A hozzászóláshoz be kell jelentkezni
Lehet hogy túlzás a syn.
Még nincs kész nyilván még nem a végleges.
Sajnos a virtuális szerver nem támogatja a state modult.
- A hozzászóláshoz be kell jelentkezni
Helló mindenkinek!
SZükségem lenne egy kis segítségre iptables témában:
A belső hálón lévő Tomcat felületét szeretném elérhetővé tenni kívülről.
Az idevágó részlet a scriptből:
iptables -F
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i eth0 -p tcp -d xxx.xxx.13.50 --dport 22 -j ACCEPT
...
iptables -A INPUT -i eth0 -p tcp -m state --state NEW,ESTABLISHED -d xxx.xxx.13.50 --dport 18080 -j LOG --log-prefix "INPUT " --log-level 0
iptables -A INPUT -i eth0 -p tcp -m state --state NEW,ESTABLISHED -d xxx.xxx.13.50 --dport 18080 -j ACCEPT
iptables -A FORWARD -i eth1 -p tcp -d xxx.xxx.64.223 --dport 18080 -j LOG --log-prefix "FORWARD " --log-level 0
iptables -A FORWARD -i eth1 -p tcp -d xxx.xxx.64.223 --dport 18080 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp -d xxx.xxx.13.50 --dport 18080 -j LOG --log-prefix "PREROUTING " --log-level 0
iptables -t nat -A PREROUTING -i eth0 -p tcp -d xxx.xxx.13.50 --dport 18080 -j DNAT --to-destination xxx.xxx.64.223:18080
iptables -t nat -A POSTROUTING -o eth1 -s xxx.xxx.64.223 -d 0/0 -j LOG --log-prefix "POSTROUTING " --log-level 0
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.64.223 -d 0/0 -j SNAT --to-source 213.163.13.50
...
echo 1 > /proc/sys/net/ipv4/ip_forward
De ez így nem igazán mükszik, és logban sem látszik semmi. Aki tud, kérem segítsen....
- A hozzászóláshoz be kell jelentkezni
Ha jól gondolom, az eth0 a külső interfész. Ekkor a FORWARD láncban --sport kellene. Ez a forgalom nem érinti az INPUT láncot, tehát felesleges, viszont a FORWARD-on át kellene engedni mindkét irányba. Bár jelenleg az ACCEPT default policy miatt úgyis átmegy. A POSTROUTING szintén nem kell.
- A hozzászóláshoz be kell jelentkezni
Sajnos így sem működik, a Firefox ezt válaszolja:
Firefox can't establish a connection to the server at xxx.xxx.13.50:18080.
A TELJES SCRIPT így néz ki, (nem én írtam):
export LAN=eth1
export WAN=eth0
iptables -F
iptables -t nat -F
iptables -A INPUT -i eth0 -p tcp -d xxx.xxx.13.50 --dport 8080 -j DROP
iptables -A FORWARD -i ${LAN} -s xxx.xxx.64.0/24 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d xxx.xxx.64.0/24 -j ACCEPT
...
#TOMCAT
iptables -A FORWARD -i eth1 -p tcp -s xxx.xxx.13.50 --sport 18080 -j LOG --log-prefix "FORWARD " --log-level 0
iptables -A FORWARD -i eth1 -p tcp -s xxx.xxx.13.50 --sport 18080 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp -d xxx.xxx.13.50 --dport 18080 -j LOG --log-prefix "PREROUTING " --log-level 0
iptables -t nat -A PREROUTING -i eth0 -p tcp -d xxx.xxx.13.50 --dport 18080 -j DNAT --to-destination xxx.xxx.64.223:18080
echo 1 > /proc/sys/net/ipv4/ip_forward
- A hozzászóláshoz be kell jelentkezni
Jelen állás szerint a "#TOMCAT" alatti FORWARD szabályok feleslegesek a felette lévők miatt, azok ugyanis átengednek mindent. A DNAT jónak tűnik.
Biztosan hallgat a Tomcat a TCP/18080-on? Belső hálózatról működik? A default route a tűzfal eth1-ének az IP-jére mutat?
A 213.163.13.50 a tűzfal külső IP-je, vagy egy külön szabad IP? Fel van véve az eth0-ra aliasként, vagy van rá külön route?
Logolni szerintem a bejövő csomagokat érdemesebb, de most ez nem befolyásolja a működést.
- A hozzászóláshoz be kell jelentkezni
FORWARD szabály kivéve. Belső hálón hallgat a TOMCAT. A default route el volt állítva, beálítottam, mire a szerver nem fogad el semmiféle kapcsolódást háló felől. Egy külsős cég állította be, nem a mi felügyeletünk alá tartozik. 213. a tűzfal külső IP-je.
Fel van véve az eth0-ra aliasként, vagy van rá külön route? <--ezt itt nem igazán értem, hogy mit akarsz, kérlek pontosítsd
- A hozzászóláshoz be kell jelentkezni
"Fel van véve az eth0-ra aliasként, vagy van rá külön route? <--ezt itt nem igazán értem, hogy mit akarsz, kérlek pontosítsd"
A kívülről érkező csomagnak el kell jutnia a tűzfal külső interfészére, ez pedig akkor fog megtörténni, ha a tűzfal válaszol az adott IP-re vonatkozó ARP-kérésre, vagy rá van route-olva a tűzfal külső IP-jére. Ha például a tűzfal külső IP-jének maszkja /29, akkor:
1.) a tűzfal külső IP-jére menő forgalmat DNAT-olod
2.) a tűzfal külső IP-je és a DNAT-os IP különbözik:
2.a) a tűzfal külső interfészére felveszed a DNAT-os IP-t aliasként
2.b) a tűzfal előtt lévő eszközről (pl. szolgáltatói vagy saját router) a DNAT-os IP-t a tűzfal külső IP-jére route-olod
"Belső hálón hallgat a TOMCAT."
Tehát a tűzfalról (illetve a belső hálózat valamely tagjáról) rá lehet telnetelni a 18080-as portra?
"A default route el volt állítva, beálítottam, mire a szerver nem fogad el semmiféle kapcsolódást háló felől."
A belső hálóról sem? Ott nem befolyásolhat semmi a default route.
Javasolnék egy tcpdumpot a külső és a belső interfészen egyaránt. Ez megmutatja, hogy kintről odaérkezik-e a csomag, átmegy-e a tűzfalon, illetve a válasszal mi történik:
tcpdump -i eth0 -nvvv -s 1500 port 18080 or icmp
tcpdump -i eth1 -nvvv -s 1500 port 18080 or icmp
Továbbá nézzük meg a számlálóértékeket is:
iptables -nvL FORWARD
iptables -t nat -nvL PREROUTING
- A hozzászóláshoz be kell jelentkezni
subscribe
---
Ami a windowsban szarrágás, az linuxban hegesztés.
Ha megszeretted a windowst, tanuld meg használni!
A linux igenis felhasználó-, és NEM idiótabarát.
A linuxot mi irányítjuk, a windows minket irányít.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
( emre33 | 2006. július 25., kedd - 19:28 )
- A hozzászóláshoz be kell jelentkezni
.
- A hozzászóláshoz be kell jelentkezni
-
- A hozzászóláshoz be kell jelentkezni
És? Lejárt a szavatossága, vagy mi? :)
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
+2
- A hozzászóláshoz be kell jelentkezni
Milyen paranccsal lehet egy adott portra érkező kérést egy másik ip-re átirányítani? Mindkét IP külső IP, semmilyen belső hálózat nincs.
Tehát a célom az, hogy ha valaki az egyik Interneten levő szerverem 21-es portjára akar csatlakozni, akkor a szerver a kérést passzolja át egy másik Interneten közvetlenül levő szerver szintén 21-es portjára úgy, hogy a felhasználó ebből semmit se lásson.
Tehát a cél, hogy a tényleges szerver IP-je rejtve legyen.
Köszi
- A hozzászóláshoz be kell jelentkezni
Szerintem DNAT, massal ilyesmit nem nagyon lehet megcsinalni. Viszont a komplett forgalom rajtad is at fog menni.
Viszont, ha a kerdes tenyleg FTP, akkor nagyon megszivtad, azt nem lehet atiranyitani egyszeruen. Nem tudod, hogy milyen portra fogja a kovetkezo kerest kuldeni. Jobban jarsz, ha kozlod a felhasznaloval az uj IP cimet. Ez nem lerazas, tenyleg nagy szopas FTP-t atiranyitani.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
"Szerintem DNAT, massal ilyesmit nem nagyon lehet megcsinalni. Viszont a komplett forgalom rajtad is at fog menni."
Nem elég a DNAT, kelleni fog az SNAT is mellette.
"ha a kerdes tenyleg FTP, akkor nagyon megszivtad, azt nem lehet atiranyitani egyszeruen. Nem tudod, hogy milyen portra fogja a kovetkezo kerest kuldeni."
Ezért van a NAT helper modul.
- A hozzászóláshoz be kell jelentkezni
"Ezért van a NAT helper modul."
Ami nagyon jo, ha tuzfalad van, azonban itt nem errol van szo. Rendes SNAT/DNAT-hoz mindenkepp meg kell hataroznod _explicite_ azokat a portokat, amiket atiranyitasz. Ez FTP eseteben _lehetetlen_, es itt nem segit semmilyen helper modul.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
"ha tuzfalad van, azonban itt nem errol van szo"
Ezt nem igazán értem. Ez a topik a Linux-haladó kategóriában az "iptables script- Átnéznétek?" címet viseli. A man iptables szerint pedig: "iptables -- administration tool for IPv4 packet filtering and NAT".
Holcam azt kérdezte, hogyan tudja megoldani. Most meg azon vitatkozunk, hogy a Linux netfilter "rendes SNAT/DNAT" vagy nem? A kérdés az, hogy működik-e. A válasz pedig az, hogy igen, helyesen működik az DNAT-SNAT alapú átirányítás FTP protokollra is.
"Rendes SNAT/DNAT-hoz mindenkepp meg kell hataroznod _explicite_ azokat a portokat, amiket atiranyitasz."
A "rendes" jelzőt nem tudom megfelelően értelmezni. Nem kell explicite. Az implicit módon való követést teszi lehetővé a helper (NAT és connection tracking). Attól, hogy te nem tekinted a helpereket a netfilter - és ilyen módon a tűzfal és a NAT - részének, még a netfilter részei.
Mennyire beszélünk el egymás mellett? :)
- A hozzászóláshoz be kell jelentkezni
Kb nagyon.
Egy portforwardhoz (mert ez a kerdes valojaban) a kovetkezot kell tenni iptables alatt (egybol iptables-save formatumot hasznalok, mert az rovidebb):
*filter
-A INPUT -m tcp -p tcp --dport 21 -j ACCEPT
-A FORWARD -m tcp -p tcp --dport 21 -j ACCEPT
*nat
-A PREROUTING -m tcp -p tcp --dport 21 -j DNAT --to-destination 192.168.2.5
Ezert mondtam, hogy explicite meg kell adni a portokat. Meg ha az INPUT es FORWARD mezoket ki is hagyom, a DNAT-hoz mindenkepp meg kell adni explicite a portot amit atiranyitasz (nyilvan Holcam-nak nem cel az, hogy a teljes fele iranyulo mindenfele forgalmat atiranyitsa a masik szerver fele, emiatt mindenkepp meg kell mondani a tuzfalnak, hogy mit es merre iranyitson).
Itt az a kerdes, hogy a 21-es port atiranyitasa eleg-e ahhoz, hogy a NAT helper modul beinduljon, es a rakovetkezo, random portra erkezo csomagot is atdobja a masik gep fele. Mert szerintem nem.
Ja, es ha netfilter alatt a -j REDIRECT -re gondolsz, megsugom, hogy az csak egy gepen beluli portatiranyitas mellett mukodik.
Egyebkent szerintem fuss neki megeccer a kommentemnek, par dolgot sikerult benezned. Senki nem vitatkozik azon, hogy a Linux netfilter mennyire rendes, valamint senki nem kerdojelezte meg, hogy az iptables mire valo.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
"Itt az a kerdes, hogy a 21-es port atiranyitasa eleg-e ahhoz, hogy a NAT helper modul beinduljon, es a rakovetkezo, random portra erkezo csomagot is atdobja a masik gep fele. Mert szerintem nem."
De elég, éppen ez az egész értelme. Méghozá így:
iptables -t nat -A PREROUTING -p tcp -d 1.1.1.1 --dport 21 -j DNAT --to-destination 2.2.2.2
iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 21 -j SNAT --to-source 1.1.1.1
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -d 2.2.2.2 --dport 21 -j ACCEPT
, ahol 1.1.1.1 a tűzfal IP-je, 2.2.2.2 az FTP szerver IP-je. (Moduláris kernel estén az nf_nat_ftp modul betöltése szükséges.)
"Ja, es ha netfilter alatt a -j REDIRECT -re gondolsz, megsugom, hogy az csak egy gepen beluli portatiranyitas mellett mukodik."
Nem arra gondoltam, lásd fent.
"Senki nem vitatkozik azon, hogy a Linux netfilter mennyire rendes"
Ezért mondtam az előbb, hogy nem tudtam hova tenni a rendes jelzőt. A lényeg az belőle, hogy te azt mondtad, mindenképpen kell porttartomány megadása az natoláshoz, én pedig azt mondtam, hogy az a helperek feladata normális esetben. Helper használata esetén csak a control connection portját kell a tűzfalszabályba beírni explicite.
- A hozzászóláshoz be kell jelentkezni
Köszi, ez a változat teljesen működik. Hogyan néz ki amúgy a fenti beállítás, ha más a cél és a forrás port (80-as portról 8080-ra menne)?
A kérdés amúgy nem feltétlen az FTP-ről szól. Pontosabban a 80-as port kell mindenképp (webszerver), és az FTP is. Az egyáltalán nem gond, és ez is a cél, hogy a tűzfalon (1. szerveren) átmenjen minden forgalom.
Köszönöm az eddigi segítségeteket. Ha simán át tudom irányítani a fenti parancsokkal a 21-es és 80-as portot, már jó vagyok, erre pedig teljesen jó a válasz. Esetleg még a másik IP másik portjára irányítás?
Köszönöm a kedvességeteket.
- A hozzászóláshoz be kell jelentkezni
iptables -t nat -A PREROUTING -p tcp -d 1.1.1.1 --dport 80 -j DNAT --to-destination 2.2.2.2:8080
iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 8080 -j SNAT --to-source 1.1.1.1
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -d 2.2.2.2 --dport 8080 -j ACCEPT
Ha a mindkét porthoz megcsinálod egymás után, az ESTABLESHED,RELATED sorból csak egy kell majd. És még egy megjegyzés ehhez. Igaz, hogy a kliens számára az IP-t tekintve nem a valódi szerver fog látszani, de a szerver számára is a portforwardot végző gép IP-je lesz a kliens, azaz ez fog a logjába kerülni stb.
- A hozzászóláshoz be kell jelentkezni
Igen, tudom. Tehát lényegében a logok használhatatlanok lesznek emiatt, mert végig azt hiszi, hogy a tűzfallal játszik. Ez nem akkora probléma.
Köszi mindent mégegyszer.
- A hozzászóláshoz be kell jelentkezni
Kivéve, ha az egész passzív port range-t átküldi...
Na meg az aktív FTP, de azt inkább hagyjuk...
--
Discover It - Have a lot of fun!
- A hozzászóláshoz be kell jelentkezni
Ha rendes megoldast akar, azt is le kell kezelni.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
subscribe
- A hozzászóláshoz be kell jelentkezni
hogy mik vannak...
- A hozzászóláshoz be kell jelentkezni
Világ életemben mind az INPUT, mind az OUTPUT láncon be- illetve ki voltak engedve a RELATED,ESTABLISHED állapotú kapcsolatok (TCP protokoll esetén).
Most találtam egy másfajta megközelítést: http://www.sns.ias.edu/~jns/wp/2006/01/12/iptables-connection-tracking-…
iptables -A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -j ACCEPT
(A cikknek magyar vonatkozása is van, Kadlecsik József személyében, a második oldalon.)
- A hozzászóláshoz be kell jelentkezni
Eddig hogyan csináltad?
Én ezt a megoldást ismertem.
- A hozzászóláshoz be kell jelentkezni
$IPT -t filter -P INPUT DROP
$IPT -t filter -P OUTPUT DROP
$IPT -t filter -P FORWARD DROP
.
.
.
$IPT -t filter -I INPUT -i lo -j ACCEPT
$IPT -t filter -I OUTPUT -o lo -j ACCEPT
.
.
.
$TFA INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
.
.
.
$TFA OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$TFA OUTPUT -p UDP -d 8.8.8.8 --dport 53 -j ACCEPT
$TFA OUTPUT -p UDP -d 8.8.4.4 --dport 53 -j ACCEPT
$TFA OUTPUT -p TCP -m multiport --dports 80,443 -m state --state NEW -j ACCEPT
--------------------------------------------------------------------------
színes
- A hozzászóláshoz be kell jelentkezni
Ja, hogy amit most találtál, abból a RELATED hiányzik. Azt nem vettem észre.
A $TFA mit jelent?
- A hozzászóláshoz be kell jelentkezni
TFA="`echo $IPT '-t filter -A'`"
--------------------------------------------------------------------------
színes
- A hozzászóláshoz be kell jelentkezni
Valószínűleg egy másik szkriptben egy kalap alatt lekezelte a figura a RELATED kapcsolatokat is, szóval ezt elnéztem anno.
A weboldal már nem él sajnos.
- A hozzászóláshoz be kell jelentkezni
Nem bírom felfogni hogy egyesek miért élesztik fel a zombi topikokat.
Láttad te hogy ez egy 5 éves topik és egy féléves postra válszoltál?
- A hozzászóláshoz be kell jelentkezni
Ezek mellé
$IPT -t filter -I INPUT -i lo -j ACCEPT
$IPT -t filter -I OUTPUT -o lo -j ACCEPT
van értelme/kellenek a következő szabályok
$IPT -t filter -I INPUT -o lo -j ACCEPT
$IPT -t filter -I OUTPUT -i lo -j ACCEPT
???
(Az INPUT és az OUTPUT policy is egyaránt DROP.)
--------------------------------------------------------------------------
színes
- A hozzászóláshoz be kell jelentkezni
Nem fogja engedni felvenni oket. INPUT szabalynal nincs -o , OUTPUT szabalynal nincs -i. Nem az az irany.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Köszi.
Hiába, sok fals infó van a neten, ezért mindig
i) gondolkodni
ii) kérdezni
kell.
A fenti kérdésemet a következő oldal indukálta: http://www.debuntu.org/iptables-how-to-share-your-internet-connection-p2
(Lap alja felé, sárga háttér, piros háromszög, benne felkiáltójel...)
--------------------------------------------------------------------------
színes
- A hozzászóláshoz be kell jelentkezni