Posts tagged: Server

DNS para a intranet com Ubuntu Server

By Greyson, 27 de junho de 2010

Um problema que vem aumentando e preocupando e a questão dos dns que estão falhando.

Link1: http://computerworld.uol.com.br/seguranca/2008/07/29/varios-provedores-brasileiros-nao-corrigiram-falha-de-dns/

Por esse motivo o Google criou um serviço dns os ips são 8.8.4.4 e 8.8.8.8 um bom numero ip pela facilidade de se memorizar.

Link2: http://code.google.com/intl/pt-BR/speed/public-dns/docs/using.html

mas não pensemos que o serviço foi disponibilizado por qualquer coisa ou estava nos planos, vamos imaginar apenas 1 site que tem mais de 1 milhao de acessos por minuto e que gera milhões por dia chegando a passar quase 12 horas offline por falha nos dns.

por esse motivo resolvi criar este post para compartilhar meu conhecimento com dns e ajudar a muita gente que não precisa depender de dns pois podem ter o próprio dns local.

Criando um Servidor DNS local:

Vantagem maior rapidez na velocidade de resolver nomes de sites!

O que iremos usar:

SO: Linux

Software: bind9

Sistema escolhido: Ubuntu preferencialmente 8.04 LTS

Motivo: Ubuntu 8.04 LTS tem suporte ate 2013, é um sistema robusto e não precisa ser usado só como DNS além da instalação mais facilitada pelo APT-GET assim como o o Debian.

Iniciando:

Partimos do principio que o ubuntu já estas instalado e se encontra totalmente funcional.

1 – vamos instalar o bind9.

sudo apt-get install bind9 dnsutils

2 – Faça o backup do arquivo named.conf.local seguindo o comando:

sudo cp /etc/bind/named.conf.local /etc/bind/named.conf.local.ORIG

3 – Vamos fazer um ajuste no conf do bind:

sudo gedit /etc/bind/named.conf.local

4 – Procure a linha comentada :

#include "/etc/bind/zones.rfc1918";

5 – Retire o comentário " #"

include "/etc/bind/zones.rfc1918";

6 – Reiniciar o servidor de DNS.

sudo /etc/init.d/bind9 restart

7 – Agora vamos ajustar o endereço de DNS padrão do nosso sistema operacional.

sudo gedit /etc/resolv.conf

8 – Adicione.

nameserver localhost

Ou coloque o endereço de ip da sua máquina caso for fixo.

Exemplo: nameserver 192.168.254.20

9 – Vamos adicionar os endereços dns ( Usaremos o Google )

sudo gedit /etc/bind/named.conf.options

10 – Adicione como abaixo.

forwarders {
8.8.4.4;
8.8.8.8;
};

11 - Salve o arquivo resolv.conf e reinicialize o Bind e a rede:

# /etc/init.d/bind9 restart
# /etc/init.d/networking restart

Nos pcs locais da rede coloque no dns o ip local da maquina que está o bind. Eu indico que usem os ips do Google pois vão indexar os names muito rápido. Lógico que pode ser que com estes endereços DNS não indexe tão rápido pois depende muito do link, tráfego na rede (WAN) dentre outros fatores.

Espero ter ajudado.

Samba usando banco de dados do AD para autenticar usuários em compartilhamentos

By Greyson, 23 de junho de 2010

Olá pessoal,

Acho que este artigo deve ser de grande importância inclusive para administradores de rede já que geralmente nos encontramos à frente de redes heterogêneas, principalmente com Windows e Linux. Estarei compartilhando com a comunidade minha experiência mostrando como realizar tal tarefa. Como sabemos (ou deveríamos saber) o Active Directory usa o Kerberos para autenticação de usuários no domínio. Então partindo deste princípio já podemos ter em mente quais pacotes utilizar para este processo. Não entrarei em detalhes sobre a configuração e parâmetros do samba pois existem muitos artigos e tutorais na internet e assim perderíamos o foco deste post. Pois bem, deixemos de blá blá e vamos ao que interessa:

1 – Preparando o ambiente:

Usaremos o Ubuntu 8.04 LTS (com suporte até 2013) como servidor já que o suporte oferecido pela canonical é de 5 anos, ou seja você administrador instalando esta versão terá tempo de se preparar para uma migração natural que seria o Ubuntu 10.04 que terá suporte até 2015.

