[LINUX] Versuchen Sie, iptables zu lernen, bis Sie im Internet surfen können

Iptables verstehen Öffnen Sie den Port Ihres Laptops (Linux), bis Sie im Internet surfen können.

Ausgangszustand

 iptables -L        
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Da es vollständig geöffnet ist, verwenden wir die White-List-Methode und öffnen den Port, um im Internet zu surfen.

Festlegen der Standardrichtlinie

Verwenden Sie die White-List-Methode

 iptables -P INPUT DROP
 iptables -P FORWARD DROP

Wenn Sie die Option -t nicht angeben, ist die Standardtabelle die Filtertabelle.

Ich kann mich nicht mehr mit Qiita verbinden. OUTPUT ist vollständig geöffnet, aber INPUT kann überhaupt nicht verwendet werden. Mit anderen Worten, ich kann keine Ping-Antwort erhalten.

 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

Ping verfügbar machen

Erlaube Ping, da es das icmp-Protokoll verwendet.

 iptables -A INPUT -p icmp -j ACCEPT
 ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=52 time=12.4 ms

Ist es möglich, den Namen aufzulösen?

 ping google.com
 ping: google.com: unbekannter Name oder Dienst

Namensauflösung zulassen

Das DNS-Protokoll scheint udp und tcp an Port 53 zu verwenden, sodass Sie beide öffnen können.

 iptables -A INPUT -p udp --sport 53 -j ACCEPT
 iptables -A INPUT -p tcp --sport 53 -j ACCEPT
 dig google.com

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com
;; global options: +cmd
;; connection timed out; no servers could be reached

Ich kann es nicht lösen. .. Seltsam.

 cat /etc/resolv.conf
 This file is managed by man:systemd-resolved(8). Do not edit.

 This is a dynamic resolv.conf file for connecting local clients to the
 internal DNS stub resolver of systemd-resolved. This file lists all
 configured search domains.

 Run "systemd-resolve --status" to see details about the uplink DNS servers
 currently in use.

 Third party programs must not access this file directly, but only through the
 symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
 replace this symlink by a static file or a different symlink.

 See man:systemd-resolved.service(8) for details about the supported modes of
 operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0
 ss -ln | grep "127.0.0.53"
udp  UNCONN 0      0                                              127.0.0.53%lo:53                                                 0.0.0.0:*                    
tcp  LISTEN 0      128                                            127.0.0.53%lo:53                                                 0.0.0.0:* 

Es scheint, dass systemd-Resolution einen Hauptvertrag über den lokalen Port 53 abschließt, daher scheint es notwendig zu sein, auch das Ziel zu öffnen. ** Nochmals Hinweis: Dies ist auf Computern nicht erforderlich, auf denen nicht systemd aufgelöst ausgeführt wird **

 iptables -A INPUT -p udp --dport 53 -j ACCEPT
 iptables -A INPUT -p tcp --dport 53 -j ACCEPT
 dig google.com

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62225
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com.			IN	A

;; ANSWER SECTION:
google.com.		163	IN	A	172.217.24.142

;; Query time: 13 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Fri Dec 27 17:47:57 JST 2019
;; MSG SIZE  rcvd: 55

Es ist gelöst. (Eigentlich war ich wirklich begeistert: heat_smile:

Aber es verbindet sich immer noch nicht mit Qiita. Sie müssen in der Lage sein, die http (s) -Antwort zu erhalten.

Http (s) Antwort zulassen

 iptables -A INPUT -p tcp --sport 80 -j ACCEPT
 iptables -A INPUT -p tcp --sport 443 -j ACCEPT

Ich konnte mich mit Qiita verbinden.

Überprüfen und speichern Sie die Einstellungen

Die Einstellungen bis zu diesem Punkt können mit dem folgenden Befehl bestätigt und durch Umleitung gespeichert werden.

iptables-save
 Generated by iptables-save v1.6.1 on Sat Dec 28 13:08:20 2019
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
 Completed on Sat Dec 28 13:08:20 2019
 Generated by iptables-save v1.6.1 on Sat Dec 28 13:08:20 2019
*filter
:INPUT DROP [542:171507]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [2523:785906]
-A INPUT -p icmp -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
COMMIT
 Completed on Sat Dec 28 13:08:20 2019

Einstellungen zurücksetzen

Sie können die Einstellungen aus der gespeicherten Einstellungsdatei mit dem folgenden Befehl wiederherstellen.

# iptables-restore [Name der Konfigurationsdatei]

Aufräumen

Rückkehr zum ursprünglichen Zustand

 iptables -F
 iptables -P INPUT ACCEPT
 iptables -P FORWARD ACCEPT

Zusammenfassung

Von dem Ort, an dem Sie alle eingehenden Pakete mit der Standardrichtlinie abspielen Ich habe versucht, den zum Surfen im Internet erforderlichen Port zu öffnen. Da es sich bei iptables um eine sicherheitsrelevante Einstellung handelt, möchte ich das richtige Wissen erwerben.

Recommended Posts

Versuchen Sie, iptables zu lernen, bis Sie im Internet surfen können
Bis Sie das Fehlerprotokoll lesen können
Bis Sie Caffe installieren und das Beispiel ausführen
Bis Sie versuchen, DNN mithilfe von Colab die Wahrheit des Bildes mitteilen zu lassen
Bis Sie Gauge installieren und das offizielle Beispiel ausführen
Bis Sie Blender installieren und vorerst mit Python ausführen können
Können Sie diese Datei löschen?
Versuchen Sie, iptablse zu lernen, portieren Sie vorwärts
Bis matplotlib installiert ist und ausgeführt wird
Schritte zum Erstellen eines allgemeinen Benutzers in CentOs und zum Ausführen des Befehls sudo (Hinweis)
Sie können auch die Kommunikation von DB und Cache mit Curl überprüfen
Bis Sie VPS mit Conoha ausleihen und den öffentlichen Schlüssel mit SSH authentifizieren können
Versuchen Sie es mit dem Webanwendungsframework Flask
Bis Sie opencv mit Python verwenden können
Während des Studiums von JQuery und Python bis zur Veröffentlichung eines Webdienstes auf GCP