quinta-feira, 17 de dezembro de 2009

Segurança e Ajuste no Servidor

Inicialmente para preparar um servidor é necessário avaliar o tipo de serviço que o mesmo irá oferecer. Para isso se o serviço for para segurança, rede e sistemas, todos devem ser avaliados conforme a necessidade.
Como atualmente em nosso mercado toda informação vale ouro, é necessário saber-mos tratar essas informações de forma organizada e segura. Algumas normas como a NBR ISO/IEC 17799:2001 são de boas práticas para se seguir em um plano de um servidor. Este assunto é muito grande e tem várias formas de traduzir a norma NBR em conceitos técnicos de aplicação, no início vou explicar pequenos ajustes de detalhes que irá melhorass a segurança de seu servidor e de sua informação.

Usando ACL - Access Control List

O ACL permite manter as permições do usuário e grupo. Mesmo que um usuário pertencente ao grupo crie um arquivo, o mesmo arquivo fica com o grupo deste mesmo usuário.

Para poder utilizar o ACL é necessário que a partição tenha sido montado com acl eemplo:

mariouzae@mgusilva:# mount -t ext3 -o acl /dispositivo /local

Despois de montar a partição com o ACL você já pode começar a configurar as permições, exemplo:

setfacl -m  

Rules () must be specified in the following formats. Multiple rules can be specified in the same command if they are separated by commas.

u::

Sets the access ACL for a user. The user name or UID may be specified. The user may be any valid user on the system.

g::

Sets the access ACL for a group. The group name or GID may be specified. The group may be any valid group on the system.

m:

Sets the effective rights mask. The mask is the union of all permissions of the owning group and all of the user and group entries.

o:

Sets the access ACL for users other than the ones in the group for the file.

White space is ignored. Permissions () must be a combination of the characters r, w, and x for read, write, and execute.

If a file or directory already has an ACL, and the setfacl command is used, the additional rules are added to the existing ACL or the existing rule is modified.

For example, to give read and write permissions to user andrius:

setfacl -m u:andrius:rw /project/somefile

To remove all the permissions for a user, group, or others, use the -x option and do not specify any permissions:

setfacl -x  

For example, to remove all permissions from the user with UID 500:

setfacl -x u:500 /project/somefile



Mario Uzae
e-mail: mariouzae@gmail.com

sexta-feira, 30 de outubro de 2009

# Este comando lota o partição.

for ((i=1;i<=200000;i++)); do touch $i && echo mariouzae pirate >> $i; done


Mario Uzae
E-mail: mariouzae@gmail.com

domingo, 2 de agosto de 2009

Formatando o terminal BASH

$ PS1=`[\u@\h (\t):\w] \$ `

\u Username do usuário.
\h Nome curto de hostname.
\t Hora atual do sistema formato 24 horas.
\W Caminho completo do diretório.


E-mail: mariouzae@gmail.com
Mario Uzae

segunda-feira, 6 de julho de 2009

Comando Kill

Este comando usa os paramêtros para fazer um reload do aplicativo atráves do pid.

# kill -HUP $(cat /var/run/httpd.pid)

exemplo utilizando o httpd.pid.


Mario Uzae
E-mail: mariouzae@gmail.com

sexta-feira, 3 de julho de 2009

Fstab - Iniciando autmaticamente a partição

Na postagem anterior eu criei uma partição de 200M, agora desejo que esta partição fica montada automaticamente quando eu iniciar meu sistema; É para este tipo de necessidade que temos o fstab, que através do arquivo de configuração pode ser editado para fazer com que esta partição monte automaticamente.
Geralmente o arquivo de configuração fica no /etc/fstab

quinta-feira, 2 de julho de 2009

Criando Partições disponíveis do Zero

Se você estiver precisando de uma nova partição parao uso de algum programa, ou até mesmo para utilizar desta partição como backup; Você pode utiliza o comando DD veja:

# dd if=/dev/zero of=/home/mario bs=1M count=200
Bem, no comando acima o comando dd pegou um espaço livre no HD e criou um dispositivo chamado mario com o tamanho de 200M. Ok, o dispositivo já foi criado, agora para o sistema reconhecer este dispositivo vamos ter que formata-lo como um sistema de arquivo, exemplo ext3.

