Data: 08/10/2002.
Neste articulo nos vamos a centrar basicamente no que é a segurança de nossa mákina, para isso optei por Snort que é uma ferramenta bastante corrente mas que funciona muito bem. Snort é um detector de intrusos, o que faz basicamente é ver todo o que entra e sai de nossa mákina e aquilo que não lhe gosta o filtra e guarda a informação acerca dessa anomalia numa listagem de alertas. Para ver que coisas são essas que podem e essas que não podem entrar em nossa equipe snort possui numerosas réguas.
Outra ferramenta que vamos utilizar é Acid que é um meio web muito manejable que serve para listar todas as alertas que Snort vá armazenando.
Vamos fazer uso de MYSQL para que Snort possa armazenar essas alertas numa base de dados e Acid possa lê-las para que mais demore nós possamos visualizá-las em nosso navegador sem nenhum problema.
# mkdir /var/log/snort # cd /usr/ports/
Na instalação de Snort Não vamos fazer clean porque precisamos um arquivo que se cria durante a instalação na carpeta work/ para criar mais demore a base de dados na que irão as alertas.
# cd /usr/ports/security/snort && make WITH_MYSQL=YES install # cd /usr/ports/databases/mysql323-server/ && make install clean
O primeiro que temos que fazer uma vez instalado o Servo de Mysql é atribuir uma contraseña à conta root:
# /usr/local/bin/mysqladmin -ou root password 'oi' # echo "CREATE DATABASE snort;" | mysql -ou root -phola # mysql -ou root -phola mysql> grant INSERT,SELECT on snort.* to root@localhost; Query OK, 0 rows affected (0.01sec) mysql> quit Bye # mysql -ou root -phola < /usr/ports/snort/security/work/snort-1.9.0/contrib/create_mysql snort # mysql -ou root -phola mysql> SHOW DATABASES; ----------- Database ----------- mysql snort test ----------- 3 rows in set (0.00 sec)
Elegemos a Base de Dados de Snort
mysql> use snort mysql> SHOW TABLES;
..Agora deveriam sair-nos umas quantas tabelas..., se não sai nada é que algo fizemos mal.
mysql> quit Bye
É necessário criar um novo arquivo de configuração, para isso fazemos uso do arquivo de exemplo que temos em usr //local/etc/snort.conf.sample, configurar snort é algo bastante singelo, é importante dizer-lhe que queremos que trabalhe com mysql e especificar-lhe a base de dados, nome de usuário,etc.., a continuação copiei uma possível configuração:
# cp /usr/local/etc/snort.conf-sample /usr/local/etc/snort.conf # ee /usr/local/etc/snort.conf
var HOME_NET 62.97.68.172 var SMTP $HOME_NET var HTTP_SERVERS $HOME_NET var SQL_SERVERS $HOME_NET var DNS_SERVERS $HOME_NET var RULE_PATH /usr/local/share/snort
Linea 310 (aproximadamente):
output database: log, mysql, user=root password=oi dbname=snort host=localhost
Nas últimas lineas Elegemos as Réguas que queremos incluir :D
No arquivo snort.conf vemos que a variável HOME_NET admite várias opções, podemos fazer que snort filtre desde redes inteiras 62.97.68.169/29 até distintas redes,etc.., que filtre todo o que passe por um dispositivo de rede especificado, ou que filtre várias redes. Ao princípio do arquivo de configuração de exemplo temos uns exemplos. Para os que queiram pôr uma rede e não saibam como funciona o dos bits:
Bitmask Netmask IPs Totais / IPs usables
32 255.255.255.255 1 1
31 255.255.255.254 2 1
30 255.255.255.252 4 2
29 255.255.255.248 8 6
28 255.255.255.240 16 14
27 255.255.255.224 32 30
26 255.255.255.192 64 62
25 255.255.255.128 128 126
24 255.255.255.0 256 254
...
22 255.255.192.0 16320 16318
20 255.255.128.0 32768 32766
16 255.255.0.0 65536 65534
12 255.128.0.0 8.388608+e6 8.388606+e6
8 255.0.0.0 256^3 (256^3)-2
0 0.0.0.0 (Todas as IPS) 256^4 (256^4)-2.
No exemplo eu pus: 62.97.68.169/29 isto significa que essa Rede possui as seguintes ips:
62.97.68.169---Não a Podemos Usar-- 62.97.68.170 62.97.68.171 62.97.68.172 Ma'scara de Rede destas Ips: 255.255.255.248 62.97.68.173 62.97.68.174 62.97.68.175 62.97.68.176--Também não a Podemos Usar--
A Máscara da Subred nos define o número de Ips que tem a rede, para obter este número a operação a realizar seria a seguinte: 256 - 248 = 8 ips (das que há uma que abre e outra que fecha a família),esta família teria 6 ips usables..
Para que ACID funcione bem é necessário instalar um par de programas (adodb, gd e phplot)
# cd /usr/ports/databases/adodb && make install clean # cd /usr/ports/graphics/gd && make install clean # cd /usr/ports/graphics/phplot && make install clean
Uma vez instalados estes programas procederemos à instalação e configuração de Acid .
# cd /usr/ports/security/acid && make install clean # ee /usr/local/www/acid/acid_conf.php
Linea13:
$DBlib_path = "/usr/local/www/data.default/php/adodb";
Linea33:
$alert_dbname = "snort"; $alert_host = "localhost"; $alert_port = ""; $alert_user = "root"; $alert_password = "oi";
Guardamos e saímos.
Instalamos Apache com mod_php4 (os que já o tengais instalado podeis saltar-vos este passo):
# cd /usr/ports/www/apache13 && make install clean # cd /usr/ports/www/mod_php4 && make install clean
Modificámos httpd.conf adicionando vhost e contraseñas a nosso apache:
# mkdir /usr/local/etc/apache/conf/ # htpasswd -c /usr/local/etc/apache/conf/passwordAcid admin (para adicionar o usuário admin)usámos htpasswd -c quando o fichero passwordAcid mesmo não existe, ou seja, para adicionar o primeiro usuário
# htpasswd /usr/local/etc/apache/conf/passwordAcid Iucki (para adicionar outros usuários)
Se vamos usar o Apache unicamente para o Snort faremos (linea 376 aprox de httpd .conf):
# ee /usr/local/etc/apache/httpd.conf
DocumentRoot "/usr/local/www/acid"
Para todos:
<Directory "/usr/local/www/acid">
AuthType Basic
AuthName "Aqui ponde um nome que vos goste"
AuthUserFile usr/local/etc/apache/conf/passwordAcid
require valid-user
Options Indexes FollowSymLinks MultiViews
AllowOverride none
Order allow,deny
Allow from all
</Directory>
NameVirtualHost *
<VirtualHost *>
ServerAdmin [email protected]
ServerName acid.lucki.homeunix.org
DocumentRoot /usr/local/www/acid
</VirtualHost>
O do ServerName é por se quereis ter várias Webs num mesmo Apache. Em http ://www.dyndns.org/ podeis obetener um subdominio grátis, o que nos vem bastante bem.