Toon posts:

[IPTABLES/SQUID] Proxy dichtgooien.

Pagina: 1
Acties:
  • 1.873 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb hier een servertje draaien met daarop een squid proxy server. Ik loop nu al dik een maand te proberen met iptables poort 3128 dicht te gooien. Maar telkens als ik een irc server join word ik gebanned omdat ik een open proxy schijnt te hebben. :(

Squid heb ik op de volgende methode aan mijn internet netwerk verbonden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#Recommended minimum configuration:
acl all src 192.168.0.0/255.255.255.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT


En met iptables probeer ik op de volgende manier poort 3128 waar dus squid op draait dicht te gooien:

code:
1
2
$IPTABLES -A INPUT -p tcp --destination-port 3128 -i $EXTERNAL_INTERFACE -j REJECT
$IPTABLES -A INPUT -p udp --destination-port 3128 -i $EXTERNAL_INTERFACE -j REJECT


Naar mijn weten zou dit goed moeten zijn. Maar toch werkt het nog steeds niet.
Hoewel als ik mezelf scan, hij wel state closed aangeeft. :O

Verwijderd

Wat is je default policy van je INPUT chain bij iptables?

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
# Zet de default policies
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

[ Voor 9% gewijzigd door Verwijderd op 11-02-2003 15:59 ]


Verwijderd

Kun je misschien je hele firewall laten zien, want misschien staat er een andere regel voor die reject regel die verkeer naar poort 3128 doorlaat.

Verder draai je voor je gateway machine wel een hele erge open firewall met een default ACCEPT policy voor je INPUT chain, tenzij je van alles blocked.

Heb je misschien iets van een log van je irc client waarin wordt aangegeven dat je wordt gebanned en waarom?

Als je zelf test of de poort 3128 closed is, doe je dat dan vanaf je gateway machine zelf of vanaf een machine buiten je netwerk?

Verwijderd

Je squid config is niet goed.

code:
1
acl all src 0.0.0.0/0.0.0.0


Die "all" moet je laten zoals hierboven, en dan een lijn voor je lan bijmaken:

code:
1
acl lan src 192.168.0.1/255.255.255.0


en dan verder in je config:

code:
1
2
http_access deny all
http_access allow lan


Als je deze regels instelt, dan luister squid wel nog altijd op de externe interface, maar men krijgt altijd een access denied als ze extern je proxy proberen te gebruiken. Maar het is toch netjes om deze goed te zetten.

Om helemaal je squid dicht te gooien moet je dus ook die iptables rules goed zetten, daar zullen anderen in dit topic je wel mee helpen... :)

  • Paul
  • Registratie: September 2000
  • Laatst online: 02-05 07:01
En als je in je SQUID
code:
1
acl Safe_ports port 1025-65535  # unregistered ports
veranderd in
code:
1
2
acl Safe_ports port 1025-3127  # unregistered ports
acl Safe_ports port 3129-65535  # unregistered ports


Helpt dat misschien?

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Verwijderd

Kan het zijn dat je voor die iptables-squid regel een regel hebt waarin je statefull ESTABLISHED en RELATED doorlaat? In het geval dat je een statefull irc connectie hebt naar een irc server, worden dan niet alle connecties van die server dmv RELATED door die ene regel binnengelaten worden? (correct me if i'm wrong).
Verder, je kunt squid mbv het "http_port" directive een <hostname>:<port> combo meegeven, waarna squid alleen op die combinatie gaat luisteren.

[ Voor 18% gewijzigd door Verwijderd op 11-02-2003 16:49 ]


Verwijderd

Topicstarter
Verwijderd schreef op 11 februari 2003 @ 16:38:
Je squid config is niet goed.

code:
1
acl all src 0.0.0.0/0.0.0.0


Die "all" moet je laten zoals hierboven, en dan een lijn voor je lan bijmaken:

code:
1
acl lan src 192.168.0.1/255.255.255.0


en dan verder in je config:

code:
1
2
http_access deny all
http_access allow lan


Als je deze regels instelt, dan luister squid wel nog altijd op de externe interface, maar men krijgt altijd een access denied als ze extern je proxy proberen te gebruiken. Maar het is toch netjes om deze goed te zetten.

Om helemaal je squid dicht te gooien moet je dus ook die iptables rules goed zetten, daar zullen anderen in dit topic je wel mee helpen... :)
tnx! ik zal het ff proberen.

hier komt m'n firewallscript:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/sh

################################################################################
## Variabelen

# Waar iptables staat
IPTABLES="/usr/local/sbin/iptables"

# Interfaces
INTERNAL_INTERFACE="eth0" # Interface waarmee gateway aan lokale netwerk zit
EXTERNAL_INTERFACE="eth1" # Interface waarmee gateway aan het internet zit

# Ipadressen / Netwerken
LAN="192.168.0.0/24" # Lokale netwerk


################################################################################
## Alles opschonen

# Flush en clear alle rules
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t nat -Z

# Zet de default policies
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT


################################################################################
## Initialiseren van de kernel

# Enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

################################################################################
## Blokken van netwerktraffic

#$IPTABLES -A FORWARD --source 192.168.0.2 -j DROP
#$IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 21 -j DNAT --to 192.168.0.1
#$IPTABLES -t nat -A REDIRECT -i eth1 -p udp --dport 2300 -j DNAT --to 192.168.0.1
#$IPTABLES -t nat -A REDIRECT -i eth1 -p udp --dport 64520 -j DNAT --to 192.168.0.1
#$IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 2300 -j DNAT --to 192.168.0.1

# Wancatan forwarden:
$IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 20931 -j DNAT --to 192.168.0.1

################################################################################
## Riskante servers afsluiten

# ICMP echo request blokken
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p icmp -j DROP

# Squid afsluiten voor de buitenwereld
$IPTABLES -A INPUT -p tcp --destination-port 3128 -i $EXTERNAL_INTERFACE -j REJECT
$IPTABLES -A INPUT -p udp --destination-port 3128 -i $EXTERNAL_INTERFACE -j REJECT
$IPTABLES -A INPUT -p tcp --destination-port 8080 -i $EXTERNAL_INTERFACE -j REJECT
$IPTABLES -A INPUT -p udp --destination-port 8080 -i $EXTERNAL_INTERFACE -j REJECT

################################################################################
## Inkomende packages op ongewenste poorten droppen (geen reply, state filtered

# Webmin afsluiten voor de buitenwereld
#$IPTABLES -A INPUT -p tcp --destination-port 10000 -i $EXTERNAL_INTERFACE -j REJECT

# Packages rejecten op de standaard poorten van 0 tot 1024
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --destination-port 0:19 -j REJECT
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p udp --destination-port 0:19 -j REJECT
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --destination-port 22:79 -j REJECT
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p udp --destination-port 22:79 -j REJECT
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --destination-port 81:1024 -j REJECT
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p udp --destination-port 81:1024 -j REJECT

################################################################################
## Masquerading regels

# Alles met afkomst van of bestemming lokale netwerk heeft forwarden
$IPTABLES -A POSTROUTING -t nat -o $EXTERNAL_INTERFACE -j MASQUERADE
$IPTABLES -A FORWARD -i $INTERNAL_INTERFACE -o $EXTERNAL_INTERFACE -s $LAN -d ! $LAN -j ACCEPT
$IPTABLES -A FORWARD -o $INTERNAL_INTERFACE -i $EXTERNAL_INTERFACE -d $LAN -s ! $LAN -j ACCEPT


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

[ Voor 71% gewijzigd door Verwijderd op 11-02-2003 17:47 ]


  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Verwijderd schreef op 11 februari 2003 @ 16:50:
code:
1
2
#$IPTABLES -t nat -A REDIRECT -i eth1 -p udp --dport 2300 -j DNAT --to 192.168.0.1
#$IPTABLES -t nat -A REDIRECT -i eth1 -p udp --dport 64520 -j DNAT --to 192.168.0.1
offtopic:
Is REDIRECT niet een target ipv een chain?

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


Verwijderd

Je maakt je regels ook erg raar vind ik. Ik doe het altijd zo:

