Sunday, July 15, 2007

Permissões de directorias e ficheiros em Linux

Hugo Cisneiros, hugo@devin.com.br
Última atualização em 06/02/2003

No Linux, como em outros sitemas Unix, cada arquivo tem uma permissão. As permissões são atributos dos arquivos que especificarão se ele pode ser lido, executado ou escrito. Estas permissões que vão definir o que um usuário pode fazer. Para saber se um programa é executável ou não, execute um 'ls -l' e veja no lado esquerdo se o arquivo tem X nos seus argumentos, como no exemplo abaixo:

drwxr-xr-x   2 root     root         1024 Dec 23 15:22 bin
drwxr-xr-x 2 root root 1024 Dec 31 05:48 boot
drwxr-xr-x 2 root root 1024 Dec 6 15:51 cdrom
drwxr-xr-x 3 root root 8192 Mar 11 10:17 dev
drwxrwxr-x 2 root root 1024 Feb 27 13:52 dosa
dr-xr-xr-x 11 root root 2048 Mar 11 10:19 etc
drwxr-xr-x 11 root root 2048 Feb 23 19:08 home
drwxr-xr-x 3 root root 1024 Feb 23 19:13 lib
drwxr-xr-x 2 root root 12288 Nov 2 11:25 lost+found
-rwxr--r-- 1 root root 57 Mar 10 03:44 make-backup
-rw-rw-r-- 1 killer users 2342 Mar 10 03:12 teste.txt
-rw-rw-rw- 1 hugo visits 23412 Mar 09 22:22 teste2.doc

No exemplo acima todos os arquivos tem como dono root e como grupo também root, com exceção do 'teste.txt' que o dono é 'killer' e o grupo é 'users', e também 'teste2.doc', no qual 'hugo' é o dono e o grupo 'visits' também é dono. Como você pode ver do lado esquerdo de cada arquivo/diretório existe um série de letras r, w, x ou d! Vamos ver o que representa cada uma delas:

drwxrwxrwx
0111222333

No caso acima, a primeira coluna significa (numero 0) se o nome listado é um diretório ou não, caso não seja um diretório ele será exibido da seguinte maneira:

-rwxr--r--   1 root     root           57 Mar 10 03:44 make-backup
\--------> Não contém a letra 'd', não é diretório, e sim arquivo

O exemplo abaixo mostra o que seria um diretório:

drwxr--r--   1 root     root            1 Mar 10 01:12 bin
\----------> Contém a letra 'd' na primeira coluna, é um diretório

Também há casos em que no lugar do 'd', aparecem outras letras que indicam outros tipos de arquivos. A letra 'l' significa que é um link simbólico, as letras 'c' e 'b' correspondem à dispositivos (/dev). Veja alguns exemplos abaixo:

crw-rw----   1 hugo     audio     14,   4 Dec  2  1999 audio
brw-rw---- 2 hugo cdrom 22, 64 May 5 1998 hdd
lrwxrwxrwx 1 root root 8 Oct 17 22:53 cdrom -> /dev/hdd

Continuando, na segunda coluna (números 1 de acordo com o exemplo mais acima) temos as definições para o dono do arquivo, como mostra o exemplo:

-rwxr--r--   1 killer   users        1231 Mar 09 12:12 teste.txt
||\--------> O dono do arquivo (killer) pode executar o arquivo, x=executable!
|\---------> O dono do arquivo (killer) pode gravar no arquivo, w=writable!
\----------> O dono do arquivo (killer) pode ler o arquivo, r=readable!

Seguindo, na terceira coluna (números 2 de acordo com o exemplo lá em cima) temos as definições para o grupo que é dono do arquivo, como mostra o exemplo:

-r--rwxr--   1 fernando visits        212 Mar 01 12:42 exemplo.doc
||\-----> O grupo dono do arquivo (visits) pode executar o arquivo!
|\------> O grupo dono do arquivo (visits) pode gravar no arquivo!
\-------> O grupo dono do arquivo (visits) pode ler o arquivo!

Finalmente, temos a quarta coluna (composto pelos números 3), essa coluna se refere as permissões para todos os outros usuários do sistema, sem ser os donos e grupos-donos dos mesmos, exemplo:

-r--r--rwx   1 fernando visits       1231 Mar 03 12:42 exemplo2.doc
||\--> Todos os usuários (exceto fernando e usuários do grupo visits)
|| tem permissão para acessar o arquivo!
|\---> Todos os usuários (exceto fernando e usuários do grupo visits)
| tem permissão para gravar no arquivo!
\----> Todos os usuários (exceto fernando e usuários do grupo visits)
tem permissão para ler o arquivo!

Quando nos referimos a diretório invés de arquivos, o FLAG x (executável) diz se o diretório é ou não acessível, já que não podemos "EXECUTAR" diretórios... Exemplo:

drwxr--r-- 1 root       root         2134 Mar 01 12:54 exemplo3
||||| \----> Todos os usuários podem ler o interior do diretório, mas não
||||| podem usar o comando 'cd' para entrar nele, pois não existe
||||| o FLAG 'x' para a quarta coluna!
||||\-------> Usuários do grupo 'root' podem ler o interior do diretório,
|||| mas também não podem usar 'cd' para entrar no diretório!
|||\--------> O usuário 'root' pode usar 'cd' para entrar no diretório!
||\---------> O usuário 'root' pode gravar arquivos nesse diretório!
|\----------> O usuário 'root' pode ler o interior desse diretório!
\-----------> Indica que o nome listado é um diretório!

