[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-16 22:39:18
This commit is contained in:
parent
f054a6adc3
commit
62dc569bd2
|
|
@ -1,15 +1,19 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
echo "A procurar por atualizações para o serviço Proxy-Sinc..."
|
echo "A procurar por atualizações para o serviço Proxy-Sinc..."
|
||||||
UPDATE_SCRIPT_URL="http://git.itguys.com.br/joao.goncalves/NgixProxy_Pathfinder/raw/branch/main/Instal-Proxy-Sinc.sh"
|
UPDATE_SCRIPT_URL="https://git.itguys.com.br/joao.goncalves/NgixProxy_Pathfinder/raw/branch/main/Instal-Proxy-Sinc.sh"
|
||||||
TEMP_SCRIPT="/tmp/setup_latest.sh"
|
TEMP_SCRIPT="/tmp/setup_latest.sh"
|
||||||
|
|
||||||
echo "A baixar a versão mais recente do instalador de: $UPDATE_SCRIPT_URL"
|
echo "A baixar a versão mais recente do instalador de: $UPDATE_SCRIPT_URL"
|
||||||
|
|
||||||
SSL_VERIFY_FLAG=""
|
SSL_VERIFY_FLAG=""
|
||||||
if [ -f "/etc/proxy-sinc/git.conf" ] && [ -d "/opt/config_repo/.git" ]; then
|
if [ -d "/opt/config_repo/.git" ]; then
|
||||||
if [ "$(cd /opt/config_repo && git config --get http.sslVerify)" == "false" ]; then
|
if [ "$(cd /opt/config_repo && git config --get http.sslVerify)" == "false" ]; then
|
||||||
SSL_VERIFY_FLAG="--insecure"
|
SSL_VERIFY_FLAG="--insecure"
|
||||||
|
echo "[AVISO] A usar o modo inseguro para baixar a atualização devido à configuração do repositório."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if curl $SSL_VERIFY_FLAG -L "$UPDATE_SCRIPT_URL" -o "$TEMP_SCRIPT"; then
|
if curl $SSL_VERIFY_FLAG -L "$UPDATE_SCRIPT_URL" -o "$TEMP_SCRIPT"; then
|
||||||
chmod +x "$TEMP_SCRIPT"
|
chmod +x "$TEMP_SCRIPT"
|
||||||
echo "Instalador baixado com sucesso. A executar a atualização..."
|
echo "Instalador baixado com sucesso. A executar a atualização..."
|
||||||
|
|
@ -17,6 +21,7 @@ if curl $SSL_VERIFY_FLAG -L "$UPDATE_SCRIPT_URL" -o "$TEMP_SCRIPT"; then
|
||||||
rm "$TEMP_SCRIPT"
|
rm "$TEMP_SCRIPT"
|
||||||
echo "Atualização concluída!"
|
echo "Atualização concluída!"
|
||||||
else
|
else
|
||||||
echo "ERRO: Falha ao baixar o script de atualização." >&2; exit 1
|
echo "ERRO: Falha ao baixar o script de atualização." >&2
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,20 @@
|
||||||
# /etc/fail2ban/filter.d/nginx-json-gitea.conf
|
# Filtro expandido para proteger o Gitea, lendo os logs em formato JSON.
|
||||||
|
# Cobre a interface web e os endpoints de operações Git.
|
||||||
|
|
||||||
[Definition]
|
[Definition]
|
||||||
# Regra 1: Deteta múltiplas requisições POST para a página de login.
|
|
||||||
|
# Usamos múltiplas linhas de 'failregex'. Se QUALQUER uma delas corresponder,
|
||||||
|
# o fail2ban regista uma falha para o IP.
|
||||||
|
|
||||||
|
# Regra 1: Deteta tentativas de login falhadas na interface web (método POST).
|
||||||
failregex = ^.*"remote_addr":"<HOST>".*"method":"POST".*"uri":"/user/login".*$
|
failregex = ^.*"remote_addr":"<HOST>".*"method":"POST".*"uri":"/user/login".*$
|
||||||
# Regra 2: Deteta erros 404.
|
|
||||||
|
# Regra 2 (NOVA): Deteta tentativas de 'git push' ou 'git pull/clone' com credenciais erradas.
|
||||||
|
# Procura por erros de autenticação (401/403) nos endpoints específicos do Git.
|
||||||
|
^.*"remote_addr":"<HOST>".*"(git-upload-pack|git-receive-pack)".*"status":(401|403),.*$
|
||||||
|
|
||||||
|
# Regra 3: Deteta scans de repositórios ou ficheiros que não existem (erros 404).
|
||||||
|
# Esta regra é muito eficaz contra bots que procuram por repositórios públicos com nomes comuns.
|
||||||
^.*"remote_addr":"<HOST>".*"status":404,.*$
|
^.*"remote_addr":"<HOST>".*"status":404,.*$
|
||||||
|
|
||||||
ignoreregex =
|
ignoreregex =
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
# Desativa completamente o motor de regras do ModSecurity para QUALQUER URL
|
# Desativa completamente o motor de regras do ModSecurity para QUALQUER URL
|
||||||
# que envolva a visualização ou edição de ficheiros no Gitea.
|
# que envolva a visualização ou edição de ficheiros no Gitea.
|
||||||
# A expressão regular apanha os caminhos "/src/branch/" (visualização) e "/_edit/" (edição).
|
# Desativa completamente o motor de regras do ModSecurity para QUALQUER URL
|
||||||
# Isto previne que o WAF bloqueie o conteúdo legítimo de ficheiros de configuração e scripts.
|
# que envolva a visualização, edição ou criação de ficheiros no Gitea.
|
||||||
SecRule REQUEST_URI "@rx ^/.*/(src/branch|_edit)/" \
|
# A expressão regular agora apanha os caminhos "/src/branch/", "/_edit/" e "/_new/".
|
||||||
|
SecRule REQUEST_URI "@rx ^/.*/(src/branch|_edit|_new)/" \
|
||||||
"id:1005,phase:1,nolog,allow,ctl:ruleEngine=Off"
|
"id:1005,phase:1,nolog,allow,ctl:ruleEngine=Off"
|
||||||
|
|
|
||||||
|
|
@ -38,10 +38,6 @@ server {
|
||||||
|
|
||||||
server_name git.itguys.com.br;
|
server_name git.itguys.com.br;
|
||||||
|
|
||||||
# --- Certificados SSL (Geridos pelo Certbot) ---
|
|
||||||
#ssl_certificate /etc/letsencrypt/live/git.itguys.com.br/fullchain.pem;
|
|
||||||
#ssl_certificate_key /etc/letsencrypt/live/git.itguys.com.br/privkey.pem;
|
|
||||||
|
|
||||||
# --- Cabeçalhos de Segurança ---
|
# --- Cabeçalhos de Segurança ---
|
||||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,125 @@
|
||||||
|
# Ficheiro: /etc/nginx/sites-available/itguys.com.br.conf
|
||||||
|
#
|
||||||
|
# Configuração de Proxy Reverso com Cache Inteligente, otimizada para
|
||||||
|
# um site maioritariamente estático com um formulário de contacto dinâmico.
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# BLOCO HTTP: Redirecionar todo o tráfego para a versão segura e canónica (www)
|
||||||
|
# ==============================================================================
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
# Escuta por ambos os domínios, com e sem 'www'.
|
||||||
|
server_name itguys.com.br www.itguys.com.br;
|
||||||
|
|
||||||
|
# Regra especial para a validação do Let's Encrypt funcionar corretamente.
|
||||||
|
location /.well-known/acme-challenge/ {
|
||||||
|
root /var/www/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Para todas as outras requisições, envia um redirecionamento permanente (301) para a versão segura e com 'www'.
|
||||||
|
location / {
|
||||||
|
return 301 https://www.itguys.com.br$request_uri;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# BLOCO HTTPS: O Coração da nossa Configuração
|
||||||
|
# ==============================================================================
|
||||||
|
server {
|
||||||
|
listen 443 ssl http2;
|
||||||
|
listen [::]:443 ssl http2;
|
||||||
|
# Define o nome canónico do servidor. A outra versão será redirecionada aqui.
|
||||||
|
server_name www.itguys.com.br;
|
||||||
|
|
||||||
|
# Adicionamos um redirecionamento para o tráfego que chega a 'itguys.com.br' na porta 443.
|
||||||
|
# Isto garante que os utilizadores usem sempre a versão 'www'.
|
||||||
|
if ($host = 'itguys.com.br') {
|
||||||
|
return 301 https://www.itguys.com.br$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Certificados SSL (Geridos pelo Certbot) ---
|
||||||
|
# O Certbot irá preencher estas linhas. Lembre-se de o executar para ambos os domínios.
|
||||||
|
ssl_certificate /etc/letsencrypt/live/www.itguys.com.br/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/www.itguys.com.br/privkey.pem;
|
||||||
|
|
||||||
|
# --- Cabeçalhos de Segurança Padrão ---
|
||||||
|
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
||||||
|
add_header X-Content-Type-Options "nosniff" always;
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||||
|
|
||||||
|
# --- Configurações de Log ---
|
||||||
|
access_log /var/log/nginx/access.log detailed_proxy;
|
||||||
|
error_log /var/log/nginx/error.log;
|
||||||
|
|
||||||
|
# --- ESTRATÉGIA DE CACHE HÍBRIDA E SEGURA ---
|
||||||
|
# Usa a nossa zona de cache pública.
|
||||||
|
proxy_cache zabbix_cache;
|
||||||
|
# Adiciona um cabeçalho de depuração para vermos o status do cache.
|
||||||
|
add_header X-Proxy-Cache $upstream_cache_status;
|
||||||
|
# Regra geral: NÃO cachear nada por defeito.
|
||||||
|
proxy_no_cache 1;
|
||||||
|
proxy_cache_bypass 1;
|
||||||
|
|
||||||
|
# --- LOCALIZAÇÃO PARA O FORMULÁRIO DE CONTACTO (SEM CACHE) ---
|
||||||
|
# O '=' indica uma correspondência exata da URI, o que é mais eficiente.
|
||||||
|
location = /php/enviar.php {
|
||||||
|
# Desativa o cache completamente para esta localização.
|
||||||
|
proxy_no_cache 1;
|
||||||
|
proxy_cache_bypass 1;
|
||||||
|
|
||||||
|
proxy_pass http://172.16.12.17:80;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- LOCALIZAÇÃO PARA FICHEIROS ESTÁTICOS (CACHE LONGO) ---
|
||||||
|
# Esta regra apanha os ficheiros que são seguros para cachear.
|
||||||
|
location ~* \.(jpg|jpeg|gif|png|webp|svg|css|js|ico|woff2|ttf|json|otf)$ {
|
||||||
|
# Ativa o cache para estes ficheiros.
|
||||||
|
proxy_no_cache 0;
|
||||||
|
proxy_cache_bypass 0;
|
||||||
|
# Define que as respostas válidas (código 200) ficam no cache por 60 minutos.
|
||||||
|
proxy_cache_valid 200 60m;
|
||||||
|
# Instrui o NAVEGADOR do cliente a guardar uma cópia por 7 dias.
|
||||||
|
expires 7d;
|
||||||
|
|
||||||
|
proxy_pass http://172.16.12.17:80;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- NOVA LOCALIZAÇÃO PARA PÁGINAS HTML ESTÁTICAS (CACHE LONGO) ---
|
||||||
|
# Esta regra apanha especificamente as páginas Sobre.html e Serviços.html.
|
||||||
|
location ~* ^/(Sobre|Serviços)\.html$ {
|
||||||
|
# Ativa o cache para estas páginas.
|
||||||
|
proxy_no_cache 0;
|
||||||
|
proxy_cache_bypass 0;
|
||||||
|
# Define um tempo de cache longo (1 hora) para estas páginas que raramente mudam.
|
||||||
|
proxy_cache_valid 200 1h;
|
||||||
|
|
||||||
|
proxy_pass http://172.16.12.17:80;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- LOCALIZAÇÃO PRINCIPAL PARA O RESTO DO SITE (CACHE CURTO) ---
|
||||||
|
# Apanha as páginas HTML restantes (como a index.html).
|
||||||
|
location / {
|
||||||
|
# Ativa o cache, mas por um período curto (5 minutos).
|
||||||
|
# Isto acelera a navegação sem o risco de mostrar conteúdo muito desatualizado.
|
||||||
|
proxy_no_cache 0;
|
||||||
|
proxy_cache_bypass 0;
|
||||||
|
proxy_cache_valid 200 5m;
|
||||||
|
|
||||||
|
proxy_pass http://172.16.12.17:80;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Reference in New Issue