2 – Baixando os pacotes necessários:

$ sudo apt-get update && sudo apt-get install krb5-user winbind ssh samba

3 – acerte o horário do seu servidor samba igual ao do servidor Active Directory pois caso contrário ele não permitirá o logon. Para quem não conhece o comando é

$ sudo su

senha:

# date mmddhhmmyyyy

# exit

mm: Mês

dd: Dia

hh: hora

mm: Minuto

yyyy: Ano

3 – Editando os arquivos necessários:

Obs: recomendo fortemente daqui pra frente antes de editar os arquivos realizar uma cópia dos mesmos pois caso algo dê errado, será possível a restauração dos mesmos. Claro que muitos sabem dessas precauções, mas fica aí a dica.

$ sudo nano /etc/resolv.conf

Altere o arquivo conforme o modelo abaixo:

search seu.dominio
nameserver ip_do_dns_primario
nameserver ip_do_dns_secundario

Salve e feche o arquivo.

$ sudo nano /etc/hosts

Altere o arquivo /etc/hosts, conforme o modelo: (neste caso apenas edite a ultima linha)

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

ff02::3 ip6-allhosts

ip_do_host nome_da_maquina.seu.dominio nome_do_host

Salve e feche o arquivo.

$ sudo nano /etc/nsswitch.conf

Altere o arquivo /etc/nsswitch.conf conforme abaixo:

passwd: compat winbind
group: compat winbind
shadow: compat

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

Salve e feche o arquivo.

$ sudo nano /etc/krb5.conf

Edite o arquivo /etc/krb5.conf e deixe-o assim:

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = SEU.DOMINIO
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = yes
[realms]
SEU.DOMINIO = {
kdc = servidor.seu.dominio
admin_server = servidor. seu.dominio
default_domain = SEU.DOMINIO
}
[domain_realm]
.dominio.seu = SEU.DOMINIO
dominio.seu = SEU.DOMINIO
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}

Salve e feche o arquivo.

Para verificar que você consegue se autenticar via kerberos execute o comando:

kinit usuario@ SEU.DOMINIO

Será solicitada a senha do usuário. Se não der nenhuma mensagem de erro, execute o comando klist. Se for mostrada uma mensagem parecida com a abaixo, você se autenticou com sucesso:

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: usuario@SEU.DOMINIO
Valid starting Expires Service pricipal

RENEW UNTIL 01/31/10 16:12:30

01/30/10 18:12:30 01/31/10 04:12:34 krbtgt/SEU.DOMINIO@SEU.DOMINIO

$ sudo nano /etc/samba/smb.conf

Altere o arquivo /etc/samba/smb.conf conforme abaixo:

[global]
workgroup = dominio
security = ads
log file = /var/log/samba/%m.log
max log size = 50
dns proxy = no
password server = servidor.seu.dominio
realm = SEU.DOMINIO
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /bin/bash
winbind use default domain = true
winbind enum users = yes
winbind enum groups = yes

Aqui você também acrescentar outros parâmetros como a lixeira do samba, full audit, obviamente os compartilhamentos, impressoras etc. Porém estes parâmetros acima são apenas o necessário para a autenticação.

Salve e feche o arquivo.

Vamos editar os módulos do PAM:

$ sudo nano /etc/pam.d/common-account

O arquivo /etc/pam.d/common-account deve conter somente as linhas:

account sufficient pam_winbind.so
account required pam_unix.so

Salve e feche o arquivo.

$ sudo nano /etc/pam.d/common-auth

O arquivo /etc/pam.d/common-auth deve conter somente as linhas:

auth required pam_listfile.so item=user sense=allow file=/etc/system_users onerr=fail
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass

Salve e feche o arquivo.

$ sudo nano /etc/pam.d/common-session

Inclua no arquivo /etc/pam.d/common-session a linha:

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

Salve e feche o arquivo.

Crie o arquivo /etc/system_users e coloque os usuários, um em cada linha, que deseja permitir logon no computador. NÃO ESQUEÇA DE SEUS USUÁRIOS LOCAIS.

