Firewall blokuje SQUID

Mephcz

Firewall blokuje SQUID
« kdy: 18. 04. 2011, 13:51:24 »
Zdravím všechny,
Mám UBUNTU server který mi slouží jako firewall.
Dvě sítovky:
eth0 je WAN(internet)
eth1 je LAN
níže přiložím výpis iptables, když IPTABLES nemám nastavené a mám vše na ALLOW tak SQUID funguje jak má, ale když IPTABLES nakonfiguruji tak mi SQUID přestane fungovat na lokálním PC se nepřipojím přes port 3128. Prosím o pomoc z nastavením iptables trochu se v tom ztrácím. díky moc za přípúadnou pomoc. PS: Ideálůní řešení rpo mne je aby SQUID fungoval jako transparentní proxi abych nemusle měnit nastavení na každé stanici.

IPTABLES:

Kód: [Vybrat]
#!/bin/bash

####################### NASTAVEN├Ź S├Ź┼ĄOV├ŁCH PROM─ÜNN├ŁCH############################################################

SSH="22"
SMTP="25";
DNS="53";
HTTP="80";
POP3="110";
HTTPS="443";
ICQ="5190";
VNC="5901";
VNC2="5902";
VNC3="5903";
VNC4="5904";
VPN="4090";
FTP="20";
FTP2="21";
STREAM="1935";
RDP="3389";
RADIO="8000";
POP32="995";
SMTP2="465";
PROXY="3128";


INET_IFACE="eth0";
LAN_IFACE="eth1";


ALLOW_IP="aa.aa.aa.aa.";         #     EXT IP



INET_IP="10.0.0.50";
SERVER_IP="192.168.2.1";



#Lokalni PC v siti
LOCAL_IP="192.168.2.38"; # Test NAT RDP




IPTABLES="/sbin/iptables"

#localhost
        LO_IFACE="lo"
        LO_IP="127.0.0.1"
LO_IP2="127.0.1.1"

echo
echo -e "\033[32m Konfiguruji firewall, chv├şli strpen├ş ...\033[0m";

#################################################################################################################



# Zapneme routovani paketu
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# rp_filter na zamezeni IP spoofovani
for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
   echo "1" > ${interface}
done

# vynulovani pravidel
        $IPTABLES -F -t mangle
$IPTABLES -F -t nat
        $IPTABLES -F
        $IPTABLES -Z
        $IPTABLES -X


############################################## CHAINS #############################################

#nastaveni TCP paketu
$IPTABLES -N tcp_packets

#nastaveni UDP paketu
$IPTABLES -N udp_packets

#povolen├ę pakety
        $IPTABLES -N allowed
        $IPTABLES -A allowed -p TCP --syn -j ACCEPT
        $IPTABLES -A allowed -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -i $LAN_IFACE -j ACCEPT
        $IPTABLES -A allowed -p TCP -j DROP

# Zahazovat a logovat (max. 5 x 3 pakety za hod)
$IPTABLES -N logdrop
$IPTABLES -A logdrop -m limit --limit 5/h --limit-burst 3 -j LOG --log-prefix "Rezervovana adresa: "
$IPTABLES -A logdrop -j DROP

#Retezec pro stanoveni limitu prichozich SYN konexi (ochrana pred SYN floods), propusti pouze 4 SYN segmenty/sec
  $IPTABLES -N syn-flood
        $IPTABLES -A syn-flood -m limit --limit 20/s --limit-burst 5 -j RETURN
        $IPTABLES -A syn-flood -j DROP

#zak├ízan├ę pakety
        $IPTABLES -N zakazane
$IPTABLES -A zakazane -s 83.240.93.19 -j DROP  # utok 26.1.2009 na mail server

#nastaven├ş ICMP pravidel
        $IPTABLES -N icmp_packets
$IPTABLES -A icmp_packets -p ICMP --icmp-type 0 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type 3 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type 11 -j ACCEPT

############################################## CHAINS #############################################


############################################## INPUT ##############################################

# $IPTABLES -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
        $IPTABLES -A INPUT -j zakazane

