Patches
   
 

Esta seção foi criada para o pessoal que gosta de brincar com o kernel testando novas features. Colocaremos aqui alguns patches "recomendados" pelo pessoal do kernel-br.

AVISO: Não recomendamos a utilização destes patches em servidores ou máquinas de produção, utilize-os por sua própria conta e risco.

Preemptible kernel www.tech0.net/rml/linux

Este patch é mantido por Robert Love e foi incluído na árvore v2.5.4-pre6.

Atualmente o kernel do linux não é preemptivo, i.e., ele não pode ser interrompido. Esta é uma limitacao para o uso de aplicacoes de tempo real (real-time). Este tipo de aplicacao precisa de um baixa latencia, i.e., um baixo tempo entre a aplicacao se tornar runnable e ela realmente executar.

Por exemplo, se uma aplicacao real-time ou uma aplicacao com uma prioridade mais alta do que a do processo que esta rodando se torna runnable e o processo que esta atualmente rodando estah executando uma chamada de sistema (system call), ela vai ter que esperar um tempo muito alto para rodar, visto que, enquanto a aplicacao estiver em modo kernel ela não pode ser interrompida. Deste modo, este patch torna o kernel do linux preemptivo, e assim, permitindo que processos sejam interrompidos mesmo que estejam em modo kernel executando alguma chamada de sistema.

Existem certas circustancias onde o kernel não pode ser interrompido, por exemplo quando ele estiver executando um handler de interrupcao ou enquanto ele estiver executando alguma secao crita, i.e., segurando algum lock. Com isto, aplicacoes ainda podem ter uma latencia alta. Para diminuir ainda mais a latencia é preciso procurar e dimunuir os grandes lock dentro do kernel, o qual o patch lock-breaking tenta resolver alguns destes grandes locks dentro do kernel.

Estes dois patches sao indicados para aplicacoes real-time e aplicacoes que precisam de um tempo de resposta baixo, por exemplo, quando voce que esta executando uma aplicacao "desktop", gravando um CD, escutando mp3, editando um texto e não quer perder o CD e nem que a sua musica comece a pular... ;-) Bom, não esqueca que o kernel não pode fazer milagres :D

OBS: os processos são preemptivos, mas não podem estar em modo kernel. Este patch serve para torna-lo preemptivo, e assim diminuindo do tempo de resposta para aplicacoes. Deste modo uma aplicacao pode ser interrompida mesmo que ela esteje em modo kernel, ie, o kernel pode ser interrompido em "qualquer momento", desde que não esteje segurando um lock ou manipulando alguma interrupção...


Lock-breaking www.tech0.net/rml/linux

Este patch também é mantido por Robert Love e tenta eliminar alguns dos piores lock do kernel quebrando longos locks dentro do kernel em locks menores, e assim diminuindo o tempo de resposta (low-latency) do mesmo. Deve ser utilizado junto com o preemptible kernel para um melhor desempenho.


O(1) scheduler www.kernel.org/pub/linux/kernel/people/rml/sched/


2.4.19pre2-ac1

Novo escalonador do kernel, dentre suas principais caracteristicas pode se destacar que ele é O(1) algorithms, eliminando o loop para recalcular o goodness.

Para mais informacoes: www.kernel.org/pub/linux/kernel/people/rml/sched/for_alan/190-documentation.patch


LIDS - Linux Intrusion Detection System

Primeiro, você pode ler o nome e falar que o objetivo do LIDS é detectar intrusos no sistemas, mas na verdade não é, o seu nome já foi muito discutido, mas isto é problema do autor. Na verdade o LIDS é utilitario que é instalado no núcleo do sistema operacional (kernel) e intercepta algumas chamadas de sistemas e protege o sistema por meio delas ou no controle de potencialidades (capabilities).

Quando o intruso ganha privilegios de root em sua máquina, simples utilitarios como scripts ou programas são dificieis de oferecerem segurança, no ambiente Linux o privilegio de root é necessario para varias ocasiões, e por padrão este super-usuário não tem restrições, então este usuário pode ler qualquer coisa, escrever em qualquer coisa e apagar qualquer coisa. Então, quando um intruso ganha privilegios de root ele pode fazer qualquer coisa, instalar modulos no kernel (alterar chamadas de sistema, filtragem de pacotes, ...), back doors, programas para rodar no swap, e muito mais.

Com o Lids, arquivos e diretorios podem ser protegidos para o root, voce pode controlar o acesso via ACLs (Access Control List, lista de controle de acesso), também via "potencialidades" (Proteção já do kernel para algumas tarefas, por exemplo para se abrir portas abaixo de 1024, apenas o super-usuário, com o lids voce pode alterar estas potencialidades), voce pode deixar que um determinado programa execute alguma tarefa que realmente precisa de root, como por exemplo abrir uma porta abaixo de 1024, você não precisa executar a tarefa como root, so para abrir a porta abaixo de 1024, então você pode dar esta potenciadade ao programa e voce pode executar como qualquer usuário e consiguir abrir esta porta.

Outro exemplo, com o LIDS, você pode dizer que nenhum usuário pode ler o arquivo /etc/shadow, nem mesmo o root, podemos liberar o acesso de leitura apenas para o programa /bin/login.

Ainda podemos melhorar, colocar que a escrita só pode ser feita pelos programas /usr/bin/passwd e /usr/sbin/useradd, para alterar a senha e cadastro de novos usuários. Desta forma, você dificulta um pouco mais o acesso ao /etc/shadow.

Mas, dae você vai me dizer, ah! se eu tiver acesso de root, é simples de eu apagar o programa /usr/bin/passwd e consiguir ler /etc/shadow, mas e se eu colocar outras ACLs para não deixar ninguem ler e nem escrever nestes arquivos, e somente executar?

Temos que tomar muito cuidado para criar nossas ACLs, e pensar em todos as situações possiveis, e realmente deixar que o programa só faça o que precise.

Instalação do LIDS:

Depois do kernel configurado, você pode puxar a ultima versão do LIDS, pela página oficial em www.lids.org, pegue o remendo (patch) da versão correspondente ao seu kernel. Para aplicar a patch utilize o comando:

   patch -p1 ../lids.patch

Para a opção do LIDS ser compilada, você deve habilitar estas duas opções:

   [*] Prompt for development and/or incomplete code/drivers
   [*] Sysctl Support

Agora, é so ir na opção do LIDS no menu do kernel (make menuconfig ou make xconfig) e selecionar o que você desejar.

Depois é so recompilar o kernel. Não esqueça de compilar e instalar o lidsadm, que acompanha o pacote

Configuração:

   lidsadm -A -s /origem -o /arquivo,diretorio -j REGRA

A sintaxe é parecida com a do ipchains, o -A é para voce adicionar uma regra na lista dele, no -s você informa a origem, no -o o destino, e no -j a regra.

Logo, estarei colocando outro artigo/texto aqui explicando as regras e com exemplos de uso do lidsadm.


© 2001-2002 by the people in #kernel-br - Webdesign by Caio Begotti (caio1982) & Fábio Minami (sussumo)