O comando chmod pode ser usado para mudar os FLAGS 'rwx' dos arquivos e/ou diretórios, a sintaxe básica do comando é:

chmod [ugoa]{-+}[rwx] nome_do_arquivo_ou_diretório

Então vamos à um exemplo. Se eu quero mudar a permissão para o dono do arquivo (u=user) poder ler e gravar (rw) no 'arquivo1.txt', faço o seguinte:

$ chmod u+rw arquivo1.txt

Caso você queira desfazer o comando, você faria: "chmod u-rw arquivo1.txt". Como se vê, o + ou - define se os FLAGS serão ativados ou desativados! Outros exemplos:

$ chmod a+r arquivo2.txt

(Todos usuários (a=all) podem ler o 'arquivo2.txt')>

$ chmod o+w arquivo3.txt

(Outros usuários (o=others) sem ser o dono e o grupo dono do arquivo, podem gravar no 'arquivo3.txt')

$ chmod g+x netscape

(O grupo-dono do arquivo (g=group) pode executar o arquivo 'netscape')

O comando chmod pode também ser usado com números, em vez dos flags. Este método é chamado de octal, veja o exemplo abaixo:

$ chmod 664 arquivo.txt

O que quer dizer cada um desses números? Veja abaixo:

Número Significado
0 Nenhuma permissão
1 Permissão para executar
2 Permissão para gravar
3 Permissão para gravar e executar
4 Permissão para ler
5 Permissão para ler e executar
6 Permissão para ler e gravar
7 Permissão para ler, gravar e executar

No exemplo o comando informou que o 'arquivo.txt' pode ser lido e gravado pelo seu dono (numero 6 na primeira coluna), informou que pode também ser lido e gravado pelos usuários que compõem o grupo-dono (numero 6 na segunda coluna), e informou que pode ser lido por todos os outros usuários do sistema (numero 4 na ultima coluna).

O comando chown é simples e pode ser usado para mudar o dono e o grupo dono de um arquivo/diretório. E é usado da seguinte maneira:

$ chown usuario.grupo arquivo_ou_diretorio

Como exemplo, vamos definir que um arquivo 'teste4.txt' terá como dono 'killer' e como grupo 'users':

$ chown killer.users teste4.txt

Outros exemplos:

$ chown mrdvs.visits teste5.txt
$ chown hugo.users teste6.txt
Hugo Cisneiros, hugo_arroba_devin_ponto_com_ponto_br

Tirado de: http://www.devin.com.br/eitch/permissoes/

Gestão de Utilizadores (Linux)

Hugo Cisneiros, hugo_arroba_devin_ponto_com_ponto_br
Última atualização em 12/02/2003

Como você já deve saber, o Linux é um sistema multi-usuário, então, é claro que não só pode existir um usuário usando o sistema. Uma primeira coisa que possamos dizer é que o Linux não pode de alguma maneira ser usada sem estar sendo um usuário. O usuário 'root' é o administrador do sistema, e é ele quem você vai usar primeiro para criar outros usuários depois (a não ser que você tenha criado um usuário comum durante a instalação do seu Linux).

Antes de mais nada, fique sabendo que o root é um usuário especial, ele pode fazer TUDO em seu sistema, não importa o que acontecer, ele faz. Ao contrário dos usuários comuns, que têm restrições. Se você já instalou algum Linux, você verá que a primeira coisa que você irá fazer antes de usar o sistema é se logar como root, ou seja, preencher aquele campo login: com o usuário root. Mas aí por alguma razão você quer mudar de usuário, ou criar outro, ou qualquer coisa do tipo, então você se pergunta: "Como?"

Há um comando específico para isto. Este comando é o "adduser" ou "useradd". Dependendo da distribuição, o comando "adduser" vai ser apenas um comando igual ao "useradd", ou então um script interativo que irá lhe fazendo perguntas, você irá preenchendo, e então o script criará um usuário no sistema para você.

No caso do "adduser" ser um comando mesmo, você poderá utilizar assim:

adduser hugo
passwd hugo

Isso respectivamente irá criar um usuário padrão chamado hugo, e depois com o comando "passwd", você definirá uma senha para este usuário. Você pode especificar outros parâmetros para o usuário, como no comando a seguir:

adduser hugo -d /var/usuarios/hugo -s /dev/null

Com estes parâmetros, especifiquei que o usuário hugo terá como diretório home o "/var/usuarios/hugo" e como shell o "/dev/null" (ou seja, não terá shell). Sem estes parâmetros, o diretório home seria "/home/hugo" e o shell seria "/bin/bash".

Vamos entender agora como este comando funciona, que é uma coisa essencial que todos deveriam saber em relação ao sistema Linux. Cada um desses programas escrevem o usuário no arquivo de configuração do Linux referente aos usuários do sistema. Este arquivo é o "/etc/passwd". Cada linha deste arquivo é um usuário cadastrado no sistema. Com as informações que vou lhe dar aqui, você pode muito bem criar uma conta sem usar estes programas/scripts citados acima.

O passwd é formado por linhas onde cada linha é um usuário, como falei acima, então vamos aprender a montar cada linha desta. Vou pegar um exemplo para vocês:

hugo:x:1001:100:Hugo Cisneiros:/home/hugo:/bin/bash

Vamos dividir esta linha em "campos", onde cada um é separado por : (dois pontos), olhe só:

