segunda-feira, 21 de setembro de 2015

COMO INGRESSAR LINUX (UBUNTU 15.04) NO AD

Precisei ingressar meu Ubuntu 15.04 no AD, como sei que vou precisar desse artigo de vez em quando, estou postando no meu blog, mas todo conteúdo é do VIVAOLINUX, o endereço completo desse artigo encontra-se nas referencias deste post


PRÉ-REQUISITOS E FINALIDADE DE CADA UM PARA O TRABALHO



Antes de começar a trabalhar, é necessário saber quais são os serviços que o desktop com o sistema GNU/Linux precisa ter rodando para ingressar no domínio. Abaixo descrevo os serviços:
  • Kerberos
  • Winbind
  • Samba
Kerberos é um protocolo de rede usado para autenticação de usuários e/ou serviços de rede, como o Active Directory. utilizando um sistema criptografado, permitindo comunicações seguras e identificadas em redes, fazendo uso de tickets (chaves criptografadas).

O Active Directory faz uso deste serviço para autenticação em rede, logo, as máquinas clientes terão que ter informações do KDC (Centro de Distribuição de Chaves) para autenticar-se no Active Directory.

O Winbind é um daemon usado pelo PAM, NSSWITCH, Samba e podendo ser usado por outros serviços de rede e/ou sistema, fazendo a interface entre o PDC e o computador cliente rodando o serviço Winbindd, permitindo que máquinas com o sistema GNU/Linux comuniquem-se com DC Active Directory.

O Samba até a versão 3, que é a que será usada nesse artigo, é um serviço cuja principal função é disponibilizar recursos compartilhados em uma rede, tais como arquivos e impressoras. Mas será usado para autenticação de usuários no servidor onde está rodando devido o winbind depender do mesmo.

O mesmo faz uso de dois serviços, são NMB e SMB.

O serviço NMB tem a principal finalidade de resolução de nomes NetBIOS para que o servidor Samba possa enxergar e ser enxergado pelas outras máquinas. Então, este serviço permite a navegação pela rede, usando os hostnames das máquinas e o acesso às mesmas em rede.

O serviço SMB permite compartilhar tais recursos e autenticar os usuários no servidor Samba local, ou repassa as solicitações de autenticação para outro computador, como um servidor controlador de domínio com o Active Directory.

CONSIDERAÇÕES DE AMBIENTE DE REDE


No ambiente proposto no artigo, já existem os servidores DNS em execução na rede, pois, para a autenticação ser feita, é necessário o uso do DNS e o servidor com Active Directory configurado como controlador de domínio principal já instalado e funcionando.

Veja a disposição dos servidores na rede para explicação do artigo:
  • Domínio → adm.pi.empresa.br
  • Servidor DNS primário → 10.0.0.2
  • Servidor DNS Secundário → 10.0.0.13
  • Servidor DHCP → 10.0.0.2
  • Servidor controlador de domínio → 10.0.0.2 adm.pi.empresa.br

Como os clientes serão configurados pelo serviço DHCP, só especificarei o nome da máquina cliente:
  • Desktop cliente → ubuntu

======================================================

Agora será abordada a parte técnica do trabalho.

ARQUIVO /ETC/HOSTS, INSTALAÇÃO DE PRÉ-REQUISITOS E KERBEROS

ARQUIVO /ETC/HOSTS

Nesta parte iremos editar o arquivo /etc/hosts incluindo uma alias para o endereço do controlador de domínio e alterar o hostname do desktop cliente (mintvirt), acrescentando o fqdn, ou seja, o nome do domínio junto ao hostname da máquina cliente.

No entanto, substitua os nomes abaixo pelos correspondentes na sua rede.

# vim /etc/hosts

Conteúdo a ser acrescentado:

127.0.0.1 ubuntu.adm.pi.empresa.br localhost ubuntu 
10.0.0.2 server

Observe que "server" é nome do controlador de domínio usado no artigo, troque pelo nome do controlador de domínio de sua rede. Execute o comando abaixo para ver o nome da máquina completo, ou seja, o hostname com o nome do domínio da máquina cliente:

# hostname -f

INSTALAÇÃO DE PACOTES NECESSÁRIOS


Para que o desktop GNU/Linux possa migrar no domínio, é necessário fazer a instalação dos seguintes pacotes descritos a seguir, lembrando que os pacotes abaixo, são para distros Debian like:

# apt-get install krb5-user krb5-config winbind samba samba-common smbclient cifs-utils libpam-krb5 libpam-winbind libnss-winbind

Durante a instalação do kerberos, vai ser apresentado algumas telas com perguntas referentes ao KDC, mas pode dá um ENTER e seguir com a instalação dos pacotes, pois a configuração do kerberos será abordada mais a frente.

