segunda-feira, 25 de junho de 2012

Linux - Criar um servidor DHCP

Eae pessoal!!

Como montar então um servidor DHCP?!

Vamos considerar que você está utilizando um CentOs OK?

Então vamos lá!

#Comando para instalar o serviço DHCP
yum install dhcp

#Para ele iniciar automático quando ligar seu servidor
chkconfig dhcpd on

#Arquivo de configuração:
/etc/dhcpd.conf

#Exemplo de configuração:

ddns-update-style none;
default-lease-time 86400; #Tempo em segundos que o servidor levará para renovar o "aluguel" do IP.
max-lease-time 604800; #Tempo máximo que uma estação pode usar o IP.
authoritative;


subnet 10.1.1.0 netmask 255.0.0.0 { #Rede que será utilizada.
range 10.1.1.50 10.1.1.200; #Range de IP que será disponibilizado para as maquinas.
option routers 10.1.1.1; #Gateway da rede
option domain-name-servers 201.10.1.12,8.8.8.8; #Dns que vai ser entregue a quem solicitar um IP
option broadcast-address 10.1.1.255 #Endereço de Broadcast
}

#Se quisermos reserver um endereço IP para uma maquina especifica, podemos adicionar a configuração abaixo usando o MAC da placa de rede da maquina.

#Isto você deve adicionar antes de fechar a chave no comando anterior.

host secretaria {
hardware ethernet 00:C3:B0:32:BC:24;
fixed-address 10.1.1.55;
}

#Se no seu caso o servidor onde está instalado o serviço de DHCP tem mais de uma placa de rede, é necessário também adicionar la no inicio do comando (abaixo de DDNS-UPDATE-STYLE) a linha INTERFACES="Eth0" ou a sua placa (Eth1), (Eth2), por onde vem o tráfego a qual deve ser entregue um IP.

#Lembre-se que depois de alterar qualquer configuração no dhcp.conf você deve dar um "Reload" ou "Restart" no serviço do DHCP.

Isso aí pessoal, como vimos não tem nenhum mistério para fazer um server de DHCP.

Abraço a todos.

quarta-feira, 13 de junho de 2012

Linux - Compartilhando internet

O básico do Iptables para compartilhar uma internet com a rede local.


Liberando acesso a internet que vem pela "eth0" para todas as outras interfaces de rede.

#Carrega o módulo que oferece suporte à roteamento de pacotes via NAT
modprobe iptable_nat

#Ativa o módulo (ip_forward) que encaminha os pacotes, utilizado pelo módulo "iptable_nat"
echo 1 > /proc/sys/net/ipv4/ip_forward

#Regra de roteamento que diz ao servidor para direcionar todos os pacotes vindos da faixa de IP da rede interna para a placa da internet.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Então o comando todo ficaria assim:

modprobe iptable_nat 
echo 1 > /proc/sys/net/ipv4/ip_forward pelo "iptable_nat"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Protegendo o servidor contra ataques da internet

#Faz com que o servidor deixe de responder a pings
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

#Protege contra Spoofing (técnica de ataque) e pacotes inválidos
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP

#Autoriza pacotes da interface loopback
iptables -A INPUT -i lo -j ACCEPT

#Autoriza pacotes da interface rede local. (Altere o eth0 para a interface correta.)
iptables -A INPUT -i eth0 -j ACCEPT

#Libera acesso a porta 22, comumente usada para SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

#Bloqueia tentativas de conexão vindas da internet
iptables -A INPUT -p tcp --syn -j DROP

Então o comando ficaria assim:

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP


Para ir dando uma dismitificada na coisa:

iptables -A INPUT -i eth0 -j ACCEPT

-A INPUT (Pacotes de Entrada)
-i eth0 (Interface Eth0)
-j ACCEPT (Aceita)

Ou seja: Aceitar os pacotes de entrada que vierem pela Eth0.

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

-A INPUT (Pacotes de Entrada)
-p tcp (Protocolo tcp)
--dport 22 (Porta de destino 22)
-j ACCEPT (Aceita)

Ou seja: Aceitar os pacotes de entrada que estiverem com destino à porta TCP número 22.

