abr 11

Utilizando Certificados Digitais e SSL no apache

Visão Geral do SSL e de Certificados Digitais

O SSL oferece conexões seguras permitindo que, para dois aplicativos que estão se conectando por meio de uma rede, cada aplicativo faça a autenticação da identidade do outro aplicativo. Além disso, o SSL fornece a criptografia dos dados trocados entre esses aplicativos. A autenticação permite que um servidor (unidirecional) e, opcionalmente, um cliente (bidirecional) verifiquem a identidade do aplicativo na outra extremidade de uma conexão de rede. A criptografia faz com que os dados transmitidos pela rede possam ser compreendidos apenas pelo destinatário planejado.

Os recursos do SSL incluem os seguintes conceitos:

  • O SSL oferece um mecanismo para que um aplicativo se autentique em outro aplicativo.
  • O SSL unidirecional permite que um aplicativo saiba exatamente a identidade do outro aplicativo.
  • O SSL bidirecional (autenticação mútua) permite que ambos os aplicativos saibam exatamente a identidade do outro.
  • O aplicativo que assume a função de “servidor” possui e utiliza um certificado de servidor para comprovar sua identidade ao aplicativo cliente.
  • Em uma autenticação mútua, o aplicativo que assume a função de “cliente” possui e utiliza um certificado de cliente para comprovar sua identidade ao aplicativo servidor.
  • O aplicativo que recebe um certificado deve possuir o certificado raiz (ou a cadeia de certificado) de CA (Autoridade de Certificação) que assinou esse certificado que está sendo apresentado. O certificado raiz, ou a cadeia, de CA valida o certificado que está sendo apresentado.
  • Em conexões de clientes, o navegador cliente alerta o usuário quando recebe um certificado que não foi emitido por uma Autoridade de Certificação reconhecida.

Compreendendo Chaves Privadas e Certificados Digitais

Chaves privadas, certificados digitais e Autoridades de Certificação confiáveis podem ser utilizadas para estabelecer e verificar a identidade de aplicativos de rede.

O SSL utiliza tecnologia de criptografia de chave pública para autenticação. Na criptografia de chave pública, uma chave pública e uma chave privada são geradas para um aplicativo. As chaves são relacionadas de tal forma que os dados criptografados com a chave pública podem ser decriptografados somente utilizando a chave privada correspondente. De maneira similar, os dados criptografados com a chave chave privada podem ser decriptografados somente utilizando a chave pública correspondente. A chave privada é cuidadosamente protegida, de forma que apenas o proprietário possa decriptografar as mensagens criptografadas utilizando a chave pública.

A chave pública está incorporada a um certificado digital com informações adicionais que descrevem o proprietário da chave pública, como nome, endereço e endereço de e-mail. Uma chave privada e um certificado digital fornecem a identidade para o aplicativo.

Os dados incorporados em um certificado digital são verificados por uma CA confiável e assinados digitalmente com o certificado digital da Autoridade de Certificação. As Autoridades de Certificação conhecidas incluem Verisign eEntrust.net. Uma Autoridade de Certificação confiável estabelece confiança para um aplicativo.

Um aplicativo que participa de uma conexão SSL é autenticado quando a outra parte avalia e aceita os respectivos certificados digitais. Um certificado digital utilizado para autenticação é validado por um certificado de CA raiz associado, localizado na aplicação de recepção.

Navegadores da Web, servidores e outros aplicativos ativados por SSL geralmente aceitam como verdadeiro qualquer certificado digital que seja assinado por uma Autoridade de Certificação confiável e seja válido. Por exemplo, um certificado digital pode ser invalidado porque expirou ou porque o certificado digital da Autoridade de Certificação utilizada para assiná-lo expirou. Um certificado de servidor poderá ser invalidado se o nome do host no certificado digital do servidor não corresponder ao nome do host especificado pelo cliente.

Irei mostrar três formas para gerar certificados SSL para o seu servidor. Você poderá utilizar um certificado auto-assinado (uma forma mais rápida, fácil, porém limitada), um certificado assinado através da CA, que poderá ser gerenciada por você mesmo (uma forma mais segura e confiável), ou usando um certificado de uma CA reconhecida (neste exemplo utilizarei o “cacert.org”, pois eles assinam seus certificados e fornecem um certificado com o objetivo de ser usado em muitos projetos de software livre).

Geralmente o mod_ssl vem junto com o pacote principal do Apache. Nas distribuições derivadas do debian é necessário somente ativar o módulo.

# a2enmod ssl

Vamos recarregar o serviço para que as alterações sejam aplicadas

# /etc/init.d/apache2 force-reload

No caso das distribuições derivadas do RHEL, como o CentOS, vamos verificar se o “mod_ssl” está instalado e ativar no apache.

# rpm -qa | grep mod_ssl