SERVIÇO NTP - SICRONIZANDO DATA E HORA COM O SERVIDOR


Para que a máquina cliente possa comunicar-se sem problemas com o controlador de domínio Windows Server, é necessário que o horário e data de ambas as máquinas estejam sincronizadas. Para isso, teremos que configurar o cliente NTP para atualizar data e hora pelo servidor Active Directory.

Edite o arquivo de configuração do serviço NTP usando o Vim:

# vim /etc/ntp.conf

Nas linhas do arquivo onde o conteúdo começa com a palavra "server", comente estas linhas com uma cerquilha "#", e adicione o seguinte conteúdo:

# Controlador de domínio #

server 10.0.0.2
restrict 10.0.0.2

Veja que ambos os endereços são do controlador de domínio. Agora, reinicie o serviço de data e hora:

# /etc/init.d/ntp stop
# /etc/init.d/ntp start

O Ubuntu usa o Upstart, então, para reiniciar o serviço é diferente. Para uma leitura mais abrangente, leia o conteúdo desse link:


O ambiente proposto pelo artigo, existe um servidor DHCP, então, não é necessário configurar o DNS, já que esse trabalho é feito pelo serviço DHCP. No entanto, se não estiver usando um serviço DHCP, edite o arquivo /etc/resolv.conf indicando os endereços dos servidores de nome, como mostrado abaixo:

# vim /etc/resolv.conf

search adm.pi.empresa.br
nameserver 10.0.0.2
nameserver 10.0.0.13

Substitua os endereços acima e o nome do domínio informado pelos endereços de seus servidores DNS e o nome do seu domínio na rede onde está configurando a máquina cliente.

KERBEROS


Para um usuário autenticar-se no Active Directory, é necessário editar o arquivo /etc/krb5.conf e incluir informações sobre o servidor KDC (controlador de domínio kerberos). Nesse caso, o controlador de domínio com o Active Directory possui um KDC. Use o Vim para editar o arquivo e inclua as seguintes linhas no arquivo:

# vim /etc/krb5.conf

Conteúdo acrescentado:


[libdefaults]

default_realm = PI.EMPRESA.BR

[realms]

PI.EMPRESA.BR = {

kdc = winactive.pi.empresa.br

default_domain = PI.EMPRESA.BR

admin_server = winactive.pi.empresa.br

}

[domain_realm]

.adm.pi.empresa.br = ADM.PI.EMPRESA.BR

EXPLICAÇÃO DA CONFIGURAÇÃO


Este arquivo é organizado em seções. As seções inclusas para autenticação no domínio são listadas abaixo junto com suas sub-seções:

[libdefaults] → Seção que contém valores padrão para o Kerberos V5, nessa seção só deixei uma única sub-seção, explicada a seguir.

default_realm → Esta sub-seção identifica o domínio padrão a ser usado pelo cliente kerberos.

[realms] → O kerberos divide a rede em domínios seguros, chamados de "realms", então esta seção contém sub-seções informando nomes de "realms" do Kerberos, informando onde encontrar os servidores Kerberos para domínios seguros específicos e outras informações.

Neste caso, criei uma sub-seção chamada de "ADM.PI.EMPRESA.BR", que é referente ao domínio seguro no qual a máquina irá ingressar. E dentro, criei as seguintes sub-seções:
kdc → Aqui se configura o nome da máquina que está executando o controlador de domínio do kerberos mestre, como o controlador de domínio rodando o Active Directory está executando o KDC, então inclui o nome completo da máquina aqui.

default_domain → Nesta sub-seção se especifica o domínio seguro padrão.

admin_server → Esta sub-seção identifica o host onde o servidor que faz administração do kerberos está sendo executado.

[domain_realm] → Seção que indica os mapas de domínios e sub-domínios.

Depois de configurar o kerberos, vamos testar a comunicação entre o servidor e desktop. Execute o comando abaixo, no exemplo estou usando o nome "fulando", que é um usuário do domínio criado, mas substitua pelo nome do usuário que estiver cadastrado no servidor.

# kinit fulano

Se o comando não retornar nenhuma saída, é porque a comunicação está sendo realizada com sucesso. Agora vamos listar o ticket obtido nessa comunicação usando o comando:

# klist

O comando klist deverá retornar uma saída como a que está abaixo:

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: fulano@pi.empresa.br

Valid             starting    Expires                        Service principal
13-11-2012  15:48:35  14-11-2012 01:49:08   krbtgt/ADM.PI.EMPRESA.BR@ADM.PI.EMPRESA.BR
renew until 16-11-2012 15:48:35