CampoSignificado
hugoLogin do Usuário, aqui você pode colocar o nome que quiser com até 8 caracteres.
xAqui diz que o password está no arquivo /etc/shadow. Se estivesse *, a conta estaria desabilitada, e se estivesse sem nada (::), a conta não teria password.
1001UID (User IDentification), o número de identificação do usuário.
100GID (Group IDentification), o número de identificação do grupo do usuário.
Hugo CisneirosComentários do usuário, como nome, telefone, etc
/home/hugoO diretório HOME do usuário, ou seja, o diretório pertencente a ele. Geralmente estes diretorios sempre estao no /home
/bin/bashShell do usuário, ou seja, o programa que irá enterpretar os comandos que o usuário executar.

Obs: O /etc/shadow é um arquivo que contém a senha do usuário criptografada, se alguém tiver posse dela, esta pessoa pode muito bem comparar as senhas com uma lista de palavras, e pode descobrir as senhas dos usuários. Felizmente este arquivo está muito bem protegido pelo sistema :)

Bem, legal, aprendi sobre adicionar um usuário, mas como faço para removê-lo? Simples, você pode apagar a linha referente a ele no /etc/passwd e os seus arquivos, ou simplesmente digitar userdel usuario. Combine com a opção -r para deletar junto o diretório HOME do usuário.

Ahhhhh? Você quer mais? O quê? Quer deixar um usuário como se fosse root? Então vamos lá que não temos nada a perder! O root possui o UID e o GID igual à 0 (zero), e um usuário comum não. Se nós forçássemos a mudança do UID e GID de um usuário para 0, ele ficaria como se fosse o root! Por exemplo, eu tenho a linha do usuário no /etc/passwd e mudo:

hugo:x:1001:100:Hugo Cisneiros:/home/hugo:/bin/bash
hugo:x:0:0:Hugo Cisneiros:/home/hugo:/bin/bash
^ ^

Pronto, o usuário hugo vai ser também o root do sistema, o administrador do sistema, o deus do sistema, etc. Outra dica: Não é muito bom ficar usando o usuário root, este usuário é somente para a administração do sistema, então eu recomendo à você a usar sempre um usuário normal, ser da plebe :) E se for precisar usar o root, logar como ele ou utilizar o comando "su -" para se tornar o próprio root.

Outro arquivo que tem muito haver com os usuários no Linux é o /etc/group. Que contém as definições de cada grupo, como por exemplo seus nomes, GIDs, e usuários adicionais que pertencem à ele. Você adicionando uma linha neste arquivo estará criando um novo grupo. Vamos criar aqui um novo grupo no /etc/group:

metal:x:666:hugo,jim,eitch

Adicionando esta linha acima no arquivo /etc/group, um novo grupo é criado: com o nome 'metal', o GID '666' e como usuários adicionais pertencentes à ele, 'hugo, jim, eitch'. Fácil não?

Bem é isso, combinando este conhecimento com algo sobre permissões dos arquivos, você pode controlar muito bem quem usa o seu sistema ou servidor, dizendo quem pertence à que grupo, quais seus diretórios, que arquivos podem acessar, entre outros. Bom proveito!

Hugo Cisneiros, hugo_arroba_devin_ponto_com_ponto_br

Tirado de: http://www.devin.com.br/eitch/manip_usuarios/

Monday, July 2, 2007

Save of a partition table (MBR)

Introduction to partitions


Even if you have only one volume, your hard disk is divided into
partitions. The standard MSDOS voulme label allows to have up to 4
primary partitions. The partition table is stored in the MBR (Master
Boot Record). This area is the first 512 bytes of the physical hard
drive. It also contain some code which will start the operating system,
which can be the bootloader (LILO, grub, ...). If your hard disk is
hda, parimary partitions are hda1, hda2, hda3 and hda4. It's easy to
save to primary partitions table, by copying the MBR.

To get past this limitation of 4 primary partitions, you can
create an extended partition. An extended partition is a primary
partition which contains a lot of partitions. For example, if hda2 is
an extended partition, its logicial partitions will lappear as hda5,
hda6, hda7, ... even if you don't use 4 primary partitions. That's why
you can have an hda5 device, with no hda4. The problem with extended
partition is there is no table we can easily save. The extended
partition contains a linked list. hda5 will point to hda6, hda6 will
point to hda7 and so on. This makes it difficult to save the partition
table of the extended partition.

Partimage can save the data of one partition, but it won't save
your partition table. If you have a major problem with your hard drive,
you may have to restore both the partition table and the data - having
the images of the partitions won't be a lot of help on there own. Which
is why we'll show you how to save the partition image now.



Making a backup of the partition entries

We will save all the partitions entries (both primary and logicial
ones which appear in the extended partition). In this example, we'll be
assuming that hda (the first IDE hard disk) is to be backed up.

First, we will save the MBR with DD (GNU convert and copy)


cd /root
mkdir partition-backup
cd partition-backup
dd if=/dev/hda of=backup-hda.mbr count=1 bs=512

It will produce a very small, but very important file: 512 bytes of data. Now, we will save entries of the extended partitions:


sfdisk -d /dev/hda > backup-hda.sf


sfdisk is a tool provided with the util-linux package.

IMPORTANT: You should now put these files somewhere safe
- copy them to a floppy disk (and take a copy of it!), or burn them
onto a CD. Keep these files safe. Do not leave them on your hard drive
- if there is a problem with th drive, you may not be able to access
these files, and while your partition images won't be wortheless, it
will certainly be a lot harder to restore your data.


