[LINUX] Essayez et apprenez iptables, jusqu'à ce que vous puissiez naviguer sur le Web

Pour comprendre iptables Essayez d'ouvrir le port sur votre ordinateur portable (Linux) jusqu'à ce que vous puissiez naviguer sur le Web.

Etat initial

 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

Puisqu'il est complètement ouvert, nous utiliserons la méthode de la liste blanche et ouvrirons le port pour naviguer sur le Web.

Définition de la stratégie par défaut

Utiliser la méthode de la liste blanche

 iptables -P INPUT DROP
 iptables -P FORWARD DROP

Si vous ne spécifiez pas l'option -t, la table par défaut est la table de filtres.

Je ne peux plus me connecter à qiita. OUTPUT est complètement ouvert, mais INPUT ne peut pas du tout être pris. En d'autres termes, je ne peux pas obtenir de réponse ping.

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

Rendre le ping disponible

Autorisez le ping car il utilise le protocole icmp.

 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

Est-il possible de résoudre le nom?

 ping google.com
 ping: google.com: nom ou service inconnu

Autoriser la résolution de noms

Le protocole DNS semble utiliser udp et tcp sur le port 53, vous pouvez donc ouvrir les deux.

 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

Je ne peux pas le résoudre. .. Étrange.

 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:* 

Il semble que systemd-résolu passe un contrat principal sur le port local 53, il semble donc nécessaire d'ouvrir également la destination. ** Remarque à nouveau: ce n'est pas nécessaire sur les machines qui n'exécutent pas de résolution systemd **

 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

C'est résolu. (En fait, j'étais vraiment dedans: sweat_smile:

Mais cela ne se connecte toujours pas à qiita. Vous devez être en mesure de recevoir la réponse http (s).

Autoriser la réponse http (s)

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

J'ai pu me connecter à qiita.

Vérifier et enregistrer les paramètres

Les paramètres jusqu'à ce point peuvent être confirmés avec la commande suivante et peuvent être enregistrés par redirection.

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

Restaurer les paramètres

Vous pouvez restaurer les paramètres à partir du fichier de paramètres enregistré avec la commande suivante.

# iptables-restore [nom du fichier de configuration]

Nettoyer

Pour revenir à l'état d'origine

--Supprimer le paramètre de règle avec l'option -F (Elle est supprimée pour chaque table. Cette fois, l'option -t n'est pas nécessaire car elle dépend de la table de filtrage, mais si vous modifiez la table nat, spécifiez-la avec -t et supprimez-la.) --- P pour annuler la politique

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

Résumé

De l'endroit où vous jouez tous les paquets entrants avec la politique par défaut J'ai essayé d'ouvrir le port nécessaire pour naviguer sur le Web. Étant donné que iptables est un paramètre lié à la sécurité, je souhaite acquérir les bonnes connaissances.

Recommended Posts

Essayez et apprenez iptables, jusqu'à ce que vous puissiez naviguer sur le Web
Jusqu'à ce que vous puissiez lire le journal des erreurs
Jusqu'à ce que vous installiez Caffe et exécutiez l'exemple
Jusqu'à ce que vous essayiez de laisser DNN apprendre la vérité de l'image en utilisant Colab
Jusqu'à ce que vous installiez Gauge et exécutiez l'exemple officiel
Jusqu'à ce que vous puissiez installer Blender et l'exécuter avec python pour le moment
Pouvez-vous supprimer ce fichier?
Essayez et apprenez iptablse, port forward
Jusqu'à ce que matplotlib soit installé et exécuté
Étapes pour créer un utilisateur général dans CentOs et pouvoir exécuter la commande sudo (Remarque)
Vous pouvez également vérifier la communication de la base de données et du cache avec curl
Jusqu'à ce que vous puissiez emprunter VPS avec Conoha et authentifier la clé publique avec SSH
Essayez d'utiliser le framework d'application Web Flask
Jusqu'à ce que vous puissiez utiliser opencv avec python
En étudiant JQuery et Python jusqu'à la publication d'un service Web sur GCP