======================================================

CONFIGURANDO SAMBA, INGRESSANDO MÁQUINA NO DOMÍNIO E ARQUIVO /ETC/NSSWITCH.CONF


CONFIGURANDO O SAMBA


Antes de colocar a máquina no domínio, é necessário configurar o Samba para que seja possível à máquina ingressar no domínio. Toda configuração é feita no /etc/samba/smb.conf, o Winbind não precisa configurar pois o mesmo é um daemon usado pelo Samba. Edite o arquivo /etc/samba/smb.conf com Vim: # vim /etc/samba/smb.conf Inclua as seguintes linhas no arquivo "smb.conf", caso algumas dessas linhas já estejam dentro do arquivo, edite e deixa-as como está abaixo. O arquivo está bem comentado com explicações dos principais parâmetros:

[global]

security = ads # O modo de operação ADS faz com que o Samba se comporte como um membro (cliente) de um domínio Windows

realm= ADM.PI.EMPRESA.BR # Informa o domínio que controlador de domínio Kerberos que será usado

workgroup = ADM # Informa o grupo de trabalho, nesse caso informa o domínio

idmap uid = 10000-15000 # Especifica o intervalo de IDs de usuários que serão mapeados para o sistema local, coloquei um intervalo de cinco mil, mas pode colocar menor ou maior número

idmap gid = 10000-15000 # Especifica o intervalo de GIDs de grupos que serão mapeados para o sistema local
winbind enum users = yes # Permiti o winbind enumerar usuários

winbind enum groups = yes # Permiti o winbind enumerar grupos

template homedir = /home/%D/%U # Informa aonde será criado o diretório home de cada usuário após logar no sistema, o parâmetro %D informa o nome do domínio e %U o nome do usuário

template shell = /bin/bash # Informa qual shelll será atribuído ao usuário, você pode incluir /bin/false para impedir que o usuário faça uso do shell, mas irá ser usado por todos usuários do domínio

client use spnego = yes # Este parâmetro controla se smbclient irá usar negociação simples e protegido na autenticação, essa opção permite usar o Kerberos

winbind use default domain = yes # Parâmetro usado para não incluir o nome do domínio a ser usado junto ao nome do usuário no sistema, por exemplo: DOMINIO\usuário. Habilitando esse parâmetro, somente o nome do usuário será usado para identificar o mesmo

restrict anonymous = 2

winbind refresh tickets = yes # Este parâmetro é usado para controlar se o winbind deve atualizar os tickets do Kerberos usando o módulo pam_winbind

Observe que nem todos os parâmetros são necessários para ingressar a máquina no domínio. Depois de editar, salve as alterações e reinicie os serviços do Samba e Winbind.

# service winbind restart

# service samba restart

No Ubuntu, reinicie da seguinte forma:

# service winbind restart

# restart smbd

# restart nmbd


INGRESSANDO A MÁQUINA NO DOMÍNIO


Depois de configurar o Samba, é hora de ingressar a máquina no domínio com o comando net. Execute o comando abaixo como root:

# net ads join -U Administrador

Veja que usei a opção "-U" no comando net, seguido do nome do usuário com permissão de ingressar máquinas no domínio, o usuário Administrador foi usado. Após a execução do comando, deverá retornar uma mensagem como que está abaixo:

Using short domain name - ADM
Joined 'UBUNTU' to realm 'ADM.PI.EMPRESA.BR'

Agora, faça o teste e liste os grupos e usuários do domínio com o comando wbinfo. Para listar usuários execute:

# wbinfo -u

Para listar os grupos execute:

# wbinfo -g

Caso não retorne nenhum nome de usuário ou grupo, reinicie o Winbind.

ARQUIVO NSSWITCH.CONF


Depois ingressar a máquina no domínio, vamos configurar o arquivo /etc/nsswitch.conf para que o sistema possa saber onde buscar informações de login dos usuários que estão se autenticando. É neste arquivo que iremos comunicar ao sistema que ele deve procurar nossas informações de login usando o Winbind. Edite o arquivo usando o Vim e deixando as linhas abaixo como demonstrado. Em seguida, salve as alterações:

# vim /etc/nsswitch.conf

Conteúdo alterado:

passwd: compat winbind

group: compat winbind

Veja que, como estamos lidando com usuários, grupos e senhas, apenas alteramos as linhas que correspondem aos mesmos, estamos informando ao sistema que ele deve procurar nossas informações de login usando o Winbind nas linhas:

"passwd: compat" para senha

"group: compat" para group

======================================================

CONCLUINDO O TRABALHO


ALGUNS DETALHES E ESCLARECIMENTOS