## ping -- max 5 za sec
        $IPTABLES -A INPUT -i $INET_IFACE -p icmp --icmp-type 'echo-request' -m limit --limit 1/s --limit-burst 10 -j ACCEPT

        ## Odfiltrovat pokusy o syn-flooding
        $IPTABLES -A INPUT -i $INET_IFACE -p tcp --syn -j syn-flood

        ## Odfiltrovat pokusy o zahlceni icmp
        $IPTABLES -A INPUT -i $INET_IFACE -p icmp -j syn-flood

# Paket navazuje spojeni, ale nema nastaveny priznak SYN, pryc s nim
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Portscan s nastavenym SYN,FIN
$IPTABLES -A INPUT -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j LOG -m limit --limit 10/m --log-prefix="bogus packet: "
$IPTABLES -A INPUT -p tcp -i $INET_IFACE --tcp-flags SYN,FIN SYN,FIN -j DROP

# Sluzbu AUTH neni dobre filtrovat pomoci DROP, protoze to muze
# vest k prodlevam pri navazovani nekterych spojeni. Proto jej
# sice zamitneme, ale tak, aby nedoslo k nezadoucim prodlevam.
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 113 -m limit --limit 12/h -j LOG
$IPTABLES -A INPUT -i $INET_IFACE -p TCP --dport 113 -j REJECT --reject-with tcp-reset #AUTH server

        # If you have a Microsoft Network on the outside of your firewall, you may also get flooded by Multicasts. We drop them so we do not get flooded by logs
        $IPTABLES -A INPUT -i $INET_IFACE -d 224.0.0.0/8 -j DROP

        # Log weird packets that don't match the above.
        $IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
        $IPTABLES -A INPUT -j icmp_packets
        $IPTABLES -A INPUT -j allowed
$IPTABLES -A INPUT -p ALL -i lo -j ACCEPT

# Vsechno ostatni je zakazano - tedy logujeme, maxim. 12x5 pkt/hod
$IPTABLES -A INPUT -m limit --limit 12/h -j LOG --log-prefix "INPUT drop: "

############################################## INPUT ###################################################

############################################## OUTPUT ##################################################

        $IPTABLES -A OUTPUT -j zakazane
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --sport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -t mangle -A OUTPUT -o $INET_IFACE -p tcp --dport ssh -j TOS --set-tos Minimize-Delay

# Povolime odchozi pakety, ktere maji nase IP adresy
$IPTABLES -A OUTPUT -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -s $LO_IP2 -j ACCEPT
$IPTABLES -A OUTPUT -s $INET_IP -j ACCEPT
$IPTABLES -A OUTPUT -j icmp_packets

# Povoleni navazani FTP pripojeni
modprobe ip_conntrack
modprobe ip_conntrack_ftp
        modprobe ip_nat_ftp

########################################################################################################


############################################## PREROUTING ##############################################



#NAT RDP
$IPTABLES -t nat -A PREROUTING -p tcp -s $ALLOW_IP --dport $RDP -j DNAT --to $LOCAL_IP:$RDP




########################################################################################################


############################################## FORWARD #################################################

$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -j icmp_packets


$IPTABLES -A FORWARD -s $LOCAL_IP -i $LAN_IFACE -o $INET_IFACE -p tcp -m multiport --destination-ports $PROXY,$SMTP2,$SSH,$DNS,$HTTP,$HTTPS,$POP3,$SMTP,$ICQ,$VPN,$FTP,$FTP2,$STREAM,$RADIO,$POP32 -j ACCEPT
$IPTABLES -A FORWARD -s $LOCAL_IP -i $LAN_IFACE -o $INET_IFACE -p udp -m multiport --destination-ports $PROXY,$SMTP2,$SSH,$DNS,$HTTP,$HTTPS,$POP3,$SMTP,$ICQ,$VPN,$FTP,$FTP2,$STREAM,$RADIO,$POP32 -j ACCEPT


$IPTABLES -A INPUT -m limit --limit 12/h -j LOG --log-prefix "FORWARD drop: "

#########################################################################################################


############################################## POSTROUTING ##############################################

$IPTABLES -A POSTROUTING -t nat -j MASQUERADE

