Informática Numaboa - Linux
Debian + Postfix + PostfixAdmin + SquirrelMail
Sab 16 Mai 2009 01:19 |
- Detalhes
- Categoria: Como fazer instalações
- Atualização: Quinta, 28 Janeiro 2010 21:08
- Autor: vovó Vicki
- Acessos: 59434
- Debian + Postfix + PostfixAdmin + SquirrelMail
- A lista de fontes
- Iptables e logcheck
- MySQL, Postfix e Dovecot
- Certificados SSL (Autoridade)
- Certificados SSL (Requisições)
- phpMyAdmin
- SquirrelMail e PostfixAdmin
- SquirrelMail e PostfixAdmin II
- SquirrelMail e PostfixAdmin III
- Configurar SASL e TLS
- Amavis e SpamAssassin
- Amavis, SpamAssassin, ClamAV, Razor, Pyzor
- Amavis
- Amavis II
- Tabelas Bayes e AWL
- Personalizar o SquirrelMail
- Razor, pflogsumm e BIND
- Configurações Postfix adicionais
- Férias no PostfixAdmin
- Quotas, MailGraph e mysql-zrm
- O problema dos Aliases
- Todas as Páginas
Iptables
Por uma questão de segurança, é bom manter o máximo possível do tráfego entre o servidor e os usuários encriptado. Não vamos entrar em detalhes sobre a criptografia usada, vamos apenas fazer uso dela e ponto. Uma das medidas é não abrir a porta 80 (http). Vamos configurar o sistema de modo que os clientes usem a porta 443 (apache2 com SSL), 993 (dovecot-imapd) e 995 (dovecot-pop3d) sempre que possível. Também vamos limitar o acesso ao SSH.
NÃO USE COMO MOSTRADO, ALTERE PRIMEIRO O ENDEREÇO DE REDE (mostrado em negrito). Sugiro que você copie e cole o script no bloco de notas e altere o endereço. Depois copie e transfira o script inteiro (clicando o botão direito do mouse) para o PuTTY:
iptables -F iptables -N FIREWALL iptables -F FIREWALL iptables -A INPUT -j FIREWALL iptables -A FORWARD -j FIREWALL iptables -A FIREWALL -p tcp -m tcp --dport 25 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --dport 80 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --dport 110 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --dport 143 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --dport 443 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --dport 465 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --dport 587 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --dport 993 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --dport 995 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --dport 4650 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp -s 222.222.222.222/24 --dport 22 --syn -j ACCEPT iptables -A FIREWALL -i lo -j ACCEPT iptables -A FIREWALL -p udp -m udp --sport 53 -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --sport 53 -j ACCEPT iptables -A FIREWALL -p udp -m udp --dport 123 -j ACCEPT iptables -A FIREWALL -p udp -m udp --sport 123 -j ACCEPT iptables -A FIREWALL -p udp -m udp --sport 6277 -j ACCEPT iptables -A FIREWALL -p udp -m udp --sport 24441 -j ACCEPT iptables -A FIREWALL -p icmp --icmp-type destination-unreachable -j ACCEPT iptables -A FIREWALL -p icmp --icmp-type source-quench -j ACCEPT iptables -A FIREWALL -p icmp --icmp-type time-exceeded -j ACCEPT iptables -A FIREWALL -p icmp --icmp-type parameter-problem -j ACCEPT iptables -A FIREWALL -p icmp --icmp-type echo-reply -j ACCEPT iptables -A FIREWALL -p icmp --icmp-type echo-request -j ACCEPT iptables -A FIREWALL -p tcp -m tcp --syn -j REJECT iptables -A FIREWALL -p udp -m udp -j REJECT iptables -A FIREWALL -p icmp -j DROP iptables-save > /etc/firewall-rules iptables-restore < /etc/firewall-rules
A porta 22 é usada para conexões SSH. Como trabalho na empresa e em casa, cujos endereços fazem parte de redes diferentes, fiz duas inserções para esta regra no iptables. Digamos que o endereço IP da minha máquina na empresa seja 100.100.100.100 e que o IP da minha máquina em casa seja 200.200.200.200, inseri o seguinte:
iptables -A FIREWALL -p tcp -m tcp -s 100.100.100.100 --dport 22 --syn -j ACCEPT iptables -A FIREWALL -p tcp -m tcp -s 200.200.200.200 --dport 22 --syn -j ACCEPT
Este conjunto de comandos escreve as regras do firewall no arquivo /etc/firewall-rules e as coloca no iptables, mas, toda vez que o servidor for reiniciado, o iptables começa vazio porque não é alimentado com as regras que queremos. Para que isto aconteça vamos inserir um comando que configura o iptables num arquivo que "levanta" as interfaces de rede quando o sistema é iniciado:
vi /etc/network/interfaces
Com o arquivo no editor, insira o texto mostrado numa linha logo abaixo de "iface lo inet loopback":
pre-up iptables-restore < /etc/firewall-rules
E, já que você está aqui, duas linhas abaixo altere allow-hotplug eth0 para:
auto eth0
Salve o arquivo e saia (:wq). Para conferir se o script está realmente povoando as regras do iptables (firewall), dê mais um reboot no servidor:
reboot exit
Se você tiver problemas para acessar remotamente o servidor depois do reboot, o endereço da máquina remota não é o que você indicou. Você vai precisar ir até o servidor para esvaziar o iptables com iptables -F e começar tudo de novo.
Se tudo correu bem (o PuTTY conectou normalmente), dê uma conferida com
iptables -L -v -n
para ver as regras que estão sendo aplicadas.
O que vem a seguir não está relacionado com o iptables, mas está na hora de continuar instalando o ntp, um compilador c, logcheck e mais alguma coisinha:
apt-get install openntpd build-essential make automake1.9 gcc bison flex libc6-dev logcheck logcheck-database flip psmisc dpkg-dev libcurl3 libssh2-1 byacc libbz2-dev
Para mais informações sobre as regras do logcheck e padrões que devem ser incluídos ou ignorados, dê uma olhada em
vi -R /usr/share/doc/logcheck-database/README.logcheck-database.gz
e, para debugar o logcheck, chame:
su -s /bin/bash -c "/usr/sbin/logcheck -otd" logcheck
Agora vamos eliminar alguns itens da base de dados do logcheck. Copie e cole o seguinte:
echo "^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: Kernel logging \(proc\) stopped." >>/etc/logcheck/ignore.d.server/syslogd echo "^\w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: imklog .* log source = /proc/kmsg started." >>/etc/logcheck/ignore.d.server/syslogd echo '^\w{3} [ :0-9]{11} [._[:alnum:]-]+ rsyslogd: \[origin software="rsyslogd" swVersion=.*x-pid=.*x-info="http://www.rsyslog.com"\] restart' >>/etc/logcheck/ignore.d.server/syslogd echo "^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ntpd\[[0-9]+\]: clock is now unsynced$" >>/etc/logcheck/ignore.d.server/ntp echo "^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ntpd\[[0-9]+\]: clock is now synced$" >>/etc/logcheck/ignore.d.server/ntp
Para mais informações sobre as regras e os padrões do logcheck, leia
vi -R /usr/share/doc/logcheck-database/README.logcheck-database.gz
Para debugar o logcheck você pode usar
su -s /bin/bash -c "/usr/sbin/logcheck -otd" logcheck