Muitos howtos encontrados na Internet mostram configurações adicionais desnecessárias, fazendo alterações em vários arquivos de autenticação do PAM. Mas a maioria destas configurações não são necessárias, pois ao instalar os pacotes Winbind e o pacote que contém as bibliotecas do kerberos, o próprio sistema se encarrega de alterar os arquivos sem qualquer intervenção dos usuários, com exceção de um arquivo.

O único arquivo que se faz necessário a intervenção do usuário é o /etc/pam.d/common-session (em distros Debian like).

Então, edite o arquivo /etc/pam.d/common-session e após linha abaixo:

session required pam_unix.so

Inclua esta:

session required pam_mkhomedir.so umask=0022 skel=/etc/skel

A linha mencionada anteriormente faz o diretório home de cada usuário ser criado automaticamente no inicio de cada sessão após a autenticação do usuário, setando as permissões para os arquivos e diretórios com a "umask 0022" e obtendo do diretório /etc/skel seus sub-diretórios e arquivos padrões. Caso esta linha não esteja adicionada, provavelmente será apresentado a seguinte mensagem após o login:




SOLUCIONANDO O PROBLEMA AO TROCAR SENHAS DURANTE O LOGIN NO UBUNTU


Todo o trabalho feito até então fará os usuários logarem nos desktops GNU/Linux sem problemas nas distros Debian e Linux Mint Debian Edition. No Ubuntu 12.04, no entanto, haverá um problema quando for solicitado para o usuário trocar a senha no momento do login. Normalmente o administrador da rede mantém um diretiva interna que indica o tempo que uma senha será válida, após esse período, a senha expira. As imagens abaixo indicam onde acontece o erro quando se tenta trocar a senha na tela de login. Quando digita-se a senha, o gerenciador de login pede para repetir a senha atual e em seguida, pede a repetição da senha atual. Depois de digitar e dar um ENTER, não é pedido para entrar com a nova senha e a mesma não é trocada, e volta em seguida para tela de login.



A solução para poder alterar senha quando solicitada e autenticar-se, é editar o arquivo /etc/pam.d/common-account alterando as duas linhas abaixo:


account[sucess=2new_authtok_reqd=donedefault=ignore]pam_unix.so account[sucess=1new_authtok_reqd=donedefault=ignore]pam_winbind.so

Deixando-as assim:


account[sucess=2new_authtok_reqd=donedefault=ignore]pam_winbind.so account[sucess=1new_authtok_reqd=donedefault=ignore]pam_unix.so

Veja que somente inverti a ordem dos módulos, colocando o módulo "pam_winbind.so" antes do módulo "pam_unix.so". Assim, após a alteração da senha e confirmação da autenticação, a classe de módulos "account" irá primeiro consultar o módulo "pam_winbind.so", permitindo o acesso e não dando o erro de antes. Veja nas imagens abaixo como fica a solicitação de alteração de senha. Digitando nome de usuário senha atual:



Solicitando a repetição da senha atual:



Pedindo para repetir outra vez a senha atual:



Solicitando a nova senha:



Pedindo para confirmar a nova senha:



TELA DE LOGIN NO UBUNTU

Uma dica para quem usa o Ubuntu, é alterar a tela de login do mesmo fazendo com que seja possível logar com qualquer usuário, e não somente o usuário criado na instalação do sistema, informando nome e senha. Para isso, edite o arquivo /etc/lightdm/lightdm.conf incluindo as alterações mencionadas abaixo, no final do arquivo. OBS:. No ubuntu versão 15.04 crie o arquivo, pois o mesmo não se encontra no path informado acima.


[SeatDefaults]

allow-guest=false

greeter-show-manual-login=true

greeter-hide-users=true

Depois de todas estas etapas, reinicie a máquina e ao logar, use somente o nome do usuário cadastrado no domínio. Este detalhe é interessante por causa da configuração usada no arquivo /etc/samba/smb.conf, não é necessário colocar o nome do domínio junto com o nome do usuário que irá logar no domínio, coloque somente o nome de usuário e informe a senha.

REFERÊNCIAS




segunda-feira, 27 de julho de 2015

INSTALAR E CONFIGURAR O X11VNC PARA UBUNTU

1º – Para instalar use o comando:

sudo apt-get install x11vnc

2º – Para criar a senha:

sudo x11vnc -storepasswd A_SUA_PASSWORD /etc/x11vnc.pass

3º – Para dar permissão ao arquivo de senha:

sudo chmod 744 /etc/x11vnc.pass

4º – O comando a seguir vai rodar o X11vnc:

 sudo x11vnc -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.pass -forever -bg -rfbport 5900 -o /tmp/x11vnc.log