Restoring partition entries from the backup


Be careful, restoring is a dangerous action - it can destroy data! First, we will restore the Master Boot Record:


dd if=backup-hda.mbr of=/dev/hda


Then, here is how to restore extended partitions entries:


sfdisk /dev/hda < backup-hda.sf

To finish, you will have to reboot your computer.

Wednesday, June 27, 2007

SSH Tunneling Tested With VNC

In order to connect to a VNC server (or any other server) via ssh, first you need to create an ssh tunel. A tunel specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side (with -R you have the inverse, remote port forwarded to local).

You can create a tunel by tiping the folowing command:


# ssh -L local_port:127.0.0.1:remote_port you_login_on_remote_host@remote_host_ip


now you will have to input your ssh password, wich is your password on the remote host.
With this tunel when you connect a VNC client (or any other client) to your "local_port"
on the localhost (127.0.0.1) the data the client generated is sent through the tunel
to the "remote_port" on the remote host which is the VNC server port (or any other server).

To connect your VNC client through the tunel (assuming you use vncviewer), type the folowing comand:


# vncviewer 127.0.0.1:local_port


now input the vnc password, and that's it, you sould see a window with the remote desktop.

Note: the data in the tunel on the network is encripted, so an ssh tunel provides you security on the network, you can have a tunel that goes through the internet and no one will see what you are transfering, because all of the data is encripted.

Nessus Instalation and Configuration

Nessus is a vulnerability scaner composed of two parts, the server and the client frontend.
The first step is to install the server and the client with the folowing comands:


# apt-get install nessusd

# apt-get install nessus


Now you need to add a user to nessus or else it wont connect to the server, even if you try your login and password on the machine where the server is instaled.


# sudo nessus-adduser

Password:
Using /var/tmp as a temporary file holder
Add a new nessusd user
----------------------

Login : my_login
Authentication (pass/cert) [pass] :
Login password :
Login password (again) :
User rules
----------
nessusd has a rules system which allows you to restrict the hosts
that my_login has the right to test. For instance, you may want
him to be able to scan his own host only.
Please see the nessus-adduser(8) man page for the rules syntax

Login : my_login
Password : ***********
DN :
Rules :

Is that ok ? (y/n) [y] y
user added.



On the "Authentication (pass/cert) [pass] :" just press enter.
Now you just need to start the nessus server, with the folowing command:


# /etc/init.d/nessusd start


And start the client with:


# nessus


input the login and password you added before, select the plugins you want to use in the vulnerability scan and input the target of scan and press "Start the scan"

Saturday, June 23, 2007

APT no RedHat/Fedora

APT no RedHat/Fedora




Hugo Cisneiros, hugo_arroba_devin_ponto_com_ponto_br

Última atualização em 05/03/2004



1. O que é o APT?


O APT (Advanced Package Tool, ou Ferramenta de Pacotes Avançada) é uma ferramenta que gerencia de uma maneira muito intuitiva os pacotes de programas no Linux. O APT foi originalmente criado para funcionar junto com dpkg, do Debian, mas ele foi portado pela Conectiva para funcionar com o sistema de pacotes RPM, criado pela RedHat. O APT resolve os conflitos e dependências de pacotes de uma maneira muito fácil e automática. Além disso ela é uma ótima ferramenta para a atualização do sistema através da Internet, instalação de programas adicionais, entre outros. Neste tutorial irei ensinar como instalar e usar o APT em sistemas RedHat ou Fedora, mas com algumas adaptações, os métodos descritos aqui podem ser feitos em outras distribuições que utilizam o RPM. No caso do Debian, nada precisa ser feito pois o sistema já vem com o APT por padrão.



2. Instalando o APT no RedHat ou Fedora


