> For the complete documentation index, see [llms.txt](https://aws101.leandronsp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://aws101.leandronsp.com/criar-regra-de-firewall-no-ec2.md).

# Criar regra de firewall no EC2

Por padrão, quando uma instância é criada no EC2, lhe é atribuída uma regra de firewall, que no EC2 se chamam **Security Groups**.&#x20;

A regra *default* é que a instância fica com todas as portas abertas para toda a internet. Em termos de segurança, não queremos deixar nosso servidor tão exposto assim.&#x20;

Portanto, o único acesso inicial que queremos dar à nossa instância *é na porta 22 para que possamos fazer SSH* e entrar na máquina.&#x20;

Com isto em mente, queremos criar nossa instância com um security group customizado por nós onde o único acesso é através da porta 22, deixando todas as outras fechadas por default.&#x20;

#### Criando um security group via CLI

Podemos criar quantos security groups (sg) quisermos no EC2, inclusive adicionar e remover regras de firewall a estes security groups.&#x20;

```bash
aws --profile personal ec2 \
    create-security-group \
    --group-name instances-sg \
    --description "Security Group for EC2 instances" \
    --tag-specifications "ResourceType=security-group,Tags=[{Key=Name,Value=instances-sg}]"
```

A opção `tag-specifications` é opcional e muito útil para definirmos labels e nomes para nossos recursos na AWS, para uma melhor visualização e filtragem na interface web.

No output, deverá ter toda a informação do security group, incluindo o `SecurityGroupId`.

#### Adicionando regras de ingress no security group

Nosso security group está criado mas não possui nenhuma regra. Ele é completamente *fechado por default*. Precisamos abrir o necessário, no nosso caso, a porta 22, utilizando a ação `authorize-security-group-ingress`:

```bash
aws --profile personal ec2 \
    authorize-security-group-ingress \
    --group-id <g-group-id> \ <---------- mudar para o ID do security group
    --protocol tcp --port 22 --cidr 0.0.0.0/0
```

A opção `--protocol` define o tipo de protocolo, no caso TCP; a porta 22; e o bloco [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) que, no nosso exemplo, permite qualquer interface de rede da internet, `0.0.0.0/0.`

#### E pronto,&#x20;

temos um security group devidamente criado a configurado, pronto para ser utilizado na nossa futura instância virtual.
