sexta-feira, 1 de outubro de 2010

Compilar regra no selinux para liberar acesso sem utilizar o setenforcing 0 ou setenforcing permissive

Em meu servidor web copiei uma pasta para /var/www/html/expresso. Só que quando abro é retornado o erro "403 Forbidden". Isso é devido ao selinux, devemos compilar uma regra que permita o que está sendo proibido. Para saber o que está sendo proibido, monitore o "/var/log/messages":
tail -f /var/log/messages

Agora, faça novamente a ação que está sendo proibida. Provavelmente será logado no "/var/log/messages" algo semelhante ao abaixo:
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.063:71): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.065:72): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file

Gere um arquivo temporario com essas mensagens:
vim /tmp/regras
...
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.063:71): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file
Sep 10 11:24:53 MODELO kernel: type=1400 audit(1284128693.065:72): avc: denied { getattr } for pid=17417 comm="httpd" path="/var/www/html/expresso/index.php" dev=sdb1 ino=184145 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=file
...

Desligue o selinux temporariamente
setenforce 0

Transforme o arquivo de regras na linguagem do selinux
audit2allow -m local -l -i /tmp/regras > /tmp/regras.te

Compile as regras
checkmodule -M -m -o /tmp/regras.mod /tmp/regras.te

Crie um pacote de instalação
semodule_package -o /tmp/regras.pp -m /tmp/regras.mod

Instale as novas regras
semodule -i /tmp/regras.pp

Ligue o selinux novamente
setenforce 1

Monitore novamente o arquivo "/var/log/messages" e faça novamente a ação que estava sendo proibida. Teoricamente se tudo ocorreu bem, seu site abrirá sem maiores problemas.

terça-feira, 31 de agosto de 2010

pg_conect com erro retorna pagina php para download após instalar openssl - pg_connect gera download de pagina php

Após instalar o openssl em meu servidor web notei que ao abrir uma página php que utiliza a função pg_connect, essa página era retornada para download.
No log "/var/log/apache2/error.log" a seguinte mensagem era escrita:

"system library:fopen:Permission denied:bss_file.c:122:fopen('/usr/lib/ssl/openssl.cnf','rb')"

O arquivo "/usr/lib/ssl/openssl.cnf" é um link para "/etc/ssl/openssl.cnf". Por algum motivo o apache não está conseguindo utilzar esse link. Então, copiei o arquivo "/etc/ssl/openssl.cnf" para "/usr/lib/ssl/openssl.cnf" e troquei suas permissões, reiniciei o apache e a partir disso tudo funcionou novamente (veja os comandos abaixo):

cp /etc/ssl/openssl.cnf /usr/lib/ssl/openssl.cnf
chmod 777 /usr/lib/ssl/openssl.cnf
/etc/init.d/apache2 restart

segunda-feira, 30 de agosto de 2010

Ativando autenticação LDAP no wiki do mediawiki

-------------------------------------------------------------------------------
Ativando autenticação LDAP no wiki do mediawiki
-------------------------------------------------------------------------------
[Baixando plugin]
- Plugin baixado em: http://upload.wikimedia.org/ext-dist/LdapAuthentication-MW1.15-r45350.tar.gz
Ou então vá em: http://www.mediawiki.org/wiki/Special:ExtensionDistributor e procure por LdapAuthentication

- Instale o plugin em ./extensions/ do seu site wiki.
Ex.:
./extensions/LdapAuthentication.php
./extensions/LdapAutoAuthentication.php

-------------------------------------------------------------------------------
[Configurando wiki]

###
# restringindo acesso
#
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;
#
###

###
# LDAP
#
require_once( "$IP/extensions/LdapAuthentication.php" );
$wgAuth = new LdapAuthenticationPlugin();

//nomes dos dominios
$wgLDAPDomainNames = array("MEUDOMINIO");

//associando dominio com servidores de dominio
$wgLDAPServerNames = array("MEUDOMINIO"=>"dns1.br dns2.br");

//Criptografia das solicitacoes ldap
$wgLDAPEncryptionType = array("MEUDOMINIO"=>"tsl"); //ou clear caso nao queira criptografia

//Permitir logar localmente
$wgLDAPUseLocal = false;

terça-feira, 20 de julho de 2010

Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item

[Causa]
Esse problema aconteceu comigo ao mover um arquivo executável por compatilhamento de pasta. Tinha um servidor A que precisava de instalar o pgAdmin, então compartilhei uma pasta em A e acessei da minha máquina desktop. Então, copiei o pgAdmin para o servidor A. Porém, devido a configurações de segurança do windows server 2003, quando tentei executar o pgAdmin em A, ele me deu a seguinte mensagem: "Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item".

