Dicas básicas de segurança no FreeBSD
Este artigo, foi desenvolvido por um amigo (Roberto Rodrigues) e outros amigos, são configurações básicas no FreeBSD para evitar problemas básicos, como login do toor e coisas do gênero.
Vamos lá:
--
Remover usuario toor:
pw userdel toor
--
Bloquear o boot -s:
no arquivo /etc/ttys altere a linha:
console none unknown off secure
para
console none unknown off insecure
--
Bloquear alguns sistemas de arquivos para que nao tenham arquivos SUID:
ex: altere o /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
para
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw,nosuid 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw,nosuid 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
--
Sempre limpar o /tmp:
adicione a linha abaixo em /etc/rc.conf
clear_tmp_enable="YES"
--
Desativar o Sendmail
adicione a linha abaixo em /etc/rc.conf
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
--
Colocar o syslogd para trabalhar apenas localmente:
adicione a linha abaixo em /etc/rc.conf
syslogd_flags="-ss"
--
Desabilitando o portmap:
adicione a linha abaixo em /etc/rc.conf
portmap_enable="NO"
--
Desabilitando o inetd caso não seja necessário:
adicione a linha abaixo em /etc/rc.conf
inetd_enable="NO"
--
Dar permissao 640 para /etc/crontab
# chmod 640 /etc/crontab
--
Dar permissao 700 para /root
# chmod 700 /root
--
Evitar que usuarios vejam os processos dos outros:
adicione a linha abaixo em /etc/sysctl.conf
security.bsd.see_other_uids=0
--
Fazer log de conexoes em portas fechadas:
adicione as linhas abaixo em /etc/sysctl.conf
net.inet.tcp.log_in_vain=1
net.inet.udp.log_in_vain=1
as tentativas de conexao serao gravadas em /var/log/messages
--
Alterar o secure level para 1:
adicione as linhas abaixo em /etc/rc.conf
kern_securelevel_enable="YES"
kern_securelevel=1
--
Desabilitar ctrl+alt+del:
recompile o kernel com a seguinte opcao:
options SC_DISABLE_REBOOT
--
Opcoes ICMP:
evita ataques do tipo smurf
icmp_bmcastecho="NO"
icmp_bandlim="YES"
--
'Dropa' pacotes destinados a portas nao abertas:
padrao eh RST
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
--
Opcao TCP:
evita estouro de buffer por pacotes SYN
net.inet.tcp.syncookies=1
--
Aumentando a seguranca do arquivo de senhas:
edite o arquivo /etc/login.conf e adicione as seguintes linhas
:passwd_format=blf: (essa linha deve substituir a primeira, que eh MD5)
:idletime=60:
:passwordtime=30d:
:mixpasswordcase=true:
:minpasswordlen=8:
depois execute o comando
# cap_mkdb /etc/login.conf
agora defina novamente as senhas dos usuarios
# passwd root
para finalizar, no arquivo /etc/auth.conf, devera constar a linha
crypt_default=blf
--
Mudando permissoes de diretorios
# cd /var && mv ./tmp/* /tmp/ && rm –rf tmp && ln –s /tmp tmp
# cd /var/log
# chmod 600 *
# chmod 640 wtmp
# chmod 600 /etc/crontab
# chmod 700 /root
# chmod 700 /home/*
# chmod 650 /etc/rc.*
# chmod 600 /etc/master.passwd
# touch /etc/pf.conf
# chmod 600 /etc/pf.conf
--
Desativando CORE DUMPs:
adicione dentro de /etc/sysctls.conf
kern.coredump=0
--
Não permitir que o super-usuario root efetue login:
( Será necessário entrar com outro )
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off secure
#
ttyv0 "/usr/libexec/getty Pc" cons25 on insecure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on insecure
ttyv2 "/usr/libexec/getty Pc" cons25 on insecure
ttyv3 "/usr/libexec/getty Pc" cons25 on insecure
ttyv4 "/usr/libexec/getty Pc" cons25 on insecure
ttyv5 "/usr/libexec/getty Pc" cons25 on insecure
ttyv6 "/usr/libexec/getty Pc" cons25 on insecure
ttyv7 "/usr/libexec/getty Pc" cons25 on insecure
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure
--
Lembrando que nem tudo que tem aqui é necessário depende do que você guarda no seu servidor, acho interessante aplicar algumas coisas deste artigo.
Isso não é nem de longe uma solução de segurança mas ajuda.
Até mais.
2 Comments:
Belo post, só umas dicas de sys adm pra sys adm :)
chflags(8) é uma boa dica para estas dicas, só cuidado para não se trancar d+.
Soutra coisa fundamental para segurança ao os binários, uma boa política de atualização: portupgrade(8)+make.conf(5) fazem um ótimo trabalho quanto a atualização automática de pacotes, o que é a maior fonte de bugs.
Bloqueas o boot -s pode te trazer maior dor de cabeça que segurança :)
no fstab(5), veja a opção noexec;
O inetd(8), uma dica é utilizar o sshd(8) com o inetd, fazer um script que leia os login suspeitos e adicionar os ips no hosts.allow(5) é uma boa saída para os ataques de brute force, ele também previne spoofing.
os coredumps são muito úteis em um eventual teste "postmortem"
Sobre o acesso ao root no console, utilize opiekey(8) para senhas de uso único, é muito mais seguro que bloquear os consoles.
mas sobre o post, é isso ai, segurança sempre, disculpe se fui chato mas estamos juntos ai para cumprir a nossa meta, servidores seguros. Um abraço!
Que nada Daniel to aberto a correções, so aprendiz meu caro!! hehe toda as dicas são muito bem vindas.
Muito obrigado e valeu!!!
Postar um comentário
<< Home