Vamos instalar o módulo e recarregar as configurações.

# yum install mod_ssl
# httpd -kgraceful

Após instalação do mod_ssl, automaticamente é criado o arquivo de configuração ssl.conf dentro do diretório “/etc/httpd/conf.d”

1 – Gerando um certificado auto-assinado

Gerar a chave privada com 2048 bits

$ cd /etc/pki/tls/certs
# openssl genrsa -out servidor.key 2048

Gerar o certificado auto-assinado

# openssl req -outform PEM -new -key servidor.key -x509 -days 1825 -out servidor.crt
Country Name (2 letter code) [XX]:BR
State or Province Name (full name) []:Ceara
Locality Name (eg, city) [Default City]:Fortaleza
Organization Name (eg, company) [Default Company Ltd]:Café com Linux
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:www.cafecomlinux.com.br
Email Address []:neto@cafecomlinux.com.br

Responda as perguntas conforme as informações de seu site. O campo “Common Name” deverá ser preenchido com as informações do hostname, os campos “Organizational Unit Name” e “Email” não são obrigatórios, porém darão mais informações ao certificado que será gerado.

Copie a chave privada para o respectivo diretório

# cp servidor.key /etc/pki/tls/private

O conteúdo abaixo deverá ser inserido no arquivo de configuração de ssl do seu servidor apache ou nas configurações do virtualhost de seu site

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/pki/tls/certs/servidor.crt
SSLCertificateKeyFile /etc/pki/tls/private/servidor.key

2 – Gerando um certificado assinado através da sua CA

Nesse exemplo, irei utilizar dois servidores, o servidor que será assinado pela CA e o servidor responsável pela CA.

Vamos criar um diretório para a chave privada e certificado da CA

# mkdir /etc/pki/tls/certs/CA

Gerar a chave privada com 2048 bits da CA

$ cd /etc/pki/tls/certs/CA
# openssl genrsa -des3 -out cacert.key 2048
Enter pass phrase for cacert.key:
Verifying - Enter pass phrase for cacert.key:

Gerar o certificado auto-assinado da CA com validade de 10 anos

# openssl req -new -x509 -days 3650 -key cacert.key -out cacert.pem 
Country Name (2 letter code) [XX]:BR
State or Province Name (full name) []:Ceara
Locality Name (eg, city) [Default City]:Fortaleza
Organization Name (eg, company) [Default Company Ltd]:Café com Linux
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:www.cafecomlinux.com.br
Email Address []:neto@cafecomlinux.com.br

Responda as perguntas conforme as informações de seu site. O campo “Common Name” deverá ser preenchido com as informações do hostname, os campos “Organizational Unit Name” e “Email” não são obrigatórios, porém darão mais informações ao certificado que será gerado.

Agora iremos criar a chave privada do servidor que será assinado pela CA

# openssl genrsa -out servidor.key 2048

Gerar a requisição de certificado do servidor que será assinado pela CA

# openssl req -new -key servidor.key -out servidor.csr
Country Name (2 letter code) [XX]:BR
State or Province Name (full name) []:Ceara
Locality Name (eg, city) [Default City]:Fortaleza
Organization Name (eg, company) [Default Company Ltd]:Café com Linux
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:www.cafecomlinux.com.br
Email Address []:neto@cafecomlinux.com.br

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Novamente responda as perguntas conforme as informações de seu site. O campo “Common Name” deverá ser preenchido com as informações do hostname, os campos “Organizational Unit Name”, “Email”, “A challenge password” e “An optional company name” não são obrigatórios, porém darão mais informações ao certificado que será gerado.

Vamos assinar o certificado do seu servidor pela CA com validade de 10 anos

# openssl x509 -req -in servidor.csr -out servidor.crt -sha1 -CA cacert.pem -CAkey cacert.key -CAcreateserial -days 3650

O conteúdo abaixo deverá ser inserido no arquivo de configuração de ssl do seu servidor apache ou nas configurações do virtualhost de seu site

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/pki/tls/certs/CA/servidor.crt
SSLCertificateKeyFile /etc/pki/tls/certs/CA/servidor.key
SSLCACertificateFile /etc/pki/tls/certs/CA/cacert.pem

Para o navegador de internet e aplicações clientes que utilizarão ssl, se faz necessário importar ou copiar o arquivo “cacert.pem” para seus respectivos diretórios.

3 – Usando um certificado de uma CA reconhecida”

Gerar a chave privada com 2048 bits

$ cd /etc/pki/tls/certs
# openssl genrsa -out servidor.key 2048

Gerar a requisição de certificado do servidor que será assinado pela CA