Então o que temos até o momento são os comandos abaixo:

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

Agora como faremos para quando eu iniciar meu linux ele automaticamente rodar estes comandos de firewall?

Vamos criar um script para iniciar, parar ou reiniciar as nossas regras de firewall.

Em /etc/init.d crie um arquivo de nome "firewall".

Abaixo script padrão para ser usado:

#!/bin/bash

#Interface local
RedeLocal = "eth1"

#Interface Internet
RedeInternet = "eth0"

iniciar() {
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $RedeInternet -j MASQUERADE
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $RedeLocal -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
}

parar () {
iptables -F
iptables -F -t nat
}

case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Utilizar Start | Stop | Restart"
esac

Agora temos que transformar este script em um executável.

#Comando para transformar um arquivo em um executável
chmod +x /etc/init.d/firewall

#Feito isso, já é possível utilizar os comandos Start, Stop e Restart de nosso script assim:
/etc/init.d/firewall restart

#Para que o script seja iniciado automaticamente com o linux, faça o seguinte:

Edite o arquivo /etc/rc.d/rc.local

E adicione a linha:

/etc/init.d/firewall start



terça-feira, 5 de junho de 2012

Linux - Gerenciar Processos

Alguns comandos que podem auxiliar para gerenciar os processos no linux:

#Mostra uma lista com os processos iniciados por todos usuários:
ps aux


#Se a lista for muito grande, você pode combinar o comando com o "|more", assim você pode ir passando por todos os processos como se fosse uma pagina.
ps aux |more


#Você verá muitos processos que talvez não saiba qual a finalidade, você pode usar o comando abaixo para descobrir a função do processo.
whatis apache2


Resultado: apache2 (8)          - Apache Hypertext Transfer Protocol Server


#O comando abaixo mostra a lista de processos de forma um pouco mais organizada, os processos serão agrupados facilitando a visualização.
ps axjf


#Se estiver procurando um processo específico, você pode usar o "|grep".
ps axjf |grep smb


#Podemos usar também o comando abaixo para ver os processos e os seus ID's.
pstree -p


#Se quisermos ver os processos rodando "on-line", temos o comando abaixo. É um gerenciados de processos em modo texto.
top


Usando o top, temos algumas variáveis:


Tecla "g" #Coloca nas primeiras posições os processos que estão consumindo maior processamento.
Tecla "k" #Para finalizar um processo, digite "k" e depois o PID.


#Para finalizar um processo da forma "correta" você usa o comando abaixo + o PID que você pegou pelo "ps axjf" ou "ps aux"
kill 4022


#Para finalizar forçando, normalmente quando está travado o processo.
kill -9 4022


#Pode ser utilizado também o comando killall, assim você pode especificar o nome do serviço do linux que deseja "matar".
killall smb


Abraços!

Linux - Gerenciando grupos e permissões

Gerenciamento de grupos e permissões:

#Adiciona grupo "Financeiro":
groupadd financeiro


#Adiciona usuários ao grupo "Financeiro":
gpasswd -a daniel financeiro


#Se você estiver com uma versão linux Red Hat ou derivada como o CentOs, para adicionar um usuário em um grupo você deve usar o comando:
usermode -a -G daniel financeiro


#Para remover um usuário de um grupo:
gpasswd -d daniel fincanceiro


Agora precisamos saber  como definir as permissões de acesso.


Comando "chmod" ajustas as permissões dos arquivos e diretórios e o comando "chown" define qual usuário e grupo será dono de um arquivo ou diretório.


Para trabalhar com as permissões precisamos conhecer os três atributos principais, são eles:


Leitura #Representado pela letra "r"
Gravação #Representado pela letra "w"
Execução(Se tratando de arquivos) #Representado pela letra "x"
Leitura(Se tratando de diretórios) #Representado pela letra "x"


Outra coisa, as permissões são separadas em "usuário" , "grupo" e "outros".


Vamos analisar agora um diretório que no caso foi criado pelo usuário root:


#Ver permissões de um diretório ou arquivo
ls -lh


drwxr-xr-x 2 root root 4096 Jun 05 11:59 dados