- Zet standaard alles op REJECT. (als je DROP doet krijg je timeouts op je connects, als je REJECT doet krijg je meteen een connection refused error. Da's makkelijker om te testen vind ik)
- Zet de poorten van 1024 tot 65535 open
- Zet dan een paar poorten onder 1024 ook open die je wil

Mijn firewall ziet er dan zo uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/sh

IPTABLES=/sbin/iptables

IF_LOCAL="lo"
IF_INTERNET="eth0"
IF_LAN="eth1"

IP_LOCAL="10.17.0.1"
IP_INTERNET="1.2.3.4"  # zet hier je echte internet ip
IP_NETWORK="10.17.0.0/16"
IP_GATEWAY="10.17.0.1"

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv6/conf/all/forwarding

# Setup chains
$IPTABLES -F
$IPTABLES -F -t mangle
$IPTABLES -F -t nat
$IPTABLES -X
$IPTABLES -X -t mangle
$IPTABLES -X -t nat

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

# NAT uitgaand
$IPTABLES -t nat -A POSTROUTING -o $IF_INTERNET -j SNAT --to $IP_INTERNET

# Lan mag alles
$IPTABLES -A INPUT -i $IF_LAN -s $IP_NETWORK -p tcp -j ACCEPT
$IPTABLES -A INPUT -i $IF_LAN -s $IP_NETWORK -p udp -j ACCEPT

# Accept connections on certain ports
# TCP
$IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT #ssh
$IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT # smtp
$IPTABLES -A INPUT -p tcp --dport 53 -j ACCEPT # DNS
$IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT # http
$IPTABLES -A INPUT -p tcp --dport 113 -j ACCEPT # identd
#$IPTABLES -A INPUT -p tcp --dport 143 -j ACCEPT #imap
$IPTABLES -A INPUT -p tcp --dport 443 -j ACCEPT # https

# UDP
$IPTABLES -A INPUT -p udp --dport 53 -j ACCEPT #dns
$IPTABLES -A INPUT -p udp --dport 67 -j ACCEPT #dhcp

# accept all above 1023
$IPTABLES -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
$IPTABLES -A INPUT -p udp --dport 1024:65535 -j ACCEPT

# Accept ALL connections from certain hosts
# 66.66.66.66 mag alles
#$IPTABLES -A INPUT -i $IF_INTERNET -s 66.66.66.66/32 -p tcp -j ACCEPT

# Accept good things
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# ICMP blabla
$IPTABLES -A INPUT -p icmp --icmp-type 0 -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type 3 -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type 11 -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type 8 -m limit --limit 1/second -j ACCEPT

# Priority routing
# altijd handig zodat ftp verkeer ssh niet beinvloedt
$IPTABLES -A PREROUTING -t mangle -p tcp --sport ssh -j TOS --set-tos Minimize-Delay
$IPTABLES -A PREROUTING -t mangle -p tcp --sport telnet -j TOS --set-tos Minimize-Delay
$IPTABLES -A PREROUTING -t mangle -p tcp --sport ftp -j TOS --set-tos Minimize-Delay
$IPTABLES -A PREROUTING -t mangle -p tcp --sport ftp-data -j TOS --set-tos Maximize-Throughput

# Forwarding naar een ip in het LAN
#$IPTABLES -t nat -A PREROUTING -i $CABLE -p tcp --dport 80 -j DNAT --to-destination 192.168.100.2:80
#$IPTABLES -A FORWARD -p tcp --dport 80 -i $CABLE -j ACCEPT

# LREJECT = LOG + REJECT
$IPTABLES -N LREJECT
$IPTABLES -A LREJECT -p tcp -j LOG --log-prefix "TCP - " --log-level 6
$IPTABLES -A LREJECT -p udp -j LOG --log-prefix "UDP - " --log-level 6
$IPTABLES -A LREJECT -f -j LOG --log-prefix "FRAGMENT - " --log-level 6
$IPTABLES -A LREJECT -j REJECT --reject-with icmp-port-unreachable

# als laatste sturen we alles naar LREJECT, hierboven gedefinieerd
$IPTABLES -A INPUT -i $IF_INTERNET -j LREJECT


Ik doe dus wel een ACCEPT als default policy, maar als laatste regel doe ik een REJECT op alles. Dus dan zit ook alles dicht wat ik niet heb open gezet :) Is wat makkelijker om te loggen.

Hopelijk heb je hier iets aan.

Verwijderd

En om squid dan te blokkeren zou ik deze regel voor de laatste zetten:

code:
1
$IPTABLES -A INPUT -p tcp --dport 3182 -j LREJECT

  • imdos
  • Registratie: Maart 2000
  • Laatst online: 08-05 14:35

imdos

I use FreeNAS and Ubuntu

Is het niet poort 1080 ... De socks (proxy :? ) die je dicht moet hebben staan! Dat is iig op xs4all en andere nederlandse servers wel zo

pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem


  • DGTL_Magician
  • Registratie: Februari 2001
  • Laatst online: 15-04 15:04

DGTL_Magician

Kijkt regelmatig vooruit

imho is het gewoon poort 1080 die je dicht moet hebben. Daarnaast kun je net zo goed squid alleen binden aan je interne netwerkkaart en niet aan je publieke.