# mke2fs -j -m10 /home/mario
Com este comando eu criei o sistema de arquivo em /home/mario. Para ter mais informções sobre os paramêtros veja o manual do sistema.
Agora temos que montar nossa partição criada, Veja:

# mount -o loop /home/mario /mnt/

Pronto, a nova partição já esta criada e disponível.


Mario Uzae
E-mail: mariouzae@gmail.com

segunda-feira, 29 de junho de 2009

Visão Geral da Árvore de Diretórios

Inicialmente para falar da árvore de diretórios, é importânte saber que existe um padrão para a estrutura de diretórios no Linux, cujo o nome é (FHS - Filesystem Hierarchy Standart), mas nem todas as distribuições seguem a risca as especificações da FHS.
A FHS organiza a estrutura do sistema por meio de duas categorias principais:

  • "Compartilháveis" ou "Não Compartilháveis".
A separação entre dados compartilháveis e não compartilháveis é de utilizar em um ambiente de rede, onde o compartilhámento de dados visa a redução de dados em disco.

  • "Variáveis" ou "Estáticos".
A ideia de diretórios estáticos ou não é para facilitar a integração e funcionamento do sistema, além de aumentar a segurança dos dados, permitindo proteger diretórios estáticos com permições mais restritas.

Descrições mais detelhadas dos diretórios.

/bin

É nesse diretório que são armazenados os binários do sistema, não pode estar em uma partição separada. Neste diretório não pode conter sub-diretórios; Padrão FHS.

/boot

Nesse diretórios estão contidos os arquivos de boot, componentes essenciais para a inicialização do Linux, além do kernel. Este diretório ppode ser montado em outras partições sem problemas.

/dev

Os dipositivos do sistema ficam armazanados no /dev. Este diretório não pode ser montado em outras partições.

/







TAR

O Tar é a ferramenta de becape mais difundida no mundo Linux. Ele é capaz de arquivar vários arquivos em um só.

Para compactar os dois arquivos:
prog01.c prog02.c

basta:
tar -cvzf programas.tar.gz prog01.txt prog02.txt .

Para descompactar esses dois arquivos:
tar -xzvf programas.tar.gz

Mario Uzae
E-mail: mariouzae@gmail.com

Comando Periódicos - cron

Os administradores de redes Linux periodicamente precisão executar determinado programas; Para isso existe o agendamento cron que pode programar a execução de tais programas em determinada hora. Por exemplo o administrador quer limpar os diretórios que contenham arquivos temporários antigos (/tmp e /var/tmp), evitando assim que o disco rígido fique cheio; ele pode criar um script que faça esta limpeza através do cron, o administrador determina em que data, hora e minuto deseja que seja executado este script. O cron é um programa que roda em background (daemon) ou seja, o init se encarrega de iniciar este serviço que pode ser configurado diretamente no arquivo /etc/crontab.

Entendendo o arquivo /etc/crontab

Esse é o arquivo principal do cron, Somente o usuários root pode edita-lo. O cron possui entradas de agendamento padrão da seguinte maneira:

m h d M s usuário comando

Significado dos campos:
m Minuto (0 a 60)
h Hora (0 a 23)
d Dia do mês (1 a 31)
M Mês do ano (1 a 12)
s Dia da semana (0 a 7)

Exemplo, no caso desmostrado abaixo vou pedir que o cron execute uma tarefa de apagar todos os arquivos que estão no diretório /tmp em determinado horário:

