Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Asterisk & CentOS M03, Notas de estudo de Eletrônica

Procedimentos para instalação do Asterisk com CentOS:

Tipologia: Notas de estudo

2012

Compartilhado em 22/03/2012

professor-delphini-12
professor-delphini-12 🇧🇷

4.5

(4)

13 documentos

1 / 16

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
1
Revisão 1.11
Checklist de segurança para
servidores RedHat 5™ / CentOS 5™
04 Jan 2012
Vila Nova de Gaia, Porto – Portugal.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Pré-visualização parcial do texto

Baixe Asterisk & CentOS M03 e outras Notas de estudo em PDF para Eletrônica, somente na Docsity!

Revisão 1.

Checklist de segurança para

servidores RedHat 5™ / CentOS 5™

04 Jan 2012 Vila Nova de Gaia, Porto – Portugal.

  • Introdução

Servidores baseados em RedHat e CentOS (versão gratuita do RedHat) instalam por padrão diversos serviços e pacotes desnecessários, além de uma configuração padrão um tanto permissiva. Para isto criei este pequeno checklist pós-instalação para adicionar um pouco mais de segurança ao ambiente, além de uma configuração básica de firewall.

Lembre-se de instalar o servidor utilizando apenas o grupo server , desabilite quaisquer interface gráfica, além de consumir memória, espaço em disco e ser inútil, instala diversos arquivos que podem vir a ser vulneráveis no sistema.

Muitas destas dicas também trazem melhorias de desempenho e liberam recursos, principalmente memória, desativando serviços desnecessários. Vamos ao checklist:

1. Nunca utilize o super utilizador root diretamente, crie utilizadores comuns

Devemos sempre evitar o compartilhamento da senha do super utilizador, e obrigatoriamente bloquear quaisquer uso direto do mesmo. Para isto, devemos primeiramente adicionar os utilizadores administradores do sistema. Isto deve-se ao fato de que quando se permite o acesso remoto como super utilizador, estamos vulneráveis a uma palavra passe apenas, além de não termos muitas informações registradas. Quando se utiliza utilizadores comuns que se tornam super utilizador, fica registrado quem utilizou e quando estes poderes.

2. Criar o utilizador de suporte

É muito importante ter um utilizador para o suporte, e ter o habito de mudar a password deste utilizador toda vez que realizar um procedimento neste servidor. Para criar um utilizador siga os passos abaixo:

**# adduser suporte

passwd suporte**

Changing password for user suporte. New UNIX password: 12345678 BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: 12345678 passwd: all authentication tokens updated successfully.

quando solicitado a password coloque “12345678”. Obs.: tudo minúsculo.

Para instalar o pacote do servidor e o pacote do cliente execute os comandos abaixo;

# yum -y install openssh-server openssh-clients

Inicie o serviço:

# chkconfig sshd on

# service sshd start

Medidas de segurança: edite “/etc/ssh/sshd_config”, para isto utilize o editor de sua preferencia:

# vim /etc/ssh/sshd_config

Mudar a porta padrão, ou seja fazer o ssh executar em uma porta não-padrão como

3030 ;

Port 3030 ( linha 13 )

Protoco 2,

Para desabilitar o login do “root”, editar ou adicionar a seguinte linha:

PermitRootLogin no ( retire o # descomente linha 39 )

HostbasedAuthentication no

PermitEmptyPasswords no

UsePrivilegeSeparation yes

AllowTcpForwarding no

X11Forwarding no

StrictModes yes

Outra opções que devem ser levada em consideração, mas que gera uma possível

manutenção posterior, é a limitação dos usuários que podem utilizar este serviço,

através da opção AllowUsers. Ou seja, basta adicionar no arquivo de configuração:

AllowUsers suporte user2 user3 ( incluir contexto na linha 42 )

Na ultima se estiver comentada, descomete, se não tiver, inclua o texto abaixo;

Subsystem sftp /usr/libexec/openssh/sftp-server ( verifique a linha 120, se

estiver comentada, remova o # descomente )

Guarde e feche o ficheiro. Depois de feita as alterações, force a atualização do serviço utilizando o comando: # service sshd restart

6. Desabilite o acesso remoto a serviços portmap

Na grande maioria das vezes, não utilizamos o serviço portmap , e o mesmo é uma grande fonte de vulnerabilidades e por isto, iremos bloquear o acesso a ele. Primeiramente, iremos bloquear totalmente o acesso a este serviço, editando o arquivo /etc/hosts.deny e adicionando a seguinte linha: portmap: ALL

Agora liberamos o acesso apenas para o próprio servidor, ou seja, localhost , editando o arquivo /etc/hosts.allow e adicionando as seguintes linhas: portmap: localhost portmap: 127.0.0. portmap: 192.168.1. Caso você utilize este serviço, adicione no arquivo de permissões o endereço e o IP do cliente.

7. Remover serviços desnecessários

A seguinte lista de serviços deve ser removido, e claro que você deve ajustar esta lista para contemplar a sua necessidade:

NetworkManager NetworkManagerDispatacpid apmd autofs avahi-daemon avahi-dnsconfd bluetooth conman cpuspeed cups dc_client dc_server dhcdbd dund firstboot gpm haldaemon

8. Remova pacotes desnecessários

A seguinte lista de pacotes devem ser removidos, e claro que você deve ajustar esta lista para contemplar a sua necessidade:

acpid alsa-lib alsa-utils apmd bluez-gnome centos-release-notes cpuspeed dos2unix dosfstools esound finger firstboot-tui GConf gnome-mime-data gnome-mount gnome-python2-bonobo gnome-python2-canvas gnome-python2-extras gnome-python2-gconf gnome-python2-gnomevfs gnome-python2-gtkhtml gpm hicolor-icon-theme metacity NetworkManager nfs-utils OpenIPMI OpenIPMI-libs portmap redhat-menus samba samba-client samba-common subversion system-config-display system-config-kdump system-config-network system-config-nfs system-config-samba system-config-securitylevel system-config-soundcard

talk tux xkeyboard-config xorg-x11-drv-evdev xorg-x11-drv-keyboard xorg-x11-drv-mouse xorg-x11-drv-vesa xorg-x11-drv-void xorg-x11-filesystem xorg-x11-fonts-base xorg-x11-server-utils xorg-x11-server-Xnest xorg-x11-server-Xorg xorg-x11-server-Xvfb xorg-x11-utils xorg-x11-xauth xorg-x11-xfs xorg-x11-xinit xorg-x11-xkb-utils ypbind yp-tools

Crie um arquivo (por exemplo, pacotes-a-remover.txt ) contendo a lista que deve ser removida, e utilize o seguinte script para facilitar o trabalho:

# for pkg in $(cat pacotes-a-remover.txt); do rpm -e $pkg; done

Muitos pacotes podem não ser removidos por existirem dependência, ou nem estarem instalados.

9. Resolução de nomes de máquinas

Você deve certificar-se que o próprio servidor está listado no arquivo de hosts, relacionando o mesmo a localhost e IP 127.0.0.1. Edite o arquivo /etc/hosts e localizando a seguinte linha:

127.0.0.1 SERVIDOR.DOMINIO SERVIDOR localhost.localdomain localhost

Caso não esteja listado, adicione. Edite também o arquivo /etc/host.conf e altere a ordem de pesquisa para respeitar primeiramente o arquivo de hosts local, depois utilizar o DNS externo. Além disto, devemos habilitar o retorno de múltiplas respostas e a proteção de spoof. O arquivo deve ficar assim:

Aqui segue um exemplo de como é uma configuração padrão no /etc/fstab :^10

/dev/VolGroup00/LogVol01 /tmp ext3 defaults 1 1 /dev/VolGroup00/LogVol02 /home ext3 defaults 1 1

E como deve ficar após a alteração:

/dev/VolGroup00/LogVol01 /tmp ext3 noexec,nodev,nosuid 1 1 /dev/VolGroup00/LogVol02 /home ext3 noexec,nodev,nosuid 1 1

Para remontar novamente estas partições sem reinicializar o servidor, utilize o comando:

mount -o remount /tmp mount -o remount /home

12. Desabilite consoles desnecessários

Edite o arquivo /etc/inittab e desabilite os consoles de 3 a 6, comentando ou removendo as seguintes linhas:

3:2345:respawn:/sbin/mingetty tty 4:2345:respawn:/sbin/mingetty tty 5:2345:respawn:/sbin/mingetty tty 6:2345:respawn:/sbin/mingetty tty

Para forçar as alterações realizadas, utilize o comando:

# telinit q

13. Habilite o sincronismo de hora

Manter os relógios dos servidores sincronizados é essencial para a boa saúde dos seus sistemas, e mais ainda para a saúde mental do auditor (e do técnico que vai escrever um relatório para ele) em caso de auditorias. Não é necessário possuir um servidor NTP em sua rede, visto que hoje em dia as conexões de internet são muito confiáveis e rápidas, podemos utilizar o próprio pool de servidores do ntp.org. Verifique se o pacote ntp está instalado, utilizando o comando:

# rpm -qi ntp

Se retornar a mensagem “ package ntp is not installed ”, você terá que instalar o pacote, utilizando o seguinte comando:

# yum install ntp

Uma vez instalado, edite o arquivo /etc/ntp.conf , e confira se a lista de servidores está habilitada. No caso do CentOS, a lista de servidores utilizada é:

server 0.centos.pool.ntp.org server 1.centos.pool.ntp.org server 2.centos.pool.ntp.org

E no RedHat, utiliza-se os seguintes servidores:

server 0.rhel.pool.ntp.org server 1.rhel.pool.ntp.org server 2.rhel.pool.ntp.org

Antes de habilitar o serviço, sincronize o relógio do servidor, utilizando o comando (troque o servidor para centos ou rhel, dependendo do seu caso):

# ntpdate 0.centos.pool.ntp.org

Depois habilite o serviço de NTP, utilizando os comandos:

**# service ntpd start

chkconfig ntpd on**

Você pode eleger um servidor da sua rede para manter o sincronismo com servidores do ntp.org, e ele propagar este serviço para sua rede de servidores.

Para isto, você deve incluir o endereço da sua rede no arquivo /etc/ntp.conf , adicionando a seguinte informação:

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

Alterando a rede e a máscara para a sua configuração. Lembre-se de reinicializar o serviço caso tenha alterado.

Nos outros servidores da sua rede, comente ou remova os servidores externos, e adicione o IP do seu servidor NTP. Para testar, pode utilizar o mesmo comando ntpdate com o IP do seu servidor como parâmetro.

FIN,PSH,URG -j tcpflags /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j tcpflags /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j tcpflags /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j tcpflags /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j tcpflags /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j tcpflags /sbin/iptables -A OUTPUT -d 127.0.0.0/8 -o! lo -j logspoof /sbin/iptables -A OUTPUT -s 127.0.0.0/8 -o! lo -j logspoof /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j tcpflags /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j tcpflags /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j tcpflags /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j tcpflags /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j tcpflags /sbin/iptables -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j tcpflags

Para que as alterações feitas no iptables sejam mantidas quando reinicializado o servidor, devemos gravá-las utilizando o seguinte comando:

service iptables save

16. Bloqueando tráfego de redes privadas

Por que permitir tráfego de redes privadas (listadas na RFC 1918 [1]) em servidores com tráfego exclusivo de internet? Para bloquear este tráfego, utilize:

/sbin/iptables -N loginternal /sbin/iptables -A loginternal -m limit --limit 3/min --limit-burst 3 -j LOG --log- prefix "Private network: " --log-level info /sbin/iptables -A loginternal -j DROP /sbin/iptables -A INPUT -d 10.0.0.0/8 -j loginternal /sbin/iptables -A INPUT -s 10.0.0.0/8 -j loginternal /sbin/iptables -A INPUT -d 192.168.0.0/16 -j loginternal /sbin/iptables -A INPUT -s 192.168.0.0/16 -j loginternal /sbin/iptables -A INPUT -d 172.16.0.0/12 -j loginternal /sbin/iptables -A INPUT -s 172.16.0.0/12 -j loginternal /sbin/iptables -A OUTPUT -d 10.0.0.0/8 -j loginternal

/sbin/iptables -A OUTPUT -s 10.0.0.0/8 -j loginternal /sbin/iptables -A OUTPUT -d 192.168.0.0/16 -j loginternal /sbin/iptables -A OUTPUT -s 192.168.0.0/16 -j loginternal /sbin/iptables -A OUTPUT -d 172.16.0.0/12 -j loginternal /sbin/iptables -A OUTPUT -s 172.16.0.0/12 -j loginternal

Lembre-se de gravar as alterações realizadas no firewall utilizando o comando:

# service iptables save

17. Bloqueando ataques de força bruta

Hoje em dia, ataques de força bruta contra serviços tipo SSH são extremamente comuns. Este tipo de ataque cessa caso o servidor pare de responder. Utilizando iptables , podemos criar uma regra para registrar e bloquear temporariamente o IP que acessar mais de 3 vezes com intervalos menores que 1 minuto este serviço (ou outros, como FTP ). Para tal, utilize os seguintes comandos:

/sbin/iptables -N logforce /sbin/iptables -A logforce -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "Brute force: " --log-level info /sbin/iptables -A logforce -j DROP /sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource /sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name SSH --rsource -j logforce

O tempo de bloqueio é o mesmo tempo de intervalo máximo entre as tentativas, que neste caso é de 1 minuto (60 segundos). Não custa lembrar novamente de salvar as alterações realizadas no firewall utilizando o comando:

# service iptables save

Sempre que você alterar alguma configuração através do comando iptables , e quiser manter esta configuração mesmo após a reinicialização do servidor, utilize o seguinte comando:

# service iptables save

Para transformar seu firewall em restritivo, habilitando acesso somente as portas 22 e 80 TCP , utilize os seguintes comandos:

/sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

É interessantes neste caso liberar todo acesso através da interface de loopback (lo). Para isto, utilize os seguintes comandos:

/sbin/iptables -A INPUT -i lo -j ACCEPT /sbin/iptables -A OUTPUT -o lo -j ACCEPT

Caso você queira registrar tentativas de conexão a quaisquer outra porta que não esteja habilitada, utilize o seguinte comando:

/sbin/iptables -A INPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "Dropped: " --log-level info

Se for adicionado outras regras de permissão após este comando, deve-se alterar manualmente o arquivo de regras e posicioná-la como última regra de entrada, caso contrário irá registrar todos pacotes de regras que estiverem abaixo dela também.

Por enquanto estas são as dicas que conheço, e com o tempo vou alterando este artigo para atualizações ou inclusão de novas dicas. Caso você tenha uma dica para incluir, envie como comentário que será muito bem vindo!

  • Histórico

 1.0 – 13/Dez/2010 – Primeira versão.  1.1 – 14/Dez/2010 – Adicionado item sobre Apache e PHP.  1.2 – 20/Dez/2010 – Adicionado item sobre algorítimo de criptografia de senhas.  1.3 – 04/Jan/2012 – Adicionado criar utilizador

  • Fonte

Professor Especialista Angelo de Barros Delphini

Endereços neste artigo: [1] RFC 1918: http://www.ietf.org/rfc/rfc1918.txt