Arquivo da categoria: Linux

Proteção para apache2 contra Clickjacking iframe embedded

Via configuração do apache

Debian edite o : /etc/apache2/conf-enabled/security.conf
Redhat edite o : /etc/httpd/conf/httpd.conf

adicione ou descomente a linha:

Header set X-Frame-Options: "SAMEORIGIN"

Você pode aplicar a segurança usando o .htaccess também

crie o arquivo .htaccess no diretório de seu site e adicione:

Header append X-Frame-Options: "SAMEORIGIN"

Teste se seu site esta vulnerável

https://clickjacker.io/test

Referências

https://tecadmin.net/configure-x-frame-options-apache/
https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Headers/X-Frame-Options
https://geekflare.com/csp-frame-ancestors-configuration/

Instalando certificado letsencrypt no apache2 linux

Instale os pacotes

apt install certbot python3-certbot-apache apache2

crie o arquivo /etc/apache2/letsencrypt.conf

Alias /.well-known/acme-challenge/ /var/www/letsencrypt/.well-known/acme-challenge/
<Directory "/var/www/letsencrypt/.well-known/acme-challenge/">
    Options None
    AllowOverride None
    ForceType text/plain
</Directory>

crie o arquivo /etc/letsencrypt/options-ssl-apache.conf

# This file contains important security parameters. If you modify this file
# manually, Certbot will be unable to automatically provide future security
# updates. Instead, Certbot will print and log an error message with a path to
# the up-to-date file that you will need to refer to when manually updating
# this file.

SSLEngine on

# Intermediate configuration, tweak to your needs
SSLProtocol             all -SSLv2 -SSLv3
SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
SSLHonorCipherOrder     on
SSLCompression          off

SSLOptions +StrictRequire

# Add vhost name to log entries:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common

#CustomLog /var/log/apache2/access.log vhost_combined
#LogLevel warn
#ErrorLog /var/log/apache2/error.log

# Always ensure Cookies have "Secure" set (JAH 2012/1)
#Header edit Set-Cookie (?i)^(.*)(;\s*secure)??((\s*;)?(.*)) "$1; Secure$3$4"

crie o arquivo de virtualhost do seu domínio

/etc/apache2/sites-available/dominio.conf

<VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /var/www/html/dominio
	include /etc/apache2/letsencrypt.conf
        ServerName dominio.com.br
        ServerAlias dominio.com.br
        ErrorLog ${APACHE_LOG_DIR}/error-dominio.com.br.log
        CustomLog ${APACHE_LOG_DIR}/access-dominio.com.br.log combined
 </VirtualHost>

reinicie o apache /etc/init.d/apache2 restart

agora vamos criar o certificado

certbot certonly -d dominio.com.br –webroot -w /var/www/letsencrypt/

se tudo ocorrer bem, os certificados devem ser criados em /etc/letsencrypt/live/

agora vamos criar o virtualhost do dominio com o certificado, outro arquivo…

/etc/apache2/sites-available/dominio-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerAdmin [email protected]
        DocumentRoot /var/www/html/nfe/api-asaas/
	include /etc/apache2/letsencrypt.conf
        ServerName nfe.bitcontrol.us
        ErrorLog ${APACHE_LOG_DIR}/error-nfe.log
        CustomLog ${APACHE_LOG_DIR}/access-nfe.log combined
        SSLCertificateFile /etc/letsencrypt/live/dominio.com.br/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/dominio.com.br/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

depois de criar o certificado, ative o redirecionamento automático assim sempre que alguém acessar http://dominio.com.br será automaticamente direcionado para https://dominio.com.br

para isso basta adicionar as linhas a seguir dentro do <VirtualHost> </VirtualHost>

RewriteEngine on
RewriteCond %{SERVER_NAME} =dominio.com.br
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

ficando o arquivo /etc/apache2/sites-available/dominio.conf assim (não esqueça de reiniciar o apache depois das mudança dos arquivos de configuração)

<VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /var/www/html/dominio
	include /etc/apache2/letsencrypt.conf
        ServerName dominio.com.br
        ServerAlias dominio.com.br
        ErrorLog ${APACHE_LOG_DIR}/error-dominio.com.br.log
        CustomLog ${APACHE_LOG_DIR}/access-dominio.com.br.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =dominio.com.br
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
 </VirtualHost>

Instalando painel unifi controller no debian 10

Instalando as dependencias do apt

apt install apt-transport-https ca-certificates wget dirmngr gnupg gnupg2 software-properties-common multiarch-support

Instalando o mongodb < 4.0

wget -qO - https://www.mongodb.org/static/pgp/server-3.4.asc |  apt-key add -
echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4 main" | tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Instalando o libss1.0 (por padrão o debian 10 vem com o 1.1)

wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u12_amd64.deb
dpkg -i libssl1.0.0_1.0.1t-1+deb8u12_amd64.deb

Instalando o java

wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/

apt update
apt install adoptopenjdk-8-hotspot

java -version

Editar o profile para inserir a variavel de ambiente


vi /etc/profile
export JAVA_HOME="/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64"

source /etc/profile

echo $JAVA_HOME

Instalando o painel unifi

apt-key adv --keyserver keyserver.ubuntu.com --recv 06E85760C0A52C50
echo 'deb https://www.ui.com/downloads/unifi/debian stable ubiquiti' | tee /etc/apt/sources.list.d/100-ubnt-unifi.list
apt update && apt install unifi