Analisando a linha acima:


d = Indica que se trata de um diretório
Primeiro rwx = Permissão de acesso para o dono do diretório, nesse caso o dono tem acesso completo.
Segundo r-x = Permissão de acesso para o grupo do diretório, nesse caso o grupo pode listar e ler os arquivos do diretório.
Terceiro r-x = Permissão ed acesso para "outros", nesse caso os outros podem listar e ler arquivos do diretório.


O "root" "root" na linha são os donos, "usuário" e "grupo". Quando você cria um usuário no linux, automaticamente é criado um grupo com o mesmo nome do usuário. Por isso nesse caso temos como grupo o "root".


Vamos configurar agora para o grupo financeiro poder alterar os arquivos deste diretório. Primeiro vamos transferir a posse do grupo "root" para o grupo "financeiro".


#Define o grupo como dono do diretório
chown -R root:financeiro /dados


O -R faz com que, se existem arquivos e/ou subdiretórios dentro desse diretório, o grupo desses também sejam alterados.


Se você der um "ls -lh"  verá que a linha agora está assim:


drwxr-xr-x 2 root financeiro 4096 Jun 05 12:15 dados


#Agora vamos dar a permissão para o grupo ler e escrever no diretório /dados
chmod -R g+rw /dados


Para entender, o -R é a opção para adicionar essa permissão a todos arquivos e subdiretórios dentro do /dados. O "g" indica que a permissão será para o grupo que é dono do /dados.  O "+" indica que está adicionando uma permissão. O "rw"indica que será permissão de leitura e escrita.


#Abaixo segue o significado dos parâmetros:


-R #Recursivo, usado para alterar a permissão de todos arquivos e diretórios dentro do diretório informado.
u  #Informa que a permissão será para o usuário que é dono do diretório
g  #Informa que a permissão será para o grupo que é dono do diretório
o  #Informa que a permissão será para os outros usuários.
-  #Remove a permissão
+ #Adiciona a permissão
r  #Permissão de leitura
w  #Permissão de escrita
x  #Para arquivos indica permissão de execução, para diretório permissão de leitura


É possível utilizar números ao invés dos parâmetros "rwx". Ficaria assim:


4 #Leitura
2 #Gravação
1 #Execução/Listagem
0 #Acesso negado


Então você soma os número para indicar a permissão indicada, por exemplo 7 seria a permissão máxima, pois é a soma de Leitura + Gravação + Execução/Listagem.


#Adicionado permissão usando números
chmod 765 /dados


No caso assima, o usuário dono do /dados teria permissão total, o grupo permissão de Leitura + Gravação e os outros de Leitura + Execução/Listagem.


É isso aí pessoal, aí está o basico para trabalhar com grupo e permissões no linux.


Abraço

segunda-feira, 4 de junho de 2012

Linux - Gerenciando usuários

Abaixo alguns comandos básicos para o gerenciamento de usuários no linux:

# Adiciona usuário "vinicius"
adduser vinicius

#Altera a senha do usuário "vinicius"
passwd vinicius

O usuário root pode alterar a senha de qualquer usuário sem precisar saber a senha antiga, já se o próprio usuário desejar alterar a sua senha ele deverá saber a ultima senha que estava utilizando.

Os usuários são cadastrados através do arquivo "/etc/passwd". Nesse arquivo aparece também o diretório home e o shel usado pelo usuário.

Para remover um usuário usamos o "deluser"

#Remove usuário
deluser vinicius

Por padrão ao remover um usuário o linux mantem o seu diretório home. Se quiser remove-lo ao remover o usuário faça assim:

#Remove e deleta diretório home
deluser vinicius --remove-home

Você pode criar um backup do diretório do usuário ao remove-lo:

#Faz um backup dos arquivos do usuário, remove o usuário e deleta diretório home
deluser vinicius --remove-home --backup

Será criado no diretório onde você executar este comando um arquivo "vinicius.tar.bz2".

Se quisermos apenas bloquear/desbloquear o acesso do usuário ao linux:

#Bloqueia acesso do usuário
passwd -l vinicius


#Libera o acesso do usuário
passwd -u vinicius