$ sudo touch /etc/system_users

$ sudo nano /etc/system_users

Depois de adicionados os usuários, salve e feche o arquivo.

Crie o diretório que conterá o home dos usuários do domínio:

$ sudo mkdir /home/DOMINIO

4 – Adicione o computador ao domínio com o comando:

net ads join -U usuario_com_permissao_adicionar@SEU.DOMINIO

5 – Reinicie os serviços:

$ sudo /etc/init.d/samba restart

$ sudo /etc/init.d/winbind restart

$ sudo /etc/init.d/ssh restart

Se você por acaso adicionou usuários do domínio para acessar o servidor faça o teste:

ssh usuario_do_dominio@_seu_servidor

(se por acaso você usar uma porta diferente da 22 especifique com o parâmetro -p porta_do_ssh)

Agora ao criar as permissões no seu domínio Active Directory elas se refletirão diretamente no seu servidor samba.

Por exemplo:

Temos dois usuarios: maria e jose pertencentes ao grupo financeiro

No seu servidor samba basta configurar as permissões utilizando dos parâmetros usados no seu dominio.

Um exemplo de compartilhamento seria:

[financeiro]

path = /departamentos/financeiro

writable = yes

browseable = yes

create mask = 0770

directory mask = 0770

Assim se maria e jose pertencerem ao grupo financeiro, eles poderão além do dono da pasta acessar e criar arquivos e diretórios dentro do compartilhamento.

Para configurar as permissões locais nos diretórios:

$ sudo chgrp financeiro /departamentos/financeiro -R

$ sudo chmod 770 /departamentos/financeiro -R

Está feito. Logicamente se trata de um exemplo. Cada ambiente possui suas necessidades e o Administador deve ser responsável pelo ambiente de sua rede a que é responsável.

Espero ter sido útil neste artigo.

Aumentando a segurança do Servidor SSH

By Geowany, 5 de junho de 2010

Pra começo de tudo, aposto que a maioria sabe aquelas regrinhas básicas tipo: mudar a porta do servidor, não permitir o root logar.

Mas se não souber, basta editar algumas coisinhas no arquivo /etc/ssh/sshd_config:

Mudar a porta:
Procure pela linha Port, a alteração é bem sugestiva.
Assim evitamos boa parte dos engraçadinhos que ficam futricando a grande rede com essas ferramentas criadas para ser "faca de dois gumes".

Não deixar o root logar:
Altere a linha PermitRootLogin yes para PermitRootLogin no
Assim evitamos de o usuário usar algum exploit por exemplo que já tomaria poder de "Godmaster" no sistema, colocando uma barreira que é ter descobrir o nome de um usuário válido no sistema. Por isso sou contra quem fala mal do sudo.

Segue abaixo umas regrinhas para você colocar no seu script de firewall:

PORTSSH="4578"
iptables -A INPUT -p tcp –dport 22 -j LOG
iptables -A INPUT -p tcp –dport 22 -j DROP
iptables -A INPUT -p tcp –dport $PORTSSH -m state –state NEW -m recent –set –name SSH
iptables -A INPUT -p tcp –dport $PORTSSH -m state –state NEW -m recent –update –seconds 60 –hitcount 4 –rttl –name SSH -j DROP
iptables -A INPUT -p tcp –dport $PORTSSH -j ACCEPT

Na primeira linha, altere o valor 4578 que usei como exemplo para o número da sua porta ssh.
A segunda é pra logar informações da "criança" que tentar abrir conexão direto na porta 22 que é a padrão do ssh.
A terceira e quarta é pra evitar um ataque de força bruta.
E a quinta é pra abrir a verdadeira porta do servidor ssh.
E o root você já sabe, é o usuário mais poderoso do seu sistema e que ninguém além de você deve tocar nele.

Pessoal, o negócio é o seguinte, a finalidade desse minúsculo artigo é apenas uma base para a bíblia do iptables. Mas garanto que melhora muito pra quem conecta direto na internet ao invés de usar um NAT. Não é uma solução definitiva mas não deixa seu sistema tão vulnerável. Comentem. Tanto quem gostar do tópico e quem não gostar… Afinal estamos aqui para ensinar e aprender também!

OfficeFolders theme by Themocracy