Bom, até aí o aplicativo vai funcionar direitinho. Contudo, após reiniciar a máquina ele não mais estará rodando. Para fazer com que o programa inicie com o Sistema Operacional, será necessário criar um script dentro de /etc/init.d/, dar permissão de execução e executar o comando "update-rc.d" para fazer com que isso aconteça.

Passos:

Criar o arquivo:
=====================================================
# vim /etc/init.d/vnc-server

adicionar as linhas de comando dentro do arquivo:

#!/bin/bash
 
start() {
    echo "Iniciando VNC-Server..."
    x11vnc -env FD_XDM=1 -display :0 -forever -rfbauth /root/.vncpasswd &>> /var/log/vnc-server.log &
    echo "[OK]"
}
 
stop() {
    echo "Desligando VNC-Server..."
    killall x11vnc &>> /var/log/vnc-server.log
    echo "[OK"]
}
    case "$1" in
    start) start
    ;;
    stop) stop
    ;;
    restart) stop; start
    ;;
    *) echo "Uso correto: (start|stop|restart)"
    ;;
esac
- See more at: http://www.aprendendolinux.com/x11vnc-o-vnc-do-linux/#sthash.n3AoC9ho.dpuf
#!/bin/bash

start() {
   echo "Inciar VNC..."
   x11vnc -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth  /etc/x11vnc.pass -forever -bg -rfbport 5900 -o ~/.Log-x11vnc.log
   echo"VNC Funcionando..."
}

stop() {
    echo "Parando o VNC..."
    killall x11vnc &>> ~/.Log-vnc-server.log
    echo "VNC parado..."
}
    case "$1" in
    start) start
    ;;
    stop) stop
    ;;
    restart) stop; start
    ;;
    *) echo "Uso correto: (start|stop|restart)"
    ;;

esac
========================================================
Para dar permissão de execução para ao script:

# chmod +x /etc/init.d/vnc-server

Agora, vamos temos que colocar o script para iniciar com o sistema:

# cd /etc/init.d/
# update-rc.d vnc-server defaults

OK. O x11vnc já está configurado para iniciar com o sistema e você pode fazer o STOP e START com os comandos abaixo:

Exemplos:
# /etc/init.d/vnc-server start
# /etc/init.d/vnc-server stop
# /etc/init.d/vnc-server restart

Caso você não precise mais que ele suba junto com o sistema operacional, faça o comando abaixo:

# cd /etc/init.d/
# update-rc.d -f vnc-server remove


OBS.: A porta padrão de execução do VNC é a 5900
# vim /etc/init.d/vnc-server
Deixe-o assim:
# vim /etc/init.d/vnc-server
Deixe-o assim:

terça-feira, 11 de fevereiro de 2014

INSTALAR GOOGLE EARTH 7.1 NO UBUNTU 13.10

Muita gente postando nos seus blogs, mas nenhum funcionou comigo. Acabei encontrando a solução num site em inglês do ask.ubuntu.com:

- Baixe o pacote com extensão .deb:

http://www.google.com.br/intl/pt-BR/earth/download/ge/agree.html

  1. Abra o Terminal, Copiar e Colar seguinte comando e pressione Enter
    sudo apt-get install libc6: i386 lsb-core
    
  2. Abrir pasta de downloads
  3. Clique com o botão direito no Google Earth. Deb e selecione a opção "Extrair Aqui".
  4. Abra a pasta onde os arquivos forão extraídos.
  5. Abra a pasta DEBIAN
  6. Abra e edite o arquivo controle.
  7. Remova toda esta linha: Depende: lsb-core (> = 3.2), ia32-libs
  8. Agora Clique em Salvar.
  9. Agora elimine o arquivo original Google Earth. DEB pacote que você baixou.
  10. Crie uma pasta chamada getfi, Agora mova a pasta extraída do Google Earth para a pasta getfix
Agora vamos reconstruir O Google Earth deb Package.:
  1. Abra o Terminal, copiar / colar o seguinte comando, em seguida, pressione Enter :
    dpkg -b ./getfix/google-earth-stable_current_amd64
    
  2. Copie / cole o seguinte comando (isto irá instalar. deb)
    sudo dpkg -i ./getfix/google-earth-stable_current_amd64.deb


quarta-feira, 5 de fevereiro de 2014

BAIXAR E COMPILAR O OPENVPN NO DEBIAN WHEEZY

1º - FAÇA O DOWNLOAD VIA WGET

wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.2.tar.gz


2º - EXTRAIA O ARQUIVO.

tar xf openvpn-2.3.2.tar.gz
cd openvpn-2.3.2