Primeiramente vou editar o arquivo /etc/crontab, logo após vou me deparar com o layout padrão. Não se esqueça que as datas e horas em de ser compativéis ao seu sistema atual.
m h dom mon dow user command
55 20 29 6 1 root rm /tmp/*

saia salvando do arquivo crontab e depois da hora em que você especificou para deletar os arquivos, verifique se o agendamento foi executado com sucesso.
A partir daí só depende de sua necessidade e criatividade para criar agendamentos úteis como uma rotina de becape ou um agendamento para desligar o computaodor. (:>

Mario Uzae
E-mail: mariouzae@gmail.com

Syslog - Sistema de Log do Linux

A verificação de logs é muito importante para os administradores de sistema *nix, pois nos arquivos de logs é que vemos os avisos, mensagens de erro, e outros alertas. Para que seja possível verificar todos estes alertas o linux armazena estas informações em um arquivo chamado syslog, que geralmente fica contido no diretório /var/log/syslog. O programa syslog pode ser configurado para arquivar diferentes mensagens no arquivo de acordo com o nível de importância ou origem. Geralmente estas mensagens com um nível de importância maior se refere as mensagens mais visualizadas ou que realmente interessa ao administrador. Você pode configurar o syslog no diretório /etc/syslog.

Mario Uzae
E-mail: mariouzae@gmail.com

Acesso a partir de terminais

Os acessos a partir de console, o seja, sem ambiente gráfico, é disponibilizado pelo getty que pode oferecer até 64 instâncias de console. O init inicia uma instância distinta do getty para cada terminal, no qual o acesso é permitido, a partir daí o getty lê o nome de usuário e senha digitados que roda o programa de login que verifica se os nomes e senhas estão corretos, logo após a verificação do programa de login, este mesmo programa inicia o shel do usuário que pode ser o bash, sh, entre outros. O Kernel não tem conhecimentos de acessos de usuários, pois tudo é controlado pelos programas do sistema.

Mario Uzae
E-mail: mariouzae@gmail.com

quinta-feira, 25 de junho de 2009

Entendendo o Kernel - Ínicio

Entendendo o Kernel

O Kernel é o núcleo do sistema que conversa diretamento com o hardware.
Além de trocar mensagens diretamento com o hardware ele("kernel") é responsável
por todo o gerenciamento dos recursos do sistema operacional, inclusive de definir as formas
de operações com todos o periféricos, gerenciamento de memória, interrupções e outros.

Suporte a Hardware no Linux

Para que um determinado software funcione corretamente, é necessário que o Kernel possua suporte ao mesmo.
O Kernel do linux pode suportar dispositivos de hardware das seguintes maneiras

-> Kernel (built-in)
: Desta maneira o código que disponibiliza o funcionamento do hardware é implementado diretamente ao código no Kernel.

-> Kernel (modular): O Kernel oferece suporte aos dispositivos de hardware através
de módulos, que podem ser ligado e desligado de acordo com sua necessidade de uso do tal
dispositivo. O Kernel de forma modular fica mais enxuto, ou seja, inicia somente o que você necessita deixando o sistema como um todo mais rápido e de até economia de energia.

Versões númericas do Kernel

Para verificar a versão atual do Kernel no sistema, é usado o comando uname -r para exibir as númerações da versão.
Cada número tem um significado que irá ser tratado com mais detales abaixo:

user@debian5:~$ uname -r
2.6.26-1-686
A B C D

Onde:
A – VERSION: Número principal (raramente muda).
B – PATCH LEVEL: Indica mudanças importantes no funcionamento do kernel do Linux. Se ímpar, indica um kernel experimental, se par, então é um kernel considerado estável (”de produção).
C – SUBLEVEL: Sua evolução indica o suporte a novos dispositivos, bem como correção de bugs e pequenos melhoramentos no sistema.
D – EXTRA VERSION: Usado quando desejamos diferenciar duas compilações de um kernel de mesma versão, afim de construírem de módulos separados.

Outras opções que podem ser utilizadas com o comando uname:

-a (lista todas as informações)
-s (lista o nome do kernel)
-n (lista o hostname)
-v (versão do kernel)
-m (lista a arquitetura do cpu)
-p (tipo do cpu)
-i (plataforma de hardware)
-o (sistema operacional)


Diretório dos módulos do sistema

Os módulos já compilados no Kernel são armazenados no diretório /lib/modules/
Neste diretório contém os módulos que estão organizados sob uma estrutura comum, Alguns arquivos e diretórios seguem a seguir:

->modules.alias - Possui uma lista dos módulos em relação aos dispositivos de hardware.
->modules.dep - Possui uma árvore de dependencias dos módulos.
->modules.pcimap - Armazena informações sobre todos os dispositivos PCI.
->modules.symbols - Possui a lista dos símbolos internos dos módulos.
->modules.usbmap - Armazena o mapa de dispositivos USB conhecidos.
Kernel/ - Contém todos os módulos compilado no sistema.
Kernel/Drivers/ - Contém todos os módulos que carregam os módulos de hardware.

Listando Módulos Carregados

lsmod - Exibe os módulos carregados pelo sistema.

Dica: Para ver o tamanho que o módulo ocupa na memória execute $ cat /proc/modules

Alguns módulos depende do outros módulos para funcionar, para ver se certo módulo possui depêndencias execute, $ lsmod |grep cdrom

Obter informações sobre o módulo
$ modinfo cdrom
ou para mostrar somente o local que está o módulo:
$ modeinfo -F filename cdrom

Descarregando Módulos
rmmod ide_cd
rmmod cdrom

Carregando Módulos
modprobe -v ntfs

Listando e pesquisando módulos disponíveis

modprobe -l - lista todos os módulos disponíveis
modprobe -l "*tcp*" - neste caso lista todos os módulos com o nome tcp

Mario Uzae
E-mail: mariouzae@gmail.com

segunda-feira, 15 de junho de 2009

Adicionando Usuários em Massa

Este script pega o arquivo "master.passwd.txt" que contém o arquivo passwd separando o nome do usuário e a senha criptografados e separados por vírgulas. Depois separa estas linhas e adiciona os usuários.

#/bin/bash

IFS='
'
for LISTA in `cat master.passwd.txt | cut -d , -f 1`
do
senhausuario=`cat master.passwd.txt | grep $LISTA | cut -d , -f 2`
listagem=`echo $senhausuario | egrep '[ ]'`
/bin/groupadd grupo
/usr/sbin/useradd $LISTA -s /bin/bash -d /home/$LISTA -p $senhausuario -g grupo
/bin/mkdir -p /home/$LISTA

done

exit 0

Mario Uzae
e-mail: mariouzae@gmail.com

sexta-feira, 20 de fevereiro de 2009

Linux - O Comando BadBlocks

BadBlocks

O comando badblocks no linux pode ser utilizado para pesquisar qualquer disco ou partição na detecção de blocos defeituosos (inclusive em disquete, CD/DVD e HD). Ele não formata o disco, portanto pode ser utilizado para sistemas de arquivos já existentes. Eu fiz alguns teste com um disquete e depois com um DVD, primeiro peguei um disquete que estava funcionando corretamente e efetuei o comando badblocks, realmente ele não achou nenhum bloco danificado, após ver que o disquete não estava danificado fiz um pequeno risco de leve e o badblocks me apresentou diversos erros nos blocos do disquete.

Após os testes com o disquete peguei um DVD que eu tinha queimado um distribuição linux o “Fedora10”, eu ja sabia que esta media de DVD já estava danificada pois o Fedora executa uma verificação do disco antes de começar a instalação; com o mesmo procedimento anterior eu efetuei o comando badblocks sobre a media de DVD, e ele novamente foi preciso, pois mostrou diversos erros no disco. Você também pode utilizar o badblock para verificar o seu HD, veja alguns exemplos:

# Para a verificação em Disquete
$ badblock /dev/fd0

# Para a verificação em HD SATA
$ badblock /dev/sda

você pode utilizar para todos os dispositivos de disco.

Escrito por:
Mario Uzae
E-mail: mariouzae@gmail.com

Linux - Richard Stallmam

Join us now and share the software;
You'll be free, hackers, you'll be free.
x2

Hoarders may get piles of money,
That is true, hackers, that is true.
But they cannot help their neighbors;
That's not good, hackers, that's not good.

When we have enough free software
At our call, hackers, at our call,
We'll throw out those dirty licenses
Ever more, hackers, ever more.

Join us now and share the software;
You'll be free, hackers, you'll be free.
x2