apt-getpt_BR.UTF-8) está instalado (execute locale na linha de comando). Ele deve existir no arquivo /var/lib/locales/supported.d/pt).
update-locale LANG="pt_BR.UTF-8" LANGUAGE="pt_BR:pt:en"
# pt_BR.UTF-8 UTF-8 no arquivo /etc/locale.gen
sudo locale-gen
update-locale ...)
sudo apt install build-essential zlib1g-dev zip p7zip-full libreadline-dev apache2 sudo apt install postgresql postgresql-contrib postgresql-client postgresql-server-dev-all sudo apt install lua5.3 liblua5.3-dev sudo apt install openssl libssl-dev libssl-doc libzzip-dev libexpat-dev sudo apt install texlive-full texlive-lang-portuguese texlive-fonts-recommended texlive-latex-extra tipa texlive-latex-recommended
postgresql.conf: listen_addresses = '*' # what IP address(es) to listen on
pg_hba.conf: # Liberar o acesso sem senha localmente cp /etc/postgresql/12/main/pg_hba.conf /tmp/ sed '/^#/!s/[a-z0-9]*.$/trust/g' /etc/postgresql/12/main/pg_hba.conf > /tmp/pg_hba.conf # Liberar o acesso com senha APENAS para o usuário acompanhamento e APENAS para conexões vindas do IP indicado cat "host all acompanhamento 139.82.9.6/32 md5" >> /tmp/pg_hba.conf # Copia o novo pg_hba.conf para o local apropriado e reinicia o banco cp /tmp/pg_hba.conf /etc/postgresql/12/main/pg_hba.conf /etc/init.d/postgresql restart # Cria os usuários e importa a base de dados psql -U postgres -f $DUMP_ROLES psql -U postgres -f $DUMP_DATABASE
SITE_AVAILABLE=/etc/apache2/sites-available SITE_ENABLED=/etc/apache2/sites-enabled sudo cp alfa.conf $SITE_AVAILABLE sudo ln -s $SITE_AVAILABLE/alfa.conf $SITE_ENABLED/alfa.conf sudo service apache2 restart sudo a2enmod authz_groupfile sudo a2enmod cgid sudo service apache2 restart
/etc/pam.d/common-session (umask de comandos remotos)session optional pam_umask.so umask=0002
/etc/skel/.bashrc (template do .bashrc)# Configuração da equipe NSI-CSAcad # árvore de rocks export TREE='/home/ccpa-auto/luarocks' #prompt colorido #export PS1='\[\033[01;33m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
/etc/skel/.profile (template do .profile)#umask 022 umask 0002 ... # Configurações da equipe NSI-CSAcad # PATH onde são instalados os scripts dos rocks PATH=$PATH:/home/ccpa-auto/luarocks/bin
/etc/ssh/sshd_config (configuração do sshd)# Configuração da equipe NSI-CSAcad # restrição de acesso (via ssh) a somente os seguintes usuários AllowUsers tomas daniel geraldoluiz
sudo adduser --ingroup users ccpa-auto # copiar arquivosbackup public_htmldo ccpa-auto (checar outros diretórios!!) # copiar arquivos/var/www/deve/var/www/private_rocks# permitir que todos consultem os arquivos chmod o+rx /home/ccpa-auto
wget http://luarocks.github.io/luarocks/releases/luarocks-3.7.0.tar.gz tar xfz luarocks-3.7.0.tar.gz cd luarocks-3.7.0 ./configure make build sudo make install make bootstrap luarocks --tree=/home/ccpa-auto/luarocks --server=http://alfa.vrac.puc-rio.br/nossos install ccpa-env PGSQL_INCDIR=/usr/include/postgresql/
cgilua.fcgi e wsapi.cgi):
# habilita o uso de [#!/usr/bin/env cgilua.cgi] no início dos scripts sudo ln -s /home/ccpa-auto/luarocks/bin/cgilua.cgi /usr/local/bin/cgilua.cgi # habilita a carga da configuração do CGILua para nós DOCUMENT_ROOT= ?? # Tipicamente, DocumentRoot é /var/www sudo mkdir $DOCUMENT_ROOT/cgilua sudo chown ccpa-auto:users $DOCUMENT_ROOT/cgilua sudo chmod g+w $DOCUMENT_ROOT/cgilua echo require\"sintra.cgilua.config\" > $DOCUMENT_ROOT/cgilua/config.lua
Visão geral:
Criar containers para simular máquinas.
Esses containers terão nomes da forma gdt-prod-<NOME_DO_USUARIO>.
Alguns diretórios serão mapeados de algum diretório do host para um diretório do container.
Primeiros passos:
Criar no 'host' no diretório desejado a pasta 'ccpa-auto' que será mapeada para dentro do container, e copiar do bitbucket os arquivos do sapolio e do avalie:
cd PATH_DESEJADO
mkdir ccpa-auto
cd ccpa-auto
git clone git@bitbucket.org:puc-rio/avalie.git
git clone git@bitbucket.org:puc-rio/sapolio.git
Em outra pasta dentro da área de trabalho do seu usuário, copie o repositório 'docker-dev', construa a imagem e rode o container:
Construir imagem:
Clonar repo:
git clone git@bitbucket.org:puc-rio/docker-dev.git
cd docker-dev
Construir imagem:
sudo docker build -t gdt-prod:latest .
Rodar container:
Criar arquivo chamado '.env' no mesmo diretório do docker-dev com as seguintes variáveis
(Essas variáveis de ambiente serão usadas na pelo 'docker-compose.yml')
SAP_PATH=<PATH_SAPOLIO>
AVALIE_PATH=<PATH_AVALIE>
BACKUP_PATH=<PATH_BACKUP>
PORT_APACHE=<PORTA_DO_APACHE>
PORT_SSH=<PORTA_DO_SSH>
LOGUSER=<NOME_DO_CONTAINER>
Executar na mesma pasta do 'docker-dev':
sudo -E docker compose up -d --no-recreate
Adicionar ao /etc/hosts:
127.0.1.1 omega
Configurar o .ssh/config
Ex:
HostName localhost
User tomas
Port 10022
Para enfim:
ssh gdt-prod
E/ou acessar o container pela url no navegador como:
http://omega:PORT_APACHE/avalie/home.lua
Descobrindo a versão do Ubuntu:
ssh [usuário@]máquina "lsb_release -a"
Descobrindo informações da máquina:
ssh [usuário@]máquina "uname -a"
Ou:
ssh [usuário@]máquina "file /sbin/init"
Para que todos os desenvolvedores possam atualizar um sistema através do Git, o clone do repositório NÃO deve incluir a conta pessoal de quem fizer a primeira instalação. Uma forma de fazer isso é editar o arquivo .git/config e retirar o trecho nome_usuario@ que ficar na seção [remote "origin"], associada à chave url. Por exemplo:
...
[remote "origin"]
url = https://bitbucket.org/puc-rio/sapolio.git
fetch = +refs/heads/*:refs/remotes/origin/*
...
Uma opção é trocar o acesso para ssh. alterando a linha do meio para: url = git@bitbucket.org:puc-rio/sapolio.git
Um túnel via ssh serve para ter acesso a uma máquina (ou porta de uma máquina) em uma rede inacessível diretamente, usando uma máquina intermediária que serve de ponte entre a sua local e a destino.
No nosso caso, como as duas únicas portas de acesso à máquina intermediária (Satoro) são as 32122 (ssh) e 80 (http), não temos como ter acesso externo a nenhuma outra máquina das redes da PUC.
Assim, o jeito de chegar à máquina assinaturadigital-api.dsi.puc-rio.br, por exemplo, é fazer um túnel através do Satoro para redirecionar as conexões para ela.
ssh -L <porta local>:<máquina destino>:<porta destino> <seu usuário>@<máquina intermediária>
Explicando:
Em outras palavras, todas as conexões feitas através da porta local são redirecionadas pelo Satoro para a máquina destino.
Exemplo:
eu@local: $ ssh -p 32122 -L 1025:assinaturadigital-api.dsi.puc-rio.br:443 eu@satoro
No navegador
https://localhost:1025/apidocs/index.html
Através dessa porta local chega-se à porta especificada na máquina destino através do túnel!
O Nobreak SMS (Senoidal Inteligente) do alfa possui um aplicativo para gerenciamento de energia. Ele pode ser acessado através do endereço:
Caso esta página não esteja abrindo o aplicativo, siga os passos abaixo para inicializá-lo.
O Nobreak SMS (Senoidal Inteligente) do alfa possui um aplicativo para gerenciamento de energia. Nele, são definidas algumas configurações de funcionamento do nobreak. Elas devem ser aplicadas na seguinte página:
As configurações a serem aplicadas estão definidas abaixo.
Com esse recurso podemos iniciar as nossas máquinas remotamente, sendo necessário apenas o endereço MAC e o IP de broadcast da rede.
Feito isso o computador está habilitado para receber os Magic Packets
A geração automática da documentação é feita apenas para os arquivos na pasta modulos de cada sistema.
As páginas são geradas pela ferramenta LDoc através de comandos como a seguir:
$ ldoc /home/ccpa-auto/<sistema>/modulos --dir /var/www/doc/<sistema>/
O acesso à máquina certificadora (139.82.9.51) deve ser feito através de ssh com o usuário sra, para o qual já fiz três pares de chaves, uma para cada um de nossos servidores: alfa, prod e satoro.
As chaves públicas já estão instaladas na certificadora.
O esquema em funcionamento é simples e assíncrono: copia-se o(s) arquivo(s) que se deseja assinar para o diretório inbound na certificadora e, depois de algum tempo um arquivo de mesmo nome com sufixo _S deverá aparecer no diretório outbound assim como o original será apagado do inbound.
O nosso problema é que usamos dois usuários (do ponto de vista do S.O.) diferentes para as nossas "coisas": o ccpa-auto, para os programas de linha de comando; e o www-data, para tudo o que é disparado pela Web.
Em geral a gente não se dá conta disso, mas o usuário que executa praticamente tudo é o usuário do Apache e, como tal, costuma ser configurado para não ter permissão para nada, justamente para evitar problemas de invasão e dar um mínimo de segurança.
Assim, o www-data não está configurado para logar e não tem um interpretador de comandos definido, como pode ser constatado no /etc/passwd.
Dito isso, decidi instalar a chave privativa para o usuário ccpa-auto E TAMBÉM para o usuário www-data.
Isso foi feito da seguinte forma:
/home/ccpa-auto/.ssh_www-data precisa ter o dono www-data e não ter acesso a mais nenhum usuário (ou seja, permissão 0700);id_rsa_www-data precisa ter o dono www-data e não ter acesso a mais nenhum usuário (ou seja, permissão 0600)ssh também verifica se o servidor é quem diz ser, é necessário termos pré-instalada a identificação da máquina no arquivo ~/.ssh/known_hosts (local do usuário) ou /etc/ssh/ssh_known_hosts (do sistema, que foi o que fiz)/home/ccpa-auto/tmp. O diretório /tmp poderia ser usado SE o Apache não tivesse um mecanismo que faz os scripts acharem que estão escrevendo no /tmp, mas estão, na verdade, escrevendo em um diretório diferente.tomas@ccpa-vm:/home/ccpa-auto$ sudo ls -lad .ssh_www-data .ssh_www-data/id_rsa_www-data /etc/ssh/ssh_known_hosts tmp -rw-r--r-- 1 root root 444 Feb 18 16:26 /etc/ssh/ssh_known_hosts drwx------ 2 www-data ccpa-auto 4096 Feb 18 16:25 .ssh_www-data -rw------- 1 www-data ccpa-auto 1679 Feb 18 16:25 .ssh_www-data/id_rsa_www-data drwxrwxrwx 2 tomas ccpa-auto 4096 Mar 17 21:42 tmp
sudo su - ccpa-auto -c "ssh sra@139.82.9.51 ls -l inbound/ outbound/"
su serve para trocar para o usuário ccpa-auto e executar o comando indicado no parâmetro -c (código entre aspas), que, por sua vez, faz o login na máquina certificadora e executa o comando indicado no final (ls -l inbound/ outbound/)
Embora o certificado tenha validade de alguns anos, todo ano é necessário renová-lo (reissue) e atualizar os arquivos de configuração no servidor Web. Este processo depende de acesso ao site da empresa que gerou o certificado e da aprovação do RDC, já que foi configurado que eles são os administradores do domínio.
O RDC possui uma página com explicações bem crípticas sobre esse processo, mas que pode ajudar.
https://cheapsslsecurity.com/client/orderdtl.html?orderdetailid=466013
casanova@inf.puc-rio.brwww.ccpa.puc-rio.br (CN)PONTIFICIA UNIVERSIDADE CATOLICA DO RIO DE JANEIRO (O)RIO DE JANEIRO (L)RIO DE JANEIRO (ST)BR (C)RSA2048www.ccpa.puc-rio.br.key)hostmaster@puc-rio.brcat@puc-rio.br) e pedir para eles confirmarem (eles fazem essa confirmação diretamente no site ou através de e-mail).key baixado depois de gerar o CSR; e dois arquivos .crt dentre do .zip) para a pastar /etc/ssl/certs/ccpa/ no servidor:
www_ccpa_puc-rio_br.crt é o SSLCertificateFilewww.ccpa.puc-rio.br.key é o SSLCertificateKeyFile e deve ter permissão -rw------- 1 root rootDigiCertCA.crt é o SSLCertificateChainFiletomas@ccpa-vm:/etc/ssl/certs/ccpa$ ls -l total 68 -rw-r--r-- 1 root root 1958 Jan 8 2021 ccpa_01-2021.key -rw-r--r-- 1 root root 2362 Jan 8 2021 ccpa_01-2021.pem lrwxrwxrwx 1 root root 23 Jan 12 2022 ccpa_01-2022.crt -> www_ccpa_puc-rio_br.crt lrwxrwxrwx 1 root root 19 Jan 12 2022 ccpa_01-2022.key -> ccpa_puc-rio_br.key lrwxrwxrwx 1 root root 23 Feb 1 2023 ccpa_01-2023.crt -> www_ccpa_puc-rio_br.crt lrwxrwxrwx 1 root root 28 Feb 9 10:16 ccpa_01-2024.crt -> www_ccpa_puc-rio_br_2024.crt lrwxrwxrwx 1 root root 28 Feb 9 10:18 ccpa_01-2024.key -> www.ccpa.puc-rio.br_2024.key -rw------- 1 root root 1704 Jan 11 2022 ccpa_puc-rio_br.key -rw-r--r-- 1 root root 1720 Feb 9 10:14 DigiCertCA_2024.crt -rw-rw-r-- 1 root root 1934 Jan 12 2022 DigiCertCA.crt -rw-r--r-- 1 root root 1934 Jan 8 2021 intermediario_01-2021.crt lrwxrwxrwx 1 root root 14 Jan 12 2022 intermediario_01-2022.crt -> DigiCertCA.crt lrwxrwxrwx 1 root root 27 Feb 1 2023 intermediario_01-2023.crt -> intermediarioDigiCertCA.crt lrwxrwxrwx 1 root root 19 Feb 9 10:17 intermediario_2024.crt -> DigiCertCA_2024.crt -rw-rw-r-- 1 root root 2102 Jan 31 2023 intermediarioDigiCertCA.crt -rw-r--r-- 1 root root 2252 Feb 9 10:15 www_ccpa_puc-rio_br_2024.crt -rw------- 1 root root 1732 Feb 9 09:59 www.ccpa.puc-rio.br_2024.key -rw-rw-r-- 1 root root 2750 Jan 31 2023 www_ccpa_puc-rio_br.crt
/etc/apache2/sites-enabled/ccpa-ssl.conf:
SSLCertificateFile /etc/ssl/certs/ccpa/www_ccpa_puc-rio_br_2024.crt
SSLCertificateKeyFile /etc/ssl/certs/ccpa/www.ccpa.puc-rio.br_2024.key
SSLCertificateChainFile /etc/ssl/certs/ccpa/DigiCertCA_2024.crt
sudo apache2ctl graceful