3º - ANTES DE COMPILAR, BAIXE AS BIBLIOTECAS LIBSSL-DEV, LIBLZO2-DEV, LIBPAM0G-DEV E INSTALE O BUILD-ESSENTIAL PARA COMPILAR.

apt-get install libssl-dev liblzo2-dev libpam0g-dev build-essential

4º - AGORA SIGA OS PROCEDIMENTOS NORMAIS.

./configure
make
make install

quinta-feira, 10 de outubro de 2013

CONFIGURAR O ARQUIVO SYSCTL.CONF

Essa postagem é pra ajudar a quem queira configurar um firewall limpo. Sendo assim, ativando algumas funções no arquivo sysctl.conf não será necessário colocar no script do firewall. Como por exemplo: HABILITAR O NAT, E HABILITAR A SEGURANÇA CONTRA ATAQUES.


O GNU Linux possui a chamada de sistema sysctl, que é usado para visualizar ou alterar os parâmetros dos arquivos encontrados dentro de /proc/sys/ sem a necessidade de editar o código fonte do Kernel, recompilá-lo e depois reinicializa-lo.

# Se ativo, permite o encaminhamento de pacotes IPV4.
# o parâmetro abaixo deve ser ativado (1) para o mascaramento ser automatico

net.ipv4.ip_forward = 1

# If active, enables source route verification # Se ativo, habilita a verificação da origem da rota.

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1


# If active, enables the magic-sysrq key (alt+sysRq)
kernel.sysrq = 1

# If active, logs 'impossible' source addresses

net.ipv4.conf.all.log_martians = 1

# If active, rewrites outgoing IP packets if address changes

net.ipv4.ip_dynaddr = 0

# If active, ignores ICMP with broadcast destination

net.ipv4.icmp_echo_ignore_broadcasts = 1

# If active, accepts IP packets with source route info

net.ipv4.conf.all.accept_source_route = 0

# If active, ignores all ICMP requests

net.ipv4.icmp_echo_ignore_all = 0

# Mask made of ICMP types for which rates are being limited.

# Default: 6168
# Note: 6168 = 0x1818 = 1<
#       1<
#       dest unreachable (3), source quench (4), time exceeded (11)
#       and parameter problem (12) ICMP packets are rate limited
#       (check values in icmp.h)
# 6169 also limits echo_reply's

net.ipv4.icmp_ratemask = 6169

# ICMP ratelimit, in jiffies
# 1 jiffie = 1/100s in Intel, 1/1024s in Alpha

net.ipv4.icmp_ratelimit = 100

# If active, uses TCP SYN cookies

net.ipv4.tcp_syncookies = 1

# If active, accepts ICMP redirect orders

net.ipv4.conf.all.accept_redirects = 0

# rtc setup (you have to load rtc kernel module in /etc/rc.modules
# for this work properly.)

#dev.rtc.max-user-freq = 1024

sexta-feira, 27 de setembro de 2013

CALCULO DE MÁSCARA DE SUB-REDE

A grande verdade é que as máscara de sub-rede já são pré-definidas.

exemplo com classe C:

255.            255.             255.           0
11111111.11111111.11111111.00000000  =  /24

a) 10000000=128 = 2 redes    | 128 hosts        /25
b) 11000000=192 = 4 redes    | 64 hosts          /26
c) 11100000=224 = 8 redes    | 32 hosts          /27
d) 11110000=240 = 16 redes  | 16 hosts         /28
e) 11111000=248 = 32 redes   | 8 hosts         /29
f) 11111100=252 = 64 redes    | 4 hosts        /30
g) 11111110=254 = 128 redes | 2 hosts        /31

---------------------------------------------------------------------------
a) ex.: 255.255.255.128
b) ex.: 255.255.255.192
.
.
.
----------------------------------------------------------------------------

a) 256/128= 2 redes     | 256-((27)=128) = 128 hosts
b) 256/192= 4 redes     | 256-((26)=192) = 64 hosts
c) 256/224= 8 redes     | 256-((25)=224) = 32 hosts
d) 256/240= 16 redes   | 256-((24)=240) = 16 hosts
e) 256/248= 32 redes   | 256-((2³)=248) = 8 hosts
f) 256/252= 64 redes    | 256-((2²)=252) = 4 hosts
g) 256/254= 128 redes | 256-((2¹)=254) = 2 hosts



terça-feira, 3 de setembro de 2013

LOGIN POR RECONHECIMENTO FACIAL NO UBUNTU

PARA COMEÇAR PRECISAMOS DE DUAS APLICAÇÕES COM SUAS DEPENDÊNCIAS: PAM-FACE-AUTHENTICATION E OPENCV. NO MEU CASO ESTOU INSTALANDO NO UBUNTU 13.04 (Raring Ringtail)

