#!/bin/bash
#
#	2016-08-11 - Rafael Carreiro
#	Instalacao e configuracao do CSF,
#	Utilizado em todos os servidores da Digital Ocean
#
#       Baixar o codigo-fonte no site oficial
wget http://www.configserver.com/free/csf.tgz 2> /dev/null

#       Extrair o pacote
tar -xzf csf.tgz

#       Executar o script de instalacao oficial
cd csf ; sh install.sh

#       Testar modulos do iptables
perl /etc/csf/csftest.pl

#       Desabilitar modo teste
sed -i 's/^TESTING .*/TESTING = "0"/' /etc/csf/csf.conf

#       Definir portas de entrada que serao aceitas (TCP)
sed -i 's/^TCP_IN .*/TCP_IN = "25,80,443,465,587,993,995,2297,9200,9300,10050,10051"/' /etc/csf/csf.conf

#       Definir portas de saida que serao aceitas (TCP)
sed -i 's/^TCP_OUT .*/TCP_OUT = "21,22,25,80,443,465,587,993,995,2297,9200,9300,10050,10051"/' /etc/csf/csf.conf

#       Definir portas de entrada que serao aceitas (UDP)
sed -i 's/^UDP_IN .*/UDP_IN = "53"/' /etc/csf/csf.conf

#       Definir portas de saida que serao aceitas (UDP)
sed -i 's/^UDP_OUT .*/UDP_OUT = "53"/' /etc/csf/csf.conf

#       Proteger contra ataques SYN Flood
sed -i 's/^SYNFLOOD .*/SYNFLOOD = "1"/' /etc/csf/csf.conf

#       Habilitar monitoramento quando houver mais de 100 conexoes por segundo
sed -i 's/^SYNFLOOD_RATE .*/SYNFLOOD_RATE = "100\/s"/' /etc/csf/csf.conf

#       Bloquear IP quando chegar mais de 150 conexoes por segundo
sed -i 's/^SYNFLOOD_BURST .*/SYNFLOOD_BURST = "150"/' /etc/csf/csf.conf

#       Limpar IPs aceitos, caso exista
sed -n -i '/^#/p' /etc/csf/csf.allow

#       Inserir IPs de servidores que poderam se conectar
echo -e "
179.127.59.189  # Ultrawave
159.203.86.190  # Zabbix Inforeason
104.154.88.225  # Zabbix
104.131.126.30  # Bridge VPN
54.194.207.47   # IR
54.77.56.141    # IR2
54.207.26.206   # SP
54.84.128.177   # VA1
54.84.183.198   # VA 2
52.27.229.190   # ECOR
52.202.84.170   # VA01
172.31.31.86    # CA-ES01
52.9.39.107     # CA01
54.153.41.6     # Netuno
" >> /etc/csf/csf.allow

#       Habilitar para atualizar com csf -u
sed -i 's/^URLGET .*/URLGET = "1"/' /etc/csf/csf.conf

#       Recarregar para que tenha efeito as alteracoes
csf -r

#       Mostrar versao atual 
csf -v

#       Mensagem final
echo -e "Instalacao concluida."

##      FIM

