Sexta-feira, 17 de Agosto de 2007
Servidor caseiro - V
A instalação da máquina
Servidor caseiro - IV
O serviço de IP dinâmico do SAPO, configura o DNS – incluindo o
MX record para o mail – para o meu IP fixo, portanto, não dá para instalar um servidor de DNS para criar subdomínios, pois o SAPO não os delega.
No entanto, e especialmente porque vai ter um servidor de mail, uma
cache de DNS é sempre um
must have.
- Instalar o djbdns
O software que utilizo para DNS é o djbdns, também do Prof. Dan Bernstein, como se costuma dizer, o djbdns é o DNS made easy.
Primeiro instalo as daemontools, só depois o djbdns. Falarei delas quando instalar o qmail.
# groupadd Gdnscache
# useradd -s /bin/false -g Gdnscache Gdnscache
# groupadd Gdnslog
# useradd -s /bin/false -g Gdnslog Gdnslog
# dnscache-conf Gdnscache Gdnslog /etc/dnscache
# ln -s /etc/dnscache /service
# sleep 5
# svstat /service/dnscache
O servidor de DNS passa agora a ser o localhost,
pelo que o ficheiro /etc/resolv.conf passa a
conter a seguinte linha:
nameserver 127.0.0.1
Para testar, executo o comando:
# dnsip www.planetgeek.org
Como nota final, o código do djbdns já tem alguns
IPs de root servers desactualizados, pelo que
convém actualizá-los.
Para obter os IPs dos root servers actuais, executo:
# dnsq ns . a.root-servers.net
[root@planetgeek servers]# dnsq ns . a.root-servers.net
additional: a.root-servers.net 3600000 A 198.41.0.4
additional: b.root-servers.net 3600000 A 192.228.79.201
additional: c.root-servers.net 3600000 A 192.33.4.12
additional: d.root-servers.net 3600000 A 128.8.10.90
additional: e.root-servers.net 3600000 A 192.203.230.10
additional: f.root-servers.net 3600000 A 192.5.5.241
additional: g.root-servers.net 3600000 A 192.112.36.4
additional: h.root-servers.net 3600000 A 128.63.2.53
additional: i.root-servers.net 3600000 A 192.36.148.17
additional: j.root-servers.net 3600000 A 192.58.128.30
additional: k.root-servers.net 3600000 A 193.0.14.129
additional: l.root-servers.net 3600000 A 198.32.64.12
additional: m.root-servers.net 3600000 A 202.12.27.33
[root@planetgeek servers]#
São estes os IPs a inserir no ficheiro /etc/dnscache/root/servers/@
Isto faz o trabalho:
# dnsq ns . a.root-servers.net | cut -d' ' -f5 | tail -n13 > @
Vou ver se funga:
[root@planetgeek servers]# svstat /service/dnscache/
/service/dnscache/: up (pid 31737) 353138 seconds
[root@planetgeek servers]#
Funga :)
I'll be back...
Servidor caseiro - III
Ok, sistema instalado, um módulo de RAM foi à viola, estou com 384 MB de RAM.
Instalei o OpenSSL, o MySQL e o PostgreSQL. A compilação deve ser feita no directório /usr/local/src
- Instalar OpenSSL
# ./config no-idea
# make depend
# make
# make install
No final, devemos ficar com tudo em /usr/local/ssl/
Criar a nossa Certificate Authority
Mudamos para /usr/local/ssl/bin/ e executamos
# cd /usr/local/ssl
# ./openssl genrsa -des3 -out ca.key 1024
É-nos pedida uma password para o ficheiro ca.key
De seguida criamos um auto-assinado certificado CA com a respectiva chave RSA:
# ./openssl req -new -x509 -days 365 -key ca.key -out ca.crt
É-nos pedida a password que demos anteriormente e é-nos colocada uma série de perguntas a que se responde facilmente.
Criar um certificado SSL
Criamos uma chave privada com
# ./openssl genrsa -des3 -out server.key 1024
É-nos novamente pedida uma password.
De seguida criamos um Certified Signing Request com a chave privada RSA:
# ./openssl req -new -key server.key -out server.csr
Mais uma vez é-nos colocada a mesma série de questões, mas atenção: quando nos for perguntado o Common Name, devemos dar o Full Qualified Domain Name. Esta questão é muito importante.
É-nos também pedida uma challenge password.
Assinar o server.csr
Para que possamos ter um certificado SSL válido, usamos a nossa CA para assinar o ficheiro server.csr
O mod_ssl tem um utilitário para o fazer. Descomprimimos o ficheiro do código e na directoria pkg.contrib existe um executável denominado sign.sh
Copiamo-lo para /usr/local/ssl/bin/ e neste directório executamos
# ./sign.sh server.csr
É-nos pedida a password que demos antes e respondemos y às duas perguntas seguintes. Se tivermos sucesso podemos ler a mensagem:
Write out database with 1 new entries
Data Base Updated
CA Verifying: server.crt <-> CA cert
server.crt: OK
Não se apaga o directório do código fonte do openssl e do mod_ssl, pois adiante será necessário recorrer a eles de novo.
- Instalar MySQL
# ./configure --prefix=/usr/local/mysql
# make
# make install
De seguida, deve executar-se o comando
# scripts/mysql_install_db
Agora cria-se um utilizador e um grupo mysql:
# groupadd mysql
# useradd -g mysql -s /bin/false mysql
De seguida, no directório /usr/local/mysql/var, executam-se os comandos:
# chown -R mysql.mysql .
# find . -follow -type d -print | xargs chown mysql.mysql
Deve evitar-se que outros utilizadores acedam aos dados do MySQL. Para isso, utilizam-se no mesmo directório, os comandos:
# chmod -R go-rwx .
# find . -follow -type d -print | xargs chmod go-rwx
Em /usr/local/src/mysql-5.0.45/support-files existe um ficheiro denomindao mysql.server. Copia-se para /etc/init.d e dão-se-lhe permissões de execução:
# cd /usr/local/src/mysql-4.0.12/support-files
# cp mysql.server /etc/init.d/mysqld
# cd /etc/init.d
# chmod +x mysqld
Arranque o servidor com o comando:
# /etc/init.d/mysqld start
Para que o MySQL arranque automaticamente quando ligar o servidor, execute o comando:
# chkconfig --level 35 mysqld on
Dê uma password ao utilizador root do MySQL (não confundir com o root do sistema, a semelhança de nomes é pura coincidência) executando o comando:
# /usr/local/mysql/bin/mysqladmin -u root password segredo
O root do MySQL fica então com a password segredo.
- Instalar o PostgreSQL
# ./configure
# gmake
# gmake install
# groupadd postgres
# useradd postgres
# mkdir /usr/local/pgsql/data
# chown -R postgres.users /usr/local/pgsql/data
# su - postgres
# /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
# /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data > logfile 2>&1 &
No directório contrib/start-scripts, existe um ficheiro denominado linux que é um script para arrancar o PostgreSQL. Vamos copiá-lo para /etc/init.d, dar-lhe permissões de execução e tornar permanente o seu arranque quando se ligue o servidor:
# cp linux /etc/init.d/pgsqld
# cd /etc/init.d
# chmod +x pgsqld
# chkconfig --level 35 pgsqld on
Ok, já tenho o sistema instalado, o MySQL e o PostgreSQL.
Keep in touch.
Servidor caseiro - II
Depois de muitas trocas e baldrocas e de ter comprado um disco IDE de 40 GB por 10 euros :), voltei ao P-III a 500 MHz com 512 MB de RAM.
Também lhe pus o DVD e a ZIP que estavam no P-II
Vou postando aqui os passos que vou fazendo para a instalação do servidor todo, para o caso de alguém querer seguir, embora presuma que quem o quiser, saiba descompactar ficheiros e coisas básicas desse género.
Estou aberto a sugestões e disponível para quem precisar de ajuda.
É só postar nos comentários.
- Instalação do CentOS 4.5
A instalação é muito fácil, basta ir seguindo os passos. No meu caso aqui para casa, basta-me uma partição /boot (convém ter 256 MB, mais ou menos), uma / e uma swap;
Não escolhi nada que seja gráfico, à excepção das bibliotecas de desenvolvimento do X. Quem quiser e se sentir mais à vontade, pode instalar o GNOME ou o KDE, assim tem acesso a uma série de ferramentas administrativas gráficas.
Se quiser aprender Linux a sério, desaconselho, mas hey, é a minha opinião;
Depois de instalado o passo seguinte é fazer o update ao sistema. Para isso, é preciso primeiro importar a chave GPG do CentOS com que os pacotes são assinados:
# rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-4
Depois, fazer o update ao sistema operativo:
# yum update
No final é preciso reiniciar, pois nas actualizações veio um kernel novo.
Eu costumo editar o ficheiro /etc/sysconfig/i18n e onde está UTF-8, mudo para ISO-8859-1, mas isto é à escolha do freguês.
Se se instalar o mrtg, o crontab executa-o a cada 5 minutos – uma linha para login e outra para logout. Até aqui tudo bem, só que enche o ficheiro /var/log/messages de lixo.
Para pôr os logs do mrtg noutro ficheiro, por exemplo, /var/log/auth, edito o ficheiro /etc/syslog.conf e mudo a linha:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
para:
*.info;auth.none;mail.none;authpriv.none;cron.none /var/log/messages
Adicionar també a linha:
auth.* /var/log/auth
Faço o logrotate também a este ficheiro:
Edito o ficheiro /etc/logrotate.d/syslog e no topo, adiciono a linha:
/var/log/auth
Gravo o ficheiro e faço um restart ao syslogd:
# /etc/init.d/syslog restart
E pronto, os logs do mrtg vão para /var/log/auth.
Alguns serviços que vêm a correr por omissão no sistema, são absolutamente desnecessários e apenas consomem recursos (poucos obviamente, mas quando se tem uma máquina com pouca RAM, tudo conta).
Pessoalmente, costumo sempre desligar o gpm e o pcmcia, pelo menos:
# cd /etc/init.d/
# chkconfig --level 3 gpm off
# chkconfig --level 3 pcmcia off
# ./pcmcia stop
# ./gpm stop
Por outro lado, o OpenLDAP não vem a correr por omissão, pelo que tenho que o colocar:
# chkconfig --level 3 ldap on
# ./ldap start
(se estiver a correr uma interface gráfica, o parâmetro --level do chkconfig deve ser --level 35)
E está o sistema pronto a ser "trabalhado" e a correr :)
I'll keep you posted...
Os comentários são da exclusiva resonsabilidade dos seus autores.
Mário Gamito, 2004 - 2007
Todos os direitos reservados.