Blog | aaZoo - (Wireless) Networking, Security, DDoS Mitigatie, Virtualisatie en Storage


Verwijderd

Paste anders eens de output van "netstat -t tcp -a -n", dan zie je meteen wat er allemaal draait.

Verwijderd

Topicstarter
Ok,

Ik heb m'n squidconfig aangepast. En m'n firewall ziet er als volgt uit nu:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/sh

################################################################################
## Variabelen

# Waar iptables staat
IPTABLES="/usr/local/sbin/iptables"

# Interfaces
INTERNAL_INTERFACE="eth0" # Interface waarmee gateway aan lokale netwerk zit
EXTERNAL_INTERFACE="eth1" # Interface waarmee gateway aan het internet zit

# Ipadressen / Netwerken
LAN="192.168.0.0/24" # Lokale netwerk


################################################################################
## Alles opschonen

# Flush en clear alle rules
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t nat -Z

# Zet de default policies
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT


################################################################################
## Initialiseren van de kernel

# Enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

################################################################################
## Poorten forwarden naar interne adressen

# Wancatan forwarden:
$IPTABLES -t nat -A PREROUTING -i eth1 -p tcp --dport 20931 -j DNAT --to 192.168.0.1


################################################################################
## Riskante servers afsluiten

# ICMP echo request blokken
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p icmp -j DROP

# Squid afsluiten voor de buitenwereld
$IPTABLES -A INPUT -p tcp --destination-port 3128 -i $EXTERNAL_INTERFACE -j DROP
$IPTABLES -A INPUT -p tcp --destination-port 1080 -i $EXTERNAL_INTERFACE -j DROP


################################################################################
## Inkomende packages op ongewenste poorten droppen (geen reply, state filtered

# Packages droppen op de standaard poorten van 0 tot 1024
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --destination-port 0:19 -j DROP
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p udp --destination-port 0:19 -j DROP
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --destination-port 22:79 -j DROP
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p udp --destination-port 22:79 -j DROP
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --destination-port 81:1024 -j DROP
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p udp --destination-port 81:1024 -j DROP


################################################################################
## Masquerading regels

# Alles met afkomst van of bestemming lokale netwerk heeft forwarden
$IPTABLES -A POSTROUTING -t nat -o $EXTERNAL_INTERFACE -j MASQUERADE
$IPTABLES -A FORWARD -i $INTERNAL_INTERFACE -o $EXTERNAL_INTERFACE -s $LAN -d ! $LAN -j ACCEPT
$IPTABLES -A FORWARD -o $INTERNAL_INTERFACE -i $EXTERNAL_INTERFACE -d $LAN -s ! $LAN -j ACCEPT


################################################################################
## Poorten openzetten voor services die toegestaan zijn

# Alles op het interne netwerk toestaan
$IPTABLES -A INPUT -i $INTERNAL_INTERFACE -j ACCEPT

# Sommige services toestaan
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --destination-port 80 -j ACCEPT
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --destination-port 22022 -j ACCEPT


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


Nou heb ik alleen nog het probleem dat als ik zonder de proxy wil internetten dat het wel werkt, maar als ik het MET proxy probeer werkt het niet. :?

[ Voor 3% gewijzigd door Verwijderd op 14-02-2003 17:11 ]


Verwijderd

Topicstarter
Niemand die een idee heeft? Kan der niks uit wijs worden. :S

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

De proxy draait op de zelfde server als de firewall?

Tja je hebt de policy van INPUT op DROP staan en de enige ACCEPT regels in de INPUT chain voor de externe interface zijn:
code:
1
2
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --destination-port 80 -j ACCEPT
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p tcp --destination-port 22022 -j ACCEPT

De rest zijn allemaal DROP regels die dus overbodig zijn.

M.a.w. je proxy server kan wel naar buiten maar krijgt nooit antwoord tenzij het op port 80 of 22022 binnen komt :)

Oplossing 1: Zet de default policy van de INPUT chain op ACCEPT (niet echt veilig)

Oplossing 2: Voeg een ACCEPT regel aan (het begin van) de INPUT chain toe voor de externe interface en de states ESTABLISHED,RELATED. Die DROP regels (voor de externe interface) kunnen dan weg omdat alles met state NEW gedropt wordt door de policy.


PS: Vergeet niet je loopback interface toe testaan in je INPUT chain en sommige icmp pakketjes worden gebruikt om fouten te melden en moet je dus wel doorlaten (hint state RELATED).

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)

Pagina: 1