Procedimentos:

1 - Instalar OpenCV e suas dependêcnias:

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev

Faça o Download do OPENCV-2.4.6

http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.6.1/opencv-2.4.6.1.tar.gz/download
tar -xvf OpenCV-2.4.6.1.tar.bz2

cd OpenCV-2.4.6.1/
# cmake .
# make
# make install


2 - Instalar o PAM-FACE-AUTHENTICATION

segue o Link do download do Projeto:
http://code.google.com/p/pam-face-authentication/downloads/detail?name=pam-face-authentication-0.3.tar.gz

É bem chato, mas é muito empolgante quando o resultado é atingido.



Primeiro Instale as dependências:

sudo apt-get install build-essential cmake qt4-qmake libx11-dev libcv-dev libcvaux-dev libhighgui2.4 libhighgui-dev libqt4-dev libpam0g-dev checkinstall python-opencv

Descompacte o arquivo:
tar -xzf pam-face-authentication.tar.gz

Entre no diretório onde descompactou a pasta:
cd pam-face-authentication-0.3

Copie o arquivo "OpenCVConfig.cmake" para dentro "pam-face-authentication-0.3/cmake/modules/FindOpenCV.cmake


Edite o arquivo: gedit ./cmake/modules/FindOpenCV.cmake

Localize os textos abaixo e substitua para os que estão em negrito:

SET(OpenCV_INCLUDE_DIRS "${OpenCV_INSTALL_PATH}/include/opencv;${OpenCV_INSTALL_PATH}/include")

SET(OpenCV_INCLUDE_DIRS "/usr/include/opencv;/usr/include")

Salve o arquivo e entre novamente em outro arquivo:

gedit ./CMakeLists.txt Faça a mesma coisa substituindo os valores para os que estão em negrito:

INCLUDE_DIRECTORIES(${OPENCV_INCLUDE_DIR})

INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})

TARGET_LINK_LIBRARIES( pam_face_authentication ${PAM_LIBRARIES} ${OPENCV_LIBRARIES})

TARGET_LINK_LIBRARIES( pam_face_authentication ${PAM_LIBRARIES} ${OpenCV_LIBS})

TARGET_LINK_LIBRARIES( qt-facetrainer ${QT_LIBRARIES} ${OPENCV_LIBRARIES})

TARGET_LINK_LIBRARIES( qt-facetrainer ${QT_LIBRARIES} ${OpenCV_LIBS})

Salve o arquivo e saia dele;

Crie o diretório build:
mkdir build

Entre no diretório build:
cd build

Execute o comando:
cmake -D CMAKE_INSTALL_PREFIX=/usr ..

Execute o comando:
make

Execute o comando:
sudo make install

---------------------------------------------------------------------------------
O ainda deu um probleminha, e realizei mais este procedimento:

cat << EOF | sudo tee /usr/share/pam-configs/face_authentication /dev/null

**Name:** face_authentication profile  
**Default:** yes  
**Priority:** 900   
**Auth-Type:** Primary  
**Auth:** [success=end default=ignore] pam_face_authentication.so enableX 
EOF

 sudo pam-auth-update --package face_authentication

Depois executei o o programa cadastrei meu rosto (5 vezes).

Execute o programa:
qt-facetrainer

Para a autenticação funcionar no login, tem que ir em "/etc/pam.d/common-auth".

auth    sufficient      pam_face_authentication.so enableX

Para a autenticação via sudo, tem que ir no "/etc/pam.d/sudo"

auth    sufficient      pam_face_authentication.so enableX

Reiniciar a máquina, pelo menos no meu a tela ficou piscando, só parou quando reiniciei.

terça-feira, 27 de agosto de 2013

Estava eu estudando Shell Script e senti a necessidade de aprender mais sobre REDIRECIONAMENTO (STDIN, STDOUT, STDERR, PIPE) e descobri que esse assunto é tão o mais importante do que qualquer outro no mundo UNIX. Então resolvi pegar um pouco de cada blog que explicava bem alguns tópicos. Então vamos lá:


