# Linux

### Fail2Ban

#### Instalando

```bash
sudo apt install fail2ban
```

| CONCEITO / ARQUIVO            | DESCRIÇÃO                                                                                                                                                                                       |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Filters`                     | Um filtro é definido com expressões regulares, que correspondem a padrões de tentativas de invasões em logs                                                                                     |
| `Actions`                     | Define comandos a serem executados, por exemplo, bloquear ou liberar um determinado IP                                                                                                          |
| `Jail`                        | Combina os filtros com as ações                                                                                                                                                                 |
| `/etc/fail2ban/fail2ban.conf` | Arquivo com configurações básicas                                                                                                                                                               |
| `/etc/fail2ban/jail.conf`     | Arquivo com configurações de serviços monitorados, combinando filtros e ações. Na verdade, configurações feitas pelo usuário, se recomenda a utilização do `jail.local` ao invés de `jail.conf` |
| `/etc/fail2ban/action.d/`     | Diretório onde ficam as regras de ações a serem tomadas, caso os filtros deêm match                                                                                                             |
| `/etc/fail2ban/filter.d/`     | Diretório com expressões e padrões para detectar os ataques                                                                                                                                     |

###

### Rkhunter

#### Instalando

```bash
sudo aptitude install rkhunter
```

#### Atualizando

```bash
sudo rkhunter --propupd
```

#### Realizando Scanner

```bash
sudo rkhunter --check
```

### <br>

### Desabilitando login

```bash
chsh -s /sbin/nologin <user>
```

###

### SSH

Edite o arquivo de configuração do SSH que está localizado em `/etc/ssh/ssh_config`  e realize as seguintes configurações:

| CONFIGURAÇÃO                               | DESCRIÇÃO                                               |
| ------------------------------------------ | ------------------------------------------------------- |
| PasswordAuthentication no                  | Forçar a autenticação apenas por chave                  |
| PermitRootLogin no                         | Desabilitar o login com o root                          |
| AllowUsers \<user1> \<user2> ..  \<user10> | Permitir que apenas certos usuários façam login via SSH |

###

### Desabilitando login TTY  do root

Este é mais um modo de proteger o root (ou superusuário) indicando em quais TTYs ele pode fazer login. Administradores cuidadosos criam um ambiente onde o root, não faça login de qualquer maneira, evitando assim problemas sérios de segurança. Ao remover as entradas deste arquivo, o root não fará login em qualquer tipo de terminal, obrigando assim o uso do `su` ou `sudo`.

```bash
> /etc/securetty
```

### Apache

#### Configurando Apache para não exibir diretórios web

Abra o arquivo `/etc/apache2/apache2.conf`, procure pelo trecho abaixo e substitua `Options Indexes FollowSymLinks` por `Options FollowSymLinks`.

```bash
<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
```

#### Ocultando detalhes em banner de erro

Edite o arquivo `/etc/apache2/conf-enabled/security.conf` e altere `ServerTokens OS` para `ServerTokens Prod` para ocultar informações do SO e altere `ServerSignature On` para `ServerSignature Off` para ocultar informações sobre o Apache.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mysther.gitbook.io/knowledge-base/defesa/melhorando-sua-seguranca-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