#########################################################################################################


#nastaveni vychozi politiky retezcu
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

echo -e "\033[32m Firewall nakonfigurován ...\033[0m"
« Poslední změna: 18. 04. 2011, 19:13:22 od Petr Krčmář »


lime

Re: SQUID - pomoc s nastavením IPTABLES
« Odpověď #1 kdy: 18. 04. 2011, 15:20:37 »
chyba mi tam nieco take
$IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

mattv

  • ***
  • 123
    • Zobrazit profil
    • E-mail
Re: SQUID - pomoc s nastavením IPTABLES
« Odpověď #2 kdy: 18. 04. 2011, 15:51:39 »
Jak říká kolega Lime, musíte http provoz na Squid přesměrovat. Tzn. tak jak napsal.. Jinak, jestli máte doménu na MS Windows a Windows Server, je lepší si proxy nastavit přes GPO a nechat proxy v normálním netransparentním režimu...

Ještě se chci zeptat.. Rozumíte tomuto skriptu ? Jestli ne, nebylo by lepší si k IPTABLES načíst dokumentaci a sestavit si ten skript sám tak, jak potřebujete  ??

Mephcz

Re: SQUID - pomoc s nastavením IPTABLES
« Odpověď #3 kdy: 18. 04. 2011, 18:31:49 »
zdravím, díky moc za info... zítra ráno budu na testovacím serveru tak vyzkouším a dám vědet, jinak sestavení tohoto skriptu je pro mne i když jsem spíše nováček docela přehledné a co potřebuji nastavit, služby natování v něm nasatvím, poslední věc která mi právě dělá problémy v nasazení do ostrého provozu je nefunkční SQUID, každopádně díky moc za ochotu hned zítra ráno otestuji a napíšu jak jsem dopadl :-)

Mephcz

Re: SQUID - pomoc s nastavením IPTABLES
« Odpověď #4 kdy: 18. 04. 2011, 18:58:18 »
Jak říká kolega Lime, musíte http provoz na Squid přesměrovat. Tzn. tak jak napsal.. Jinak, jestli máte doménu na MS Windows a Windows Server, je lepší si proxy nastavit přes GPO a nechat proxy v normálním netransparentním režimu...

Ještě se chci zeptat.. Rozumíte tomuto skriptu ? Jestli ne, nebylo by lepší si k IPTABLES načíst dokumentaci a sestavit si ten skript sám tak, jak potřebujete  ??

ještě k tomu co jste uvedl, nastevení přes GPO samozřejmě v plánu mám ale myšlenka že se o to všechno postara fireweall mi připadá lepší i pro PC kteří budou hosti a nebudou v domeně pak by byl problem.... což mi transparentní squid ideálně vyřeší :-)


mattv

  • ***
  • 123
    • Zobrazit profil
    • E-mail
Re: SQUID - pomoc s nastavením IPTABLES
« Odpověď #5 kdy: 18. 04. 2011, 21:30:14 »
ještě k tomu co jste uvedl, nastevení přes GPO samozřejmě v plánu mám ale myšlenka že se o to všechno postara fireweall mi připadá lepší i pro PC kteří budou hosti a nebudou v domeně pak by byl problem.... což mi transparentní squid ideálně vyřeší :-)

To určitě. V tom případě ano. Ovšem, transparentní proxy nevyřeší např. HTTPS provoz. Takže jestli to plánujete na blokaci stránek, tak přes HTTPS to pak projde.

Mephcz

Re: SQUID - pomoc s nastavením IPTABLES
« Odpověď #6 kdy: 18. 04. 2011, 21:39:42 »
ještě k tomu co jste uvedl, nastevení přes GPO samozřejmě v plánu mám ale myšlenka že se o to všechno postara fireweall mi připadá lepší i pro PC kteří budou hosti a nebudou v domeně pak by byl problem.... což mi transparentní squid ideálně vyřeší :-)

To určitě. V tom případě ano. Ovšem, transparentní proxy nevyřeší např. HTTPS provoz. Takže jestli to plánujete na blokaci stránek, tak přes HTTPS to pak projde.

