Ich versuche, meinen VPS-Server so zu konfigurieren, dass er als einfacher HTTP-Proxy funktioniert. Ich habe Squid 3.3.8 auf CentOS 7.1.1503 installiert und die grundlegende Authentifizierung mit konfiguriert ncsa_auth
. Obwohl das ganze Schema zu funktionieren scheint und ich mich erfolgreich von einem anderen PC aus mit meinem Proxy verbinde, habe ich jetzt Probleme mit dem Laden der Webseite. Wenn ich beispielsweise versuche,http://mirrors.liquidweb.com/, die Webseite wird nicht richtig geladen, Firefox lädt nur die Hälfte davon und dann sehe ich eine Weile lang die Meldung „Daten werden von liquidweb.com übertragen“. Dann verschwindet sie ohne Ergebnis: Die Webseite wird immer noch halb geladen angezeigt. Ich habe ein wenig zu diesem Problem recherchiert, aber die einzigen Lösungen, die ich finden konnte, bezogen sich auf DNS-Probleme. Es scheint kein DNS-bezogenes Problem zu sein und das Hinzufügen einer dns_v4_first on
Option in meiner Squid-Konfiguration hat kein Ergebnis gebracht. Ich möchte insbesondere darauf hinweisen, dass dies kein Site- oder Browser-bezogenes Problem ist, da es in allen Browsern angezeigt wurde, in denen ich versucht habe, die Website zu öffnen, und das Deaktivieren des Proxys in den Browsereinstellungen das Problem sofort behebt. Es scheint auch kein ISP-bezogenes Problem zu sein, da ich die Dateien über diesen Proxy mit einer Durchschnittsgeschwindigkeit von ~50 Mbit/s herunterladen kann. Mein squid.conf
und der Screenshot mit der nicht ordnungsgemäß geladenen Webseite sind unten aufgeführt, danke im Voraus für alle Vermutungen!
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic childred 5
auth_param basic realm liproxy
auth_param basic credentialsttl 2 hours
#acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#acl localnet src fc00::/7 # RFC 4193 local private network range
#acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
#acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
#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
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
#http_access deny to_localhost
acl ncsaauth proxy_auth REQUIRED
http_access allow ncsaauth
dns_v4_first on
http_access deny all
http_port 0.0.0.0:3128
#cache_dir ufs /var/spool/squid 100 16 256
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
etc/sysconfig/iptables
*filter
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
-A INPUT -p tcp --dport 3128 -j ACCEPT
# Allows SSH connections
# The --dport number is the same as in /etc/ssh/sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Now you should read up on iptables rules and consider whether ssh access
# for everyone is really desired. Most likely you will only allow access from certain IPs.
# Allow ping
# note that blocking other types of icmp packets is considered a bad idea by some
# remove -m icmp --icmp-type 8 from this line to allow all kinds of icmp:
# https://security.stackexchange.com/questions/22711
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
Antwort1
Sie haben Ihre Firewall von irgendwo aus dem Internet kopiert, aber anscheinend ohne sie vollständig zu lesen und zu verstehen.
Betrachten Sie diesen Abschnitt:
# Allow ping
# note that blocking other types of icmp packets is considered a bad idea by some
# remove -m icmp --icmp-type 8 from this line to allow all kinds of icmp:
# https://security.stackexchange.com/questions/22711
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
Ein Grund, warum es „keine gute Idee“ ist, alle ICMP zu blockieren, ist, dass Sie damit auch Dinge wie „Fragmentation Needed“-Antworten blockieren, die für die Path MTU-Erkennung erforderlich sind. Und wenn das nicht funktioniert, hängen Webseiten, Downloads werden unterbrochen usw.
Um das Problem zu lösen, sollten Sie genau den Inhalt des Kommentars entfernen.
Besser noch: Deaktivieren Sie diese Firewall vollständig und kehren Sie zu dem firewalld
System zurück, das in CentOS 7 enthalten war. Es konfiguriert eine richtige Firewall ohne all diese Fallen für Unvorsichtige.