No Linux é possível trabalhar redirecionando pra onde vai o resultado de um comando, quando um processo precisa acessar um arquivo, ele faz isso através do descritor do arquivo (um número inteiro positivo, que o processo usa para referenciar a um determinado arquivo aberto). Assim, todo processo em um sistema UNIX mantém uma tabela de referências aos descritores de arquivos usados pelo mesmo. Os descritores propriamente dito são mantidos pelo kernel. O tamanho dessa tabela varia de sistema para sistema. Nos linux atuais, o tamanho padrão é 256. Cada processo UNIX dispõe de 20 descritores de arquivo, ordenados de 0 a 19.
Quando um programa é executado, 3 arquivos são automaticamente abertos e associados à esse processo. Abaixo, temos a listagem desses três arquivos:
stdin - 0 - entrada padrão - teclado
stdout - 1 - saída padrão - tela
stderr - 2 - erro padrão - tela
Obs: Os outros 17 descritores estão disponíveis para arquivos.
O arquivo stderr ( descritor 2) é usado pelos programas para imprimir as mensagens de erro(geralmente na tela). Podemos redirecionar a saída de um descritor de arquivo para um arquivo com a seguinte sintaxe:
Sintaxe:


numero-descritor> nome_do_arquivo

Exemplos (assumindo que o arquivo teste.txt não existe no diretório corrente):
$ rm teste.txt


rm: imposível remover

`teste.txt’: Arquivo ou diretório inexistente
Por isso no Linux é comum usar o conceito “entrada padrão” e “saída padrão”. A princípio dá pra se imaginar que, numa interface de console, a entrada padrão é o teclado e saída padrão a tela. Na verdade isso é redirecionado pra um socket, um arquivo em /dev. Chamado de stdout e stdin.
-stdin
Entrada padrão de dados para o programa
-stdout
Saída padrão de dados do programa
 -stderr
Saída padrão de erro


Redirecionamentos
É possível tratar a entrada padrão e a saída padrão usando apenas alguns caracteres especiais. São eles:
> – Redireciona a saída padrão para um arquivo
>> – Redireciona a saída padrão pra um arquivo sem apagar o conteúdo do arquivo
< – Redireciona a entrada padrão usando um arquivo
2> – Redireciona a saída de erro para arquivo
2>> – Redireciona a saída de erro anexando o conteúdo em um arquivo
>&2 – Redireciona a saída padrão para saída de erro
2>&1- Redireciona saída de erro para saída padrão
| – Conecta a saída padrão na entrada padrão de outro arquivo

Todos esse redirecionamentos são muito usados. Apesar de parecer complicado não é tanto assim. Usando exemplos práticos fica simples:
echo TESTE > arquivo.txt
escreve TESTE em um arquivo chamado arquivo.txt porém o arquivo é apagado caso já exista
ls foobar 2>> error.log
caso a arquivo foobar não exista (ls falhou) a mensagem de erro é anexada em error.log
cat ls -l | grep evandro
Lista na sáida o no Evandro dentro de um diretório, caso exista.
Por isso é possível criar scripts e arquivos executando varáveis e comandos com textos usando um tipo especial de redirecionamento de saída usando quotes chamado (here document) que permite que você inicie com << PALAVRA e termine com PALAVRA que geralmento é usado <e EOF (End Of File – Final de Arquivo). Caractere << é usado para indicar que o texto seja usado para leitura a partir de uma palavra < com marcação e encerrado depois que encontra PALAVRA, como exemplo abaixo:
2
3
1
2
3


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

Descritores de arquivo e ponteiros para os arquivos

Foi visto que o nó de indexação de um arquivo é a estrutura de identificação do arquivo dentro de um sistema. Quando um processo quiser manipular um arquivo, ele vai simplesmente utilizar um inteiro chamado descritor de arquivo. A associação desse descritor ao nó de indexação deste arquivo se faz durante a chamada da primitiva open() (ver 1.5.4), com o descritor tornando-se então o nome local de acesso desse arquivo no processo. Cada processo UNIX dispõe de 20 descritores de arquivo, numerados de 0 a 19. Por convenção, os três primeiros são sempre abertos no início da vida de um processo:
  • O descritor de arquivo 0 é a entrada padrão (geralmente o teclado);
  • O descritor de arquivo 1 é associado a saída padrão (normalmente a tela);
  • O descritor de arquivo 2 é a saída de erro padrão (normalmente a tela).
Os outros 17 descritores estão disponíveis para os arquivos. Esta noção de descritor de arquivo é usada para a interface de Entrada/Saída de baixo nível, especialmente com as primitivas open(), write(), etc. Por outro lado, quando as primitivas da biblioteca padrão de entrada/saída são usadas, os arquivos são encontrados através dos ponteiros para os objetos do tipo FILE (tipo definido dentro da ).
Existem três ponteiros definidos neste caso:
  • stdin que aponta para o buffer da saída padrão (geralmente o teclado);
  • stdout que aponta para o buffer da saída padrão (normalmente a tela);
  • stderr que aponta para o buffer da saída de erro padrão (normalmente a tela).


Quem é Almir JR