[Solução]
Clique em cima do executável com a tecla direita do mouse, vá em propriedades. Lá, você notará que existe um botão no canto inferir direito chamado "Unblock" com o seguinte comentario: "This file came from another computer and might be blocked to help protect this computer". Clique em "Unblock", a partir desse momento você poderá executar seu executável normalmente.

quarta-feira, 7 de julho de 2010

Instalando postgres 8.4 + tcl + tk no centos 5.5 x86_64

-------------------------------------------------------------------------------
Instalando postgres 8.4 + tcl + tk no centos 5.5 x86_64
-------------------------------------------------------------------------------
[Informações]

Maquina: VMWare esxi 4.0
Sistema: Centos 5.5 x86_64
Postgres: 8.4

-------------------------------------------------------------------------------
[Procedimento de instalação do postgres]

- instalando servidor postgres e bibliotecas:
yum install postgresql84-server postgresql84-libs postgresql84

- configurando inicio do postgres:
# su - postgres
# initdb -E utf-8 /var/lib/pgsql/data

- configurando permissões para nossas redes:
# vim /var/lib/pgsql/data/pg_hba.conf
...
host all all 172.20.6.0/23 md5
host all all 172.20.2.0/23 md5
host all all 172.20.10.0/23 md5
...

- habilitando serviço para escutar externamente:
# vim /var/lib/pgsql/data/postgresql.conf
...
listen_addresses = '*'
...

- iniciando serviço:
# /etc/init.d/postgresql restart

- forçando postgresql iniciar automaticamente durante o boot:
# chkconfig postgresql on

- criando usuario administrador:
# su - postgres
# createuser -P
Enter name of role to add: super
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) y

-------------------------------------------------------------------------------
[Procedimento de instalação do tcl/tk]

- instalando tcl e tk:
# yum install tcl tk postgresql84-pltcl.x86_64


- ativando linguagem em um banco de dados:
# createlang -U postgres pltcl NOME_DO_BANCO_DE_DADOS

-------------------------------------------------------------------------------
[Possiveis erros]

- ao executar "createlang -U postgres pltcl NOME_DO_BANCO_DE_DADOS" o seguinte erro retorna:
createlang: language installation failed: ERROR: could not access file "$libdir/pltcl": No such file or directory
Esse erro pode ocorrer caso o pacote "postgresql84-pltcl.x86_64" não seja instalado.

-------------------------------------------------------------------------------

sexta-feira, 2 de julho de 2010

Instalando httpd + php 5.2 no centos 5.5

-------------------------------------------------------------------------------
Instalando httpd + php 5.2 no centos 5.5
-------------------------------------------------------------------------------
[Informações]

Maquina: VMWare esxi 4.0
Sistema: Centos 5.5

-------------------------------------------------------------------------------
[Procedimento de instalação]

- instalando repositorio que possui o php 5.2:
# rpm -ivh http://software.virtualmin.com/bleed/centos/5/x86_64/virtualmin-bleed-release-1.0-1.rhel.noarch.rpm

- pegando arquivo de autenticação do repositorio:
# rpm -import http://software.virtualmin.com/lib/RPM-GPG-KEY-virtualmin

- instalando httpd e php:
# yum install httpd php

- forçando httpd iniciar automaticamente durante o boot:
# chkconfig httpd on

- iniciando serviço:
# /etc/init.d/httpd start

-------------------------------------------------------------------------------

sexta-feira, 18 de junho de 2010

Como desligar um servidor esxi com 15 servidores virtuais rodando

Precisamos desligar um servidor esxi com 15 servidores virtuais rodando, o que fazer?

Algo muito fácil:

- Logue no servidor esxi com o "vsphere client";
- Dê "pause" em todas as 15 maquinas;
- Na raiz do servidor esxi, vá na aba "Summary", em baixo da tela clique; em "Enter Maintenance Mode";
- Com o servidor em "Maintenance Mode", clique em "Shutdown";
- Depois que tudo for feito e o servidor for ligado novamente, você perceberá que as maquinas continuam pausadas. Retire o servidor do "Maintenance Mode" e "despause" novamente todas as maquinas.

De um modo geral, o "Maintenance Mode" serve para preservar o estado pausado das maquinas quando o servidor esxi é desligado. O que não ocorre se o modo não for ativado, todas as maquinas são "brutalmente" desligadas e vão para o status stop.

Outra maneira é entrar em cada máquina virtual e desligar o sistema, porém é um processo bem mais demorado.