nene omezovat http ani https provoz neplánuji jedná se mi hlavně o cache a analýzu http_acces logu nic víc po tom potřebovat nebudu max optimalizaci rychlosti což obsahuje sam o sobě takže pro mé potřeby absolutnbě vhodné :-)

Mephcz

Re: SQUID - pomoc s nastavením IPTABLES
« Odpověď #7 kdy: 18. 04. 2011, 21:46:23 »
ještě k tomu co jste uvedl, nastevení přes GPO samozřejmě v plánu mám ale myšlenka že se o to všechno postara fireweall mi připadá lepší i pro PC kteří budou hosti a nebudou v domeně pak by byl problem.... což mi transparentní squid ideálně vyřeší :-)

To určitě. V tom případě ano. Ovšem, transparentní proxy nevyřeší např. HTTPS provoz. Takže jestli to plánujete na blokaci stránek, tak přes HTTPS to pak projde.

nene omezovat http ani https provoz neplánuji jedná se mi hlavně o cache a analýzu http_acces logu nic víc po tom potřebovat nebudu max optimalizaci rychlosti což obsahuje sam o sobě takže pro mé potřeby absolutnbě vhodné :-)
nicméně mi vyvstala otázka, dejme tomu že transparentní proxy nakonec oželím a bude mi staří klasický kešující proxy dejme tomu na portu 3128, bez aplikovaní výše vypsanáých iptables funguje perfektně, s nimi bohužel nefunguje, tak v čem tam je problém a co změnit ?? ..

mattv

  • ***
  • 123
    • Zobrazit profil
    • E-mail
Re: SQUID - pomoc s nastavením IPTABLES
« Odpověď #8 kdy: 18. 04. 2011, 21:55:56 »
nicméně mi vyvstala otázka, dejme tomu že transparentní proxy nakonec oželím a bude mi staří klasický kešující proxy dejme tomu na portu 3128, bez aplikovaní výše vypsanáých iptables funguje perfektně, s nimi bohužel nefunguje, tak v čem tam je problém a co změnit ?? ..

A funguje vám při aplikování IPTABLES nějaké spojení z LAN na server ? myslím tím např. SSH nebo něco v tom smyslu... podle mě by vám měl jít jen PING

Mephcz

Re: SQUID - pomoc s nastavením IPTABLES
« Odpověď #9 kdy: 18. 04. 2011, 22:10:40 »
nicméně mi vyvstala otázka, dejme tomu že transparentní proxy nakonec oželím a bude mi staří klasický kešující proxy dejme tomu na portu 3128, bez aplikovaní výše vypsanáých iptables funguje perfektně, s nimi bohužel nefunguje, tak v čem tam je problém a co změnit ?? ..

A funguje vám při aplikování IPTABLES nějaké spojení z LAN na server ? myslím tím např. SSH nebo něco v tom smyslu... podle mě by vám měl jít jen PING
ano PING i SSH mi funguje ale SSH se musím připojovat na IP eth0 rozhraní což beru že v pořádku... jinak nadefinované služby mi fungují všechny ICQ mail dns atd atd

lime

Re: Firewall blokuje SQUID
« Odpověď #10 kdy: 19. 04. 2011, 09:00:01 »
Trosku nestandardne mas napisany dany FW, vacsinou sa vsetko dropne hned na zaciatku a tak si povolujes co potrebujes, vacsinou flush si davas do ineho suboru a ten nacitas hned na zaciatku, kvoli tomu ak by si robil fw na dialku a nahodou sa zablokoval, este, ze existuje cron :)) tam si nastavis jeho spustanie, pouziva sa to hlavne pri ladeni fw, to je iba rada :) hlavne si pozri.

iptables -nL
iptables -t nat -nL

Tu mas delete-rules :))


IPTABLES="/sbin/iptables"

$IPTABLES -F
$IPTABLES -X

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT


$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT

$IPTABLES -t nat -F PREROUTING
$IPTABLES -t nat -F OUTPUT
$IPTABLES -t nat -F POSTROUTING


$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT

$IPTABLES -t mangle -F PREROUTING
$IPTABLES -t mangle -F OUTPUT