Dies ist die letzte Ausgabe von "Effektive und einfache Sicherheitsmaßnahmen für Webserver". Die Hauptfigur ist diesmal Linux, dh Sicherheitsmaßnahmen für das Betriebssystem.
Bisher verwenden 70% der Webdienste weltweit Linux. Dies bedeutet, dass Linux bereits weit verbreitet ist. Wenn Sie die Anzahl der Benutzer erhöhen, werden Linux-Schwachstellen früher entdeckt.
In den letzten fünf Jahren haben wir auch viele Linux-Kernel gesehen, die schwerwiegenden CVE-Schwachstellen ausgesetzt waren.
Aber ich denke nicht, dass das eine schlechte Sache ist. Da Linux selbst Open Source ist, werden alle gefundenen CVE-Schwachstellen sofort behoben. Ich denke, es ist eine Verkörperung lebendiger Ökologie.
Um Ihren Linux-Server zu schützen, müssen wir selbst gute Sicherheitspraktiken einhalten.
Sie können die neuesten Sicherheitslücken vermeiden, indem Sie Ihren Linux-Kernel und Ihre Pakete regelmäßig aktualisieren.
Normalerweise verwende ich eine stabile Version von Linux Distro (Ubuntu LTS, Debian Stable, CentOS usw.), die Stabilität voraussetzt. Der Kernel aktualisiert nur eine kleine Version und es gibt kein direktes Upgrade auf den neuesten Kernel, also den Kernel Machen Sie sich keine Sorgen über Fehler, die durch Updates oder Kompatibilitätsprobleme verursacht werden.
System- oder Paketaktualisierung:
Debian/Ubuntu
apt-get update && apt-get upgrade -y && apt-get autoremove -y && apt-get clean -y
Oder:
apt update && apt upgrade -y && apt autoremove -y && apt clean -y
CentOS
yum update -y && yum upgrade -y
Natürlich können Sie auch automatische Updates für verschiedene Linux-Distributionen nutzen.
Die SSH-Sicherheit ist wohl eine der wichtigsten Sicherheitsmaßnahmen für Linux. Die meisten Fälle von Linux-Server-Hacks sind auf ein geknacktes SSH-Passwort zurückzuführen.
Um die Sicherheit Ihres Linux-Servers zu gewährleisten, müssen Sie zunächst SSH sicherstellen.
Normalerweise würden viele sagen, dass Fail2ban für den SSH-Schutz verwendet wird, um zu verhindern, dass SSH-Passwörter gesprengt werden. Es stellte sich jedoch heraus, dass ein illegaler Eindringling viel Proxy-IP verwendete, um grob in SSH einzudringen. Infolgedessen kann Fail2ban nicht mehr effektiv geschützt werden.
Daher ist die Verwendung von Fail2ban zum Schutz von SSH nicht besonders effektiv und wird nicht empfohlen. Umgekehrt belegt Fail2ban auch viele iptables-Regeln, was sich auf die Leistung von iptables auswirkt.
Wie schützen Sie SSH? Wir empfehlen folgende Methoden:
Brute-Force-Cracking in SSH wird grundsätzlich mit einem schwachen kryptografischen Wörterbuch versucht. Daher musste ich das SSH-Passwort in ein stärkeres ändern.
Normalerweise wird das Passwort auf 12 Zeichen oder mehr geändert und die Zahlen werden mit speziellen Symbolen hinzugefügt. Dies verhindert stark, dass das Passwort grob geknackt wird.
So ändern Sie Ihr Passwort:
passwd root
Schädliche Scanner für SSH scannen normalerweise nur Port 22.
Sie können diesen Teil des böswilligen Scanners verhindern, indem Sie einfach den Standardport von SSH in einen anderen Port ändern.
So ändern Sie den Standardport:
vim /etc/ssh/sshd_config
Port 22322 # <---- Bitte wählen Sie Ihren Lieblingsport aus
iptables -A INPUT -p tcp --dport 22322 -j ACCEPT
/etc/init.d/ssh restart
Sie können sich mit einem SSH-Zertifikat anmelden, um zu verhindern, dass Ihr SSH-Kennwort von Brute Force geknackt wird. Weil ich überhaupt kein Passwort habe. Wie knackt man ohne Passwort?
Hier wird der Zertifikatsgenerator von PuTTY verwendet, um die öffentlichen und privaten Schlüssel zu generieren und nach der Generierung zu speichern.
Hier wird davon ausgegangen, dass der öffentliche Schlüssel in "/etc/ssh/key/public.key" hochgeladen wurde.
Stellen Sie dann den öffentlichen Schlüssel auf die richtigen Systemberechtigungen ein:
chmod 700 /etc/ssh/key
chmod 600 /etc/ssh/key/public.key
Öffnen Sie die SSH-Konfigurationsdatei:
vim /etc/ssh/sshd_config
Ändern Sie die folgenden Parameter:
......
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /etc/ssh/key/public.key
PermitEmptyPasswords no
AllowTcpForwarding no
X11Forwarding no
PasswordAuthentication no
......
/etc/init.d/ssh restart
Dies ist die sicherste SSH-Anmeldung. Es ist noch sicherer als die Anmeldung zum SSH-Zertifikat.
Das SSH-Zertifikat kann kompromittiert werden, aber die Art und Weise, wie sich nur die angegebene IP bei SSH anmelden kann, ist praktisch unzerbrechlich.
Nur wenn Sie einen festen Proxyserver haben und die Sicherheitsmaßnahmen des Proxyservers stark sind.
Persönlich verwende ich Kabelschutz, um eine Verbindung zu meinem Netzwerk herzustellen, bevor ich auf das Internet zugreife. Meine Export-IP ist also festgelegt.
Daher sind alle meine Server für SSH-Verbindungen auf meine Exit-IP beschränkt.
Wir empfehlen, dass Sie zwei IPs für Ihren Proxyserver als Whitelist festlegen. Einer der Proxyserver als Backup. Wir empfehlen außerdem, dass sich beide Proxyserver in unterschiedlichen Regionen befinden.
Weiße Liste festlegen:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -s xxx.xxx.xxx.xxx -p TCP --dport 22322 -j ACCEPT
iptables -A INPUT -p tcp --dport 22322 -j DROP
Speichern Sie die Einstellungen für iptables (Debian / Ubuntu):
/etc/init.d/netfilter-persistent save
/etc/init.d/netfilter-persistent reload
Selbst in PuTTY haben PuTTY-Dateien, die auf viele inoffizielle Websites heruntergeladen wurden, eine Hintertür, die das SSH-Passwort eines Benutzers illegal stehlen kann.
Normalerweise ist der vom Webserver verwendete Port festgelegt. Beispiel: HTTP 80-Port oder HTTPS 443-Port. Wenn nur Verbindungen zu diesen Ports zugelassen werden, wird das Auftreten unbekannter Angriffe verhindert.
Besonders hervorzuheben ist hier der DNS-Port. Jeder weiß, dass DNS das UDP-Protokoll verwendet, aber UDP verfügt nicht über die Konnektivitätserhaltungsfunktionen des TCP-Protokolls. Öffnen Sie daher Port 53 für eine ordnungsgemäße DNS-Auflösung.
Abgesehen von der DNS-Auflösung benötigen typische Webserver jedoch nicht das UDP-Protokoll. Um DDoS-Angriffe zu verhindern, blockiere ich im Allgemeinen alle UDP-Protokolle. Es schützt jedoch nicht vor allen DDoS-Angriffen. In einem späteren Artikel werde ich erklären, wie man sich vor DDoS-Angriffen schützt.
Verwenden Sie iptables, um Ports zu begrenzen:
iptables -A INPUT -i lo -j ACCEPT # <-Allow lokale Loopback-Schnittstelle (dh lokalen Zugriff auf lokalen Computer durchführen) iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT # <-Allow den Durchgang von hergestellten oder verwandten Verbindungen iptables -A OUTPUT -j ACCEPT # <-Allow out outbound access iptables -A INPUT -s xxx.xxx.xxx.xxx -p TCP --dport 22322 -j ACCEPT # <- Ermöglicht nur der angegebenen IP-Adresse die Verbindung zum SSH-Port iptables -A INPUT -p tcp --dport 80 -j ACCEPT #<-- HTTP iptables -A INPUT -p tcp --dport 443 -j ACCEPT #<-- HTTPS iptables -A INPUT -p udp --dport 53 -j ACCEPT #<-- DNS iptables -A INPUT -j REJECT # <- Verbieten Sie den Zugriff auf andere nicht autorisierte Regeln iptables -A FORWARD -j REJECT # <- Verbieten Sie den Zugriff auf andere nicht autorisierte Regeln
Damit ist das Lernprogramm in der Reihe "Effektive und einfache Sicherheitsmaßnahmen für Webserver" abgeschlossen.
Grundsätzlich können Sie Ihren Webserver schützen, indem Sie die von mir eingeführten Sicherheitsmaßnahmen befolgen.
Um eine 100% ige Serversicherheit zu gewährleisten, ist es jedoch auch erforderlich, das Bewusstsein für die Sicherheit persönlicher Server zu schärfen. Sie müssen immer auf zukünftige Sicherheitsbedrohungen vorbereitet sein.
das ist alles.
Recommended Posts