como montar um bucket digital ocean (spaces) no linux

o Digital Ocean Spaces é o serviço de bucket (object storage) da Digital Ocean, ele é compatível com o serviço de object storage da amazon (S3) por tanto, podemos usar a maioria das ferramentas que conectam no S3 para conectar no Spaces da digital Ocean.

para “montar”, isso é, acessar o bucket em seu computador com linux faça o seguinte:

sudo apt-get install s3fs

echo "SPACES_ACCESS_KEY_ID:SPACES_SECRET_ACCESS_KEY > ~/.passwd-s3fs

note que existe um “:” entre o KEY_ID e o ACCESS_KEY

chmod 600 ~/.passwd-s3fs

mkdir ~/bucket

s3fs nome_do_seu_bucket ~/bucket -ourl=https://nyc3.digitaloceanspaces.com -ouse_cache=/tmp -o passwd_file=/.passwd-s3fs

estou assumindo que seu bucket esta em NYC3 (região)

adicionando logs de acesso no samba linux

adicione essas linhas na sessão global do seu /etc/samba/smb.conf

#logs
vfs objects = full_audit 
full_audit:prefix = %u|%I|%m|%S
full_audit:success = mkdir rename unlink rmdir pwrite
full_audit:failure = none
full_audit:facility = local7
full_audit:priority = NOTICE

reinicie o serviço (/etc/init.d/smbd restart)

acompanhe os logs em /var/log/syslog

erro conexão php mysql unknown to the client [caching_sha2_password]

Se você esta utilizando a versão 8 do mysql (versão padrão do Ubuntu 20.04) e uma versão anterior a 7.4 do PHP provavelmente ocorrerá um problema de conexão do PHP ao tentar acessar o servidor mysql

A mensagem de erro é algo semelhante a esta:

PHP Warning:  mysql_connect(): The server requested authentication method unknown to the client [caching_sha2_password]

Para resolver você deve habilitar o suporte a senhas nativas do Mysql no servidor mysql.

Para ativar este suporte edite o arquivo de configuração do servidor mysql (no ubuntu 20.04 o arquivo é o /etc/mysql/mysql.conf.d/mysqld.cnf )

adicione a linha:

default_authentication_plugin=mysql_native_password

Reinicie o servidor mysql (/etc/init.d/mysql restart)

Altere a senha do usuário o qual esta tentando realizar o acesso com o comando

ALTER USER 'usuario'@'localhost' identified with mysql_native_password BY 'senhadousuario'

Este comando deve ser executando dentro do mysql (mysql -h localhost)

Pronto, agora a conexão entre o PHP < 7.4 e o mysql 8 deverá funcionar.

VESTACP Como instalar um certificado valido na área de administração (porta 8083)

O VestaCP é um software para administração de infraestrutura de websites, ele faz um papel muito parecido com o WHM/CPanel.

Por padrão o VESTACP adiciona um certificado auto-assinado para sua pagina de administração (https://servidorvesta:8083)

Para instalar um certificado que seja reconhecido pelos navegadores precisamos primeiro criar um certificado válido, eu normalmente uso o Letsencrypt, o próprio VESTACP tem os recursos para gerar esse certificado.

Primeiro de tudo, o domínio o qual você irá acessar o painel precisa estar inserido no próprio painel (o certificado só funciona para domínio, acessando por IP não irá ser reconhecido).

Vamos supor que o domínio para acessar o VESTACP é hosting.seudominio.com.br, logo este domínio tem que estar criado dentro do painel, por padrão ele ja faz isso nas configurações iniciais após a instalação

Agora temos duas formas de criar o certificado letsencrypt para esse domínio, a primeira (e a que eu mais gosto) é via linha de comando, para isso:

Sintaxe: v-add-letsencrypt-domain USER DOMAIN [ALIASES]

então: # v-add-letsencrypt-domain admin hosting.seudominio.com.br

Se você optar pela segunda forma de criar o certificado, acesse o painel administrativo (https://hosting.seudominio.com.br:8083) -> WEB -> Selecione o domínio e click em “Edit” -> Marque a opção “SSL Support” e “Lets Encrypt Support” -> depois salve.

Depois de criado o certificado vamos modificar o certificado padrão da área administrativa do VESTACP:

#mv /usr/local/vesta/ssl/certificate.crt /usr/local/vesta/ssl/certificate-old.crt
#mv /usr/local/vesta/ssl/certificate.key /usr/local/vesta/ssl/certificate-old.key

Agora crie um link para o certificado letsencrypt

#ln -s /home/admin/conf/web/ssl.hosting.seudominio.com.br.crt /usr/local/vesta/ssl/certificate.crt
#ln -s /home/admin/conf/web/ssl.hosting.seudominio.com.br.key /usr/local/vesta/ssl/certificate.key

Por fim, reinicie o vesta:
# /etc/init.d/vesta restart

Pronto, agora ao acessar a área administrativa o navegador ja deve reconhecer o certificado como um certificado válido.

como corrigir problema vesta 502 Bad Gateway

aparentemente o vesta control panel (vesta-cp) 0.9.8-22 possui um bug que faz o servidor web retornar 502 após alguns minutos de execução.

para corrigir:

sudo wget http://c.vestacp.com/tmp/php-fpm.conf -O /usr/local/vesta/php/etc/php-fpm.conf
sudo service vesta restart

VEJA TAMBÉM