Como abrir um firewall de porta no Ubunto internamente e como verificá-lo

1

Antecedentes

Eu tenho uma máquina aws rodando um aplicativo laravel, e agora eu tentei instalar o console do beanstalk . É assim que o arquivo de configuração nginx do aplicativo laravel se parece:

include forge-conf/default/before/*;

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name default;
    root /home/forge/default/public;

    # FORGE SSL (DO NOT REMOVE!)
    # ssl_certificate;
    # ssl_certificate_key;

    ssl_protocols ..
    ssl_ciphers ..
    ssl_prefer_server_ciphers on;
    ssl_dhparam ..

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    # FORGE CONFIG (DOT NOT REMOVE!)
    include forge-conf/default/server/*;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/default-error.log error;

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

é assim que o arquivo de configuração nginx do aplicativo beanstalk se parece:

server {
    listen 8080;
    listen [::]:8080;
    server_name beanstalk_server;
    root /home/forge/beanstalk-console/public;

    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_log  /var/log/nginx/default-error.log error;

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Pergunta

quando tento acertar server-ip:8080 , recebo o erro:

server-ip took too long to respond.

Eu me certifiquei de que isso não seja uma permissão, já que atualizei as regras de entrada para a instância aws assim:

masaindasemsorte,euseiqueissonãoéumproblemacomopróprioconsoledobeanstalk,b/cseeusimplesmentealternarasportas(ouseja,sefizeroconsoledobeanstalkouviraporta80emvezda8080,funcionamuitobem).Eutambémtenteiumaportadiferentecomo1515eaindanãofuncionou..

tambémeuseiquelocalhost:8080funcionamuitobem,b/cemexecução

wgetlocalhost:8080

retornaositehtmlparaobeanstalk.

umacoisaateremmenteéqueaminhamáquinaawstambémestásentadaatrásdeumbalanceadordecarga..queencaminhasolicitaçõeshttpnobalanceadordecarganaporta80paraaporta80damáquina..masnãoachoqueseriafaçaalgumadiferença

oqueeufaço?

atualizar

euverifiqueimeulogdeacesso(tail-f/var/log/nginx/access.logtail-f/var/log/nginx/access.log)elogsdeerro($tail-f/var/log/nginx/error.log)enãoencontreinadaláquandotenteiacessarobeanstalk

estaéasaídadomeucomandonetstat

tcp000.0.0.0:800.0.0.0:*LISTEN11997/nginx-gdaemtcp000.0.0.0:80800.0.0.0:*LISTEN11997/nginx-gdaemtcp0010.0.17.158:8010.0.1.251:19336ESTABLISHED11998/nginx:workertcp0010.0.17.158:8010.0.17.87:62074ESTABLISHED11998/nginx:workertcp0010.0.17.158:8010.0.17.101:59938ESTABLISHED11998/nginx:workertcp0010.0.17.158:8010.0.17.101:60988ESTABLISHED11998/nginx:workertcp0010.0.17.158:8010.0.1.21:63633ESTABLISHED11998/nginx:workertcp0010.0.17.158:8010.0.1.21:62603ESTABLISHED11998/nginx:workertcp0010.0.17.158:8010.0.17.87:63110ESTABLISHED11998/nginx:workertcp0010.0.17.158:8010.0.1.251:20344ESTABLISHED11998/nginx:workertcp600:::80:::*LISTEN11997/nginx-gdaemtcp600:::8080:::*LISTEN11997/nginx-gdaem

atualização2:configuraçõesdefirewall

Parecequeaporta8080nãotemfirewall.Vejaeste comando :

netstat -ntlp | grep LISTEN
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:11300           0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:587           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11998/nginx: worker
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      11998/nginx: worker
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -
tcp6       0      0 :::3306                 :::*                    LISTEN      -
tcp6       0      0 :::80                   :::*                    LISTEN      11998/nginx: worker
tcp6       0      0 :::8080                 :::*                    LISTEN      11998/nginx: worker
tcp6       0      0 :::22                   :::*                    LISTEN      -
tcp6       0      0 :::5432                 :::*                    LISTEN      -

Eu também corri o nmap:

nmap 10.0.17.158

Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-11 10:38 EEST
Nmap scan report for 10.0.17.158
Host is up (0.000068s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
3306/tcp open  mysql
5432/tcp open  postgresql
8080/tcp open  http-proxy
    
por abbood 11.10.2017 / 07:57

2 respostas

1

Com base na resposta da Shadi, e depois de verificar que a AWS estava de fato roteando a porta 8080 para a máquina, o problema acabou sendo o iptables .

Não sei como verificar se uma porta está bloqueada ou não está usando o iptables, mas aqui está um comando que permitirá a porta 8080:

Este é o comando iptables que permite o acesso à porta 8080 de um nível de SO:

sudo iptables -I INPUT 1 -i eth0 -p tcp --dport 8080 -j ACCEPT

(para referência no comando iptables, veja este excelente post , aspas diretas são formatadas como tal e eu também adicionei minhas próprias explicações para o resto):

-I INPUT 1: The -I flag tells iptables to insert a rule. This is different than the -A flag which appends a rule to the end. The -I flag takes a chain and the rule position where you want to insert the new rule.

in this case, we're adding this rule as the very first rule of the INPUT chain. This will bump the rest of the rules down. We want this at the top because it is fundamental and should not be affected by subsequent rules.

-i eth0: Este componente da regra corresponde se a interface que o pacote está usando for a interface "eth0" (ethernet).

-p tcp: isso é simplesmente especificar o protocolo tcp

- dport 8080: a porta da qual estamos falando

-j ACCEPT: This specifies the target of matching packets. Here, we tell iptables that packets that match the preceding criteria should be accepted and allowed through.

Como verificar se a porta está aberta ou não?

Como mencionado no link acima, você pode simplesmente executar o seguinte:

sudo iptables -S

isto produzirá um lote de regras, dependendo da sua configuração. Para cortar a perseguição, basta executar este comando

$ sudo iptables -S | grep "dport 8080"
-A INPUT -i eth0 -p tcp -m tcp --dport 8080 -j ACCEPT

para que você possa saber imediatamente o que está acontecendo com a porta 8080

Como persistir o comando iptables?

Use apenas o pacote iptables-persistent :

sudo apt-get update
sudo apt-get install iptables-persistent

Ele irá persistir as regras do iptables na nova instalação, consulte o link acima para mais detalhes

    
por 11.10.2017 / 14:05
2

Desde localhost: 8080 funciona assim a requisição do exterior não está chegando ao seu servidor que está escutando naquela porta 8080. Confira abaixo

  1. A AWS está roteando solicitações para o seu servidor (o que deve ser o caso com base na sua configuração)
  2. Verifique a configuração do firewall para a instância que você possui. Qual sistema operacional você está usando? provavelmente a configuração nega acesso a essa porta
por 11.10.2017 / 08:35