Para cada versão do sistema, há pacotes específicos a serem baixados. No site (http://apt.freshrpms.net/) você obtém uma lista das versões do APT para cada versão do seu RedHat ou Fedora. Abaixo segue o link direto para o RPM dos principais sistemas:



Neste tutorial, iremos usar como exemplo o RedHat 9. Então para instalar o RPM no seu sistema depois de baixado através dos links acima, utilize o comando:


# rpm -Uhv apt-0.5.5cnc6-fr1.i386.rpm

Depois de instalado no sistema, você terá de configurar o APT através de seus arquivos de configuração. O diretório /etc/apt foi criado na instalação do pacote e é nele que você vai editar os arquivos necessários para o funcionamento da ferramenta.


O arquivo /etc/apt/apt.conf contém as configurações padrões do utilitário APT. As configurações neste arquivo já vêm prontas para o uso, e você só precisará modificar alguma coisa se realmente estiver precisando disso. Um exemplo do que você teria que fazer é habilitar o campo Proxy na seção Acquire para utilizar um Proxy ao baixar os pacotes na Internet.


Já o arquivo /etc/apt/sources.list precisa de nossa configuração. Este arquivo contém a localização dos índices dos pacotes e os próprios pacotes na Internet. Editando este arquivo, você ira especificar onde o APT irá baixar os pacotes para instalá-los na sua máquina. O nome que damos à essa localidade é "repositório apt". Vamos pegar o exemplo que já vem por padrão na configuração:


rpm http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms
rpm-src http://ayo.freshrpms.net redhat/9/i386 os updates freshrpms


As duas linhas acima especificam dois tipos de repositórios APT: um de RPMs binários, e outro de RPMs com código-fonte (SRPMS). Caso você não utilize SRPMS, só é necessário a primeira linha. A linha consiste em campos: O primeiro campo pode ser rpm ou rpm-src como já explicado. O segundo campo é o Host onde o APT se conectará para chegar ao repositório do APT. Este host pode ser HTTP ou FTP. O terceiro campo é o diretório onde o repositório está localizado. E por último, o quarto campo em diante são os módulos contidos no repositório.


Na primeira linha, eu especifiquei que acessaria o repositório ayo.freshrpms.net, e faria o índice dos RPMS do os (parte principal do sistema, ou seja, os RPMs que vem no CD; updates que são as atualizações de segurança da distribuição; e freshrpms que é um repositório especial do http://freshrpms.net/ que contém pacotes extras que a distribuição oficial não disponibiliza (por exemplo, o apt é um desses pacotes extras).


Como host do repositório apt, você pode também usar os mirrors (espelhos) disponíveis, como listado na página do http://apt.freshrpms.net/:



...Ou você pode criar seu próprio mirror, como explicado mais a frente neste tutorial.



3. Utilizando o APT


Agora é hora de colocar a ferramenta pra funcionar. Antes de mais nada precisamos atualizar os índices do repositório APT, armazenando-o no nosso sistema. Para fazer isso, você só precisa de um comando:


# apt-get update


E ele irá atualizar o índice do repositório configurado no arquivo /etc/apt/sources.list como explicado antes. Se tudo ocorrer bem, tudo ira seguir mais ou menos como mostro abaixo:


# apt-get update
Get:1 http://ayo.freshrpms.ne redhat/9/en/i386 release [714B]
Fetched 714B in 0s (4010B/s)
Hit http://ayo.freshrpms.net redhat/9/en/i386/os pkglist
Hit http://ayo.freshrpms.ne redhat/9/en/i386/os release
Get:1 http://ayo.freshrpms.ne redhat/9/en/i386/updates pkglist [434kB]
Hit http://ayo.freshrpms.ne redhat/9/en/i386/updates release
Fetched 434kB in 2s (208kB/s)
Reading Package Lists... Done
Building Dependency Tree... Done


Depois do indice atualizado no sistema, é hora de você começar a colocar as coisas pra funcionar. Vamos agora por exemplo, tentar atualizar o sistema:


# apt-get upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be upgraded
libxml2
1 packages upgraded, 0 newly installed, 0 removed and 0 not upgraded.
Need to get 584kB of archives.
After unpacking 160B of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ayo.freshrpms.net redhat/9/en/i386/updates libxml2 2.5.4-3.rh9 [584kB]
Fetched 584kB in 0s (4262kB/s)
Executing RPM (-Uvh)...
warning: /var/cache/apt/archives/libxml2_2.5.4-3.rh9_i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:libxml2 ########################################### [100%]


Como você pôde ver acima, eu utilizei o comando apt-get upgrade para procurar por pacotes mais novos e atualizar o sistema com eles. Na minha configuração, eu coloquei o módulo updates no /etc/apt/sources.list, então isso quer dizer que as atualizações que estiverem neste local do repositório serão reconhecidas pelo APT. É assim que fica fácil de se atualizar o sistema.

Se eu fizer novamente o processo acima, olha o que vou conseguir:


# apt-get upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
0 packages upgraded, 0 newly installed, 0 removed and 0 not upgraded.


Ou seja, todos os pacotes estão atualizados no meu sistema.


Suponhamos agora que você queira instalar uns pacotes do PHP, mas não sabe ao certo como eles se chamam. Com o APT, você pode procurar no índice por pacotes que tenham em sua descrição certas palavras, como por exemplo PHP. Para fazer isso, utilizamos o comando apt-cache, veja só:



# apt-cache search php
asp2php - Converts WWW Active Server Pages to PHP pages
asp2php-gtk - gtk+ frontend for asp2php
quanta - K Desktop Environment - core files
php - The PHP HTML-embedded scripting language. (PHP: Hypertext Preprocessor)
php-devel - Files needed for building PHP extensions.
php-imap - An Apache module for PHP applications that use IMAP.
php-ldap - A module for PHP applications that use LDAP.
php-manual - The PHP manual, in HTML format.
php-mysql - A module for PHP applications that use MySQL databases.
php-odbc - A module for PHP applications that use ODBC databases.
php-pgsql - A PostgreSQL database module for PHP.
php-snmp - A module for PHP applications that query SNMP-managed devices.
squirrelmail - SquirrelMail webmail client

Viu só? Estes são os pacotes relacionados com o PHP. Que tal a gente instalar o php-manual e dar uma lida pra aprender? Veja só como se faz:


# apt-get install php-manual
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
php-manual
0 packages upgraded, 1 newly installed, 0 removed and 0 not upgraded.
Need to get 13.7MB of archives.
After unpacking 92.7MB of additional disk space will be used.
Get:1 http://ayo.freshrpms.net redhat/9/en/i386/updates php-manual 4.2.2-17.2 [13.7MB]
Fetched 13.7MB in 1s (10.9MB/s)
Executing RPM (-Uvh)...
warning: /var/cache/apt/archives/php-manual_4.2.2-17.2_i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:php-manual ########################################### [100%]


Uma coisa muito legal do APT é que se você quer instalar ou remover um pacote, e este pacote depende de outros pacotes, o APT sabe disso e resolve isso pra você: ele pergunta se você quer também instalar/remover os pacotes dependentes. Ou seja, se você não tiver o PHP instalado em sua máquina e tentar instalar o php-imap, o APT vai querer instalar também o pacote principal php, pois o php-imap é dependente dele. Teste para ver.


E agora que eu já li o manual do PHP inteiro em apenas alguns segundos, eu quero removê-lo. Você pode remover muito bem utilizando o RPM, mas aqui estamos aprendendo sobre o APT, então utilizaremos:


# apt-get remove php-manual
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
php-manual
0 packages upgraded, 0 newly installed, 1 removed and 0 not upgraded.
Need to get 0B of archives.
After unpacking 92.7MB disk space will be freed.
Do you want to continue? [Y/n] y
Executing RPM (-e)...


E lá se vai o manual do PHP. Como eu disse acima, se algum outro pacote depender do manual do PHP, o APT perguntará a você se deseja remover o outro pacote também.


E agora como nota final de uso, você pode atualizar uma versão de distribuição inteira através do APT. Para isso você só precisa mudar a versão do seu repositório (arquivo /etc/apt/sources.list) para uma versão superior a sua e executar o comando apt-get dist-upgrade.


E pra terminar essa seção, vamos à tabelinha básica dos comandos e suas funções:

Comando Função

apt-get install Instala um pacote e suas dependências.
apt-get remove Remove um pacote e suas dependências.
apt-get upgrade Procura por pacotes mais novos para fazer atualizações.
apt-get dist-upgrade Faz uma atualização de versão da distribuição.
apt-cache search Procura por termo nas descrições dos pacotes disponíveis


E basicamente é isso. Utilizar o APT é muito simples e não requer muito segredo, nem esforço. Mas uma coisa é certa: uma vez que você começa a usar o APT, não quer parar nunca por causa de sua praticidade.



4. Montando um repositório local do APT/RedHat

Se você é um usuário doméstico ou tem poucas máquinas em sua mão rodando Linux, já é muito prático você utilizar o APT com os repositórios disponíveis por aí na Internet. Mas para os administradores de Rede que possuem várias máquinas Linux, seja na mesma rede ou não, pedir para cada uma delas instalar ou atualizar pacotes da Internet é um desperdício de banda, além de um péssimo favor para os servidores externos. Então por que não fazer um repositório APT local?


O método aqui utilizado criará um mirror (espelho) do FTP da RedHat no seu sistema local, e scripts irão criar os índices do APT em sua máquina. Para fazer o espelho, precisaremos do pacote lftp, então se você não o possue, o que está esperando? apt-get install lftp!


Criando o espelho da distribuição


Baixe o script make-redhat-mirror disponível nesta página e coloque-o no diretório /usr/local/bin. Então rode inicialmente o seguinte comando:



# /usr/local/bin/make-redhat-mirror full 9


E espere. Espere bastante. O script irá baixar todo o conteúdo do RedHat 9 (inclusive as atualizações) para o diretório /var/mirror/redhat. Este diretório de destino pode ser configurado dentro do script, editando-o. Inclusive você pode editar também o FTP onde o mirror vai tirar seus arquivos. Tente achar um mirror da RedHat mais próximo de você.


Só será necessário rodar este comando uma vez. Mas depois você vai querer se manter atualizado com os novos pacotes, então para atualizar apenas a parte de updates, utilize o seguinte comando:



# /usr/local/bin/make-redhat-mirror quick 9


Mais tarde iremos também colocar no crontab para rodar as atualizações de índice com o FTP da RedHat automaticamente todo dia.


Preparando o território do APT

Antes de criar os índices, você precisará primeiro de um método para os clientes do APT baixarem as coisas. O método pode ser HTTP e FTP (Pode ser CD-ROM também, mas isso não vem ao caso). Fica ao seu critério escolher o método. No meu caso eu prefiro criar um host virtual no Apache chamado de apt.meudominio.com.br. Ou se você não tem domínio, pode usar seu próprio IP.


Isto será extremamente necessário, e a configuração disto está fora do escopo deste tutorial. Se você não sabe, procure saber como configurar um servidor HTTP ou FTP. Provavelmente você sabe um pouco, senão não estaria lendo esta parte do tutorial :)


Aqui, como eu disse, o lugar do repositório APT vai ser apt.meudominio.com.br, e o diretorio real no sistema vai ser /var/www/dominios/apt.meudominio.com.br/html.



Criando o repositório APT

Agora é a hora de criar o repositório do APT em sua máquina. Para isso, baixe o script make-apt disponível nesta página e coloque-o em /usr/local/bin. Edite o script e você verá algumas variáveis no começo para serem configuradas:

# Absolute directory for top of redhat mirror
MIRRORDIR=/var/mirror/redhat
# Absolute directory for top of apt repository
APTDIR=/var/www/dominios/apt.meudominio.com.br/html
# URL of repository
ORIGINURL=apt.meudominio.com.br

Veja aí o que você precisa. A variável MIRRORDIR indica onde você colocou o mirror do RedHat (isto está configurado também no script make-redhat-mirror). A variável APTDIR indica o diretório no sistema onde vai ficar o repositório do APT, que no nosso caso ficou sendo como /var/www/dominios/apt.meudominio.com.br/html. E por último a variável ORIGINURL indica a URL onde vai estar disponível o repositório, que no nosso caso ficou sendo apt.meudominio.com.br.


Depois de configurado estas três variáveis, é hora de finalmente criar o repositório. Na primeira vez que você for fazer isso, utilize o comando:

# /usr/local/bin/make-apt full 9

Isso irá iniciar o processo de criação do repositório, que deve demorar um pouquinho. Depois de feito, está pronto! Agora seus usuários já podem acessar o seu repositório APT através do seu servidor HTTP.



Configurando os clientes para usar seu repositório


Tudo que você precisará fazer para configurar os clientes do APT para utilizar o seu repositório será alterar o arquivo /etc/apt/sources.list e utilizar a seguinte linha:


rpm http://apt.meudominio.com.br redhat/9/en/i386 os updates


E pronto! Se você estiver rodando várias máquinas numa rede interna, apenas uma terá o repositório e o resto irá baixar tudo localmente :)