# openssl req -new -key servidor.key -out servidor.csr
Country Name (2 letter code) [XX]:BR
State or Province Name (full name) []:Ceara
Locality Name (eg, city) [Default City]:Fortaleza
Organization Name (eg, company) [Default Company Ltd]:Café com Linux
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:www.cafecomlinux.com.br
Email Address []:neto@cafecomlinux.com.br

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Responda as perguntas conforme as informações de seu site. O campo “Common Name” deverá ser preenchido com as informações do hostname, os campos “Organizational Unit Name”, “Email”, “A challenge password” e “An optional company name” não são obrigatórios, porém darão mais informações ao certificado que será gerado.

Copie a chave privada para o respectivo diretório

# cp servidor.key /etc/pki/tls/private

Agora vamos colar conteúdo do arquivo servidor.csr no site da CA que será gerado o certificado (https://www.cacert.org/account.php?id=10) e após receber e-mail com resposta, vamos copiar o cetificado “.crt” gerado pela CA para o servidor web

# cp servidor.crt /etc/pki/tls/certs/servidor.crt

Vamos baixar o certificado CACERT’s root certificate e renomear para “cacert.pem”. Este certificado será utilizado tanto pelo servidor web quanto pelos clientes.

O conteúdo abaixo deverá ser inserido no arquivo de configuração de ssl do seu servidor apache ou nas configurações do virtualhost de seu site

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/pki/tls/certs/servidor.crt
SSLCertificateKeyFile /etc/pki/tls/private/servidor.key
SSLCACertificateFile /etc/pki/tls/certs/cacert.pem

Para o navegador de internet e aplicações clientes que utilizarão ssl, se faz necessário importar ou copiar o arquivo “cacert.pem” para seus respectivos diretórios.

Com o openssl podemos obter algumas informações através dos certificados gerados, abaixo seguem alguns exemplos de comandos:

Informação geral do certificado

# openssl x509 -in cacert.pem -noout -text

Informação sobre datas de criação e expiração

# openssl x509 -in cacert.pem -noout -dates

Informação da finalidade do certificado

# openssl x509 -in cacert.pem -noout -purpose

abr 10

Script para documentação de servidores

Estou disponibilizando através do GitHub um script criado para documentar servidores redhat like e debian like. Ainda irei trabalhar em melhorias e sugestões serão sempre aceitas!

https://github.com/jvnetobr/documentacao

mar 16

Utilizando o OcsLogon

Olá pessoal, venho hoje com mais um post sobre o OCS Inventory. Hoje irei criar um script que irá executar o “OcsLogon.exe” passando os parâmetros apropriados à ele. O pacote “OcsLogon.exe” vem acompanhado do pacote OCS Inventory NG Agent quando feito download.

Por padrão o OcsLogon na hora que executado irá primeiramente checar se o OCS Inventory NG Agent está instalado, caso não esteja, ele irá buscar o OCS Inventory NG Agent no Communication Server utilizando a URL “http://ocsinventory-ng/ocsinventory”. Seguem abaixo alguns parâmetros aceitos pelo OcsLogon.

– /PACKAGER instala o “ocspackage.exe” (veja neste post como criar um “ocspackage.exe”) através do servidor especificado em “/SERVER”; caso o usuário não tenha privilégios de administrador na máquina;

– /GPO informa no script que o arquivo a ser instalado deverá ser baixado no mesmo diretório que está o “OcsLogon.exe”, esta opção deverá er utilizada em caso de uso de GPO, para o OcsLogon não buscar o instalador do agente no Communication Server (não iremos utilizar neste post);

– /URL=http[s]://ip-do-servidor:porta/caminho-do-arquivo-para-download.exe informa no script que o arquivo a ser instalado está na URL informada, diferente do padrão no Communication Server.

– /DEPLOY=a.b.c.d garante que a versão do agente informada será instalada na máquina, só funcionará se para atualização de versões anteriores à informada;

– /FORCE força a reinstalação do agente, mesmo se existir uma versão mais atual que a  utilizada;

– /TIMEOUT=x modificar o timeout padrão que é 60 segundos, deverá ser informado o valor em millissegundos;

– /UNINSTALL desinstala o agente ao invés de instalar;

Também podem ser inseridos parâmetros para a instalação do agente:

– /SERVER=http[s]:/ip-do-servidor:porta/ocsinventory, para utilizar uma diferente URL para connectar ao OCS Inventory NG Communication Server.

– /NO_SERVICE não registra o OCS Inventory NG Agent no gerenciador de serviços do Windows. O agente somente será executado ao executar o script do ocs, e não através do serviço do Windows;

– /EDITLOG exibir logs gerados do OcsLogon através de utilização de /DEBUG. Esse parâmetro somente funciona com script do ocs ou GPO.

Nota: O OcsLogon.exe sempre cria um arquivo de log “OcsLogon.log” em uma pasta temporária, geralmente em “C:\Documents and Settings\User Profile\Local settings\Temp” ou “C:\Users\User Profile\AppData\Local\Temp”.

Utilizando o script ocs:

– Copie o arquivo “OcsLogon.exe” para uma pasta compartilhada na rede, recomendo na pasta “netlogon”, pois a mesma terá acesso de leitura para todos seus usuários do domínio.

– Vamos criar um arquivo “ocs.bat” e através do bloco de notas inserir o local do compartilhamento com o arquivo “OcsLogon.exe” e seus parâmetros.

\\servidor-de-arquivos\compartilhamento\OcsLogon.exe /PACKAGER /SERVER=http://ip-do-servidor/ocsinventory

No caso acima, somente estou utilizando o parâmetro /PACKAGER (para informar que irei utilizar o ocspackage.exe e não um agente padrão) e o /SERVER seguido do caminho do Communication server.

Recomendo que o script “ocs.bat” seja salvo na pasta “netlogon” (também poderá ser adicionada somente a linha do script ocs.bat em um script de logon já existente, caso não necessite utilizar um novo script) para ser mapeado para todos o usuários e por fim quando os usuários realizarem novos logons, o OCS Inventory NG Agent será instalado ou executado conforme os parâmetros inseridos.

mar 10

Utilizando o OCS Packager

Bom galera, o OCS Packager é uma ferramenta feita para preparar pacotes de instalação automatizada do OCS Inventory Agent para o windows. Ele é uma maneira mais rápida de instalar e implementar o OCS Inventory Agent em computadores, baseado em script NSIS (ferramenta que permite aos programadores criar tais instaladores para Windows) e RemCom tool (ferramenta que permite executar comandos em sistemas MS Windows remotos).

O Funcionamento do OCS Packager é simples, ele gera um arquivo “ocspackage.exe” com base nos parâmetros que você determina, permitindo em um clique, uma instalação em silent mode, etc. Utilizado com o “OcsLogon” fará um serviço de implantação muito rápido, fácil e útil no MS Windows (será assunto para outro post).

Algumas opções de comando para o OCS Inventory NG Agent:

  • /S – executa o instalador em silent mode (sem interação do usuário);
  • /NOSPLASH – desabilita a tela inicial do instalador;
  • /UPGRADE – implementa um novo agente através do recurso de deployment do OCS;
  • /NO_SERVICE – não registra o OCS Inventory NG Agent no gerenciador de serviços do Windows;
  • /NO_SYSTRAY – não cria um ícone ao lado do relógio do Windows;
  • /NOW – executa o OCS Inventory NG Agent ao final da instalação;
  • /NOSOFTWARE – ignora se o software está instalado;
  • /D – instala o OCS Inventory NG Agent em outro diretório;
  • /SERVER= – local do servidor OCS Inventory;

– Baixe o OCS Packager e o OCS Agent na seção de downloads no site do OCS Inventory;
– Execute o OcsPackager.exe e aceite o termo de licença;
A seguinte tela irá aparecer:

packager1

 

– No campo “Agent Setup file”, adicione o OcsAgentSetup.exe que foi feito download;
– No campo “Certificate file” deveremos adicionar o arquivo “.pem” que será utilizado pelo Teledeploy;
– No campo “Plugins to include” permite que sejam adicionados plugins, porém essa parte irei tratar em outro post;
– No campo “comand line options” deverão ser especificadas todas as opções necessárias para criar o “ocspackage.exe” do ocs (no meu caso, /NO_SERVICE /S /SERVER=http://192.168.1.12/ocsinventory /proxy_type=0 /NOW).
– No campo “Label” será criado um arquivo de etiqueta contendo seu prompt do usuário. Na primeira execução do OcsInventory.exe, será exibido uma janela pop-up com este aviso. O valor inserido pelo usuário é chamado TAG, não utilizei esse campo também.
– Os campos “User” e “Password” não serão utilizados neste exemplo. Caso você tenha necessidade de utilizar autenticação remota no agente Windows para fornecer permissão de execução, recomendo o uso desses campos, bastando somente ter o “PsExec.exe” na mesma pasta do OCS Packager e inserir as credenciais de usuário e senha.

Clique em “next”

packager2

 

– Escolha o local onde o “ocspackage.exe” será salvo e clique em “Ok”;
– Após isso, o “ocspackage.exe”será criado e você já poderá executar e publicar no Communication Server para ser executado através do “OcsLogon.exe”. Então vamos publicar!

Por padrão o MySQL só permite que sejam anexados arquivos com o tamanho de até 1MB, então edite o arquivo “my.cnf” e insira ou modifique o valor da variável “max_allowed_packet”. No meu caso, irei alterar para 10MB.

# vim /etc/my.cnf
max_allowed_packet=10MB

Reinicie o MySQL

# /etc/init.d/mysqld restart

Acesse “http://ip-do-server/ocsreports”, faça login com suas credenciais, clique no ícone “Configuração” e na aba “Agente”;

packager4

 

Selecione o arquivo e clique em “Envio”. Pronto, o “ocspackager.exe” já está publicado no nosso Communication Server.

Fonte:
OCS Packager

mar 07

Instalação do OCS Inventory RHEL/CentOS 6.x

Pré-requisitos para instalação do OCS Inventory NG
– Apache 1.3.33 ou superior;
– Mod_perl 1.29 ou superior;
– Mod_php 4.3.2 ou superior;
– PHP 4.3.2 ou superior com suporte a ZIP e GD habilitados;
– PERL 5.6 ou superior;
– Perl module XML::Simple versão 2.12 ou superior;
– Perl module Compress::Zlib versão 1.33 ou superior;
– Perl module DBI versão 1.40 ou superior;
– Perl module DBD::Mysql versão 2.9004 ou superior;
– Perl module Apache::DBI versão 0.93 ou superior;
– Perl module Net::IP versão 1.21 ou superior;
– Perl module SOAP::Lite versão 0.66 ou superior (opcional);
– MySQL 4.1.0 ou superior com engine InnoDB habilitada;

Para instalar o MySQL, pode ser utilizado o meu post anterior clicando aqui.

Os pacotes do ocs não vêm nos repositórios padrão do RHEL/CentOS. Iremos instalar a versão 2.1.2 do ocs, pois já traz bastante melhoria de recursos comparada à versões anteriores, para isso vamos instalar o epel e o remi como repositório adicional.

# yum install epel-release
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -Uvh remi-release-6*.rpm

O yum resolverá todas dependências informadas no início do post. Vamos instalar o OCS Inventory habilitando o uso do remi.

# yum --enablerepo=remi install ocsinventory

Vamos liberar o acesso ao apache e ao mysql nas portas 80 e 3306 pelo iptables

# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

E deixar o SElinux no modo permissivo

# vim /etc/selinux/config
SELINUX=permissive

Vamos criar o banco de dados “ocsweb”, criar o usuário “ocs” e dar acesso ao banco.

# mysql -u root -p
CREATE DATABASE ocsweb;
GRANT ALL PRIVILEGES ON ocsweb.* to ocs@localhost IDENTIFIED BY 'senha';
FLUSH PRIVILEGES;
QUIT

Vamos agora checar se será necessário realizar alguma alteração nas informações do banco instalado

# vim /etc/httpd/conf.d/ocsinventory-server.conf
# Master Database settings
  # Replace localhost by hostname or ip of MySQL server for WRITE
  PerlSetEnv OCS_DB_HOST localhost
  # Replace 3306 by port where running MySQL server, generally 3306
  PerlSetEnv OCS_DB_PORT 3306
  # Name of database
  PerlSetEnv OCS_DB_NAME ocsweb //verifique se é o nome do banco que foi criado
  PerlSetEnv OCS_DB_LOCAL ocsweb //verifique se é o nome do banco que foi criado
  # User allowed to connect to database
  PerlSetEnv OCS_DB_USER ocs //verifique se é o nome do usuário do banco com permissões
  # Password for user
  PerlSetVar OCS_DB_PWD ocs //altere para a senha definida

Vamos iniciar o serviço httpd

# /etc/init.d/httpd start

Define a inicialização do httpd nos níveis padrão de inicialização do sistema

# chkconfig http on

Acesse o endereço “http://ip-do-servidor/ocsreports/install.php” e preencha conforme abaixo

ocs_database

Ao clicar em send, será executado o script install.php que realizará a configuração do banco de dados do OCS Inventory.
Acesse o endereço “http://ip-do-servidor/ocsreports” para acessar o OCS Inventory e use as credenciais abaixo

User: admin
Password: admin

ocs_home

Após o login, poderão aparecer alertas na tela informando que o script install.php está presente no servidor, conforme imagem acima. O usuário e senha do banco e da interface web de administração estão definidos como padrão. Altere as senhas no banco de dados e na interface web de administração e apague o script conforme abaixo.

# rm -f /usr/share/ocsinventory-reports/ocsreports/install.php

Pronto. O serviço do OCS Inventory está instalado, configurado, executando e aguardando por novos inventários, instale o agente na sua estação e verifique!

Fonte:
Wiki OCS Inventory NG

mar 06

Instalação e configuração inicial MySQL no RHEL/CentOS 6.x

O repositório padrão do CentOS não dispõe de versões mais recentes do MySQL. No caso da necessidade de uma versão mais atual que ofereça novos recursos adicionados, costumo sempre utilizar o repositório epel com o remi como repositório adicional.

# yum install epel-release
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -Uvh remi-release-6*.rpm

Vamos instalar o serviço mysqld no nosso servidor. Com o yum, iremos habilitar o uso do remi (por padrão é desabilitado) e adquirir as informações de versão do pacote a ser instalado.

# yum --enablerepo=remi info mysql-server.x86_64
Plugins carregados: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.gtdinternet.com
 * epel: epel.gtdinternet.com
 * extras: centos.ufes.br
 * remi: mirror.cedia.org.ec
 * remi-safe: mirror.cedia.org.ec
 * updates: mirror.gtdinternet.com
Pacotes disponíveis
Name        : mysql-server
Arch        : x86_64
Version     : 5.5.48
Release     : 1.el6.remi
Size        : 10 M
Repo        : remi
Summary     : The MySQL server and related files
URL         : http://www.mysql.com
License     : GPLv2 with exceptions and LGPLv2 and BSD
Descrição : MySQL is a multi-user, multi-threaded SQL database server. MySQL is
          : a client/server implementation consisting of a server daemon
          : (mysqld) and many different client programs and libraries. This
          : package contains the MySQL server and some accompanying files and
          : directories.

A versão que iremos utilizar será a 5.5.48 do mysql-server conforme exibido acima.

# yum --enablerepo=remi install mysql mysql-server -y

Após a instalação vamos iniciar o serviço mysqld

# /etc/init.d/mysqld start

Define a inicialização do mysqld nos níveis padrão de inicialização do sistema

# chkconfig mysqld on

Após inicialização do banco, iremos definir a senha de root. Existem duas formas, através do comando “mysqladmin” ou executando o script “mysql_secure_installation”. Irei a seguir mostrar das duas formas.
Com o comando “mysqladmin”, basta informar a nova senha conforme abaixo.

# mysqladmin -u root password 'nova_senha'

Utilizando o script “mysql_secure_installation” será feita uma configuração básica do servidor

# mysql_secure_installation
Enter current password for root (enter for none): //pressione enter no caso de não existir senha ainda
Set root password? [Y/n] //pressione enter para definir a senha de root do servidor MySQL
New password: //insira a senha de root do servidor MySQL
Re-enter new password: //repita a senha de root do servidor MySQL
Remove anonymous users? [Y/n] //pressione enter para remover o acesso de usuários anônimos
Disallow root login remotely? [Y/n] //pressione enter para remover o acesso remoto do root
Remove test database and access to it? [Y/n] //pressione enter para remover a tabela test e seus acessos
Reload privilege tables now? [Y/n] //pressione enter para recarregar os privilégios das tabelas

O servidor MySQL já está instalado e configurado com o básico. Espero ter ajudado

mar 04

Ativar a interface de rede onboot no RHEL/CentOS 6.x e 7.x

Bom, há um bom tempo atrás na minha primeira instalação com imagem minimal do CentOS, perdi um pouquinho de tempo para habilitar a interface de rede no meu servidor no boot, resolvi então criar esse post para ajudar um pouco à quem necessite desta dica.

A opção “ONBOOT” vem desabilitada por padrão a partir da versão 6 do RHEL/CentOS, imagino eu que por razões de segurança. Porém, mesmo em versões minimal existe a possibilidade de habilitar a interface automaticamente durante a instalação, na opção “Configurar Rede”, “Editar” e marcando a opção “Conectar automaticamente”, conforme a imagem abaixo.

tela_instalação_rede_centos

Mas enfim, para você que não ficou atento durante a instalação, basta alterar no arquivo de configuração de interface a opção “ONBOOT” de no para yes

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=08:00:27:0C:E6:46
TYPE=Ethernet
UUID=f7896960-2870-4dba-821c-d78f8f1ff38a
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp

Após a alteração, basta reiniciar o serviço de rede e se você tiver um servidor dhcp configurado na rede, a interface já irá receber um novo endereço de IP.

No RHEL/CentOS 6.x

# service network restart

No RHEL/CentOS 7.x

# systemctl restart network.service

jan 27

Uso básico do vi

Olá pessoal, hoje irei falar um pouco sobre o uso básico do vi para edição de arquivos.

O Visual Editor – vi, em algumas distribuições de servidores é o editor de texto mais utilizado, possuindo diversos atalhos de teclado. Abaixo falarei basicamente dos 3 modos de execução do “vi”, que são utilizados de maneira distinta e logo após trarei duas pequenas tabelas para facilitar o nosso dia-a-dia.

Modo de navegação

Modo inicial do vi, em que as teclas do teclado são utilizadas basicamente para navegação e edição de blocos de texto. Na maioria das vezes os comando são executados com únicas letras, se for utilizado com um número, será executado o número de vezes do valor do número.

Modo de inserção

Modo usado para inserir valores de texto no documento. O comando mais utilizado para iniciar este modo é o “i”, e a tecla “Esc” é utilizada para sair do modo de inserção e retornar para o modo de navegação.

Modo de comando

Modo utilizado para realizar buscas, salvar, sair, executar comandos no shell, alterar configurações do vi, etc. É iniciado com a tecla “:”  e para retornar ao modo de navegação, usa o comando “visual” ou a tecla “Enter” com a linha vazia.

Tabela de teclas de navegação

Tecla Efeito
0, $ Início / fim de linha.
1G, G/td> Início / fim de documento.
(, ) Início / fim de sentença.
{, } Início / fim de parágrafo.
w, W Pular palavra / pular palavra contando com a pontuação.
h, j, k, l Esquerda, abaixo, acima, direita.
/, ? Busca para a frente / para atrás.
i Entra no modo de inserção na posição atual do cursor.
a, A Entra no modo de inserção após o cursor / entra no modo de inserção no fim da linha.
o, O Adiciona linha e entra no modo de inserção depois do cursor / adiciona linha e entra no modo de inserção antes do cursor.
s, S Apaga item e entra no modo de inserção / apaga linha e entra no modo de inserção.
c Modifica um item com a inserção de texto.
r Substitui um único caractere.
x Apaga um único caractere.
y, yy Copia um item / Copia toda a linha.
p, P Cola o conteúdo copiado depois do cursor / cola o conteúdo copiado antes do cursor.
u Desfazer.
ZZ Fecha e salva, se necessário.
ZQ Fecha e não salva.

Alguns comandos do vi

Comando Finalidade
:! Permite executar um comando do shell.
:quit ou :q Fecha.
:quit! ou :q! Fecha sem gravar.
:wq Salva e fecha.
:exit ou : x ou :e Fecha e grava, se necessário.
:syntax on / off Habilita ou desabilita a syntax highlighting.
:set number / off Habilita a numeração de linhas.
:10 Navega para a linha de número 10.
:visual Volta para o modo de navegação.

dez 25

Montagem de sistemas de arquivos com fstab

Olá pessoal, hoje irei falar um pouco sobre montagem de sistemas de arquivos com fstab.

Os sistemas de arquivos criados na instalação padrão do Linux são montados de forma automática em toda inicialização do sistema. Isso é feito graças ao arquivo “/etc/fstab”, é nele que encontramos as informações referentes aos sistemas de arquivos no sistema.

É necessário que tenha uma entrada no “/etc/fstab” para cada sistema de arquivos que forem montados automaticamente. O arquivo “/etc/fstab” é composto por seis colunas, separadas por espaços ou tabulações. Abaixo falarei brevemente sobre cada campo.

 

  • Partição do dispositivo (ex.: /dev/sda1, /dev/sda2, /dev/sdb1, /dev/sdb2, etc);
  • Ponto de montagem (ex.: swap, /, /boot, /home, etc);
  • Tipo de sistema de arquivos (ex.: swap, ext2, ext3, ext4, xfs, vfat, ntfs, etc);
  • Opções de montagem (segue uma tabela no final do post);
  • Dump – Determina se será executado dump no dispositivo (0 – não executa dump, 1 – executa dump);
  • Fsck – Determina a ordem de checagem pelo fsck durante a inicialização do sistema (0 – Não faz a verificação e reparo, 1 – Faz a verificação e reparo).

No meu caso, irei inicialmente criar o diretório “/home/neto/cafe” (responsável pelo ponto de montagem) e após a criação, inserir uma entrada no arquivo “/etc/fstab” conforme exibido abaixo.

# mkdir -p /home/neto/cafe
# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Nov 29 16:57:49 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/fedora-root /                       ext4    defaults        1 1
UUID=4ffc8fa1-9cc1-4241-b105-5543c90b3698 /boot                   ext4    defaults        1 2
UUID=50D7-162C          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
/dev/mapper/fedora-home /home                   ext4    defaults        1 2
/dev/mapper/fedora-swap swap                    swap    defaults        0 0
/dev/sda7 /home/neto/cafe                       ext4    defaults        0 3

Vou executar o comando mount -a para montar novamente todos os dispositivos (que não tenham a opção noauto) com entradas no arquivo “/etc/fstab”.

# mount -a

A partição “/dev/sda7” tem o tamanho de 1GB, então vou utilizar o comando “df” para confirmar que a partição foi montada corretamente.

# df -kh /home/neto/cafe/
Sist. Arq.      Tam. Usado Disp. Uso% Montado em
/dev/sda7       976M  1,3M  908M   1% /home/neto/cafe

Opções de montagem

Criei a tabela abaixo com base nas opções de montagem mais comuns para os sistemas de arquivos. Para maiores informações consulte os manuais de fstab e mount.

auto Indica que se deve montar automaticamente, ou seja, no inicio do sistema. Opção padrão.
noauto Ao contrario do anterior, se utiliza para indicar que o dispositivo se montará manualmente.
user Permite que qualquer usuário monte o dispositivo. Isto implica dizer que se aplica automaticamente noexec, nosuid, nodev a menos que se indique o contrário (colocando a opção oposta). Além disso só o usuário que montou pode desmontar.
nouser Como o próprio nome indica, apenas o usuário como root pode montar. Opção padrão.
users Idêntico ao user, a diferença é que qualquer pessoa pode desmontar, sem importar quem o montou.
exec Permite a execução de arquivos binários. Opção padrão.
noexec Não permite a execução de arquivos binários.
ro Monta o sistema de arquivos apenas como leitura (rEAD-oNLY).
rw Monta o sistema de arquivos como leitura e escrita (rEAD-wRITE).
sync A escrita/leitura se realiza de forma sincronizada, ou seja, que estas ações se realizam de forma imediata. Não se recomenda para memórias flash, pois podem se deteriorar ao se utilizar de forma sincronizada.
async A escrita/leitura se realiza de forma não-sincronizada, ou seja, que estas ações se realizam algum tempo depois no dispositivo. Isto pode dar problemas no caso de um dispositivo removível quando o retiramos de forma espontânea, pois podemos não ter dado tempo suficiente para gravação. Opção padrão.
owner indica que o primeiro usuário distinto de root conectado ao sistema localmente, tem direito de montar e desmontar o dispositivo.
defaults Simplesmente indica que as opções mais comuns. Estas são rw, suid, dev, exec, auto, nouser, e async.

Opções para o sistema de arquivos do tipo vfat:

uid=ID_usuario Com esta opção, indicamos que apenas o usuário que possui o valor especificado tenha o controle sobre os arquivos do dispositivo.
gid=ID_grupo Com esta opção, indicamos que apenas o grupo que possui o valor especificado tenha o controle sobre os arquivos do dispositivo.
umask=Valor_Octal Estabelece a umask (máscara de bits de permissões não presentes) Exemplo: umask=0 dá permissões a todos os usuários.
dmask=Valor_Octal Idêntico a umask, aplicado apenas a diretórios.
fmask=Valor_Octal Idêntico a umask, aplicado apenas aos arquivos.
iocharset=Valor Conjunto de caracteres utilizados (para a conversão entre caracteres de 8 bits e caracteres Unicode de 16 bit). Por default se utiliza o iso8859-1, para nós é conveniente utilizar utf8.
check=Valor_especificado Checagem de nomes. Existem 3 valores admitidos, cada um mais restritivo que o outro:

  • r : Letras maiúsculas e minúsculas são aceitas e tratadas como equivalentes (case-insensitive). Nomes e extensões grandes são truncados. Os nomes terão um máximo de 8 caracteres seguido de um ponto, e 3 caracteres para sua “extensão”. Exemplo : NomegrandedeArquivo.Nome se converte em NomeGr.Nom.
  • n (ormal) : Idêntico a r, mas muitos dos caracteres especiais (*, ?, <, espaço, etc.) não são aceitos. Opção padrão.
  • s (tricto) : Igual a n, mas também não aceita caracter não suportado por ms-dos (+, =, spaces, etc.).

Fontes:
Wiki de Documentação Mandriva Brasil
WIKILIVROS

dez 23

Adicionar usuário no arquivo sudoers

Olá pessoal, venho aqui mais uma vez trazendo uma pequena dica, mas muito útil. Você já chegou a instalar o seu sistema operacional, independente da distribuição e quando foi executar algum comando como sudo ou até mesmo se autenticar como sudo e recebeu a mensagem “usuario não está no arquivo sudoers. Este incidente será relatado.”. Bom irei mostrar abaixo como resolver de forma bem simples e definitiva.

Existem duas formas de realizar o procedimento. Adicionando uma linha no arquivo “/etc/sudoers” ou criando um arquivo dentro de “/etc/sudoers.d/”. No meu caso, irei criar um arquivo com o nome do meu usuário dentro de “/etc/sudoers.d”.

Verifique se existe a linha “#includedir /etc/sudoers.d” no arquivo “/etc/sudoers”. Caso não exista, adicione ela no arquivo.

Iremos criar o arquivo “user” dentro de “/etc/sudoers.d”

# echo 'user     ALL=(ALL)     ALL' > /etc/sudoers.d/user

Pronto. Feito isso, basta verificarmos logando como sudo e obtendo o resultado abaixo

# sudo -i
Presumimos que você recebeu as instruções de sempre do administrador
de sistema local. Basicamente, resume-se a estas três coisas:

    #1) Respeite a privacidade dos outros.
    #2) Pense antes de digitar.
    #3) Com grandes poderes vêm grandes responsabilidades.

[sudo] password for user: