Apache: mudanças entre as edições

De RJGS Wiki
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
 
(7 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
= Apache Server =
= Apache Server =


== Instalar o apache ==
Servidor de Páginas Web Open Source que se caracteriza por trabalhar de forma modular ele tem a capacidade de hospedar vários sites de forma simultânea.
 
== Instalar o Apache2 ==


Atualize os repositórios e o sistema.
Atualize os repositórios e o sistema.
Linha 11: Linha 13:
  apt install apache2 apache2-data apache2-doc apache2-utils apachetop http-icons -y
  apt install apache2 apache2-data apache2-doc apache2-utils apachetop http-icons -y


Permissões para o usuario.
Conferir se o Firewall do sistema está habilitado
 
ufw status
 
Caso esteja habilitado, libere as portas '''80''' e '''443'''
 
ufw allow 80
ufw allow 443
 
Permissões para o usuário.


  adduser $USER www-data
  adduser $USER www-data
Linha 83: Linha 94:


  openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
  openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
onde:
* '''openssl''': esta é a ferramenta de linha de comando básica para criar e gerenciar certificados, chaves e outros arquivos OpenSSL.
* '''req''': este subcomando especifica o uso do gerenciamento de solicitação de assinatura de certificado (CSR) X.509. O “X.509” é um padrão de infraestrutura de chave pública ao qual SSL e TLS aderem para seu gerenciamento de chave e certificado. Para criar um novo certificado X.509, use este subcomando.
* '''-x509''': Isso modifica ainda mais o subcomando anterior informando ao utilitário para criar um certificado autoassinado em vez de gerar uma solicitação de assinatura de certificado, como normalmente aconteceria.
* '''-nodes''': Isso informa ao OpenSSL para ignorar a opção de proteger o certificado com uma senha. O Apache precisa ser capaz de ler o arquivo, sem intervenção do usuário, quando o servidor for inicializado. Uma senha impediria que isso acontecesse porque os usuários teriam que inseri-la após cada reinicialização.
* '''-days 365''': Esta opção define o período de tempo que o certificado será considerado válido. Neste caso, é definido por um ano.
* '''-newkey rsa''': 2048 : especifica que você deseja gerar um novo certificado e uma nova chave ao mesmo tempo. A chave necessária para assinar o certificado não foi criada em uma etapa anterior, portanto, ela precisa ser criada junto com o certificado. A rsa:2048parte diz para criar uma chave RSA com 2048 bits de comprimento.
* '''-keyout''': Esta linha informa ao OpenSSL onde colocar o arquivo de chave privada gerado que está sendo criado.
* '''-out''': Isso informa ao OpenSSL onde colocar o certificado que está sendo criado.
O retorno do comando acima lhe será perguntado algumas informações provenientes de quem está criando o certificado. Preencha os campos cnforme o exemplo abaixo:
<pre>
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:# Estado
Locality Name (eg, city) []:# Cidade
Organization Name (eg, company) [Internet Widgits Pty Ltd]:# O nome da sua empresa ou projeto.
Organizational Unit Name (eg, section) []:# Setor da sua empresa ou projeto.
Common Name (e.g. server FQDN or YOUR name) []: # Nome do seu site (seusite.com.br)
Email Address []:# [email protected]
</pre>


O comando acima cria a chave '''/etc/ssl/private/apache-selfsigned.key''' e o certificado '''/etc/ssl/certs/apache-selfsigned.crt'''. Esses dois arquivos serão inseridos nas configurações do apache em '''/etc/apache2/sites-available/seusite.com.br.conf'''.
O comando acima cria a chave '''/etc/ssl/private/apache-selfsigned.key''' e o certificado '''/etc/ssl/certs/apache-selfsigned.crt'''. Esses dois arquivos serão inseridos nas configurações do apache em '''/etc/apache2/sites-available/seusite.com.br.conf'''.
Linha 141: Linha 174:


  reboot
  reboot
== Restrição por senha ==
Atualizar
sudo apt update
Instalaçao do resurso do apache.
sudo apt install apache2-utils -y
Criando o usuário e a senha de acesso ao diretório.
sudo htpasswd -c /etc/apache2/.htpasswd usuario
Para visualizar o arquivo:
cat /etc/apache2/.htpasswd
Abra o arquivo de Host Virtual do site:
sudo vim /etc/apache2/sites-enabled/dominio.com.br.conf
Nele, insira as seguintes instruções:
<pre>
<Directory "/var/www/html">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Directory>
</pre>
O arquivo deverá ficar semelhante a esse:
<pre>
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory "/var/www/html">
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>
</VirtualHost>
</pre>
Para garantir que as configurações estão corretas:
sudo apache2ctl configtest
Deverá retornar algumas informações, mas a mais importante é <code>Syntax OK</code>.
Agora reinicie o apache
sudo systemctl restart apache2
sudo systemctl status apache2
Agora, crie o arquivo <code>.htaccess</code> no diretorio que será restrito.
sudo vim /var/www/html/pasta_restrita
Insira estas instruções no arquivo:
<pre>
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</pre>
Reinicie novamente o apache
sudo systemctl restart apache2
sudo systemctl status apache2
== Fonte ==
https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-apache-on-ubuntu-18-04-pt

Edição atual tal como às 18h59min de 16 de setembro de 2024

Apache Server[editar | editar código-fonte]

Servidor de Páginas Web Open Source que se caracteriza por trabalhar de forma modular ele tem a capacidade de hospedar vários sites de forma simultânea.

Instalar o Apache2[editar | editar código-fonte]

Atualize os repositórios e o sistema.

apt update ; apt upgrade -y

Instala o apache

apt install apache2 apache2-data apache2-doc apache2-utils apachetop http-icons -y

Conferir se o Firewall do sistema está habilitado

ufw status

Caso esteja habilitado, libere as portas 80 e 443

ufw allow 80
ufw allow 443

Permissões para o usuário.

adduser $USER www-data
adduser $USER sudo
adduser $USER root

Setando permissões na pasta host.

chmod -R 775 /var/www/*

Criar a pasta que vai abrigar os arquivos do site.

mkdir /var/www/seusite.com.br
mkdir /var/www/seusite.com.br/public_html

Copie o arquivo index para a pasta criada

cp -rv /var/www/html/index.html /var/www/seusite.com.br/public_html/

Host Virtual[editar | editar código-fonte]

Acesse a pasta das configurações do apache server.

cd /etc/apache2/sites-available/

Copie o arquivo padrão 000-default.conf com o nome do seu site e a extensão .conf.

cp -rv /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/seusite.com.br.conf

Edite o arquivo /etc/apache2/sites-available/seusite.com.br.conf.

vim /etc/apache2/sites-available/seusite.com.br.conf

O arquivo vai estar com a configuração default. Edite-o para que ele redirecione ao endereço do site, conforme as instruções abaixo.

<VirtualHost *:80>

        ServerAdmin [email protected]
        
        ServerName seusite.com.br

        DocumentRoot /var/www/seusite.com.br/public_html

        ErrorLog ${APACHE_LOG_DIR}/error.log

        CustomLog ${APACHE_LOG_DIR}/access.log combined
        
</VirtualHost>

Após editar o arquivo, habilite o site.

a2ensite seusite.com.br.conf

Desabilite o site padrão.

a2dissite 000-default.conf

Restart no apache

systemctl reload apache2 ; systemctl restart apache2 ; systemctl status apache2

Certificado SSL[editar | editar código-fonte]

Para habilitar o mod de SSL.

a2enmod ssl

Agora chegou a hora de gerar o certificado.

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

onde:

  • openssl: esta é a ferramenta de linha de comando básica para criar e gerenciar certificados, chaves e outros arquivos OpenSSL.
  • req: este subcomando especifica o uso do gerenciamento de solicitação de assinatura de certificado (CSR) X.509. O “X.509” é um padrão de infraestrutura de chave pública ao qual SSL e TLS aderem para seu gerenciamento de chave e certificado. Para criar um novo certificado X.509, use este subcomando.
  • -x509: Isso modifica ainda mais o subcomando anterior informando ao utilitário para criar um certificado autoassinado em vez de gerar uma solicitação de assinatura de certificado, como normalmente aconteceria.
  • -nodes: Isso informa ao OpenSSL para ignorar a opção de proteger o certificado com uma senha. O Apache precisa ser capaz de ler o arquivo, sem intervenção do usuário, quando o servidor for inicializado. Uma senha impediria que isso acontecesse porque os usuários teriam que inseri-la após cada reinicialização.
  • -days 365: Esta opção define o período de tempo que o certificado será considerado válido. Neste caso, é definido por um ano.
  • -newkey rsa: 2048 : especifica que você deseja gerar um novo certificado e uma nova chave ao mesmo tempo. A chave necessária para assinar o certificado não foi criada em uma etapa anterior, portanto, ela precisa ser criada junto com o certificado. A rsa:2048parte diz para criar uma chave RSA com 2048 bits de comprimento.
  • -keyout: Esta linha informa ao OpenSSL onde colocar o arquivo de chave privada gerado que está sendo criado.
  • -out: Isso informa ao OpenSSL onde colocar o certificado que está sendo criado.

O retorno do comando acima lhe será perguntado algumas informações provenientes de quem está criando o certificado. Preencha os campos cnforme o exemplo abaixo:

Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:# Estado
Locality Name (eg, city) []:# Cidade 
Organization Name (eg, company) [Internet Widgits Pty Ltd]:# O nome da sua empresa ou projeto.
Organizational Unit Name (eg, section) []:# Setor da sua empresa ou projeto.
Common Name (e.g. server FQDN or YOUR name) []: # Nome do seu site (seusite.com.br)
Email Address []:# [email protected]

O comando acima cria a chave /etc/ssl/private/apache-selfsigned.key e o certificado /etc/ssl/certs/apache-selfsigned.crt. Esses dois arquivos serão inseridos nas configurações do apache em /etc/apache2/sites-available/seusite.com.br.conf.

Você pode coferí-los listando a pasta.

ls -lha /etc/ssl/certs/

Ou dando um cat neles.

cat /etc/ssl/certs/apache-selfsigned.crt
cat /etc/ssl/private/apache-selfsigned.key

Para configurar a chave e o certificado, edite o arquivo .conf correto.

vim /etc/apache2/sites-available/seusite.com.br.conf

A configuração deve ser similar a essa:

<VirtualHost *:443>

        ServerAdmin [email protected]

        ServerName seusite.com.br

        DocumentRoot /var/www/seusite.com.br/public_html

        ErrorLog ${APACHE_LOG_DIR}/error.log

        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        # Aqui você insere o caminho absoluto do certificado.
        SSLCertificateFile	/etc/ssl/certs/apache-selfsigned.crt

        # Aqui você insere a chave.
        SSLCertificateKeyFile	/etc/ssl/private/apache-selfsigned.key

	<FilesMatch "\.(?:cgi|shtml|phtml|php)$">
        
	        SSLOptions +StdEnvVars
        
	</FilesMatch>
        
	<Directory /usr/lib/cgi-bin>
        
	        SSLOptions +StdEnvVars
        
	</Directory>

</VirtualHost>


Reinicie o sistema

reboot

Restrição por senha[editar | editar código-fonte]

Atualizar

sudo apt update

Instalaçao do resurso do apache.

sudo apt install apache2-utils -y

Criando o usuário e a senha de acesso ao diretório.

sudo htpasswd -c /etc/apache2/.htpasswd usuario

Para visualizar o arquivo:

cat /etc/apache2/.htpasswd

Abra o arquivo de Host Virtual do site:

sudo vim /etc/apache2/sites-enabled/dominio.com.br.conf

Nele, insira as seguintes instruções:

<Directory "/var/www/html">

    AuthType Basic

    AuthName "Restricted Content"

    AuthUserFile /etc/apache2/.htpasswd

    Require valid-user

</Directory>

O arquivo deverá ficar semelhante a esse:

<VirtualHost *:80>

    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/var/www/html">

        AuthType Basic

        AuthName "Restricted Content"

        AuthUserFile /etc/apache2/.htpasswd

        Require valid-user

    </Directory>

</VirtualHost>

Para garantir que as configurações estão corretas:

sudo apache2ctl configtest

Deverá retornar algumas informações, mas a mais importante é Syntax OK.

Agora reinicie o apache

sudo systemctl restart apache2
sudo systemctl status apache2

Agora, crie o arquivo .htaccess no diretorio que será restrito.

sudo vim /var/www/html/pasta_restrita

Insira estas instruções no arquivo:

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Reinicie novamente o apache

sudo systemctl restart apache2
sudo systemctl status apache2

Fonte[editar | editar código-fonte]

https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-apache-on-ubuntu-18-04-pt