Atualizando o repositório diariamente

Como existem as atualizações de segurança, é sempre bom você estar sempre atualizando seu repositório. Para fazer isso diariamente, crie um arquivo chamado /usr/local/bin/mirror-apt com o seguinte conteúdo:


#!/bin/bash
/usr/local/bin/make-redhat-mirror quick 9
/usr/local/bin/make-apt quick 9


Depois edite o arquivo /etc/crontab, e adicione as seguintes linhas:


# Atualizacao do Mirror RedHat e APT
01 1 * * * root /usr/local/bin/mirror-apt


Isso fará com que o sistema verifique as atualizações no FTP da RedHat e crie o repositório APT caso necessário todo dia às 1:00 da manhã. Se você quiser aprender mais sobre como agendar as tarefas através do crontab, visite meu outro tutorial: Utilizando o crontab.


E pronto! Seu trabalho está feito. Experimente e modifique as coisas para aprender mais. Não é tão difícil adaptar estas informações para criar um repositório do Fedora por exemplo, ou de outra versão do RedHat. A única coisa que irá mudar será a localização do mirror, entre outras pequenas coisas.



5. Conclusão e Referências

Espero que você tenha gostado desse tutorial, e que ele possa ter te ajudado a lidar melhor com sua distribuição. Críticas e Sugestões podem ser mandadas para o meu e-mail. E agora os créditos para este tutorial:




