Frage Wie kann ich alle außer drei Ports in Ubuntu blockieren?


Wie kann ich alle Ports mit Ausnahme von 1962, 999, 12020 blockieren?

Ein Port für SSH und zwei andere für eine Art Skript. Also, es ist notwendig, ausgehend von diesen Ports zuzulassen, oder?

Meine iptables:

# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*mangle
:PREROUTING ACCEPT [643521:136954367]
:INPUT ACCEPT [643521:136954367]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
:POSTROUTING ACCEPT [645723:99904505]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*filter
:INPUT ACCEPT [643490:136950781]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [645723:99904505]
-A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
COMMIT
# Completed on Sat Feb 25 17:25:21 2012
# Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012
*nat
:PREROUTING ACCEPT [5673:734891]
:POSTROUTING ACCEPT [2816:179474]
:OUTPUT ACCEPT [2816:179474]
COMMIT
# Completed on Sat Feb 25 17:25:21 2012

Entschuldigung, aber ich bin ein echter Neuling, wenn es um dieses Zeug geht und ich möchte nur meinen Server sicherer machen.


21
2018-02-25 18:05


Ursprung


Warum nicht UFW benutzen? - Soviero


Antworten:


Zuerst sollten Sie immer spülen, um sicher zu sein, was bereits definiert ist ... nichts

iptables -F

Setzen Sie dann die Standardrichtlinie der INPUT-Kette auf DROP, wenn das Ende erreicht ist und keine Regel gefunden wurde:

iptables -P INPUT DROP

Um sicherzustellen, dass der Loopback nicht funktioniert, sollten Sie hinzufügen

iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

um den gesamten Verkehr auf dem Lo-If und jedem eingehenden Verkehr für Verbindungen zuzulassen, die Sie aufgebaut haben. Fügen Sie danach alle Regeln hinzu, die Sie für Ihre Dienste benötigen (Vergiss nicht, ssh zu öffnen, wenn du es brauchst! Sonst bist du draußen):

iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 

Ein kleiner Trick, den ich mache, um mich und andere daran zu hindern, Löcher in die Sicherheit zu bohren, die ich schließlich hinzufüge:

iptables -A INPUT -j DROP

Diese Zeile stimmt mit allem für die INPUT-Kette überein und die Richtlinie sollte nichts erhalten. Selbst wenn Sie nach der Initialisierung Ihres Regelsatzes eine ACCEPT-Regel hinzufügen, wird dieser Vorteil niemals überprüft, da zuvor alles gelöscht wurde. So wird sichergestellt, dass Sie alles an einem Ort aufbewahren müssen.

Für Ihre Frage sieht das ganze so aus:

iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1962 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 999 -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --dport 12020 -j ACCEPT 
iptables -A INPUT -j DROP

24
2018-02-25 18:09



Nur um klarzustellen: -P legt die Richtlinie für die Kette fest. Es wird keine Regel hinzugefügt. Die Policy der Kette zeigt die Aktion an, die an dem Paket ausgeführt werden soll, wenn das Ende der Kette erreicht ist. Aus diesem Grund ist es klug, deine Regeln hinzuzufügen Vor Einstellung eines DROP Politik. - Belmin Fernandez
Wenn ich mich richtig erinnere, ist es normalerweise egal, wo man die Richtlinie setzt ... vielleicht sollte ich meine Antwort ein wenig editieren. - Mose
Eine Anmerkung: seien Sie sehr vorsichtig, wenn Sie eine Firewall per ssh einrichten. Du wirst dich aussperren. Ja, ich habe das getan. :-) Jetzt mache ich normalerweise die letzte Regel iptables -A INPUT -j DROP aus genau diesem Grund. - Sirex
Ich habe meine ssh Warnung ein wenig hervorgehoben ;-) - Mose
@Mose: Richtig darauf kommt es generell nicht an. Ich habe versucht, das hervorzuheben. Aber es könnte dazu führen, dass Sie ausgesperrt werden, wie es bereits erwähnt wurde, heh. - Belmin Fernandez


Eine Antwort von einem Neuling genau wie du :-) Ich musste auch meinen Ubuntu-Server sichern, das Lernen von iptables war ein Schmerz, den ich nicht durchstehen konnte. UFW (Uncomplicated Firewall) ist ein Programm, um die Konfiguration der Firewall so einfach wie möglich zu machen.

  • installiere ufw:

    sudo apt-get install ufw
    
  • deaktiviere es sofort (ich musste rescue-booten, da ich von meinem eigenen SSH-Login ausgeschlossen war):

    sudo ufw disable
    
  • Setzen Sie "deny" als Standardregel (dies blockiert alle Ports):

    sudo ufw default deny
    
  • Erlaube Ports, die du brauchst:

    sudo ufw allow to 1962
    sudo ufw allow to 999
    sudo ufw allow to 12020
    
    sudo ufw allow from 1962
    sudo ufw allow from 999
    sudo ufw allow from 12020
    
  • Wenn Sie sicher sind, dass die obigen Regeln Ihre ssh-Verbindung nicht unterbrechen, aktivieren Sie ufw:

    sudo ufw enable
    

Dokumente sind gut geschrieben und bieten weitere Beispiele: https://help.ubuntu.com/community/UFW


19
2018-02-27 10:11



Bei der Arbeit mit Firewall-Konfigurationen kann es sinnvoll sein, einen Cron-Job zu erstellen, der die Firewall wieder deaktiviert. Nur für den Fall, dass Sie ausgesperrt werden. - pymkin
Beachten Sie, dass dies nicht mit UFW 0.35, Wurffehler wie funktioniert ERROR: Bad destination address und ERROR: Bad source address - Dave
Und wie können alle Ports außer einem Port für eine bestimmte Schnittstelle zugelassen werden? Ich verwende die Standard-Deny-Regel und möchte den DNS-Port 53 auf der Ethernet-Schnittstelle blockieren, um DNS-Lecks bei der Verwendung eines VPN zu verhindern. Derzeit muss ich alle Ports zulassen, die ich für private IP-Bereiche verwenden möchte, was nicht sehr praktisch ist. - baptx