taken from: http://www.devin.com.br/eitch/apt-redhat/

Saturday, June 16, 2007

Configuring a Wifi Network with WPA using WPA_GUI

For some configuring wpa_supplicant may be a bit complicated, like identifing the rigth kind off key, etc.
Sometimes people have to use aplications like frontends to configure it's acess to a network.
This package (wpa_gui) is one off those frontends.

By default this package detects the wifi networks and you have to configure the
every time you want to use the network, which is not very practical.

You can also use it to configure wpa_supplicant.conf, but first you have to edit or create the /etc/wpa_supplicant.conf file, like this (remove the text after the #):


ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0 #the group thats used by default (root)
eapol_version=2 #generaly it's 1 but here we have 2 because we are using wpa2 which is safer

#eapol is the package that it's used at the start off the client's session

update_config=1 #this is the line that allows you to configure wpa_supplicant.conf using wpa_gui
network={
ssid="any"
key_mgmt=NONE
priority=2
}

network={
ssid="my-network"
psk="my-password"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
}


Now you run the following command:

$ sudo wpa_supplicant -Dwext -ieth1 -c /etc/wpa_supplicant.conf -B

change the interface from eth1 to the interface you are using (ex: ath0, ra0, wlan0, etc.) to connect yourself to the wifi network.

Now that wpa_supplicant is running , to configure it using wpa_gui (Gui), just run the folowing command:

$ sudo wpa_gui

Now you should see the wpa_gui interface, now just go to File | Edit Network to edit one of the networks wpa_supplicant.conf, with the data off the network you want to conect.

You can also add a new network on File | Add Network or use scan and then then select the one off the detected networks and configure it.

To delete a network you have to edit wpa_supplicant.conf, you can do it by using vi or any other editor, you use vi execute the following comand:

$sudo vi /etc/wpa_supplicant.conf

if you want to use another editor replace 'vi' with the name of the editor you want.


based on a post by d4rksh3ll at http://www.tux-linux.net

---------------------------------------------------------
Here´s some information on WPA so that you now a a bit more what you are doing.

Wi-Fi Protected Access (WPA and WPA2) is a class of systems to secure wireless (Wi-Fi) computer networks. It was created in response to several serious weaknesses researchers had found in the previous system, Wired Equivalent Privacy (WEP). WPA implements the majority of the IEEE 802.11i standard, and was intended as an intermediate measure to take the place of WEP while 802.11i was prepared. WPA is designed to work with all wireless network interface cards, but not necessarily with first generation wireless access points. WPA2 implements the full standard, but will not work with some older network cards. Both provide good security, with two significant issues:

Either WPA or WPA2 must be enabled and chosen in preference to WEP. WEP is usually presented as the first security choice in most installation instructions.
In the "Personal" mode, the most likely choice for homes and small offices, a passphrase is required that, for full security, must be longer than the typical 6 to 8 character passwords users are taught to employ.
Contents

1 History
2 WPA2
3 Security in pre-shared key mode
4 EAP types under WPA- and WPA2- Enterprise
5 See also
6 Notes



1 History

WPA was created by the Wi-Fi Alliance, an industry trade group, which owns the trademark to the Wi-Fi name and certifies devices that carry that name.

WPA is designed for use with an IEEE 802.1X authentication server, which distributes different keys to each user; however, it can also be used in a less secure "pre-shared key" (PSK) mode, where every user is given the same pass-phrase. The design of WPA is based on a Draft 3 of the IEEE 802.11i standard.

The Wi-Fi Alliance created WPA to enable introduction of standard-based secure wireless network products prior to the IEEE 802.11i group finishing its work. The Wi-Fi Alliance at the time already anticipated the WPA2 certification based on the final draft of the IEEE 802.11i standard, therefore the tags on the frame fields (Information Elements or IEs) are intentionally made different from 802.11i to avoid the confusion in unified WPA/WPA2 implementations.

Data is encrypted using the RC4 stream cipher, with a 128-bit key and a 48-bit initialization vector (IV). One major improvement in WPA over WEP is the Temporal Key Integrity Protocol (TKIP), which dynamically changes keys as the system is used. When combined with the much larger IV, this defeats the well-known key recovery attacks on WEP.

In addition to authentication and encryption, WPA also provides vastly improved payload integrity. The cyclic redundancy check (CRC) used in WEP is inherently insecure; it is possible to alter the payload and update the message CRC without knowing the WEP key. A more secure message authentication code (usually known as a MAC, but here termed a MIC for "Message Integrity Code") is used in WPA, an algorithm named "Michael". The MIC used in WPA includes a frame counter, which prevents replay attacks being executed.

By increasing the size of the keys and IVs, reducing the number of packets sent with related keys, and adding a secure message verification system, WPA makes breaking into a Wireless LAN far more difficult. The Michael algorithm was the strongest that WPA designers could come up with that would still work with most older network cards. Due to inevitable weaknesses of Michael, WPA includes a special countermeasure mechanism that detects an attempt to break TKIP and temporarily blocks communications with the attacker.



2 WPA2

Main article: IEEE 802.11i
WPA2 implements the mandatory elements of 802.11i. In particular, in addition to TKIP and the Michael algorithm, it introduces a new AES-based algorithm, CCMP, that is considered fully secure. Note that from March 13, 2006, WPA2 certification is mandatory for all new devices wishing to be Wi-Fi certified.

Vendor support:

Official support for WPA2 in Microsoft Windows XP was rolled out on 1 May 2005. Driver upgrades for network cards may be required.
Apple Computer supports WPA2 on all AirPort Extreme-enabled Macintoshes, the AirPort Extreme Base Station, and the AirPort Express. Firmware upgrades needed are included in AirPort 4.2, released July 14, 2005.



3 Security in pre-shared key mode

Pre-shared key mode (PSK, also known as personal mode) is designed for home and small office networks that cannot afford the cost and complexity of an 802.1X authentication server. Each user must enter a passphrase to access the network. The passphrase may be from 8 to 63 printable ASCII characters or 64 hexadecimal digits (256 bits).[1] If you choose to use the ASCII characters, a hash function reduces it from 504 bits (63 characters * 8 bits/character) to 256 bits (using also the SSID). The passphrase may be stored on the user's computer at their discretion under most operating systems to avoid re-entry. The passphrase must remain stored in the Wi-Fi access point.

Security is strengthened by employing a PBKDF2 key derivation function. However, the weak passphrases users typically employ are vulnerable to password cracking attack. The threat of password cracking can be mitigated by using a passphrase of at least 5 Diceware words or 14 completely random letters with WPA and WPA2.

Maximum WPA-PSK protection (256 bit) requires a key consisting of 54 random letters or 39 random ASCII characters.

Some consumer chip manufacturers have attempted to bypass weak passphrase choice by adding a method of automatically generating and distributing strong keys through a software or hardware interface that uses an external method of adding a new Wi-Fi adapter or appliance to a network. These methods include pushing a button (Broadcom SecureEasySetup and Buffalo AirStation One-Touch Secure System) and entering a short challenge phrase through software (Atheros JumpStart). The Wi-Fi Alliance has standardized these methods in a program called Wi-Fi Protected Setup (formerly Simple Config).



4 EAP types under WPA- and WPA2- Enterprise

The Wi-Fi alliance has announced the inclusion of additional EAP (Extensible Authentication Protocol) types to its certification programs for WPA- and WPA2- Enterprise. This was to ensure that WPA-Enterprise certified products can interoperate with one another. Previously, only EAP-TLS (Transport Layer Security) was certified by the Wi-Fi alliance.

The EAP types now included in the certification program are:

EAP-TLS (previously tested)
EAP-TTLS/MSCHAPv2
PEAPv0/EAP-MSCHAPv2
PEAPv1/EAP-GTC
EAP-SIM
Other EAP types may be supported by 802.1X clients and servers developed by specific firms. This certification is an attempt for popular EAP types to interoperate; their failure to do so is currently one of the major issues preventing rollout of 802.1X on heterogeneous networks.



5 See also

WPS — A standard for easy and secure establishment of a wireless home network with WPA(2)
WAPI — Chinese National Standard for wireless LAN security.
tinyPEAP — A small-footprint RADIUS server designed to load into a wireless access point
FreeRADIUS - A free open source RADIUS server
Radiuz — A "cooperative WiFi network" that provides free RADIUS service for WPA-Enterprise compatible routers
SecureEasySetup — A technology developed by Broadcom to easily set up wireless LANs with WPA
Internet Authentication Service (IAS) Microsoft's Radius server that ships as part of Windows 2000 Server and Windows 2003 Server



6 Notes

^ Each character in the pass-phrase must have an encoding in the range of 32 to 126 (decimal), inclusive. (IEEE Std. 802.11i-2004, Annex H.4.1)
The space character is included in this range.


Taken from wikipedia at: http://en.wikipedia.org/wiki/WPA2 on 17/06/07