|
|
| (20 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) |
| Linha 5: |
Linha 5: |
| Versão: 1.2 | | Versão: 1.2 |
|
| |
|
| Data: 27/06/2025 | | Data: 17/09/2026 |
|
| |
|
| Autor: reginaldo.lopes@unesp.br | | Autor: reginaldo.lopes@unesp.br |
| Linha 18: |
Linha 18: |
|
| |
|
| *Reduzir o risco de invasões e vazamentos. | | *Reduzir o risco de invasões e vazamentos. |
| *Cumprir normas e requisitos de compliance (CIS Controls, ISO 27001, etc). | | *Cumprir normas e requisitos de compliance (CIS Controls, NIST CSF, etc). |
| *Minimizar o impacto de falhas zero-day. | | *Minimizar o impacto de falhas zero-day. |
| *Aumentar a resiliência do ambiente contra ataques automatizados e direcionados | | *Aumentar a resiliência do ambiente contra ataques automatizados e direcionados |
| Linha 24: |
Linha 24: |
| == Uso == | | == Uso == |
|
| |
|
| '''Passo 1:''' Criar um arquivo <pre>touch hardening_ubuntu24.sh </pre> | | '''Passo 1 ubuntu 26.04:''' |
| | |
| '''Passo 2:''' Permissão de execução <pre>chmod +x hardening_ubuntu24.sh </pre>
| |
| | |
| '''Passo 3:''' Copiar o código a baixo e colar no arquivo criado.
| |
| | |
| <pre> | | <pre> |
| #!/bin/sh
| | wget https://git.reitoria.unesp.br/reginaldo.lopes/wiki-ti/raw/branch/main/hardening_ubuntu26.sh && chmod +x hardening_ubuntu26.sh && ./hardening_ubuntu26.sh |
| ### BEGIN INFO
| |
| # Reginaldo.lopes 30/04/2025
| |
| # Versão 1.1
| |
| ### END INFO
| |
| | |
| case "$1" in
| |
| | |
| up)
| |
| echo "Iniciando ... [ OK ]"
| |
| | |
| # Verifica se é Ubuntu 24.04
| |
| LSB_SR=$(lsb_release -sr) ; LSB_SI=$(lsb_release -si)
| |
| if [ "$LSB_SR" = "24.04" ] && [ "$LSB_SI" = "Ubuntu" ] ; then
| |
| VER="U24"
| |
| else
| |
| echo ""
| |
| echo "Versao de sistema operacional invalido para este script"
| |
| echo ""
| |
| echo "Script homologado para Ubuntu 24.04 LTS"
| |
| echo ""
| |
| echo "Versao detectada:"
| |
| echo "================="
| |
| echo ""
| |
| lsb_release -a
| |
| echo ""
| |
| echo "Saindo do programa"
| |
| exit 1
| |
| fi
| |
| | |
| # Atualizar pacotes do sistema
| |
| echo "Atualizando pacotes do sistema..."
| |
| sudo apt update && sudo apt full-upgrade -y
| |
| | |
| # SSH
| |
| sudo apt install openssh-server -y
| |
| echo "Aplicando hardening no SSH..."
| |
| # Desativar encaminhamento X11, Rodar aplicações gráficas, ex: gedit
| |
| sudo sed -i 's/#X11Forwarding yes/X11Forwarding no/' /etc/ssh/sshd_config
| |
| | |
| # Desativar senhas vazias
| |
| sudo sed -i 's/#PermitEmptyPasswords yes/PermitEmptyPasswords no/' /etc/ssh/sshd_config
| |
| | |
| # Desativar encaminhamento TCP
| |
| echo "AllowTcpForwarding no" | sudo tee -a /etc/ssh/sshd_config
| |
| | |
| # Limitar tentativas de login SSH para mitigar ataques de força bruta
| |
| echo "MaxAuthTries 3" | sudo tee -a /etc/ssh/sshd_config
| |
| | |
| # Desativa completamente o login via SSH com o usuário root, mesmo com chave SSH.
| |
| sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
| |
| | |
| sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
| |
| | |
| sudo sed -i 's/^#AuthorizedKeysFile/AuthorizedKeysFile/' /etc/ssh/sshd_config
| |
| | |
| sudo rm /etc/ssh/sshd_config.d/*
| |
| | |
| echo "Criando banner"
| |
| # Banner no ssh
| |
| # Adiciona o comando para chamar o banner
| |
| echo "Banner /etc/issue.net" | sudo tee -a /etc/ssh/sshd_config
| |
| # Adiciona o banner no arquivo issue.net
| |
| cat << EOF > /etc/issue.net
| |
| *****************************************************
| |
| * UNESP - UNIVERSIDADE ESTADUAL PAULISTA *
| |
| * *
| |
| * ACESSO RESTRITO SOMENTE A PESSOAS AUTORIZADAS ! *
| |
| * *
| |
| * Qualquer acesso nao autorizado podera resultar *
| |
| * em severas penalidades civis e criminais. *
| |
| * *
| |
| * Equipe CSIRT Unesp *
| |
| * security@unesp.br *
| |
| * *
| |
| *****************************************************
| |
| EOF
| |
| ########
| |
| | |
| echo "########################################"
| |
| echo " Adicione a chave SSH"
| |
| echo " Restart o SSH sudo systemctl restart ssh"
| |
| echo "########################################"
| |
| | |
| # NTP
| |
| # Adiciona o NTP da unesp.br e da nic.br
| |
| sudo sed -i 's|^#NTP=.*|NTP=ntp.unesp.br|' /etc/systemd/timesyncd.conf && \
| |
| sudo sed -i 's|^#FallbackNTP=.*|FallbackNTP=a.ntp.br|' /etc/systemd/timesyncd.conf
| |
| # data/hora America/Sao_Paulo
| |
| timedatectl set-timezone America/Sao_Paulo
| |
| # Restart
| |
| systemctl restart systemd-timesyncd
| |
| | |
| ;;
| |
| | |
| *)
| |
| echo " "
| |
| echo "Description: \e[1;32m \e[0m"
| |
| echo "Script para adicionar camadas de segurança no ubuntu 24.04"
| |
| echo " "
| |
| echo "Options: "
| |
| echo " "
| |
| echo "\e[0;32m Hardening: \e[0m"
| |
| echo " - up Iniciar o Hardening"
| |
| echo " "
| |
| echo "Example: "
| |
| echo "./hardening_ubuntu24.sh up"
| |
| echo "./hardening_ubuntu24.sh siem"
| |
| echo "./hardening_ubuntu24.sh firewall"
| |
| echo " "
| |
| | |
| ;;
| |
| esac
| |
| </pre> | | </pre> |
|
| |
|
| '''Passo 4:''' Executar o script <pre>./hardening_ubuntu24.sh </pre>
| |
|
| |
| '''Passo 5:''' Adicione a chave SSH e restart o SSH <pre>sudo systemctl restart ssh</pre>
| |
|
| |
| == Firewall ==
| |
|
| |
| === Firewall v4 ===
| |
|
| |
| '''Passo 1:''' Criar um arquivo <pre>sudo touch /etc/init.d/firewallv4</pre>
| |
|
| |
| '''Passo 2:''' Copiar e colocar o script a seguir no arquivo.
| |
|
| |
| '''Passo 3:''' Modificar o script <IP>, <ifext>, <IP Acesso SSH ex: 200.145.dti.dti>, etc.
| |
|
| |
|
| | '''Passo 1 ubuntu 24.04:''' |
| <pre> | | <pre> |
| #!/bin/sh
| | wget https://git.reitoria.unesp.br/reginaldo.lopes/wiki-ti/raw/branch/main/hardening_ubuntu24.sh && chmod +x hardening_ubuntu24.sh && ./hardening_ubuntu24.sh |
| ### BEGIN INIT INFO
| | </pre> |
| # Provides: firewall
| |
| # Required-Start: $local_fs $network $syslog
| |
| # Required-Stop: $local_fs $network $syslog
| |
| # Default-Start: 2 3 4 5
| |
| # Default-Stop: 0 1 6
| |
| # Short-Description: starts iptables rules
| |
| # Description: starts iptables rules - start-stop-daemon
| |
| ### END INIT INFO
| |
|
| |
|
| iptables=/sbin/iptables
| |
|
| |
|
| case "$1" in
| | '''Passo 2:''' executar conforme descrição do script |
| start)
| |
| echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
| |
| echo "| Script de Firewall IPv4 - IPTABLES"
| |
| echo "| Criado por: CSIRT UNESP"
| |
| echo "| security@unesp.br"
| |
| echo "| Uso: /etc/init.d/firewall start|stop|restart"
| |
| echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
| |
|
| |
|
| echo ""
| |
| echo "Iniciando Firewall [ OK ]"
| |
|
| |
|
| iflo="lo"
| | '''Passo 3:''' Adicione a chave SSH e restart o SSH <pre>sudo systemctl restart ssh</pre> |
| ifext="< INTERFACE ex:eth0>"
| |
| ip="<IP ex:192.168.0.1>"
| |
| #monitor="< ZABBIX>"
| |
| ntp="200.145.255.25"
| |
|
| |
|
| echo "Definindo variaveis [ OK ]"
| | == Firewall == |
|
| |
|
| /sbin/modprobe ip_tables
| | * Disponível no harderning |
| /sbin/modprobe ip_conntrack
| |
| /sbin/modprobe iptable_filter
| |
| /sbin/modprobe ipt_LOG
| |
| /sbin/modprobe ipt_limit
| |
| /sbin/modprobe ipt_state
| |
| /sbin/modprobe ipt_REJECT
| |
| /sbin/modprobe ip_conntrack_tftp
| |
|
| |
|
| echo "Carregamento de Modulos [ OK ]"
| | === Firewall v4 === |
| | |
| $iptables -Z
| |
| $iptables -F
| |
| $iptables -X
| |
| $iptables -F -t nat
| |
| $iptables -X -t nat
| |
| $iptables -F -t mangle
| |
| $iptables -X -t mangle
| |
| | |
| echo "Zerando regras e tabelas [ OK ]"
| |
| | |
| $iptables -I INPUT -d $ip -s 200.145.6.254 -j ACCEPT
| |
| $iptables -I OUTPUT -s $ip -d 200.145.6.254 -j ACCEPT
| |
| $iptables -P INPUT DROP
| |
| $iptables -P FORWARD DROP
| |
| $iptables -P OUTPUT DROP
| |
| $iptables -N valid-src
| |
| $iptables -N valid-dst
| |
| $iptables -N ssh-rules
| |
| $iptables -I INPUT -i $ifext -j valid-src
| |
| $iptables -I OUTPUT -o $ifext -j valid-dst
| |
| | |
| | |
| echo "Criando Politicas Padrao [ OK ]"
| |
| | |
| #Regras de Seguranca
| |
| # Source and Destination Address Sanity Checks
| |
| # Drop packets from networks covered in RFC 1918 (private nets)
| |
| iptables -A valid-src -s 10.0.0.0/8 -j DROP
| |
| iptables -A valid-src -s 172.16.0.0/12 -j DROP
| |
| iptables -A valid-src -s 192.168.0.0/16 -j DROP
| |
| iptables -A valid-src -s 224.0.0.0/4 -j DROP
| |
| iptables -A valid-src -s 240.0.0.0/5 -j DROP
| |
| iptables -A valid-src -s 127.0.0.0/8 -j DROP
| |
| iptables -A valid-src -s 0.0.0.0/8 -j DROP
| |
| iptables -A valid-src -d 255.255.255.255 -j DROP
| |
| iptables -A valid-src -s 169.254.0.0/16 -j DROP
| |
| iptables -A valid-src -s $ip -j DROP
| |
| iptables -A valid-dst -d 224.0.0.0/4 -j DROP
| |
| | |
| echo "BLOQUEIO DE IPs INVALIDOS [ OK ]"
| |
| | |
| # Protecoes na pilha TCP/IP do Kernel
| |
| echo "BLOQUEIO DE ICMP BROADCAST [ OK ]"
| |
| echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
| |
| echo "PROTECAO CONTRA IP SPOOFING [ OK ]"
| |
| echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
| |
| echo "BLOQUEIO DE REDIRECIONAMENTO ICMP [ OK ]"
| |
| for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
| |
| echo 0 >$f
| |
| done
| |
| echo "PROTECAO CONTRA SYNFLOOD [ OK ]"
| |
| echo "1" > /proc/sys/net/ipv4/tcp_syncookies
| |
| echo "PROTECAO CONTRA RESPONSE BOGUS [ OK ]"
| |
| echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
| |
| echo "HABILITANDO SECURE REDIRECTS [ OK ]"
| |
| echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
| |
| echo "PROTECAO CONTRA REDIRECIONAMENTOS DE ROTA [ OK ]"
| |
| echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
| |
| echo 1 > /proc/sys/net/ipv4/tcp_syncookies
| |
| echo "SYN - FLOOD [ OK ]"
| |
| | |
| $iptables -A INPUT -p icmp -d $ip --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
| |
| $iptables -A INPUT -p icmp -d $ip --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
| |
| $iptables -A OUTPUT -p icmp -s $ip --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
| |
| $iptables -A OUTPUT -p icmp -s $ip --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
| |
| | |
| echo "Aplicando limites ICMP [ OK ]"
| |
| | |
| echo "Regras de Segurança Aplicadas [ OK ]"
| |
|
| |
|
| #Regras de INPUT
| | '''Passo 1:''' wget -O /etc/init.d/firewallv4 https://git.reitoria.unesp.br/reginaldo.lopes/wiki-ti/raw/branch/main/firewallv4 && chmod 755 /etc/init.d/firewallv4 && update-rc.d firewallv4 defaults |
| $iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
| |
| $iptables -A INPUT -p tcp -d $ip --dport 22 -j ssh-rules
| |
| #Regras de OUTPUT
| |
| $iptables -A OUTPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
| |
| $iptables -A OUTPUT -s $ip -d $ntp -p udp --dport 123 -j ACCEPT
| |
| $iptables -A OUTPUT -p tcp -s $ip --dport 53 -j ACCEPT
| |
| $iptables -A OUTPUT -p udp -s $ip --dport 53 -j ACCEPT
| |
| $iptables -A OUTPUT -p tcp -s $ip -m multiport --dport 80,443 -j ACCEPT
| |
|
| |
|
| echo "Regras básicas de INPUT/FORWARD [ OK ]"
| | '''Passo 2:''' Modificar o script <IP>, <ifext>, <IP Acesso SSH ex: 200.145.dti.dti>, etc. |
|
| |
|
| $iptables -A INPUT -p ALL -i $iflo -j ACCEPT
| |
| $iptables -A OUTPUT -p ALL -o $iflo -j ACCEPT
| |
|
| |
| echo "Habilitando Conexões Locais [ OK ]"
| |
|
| |
| # SSH - Liberações
| |
| $iptables -A ssh-rules -p tcp -d $ip -s <IP Acesso SSH ex: 200.145.dti.dti> --dport 22 -j ACCEPT
| |
| $iptables -A ssh-rules -p tcp -d $ip --dport 22 -j DROP
| |
|
| |
| echo "Acesso SSH Restrito [ OK ]"
| |
|
| |
| #$iptables -A INPUT -p tcp -i $ifext -d $ip -s $monitor --dport 10050 -j ACCEPT
| |
| #echo "Acesso Zabbix [ OK ]"
| |
|
| |
| # Descomentar abaixo para serviço WEB
| |
| #$iptables -A INPUT -p tcp -s <IP para acessar sua pág> -d $ip -m multiport --dport 443,3000 -j ACCEPT
| |
| #echo "HTTPS [ OK ]"
| |
|
| |
| # Descomentar abaixo para serviço MYSQL
| |
| #$iptables -A INPUT -p tcp -d $ip --dport 3306 -j ACCEPT
| |
| #echo "MYSQL [ OK ]"
| |
|
| |
| # Descomentar abaixo para serviço POSTGRE
| |
| #$iptables -A INPUT -p tcp -d $ip --dport 5432 -j ACCEPT
| |
| #echo "POSTGRE [ OK ]"
| |
|
| |
| # Descomentar abaixo para serviço de backup - Bacula
| |
| #$iptables -A INPUT -p udp -i $ifext -s <IP do bacula> -d $ip -m multiport --dport 9101:9103 -j ACCEPT
| |
| #$iptables -A INPUT -p tcp -i $ifext -s <IP do bacula> -d $ip -m multiport --dport 9101:9103 -j ACCEPT
| |
| #echo "Servidor Bacula [ OK ]"
| |
|
| |
|
| |
| #service fail2ban restart
| |
| #echo "Restarting fail2ban service [ OK ]"
| |
|
| |
| echo "----------------------------------------------"
| |
| echo ""
| |
| echo ""
| |
| echo "Firewall Ativado"
| |
| echo ""
| |
| echo ""
| |
| ;;
| |
|
| |
| stop)
| |
| echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
| |
| echo "| Script de Firewall IPv4 - IPTABLES"
| |
| echo "| Criado por: CSIRT UNESP"
| |
| echo "| security@unesp.br"
| |
| echo "| Uso: /etc/init.d/firewall start|stop|restart"
| |
| echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
| |
|
| |
| echo ""
| |
| echo "Parando Firewall [ OK ]"
| |
|
| |
| $iptables -P INPUT ACCEPT
| |
| $iptables -P FORWARD ACCEPT
| |
| $iptables -P OUTPUT ACCEPT
| |
|
| |
| echo "Criando Politicas Padrao(ACCEPT) [ OK ]"
| |
|
| |
| $iptables -Z
| |
| $iptables -F
| |
| $iptables -X
| |
| $iptables -F -t nat
| |
| $iptables -X -t nat
| |
| $iptables -F -t mangle
| |
| $iptables -X -t mangle
| |
|
| |
| echo "Zerando regras e tabelas [ OK ]"
| |
|
| |
| echo ""
| |
| ;;
| |
|
| |
| restart)
| |
| $0 stop
| |
| sleep 2
| |
| $0 start
| |
| #service fail2ban restart
| |
| ;;
| |
| status)
| |
| # The 'status' option should return one of the LSB-defined return-codes,
| |
| # in particular, return-code 3 should mean that the service is not
| |
| # currently running. This is particularly important for Ansible's 'service'
| |
| # module, as without this behaviour it won't know if a service is up or down.
| |
| RETVAL=0
| |
| ;;
| |
| *)
| |
| echo " Usage: {start|stop|restart}"
| |
| ;;
| |
| esac
| |
| </pre>
| |
|
| |
| * Executar o comando "chmod 755 /etc/init.d/firewallv*"
| |
|
| |
| * Para que o script inicie sempre no boot do sistema, execute o comando <pre>update-rc.d firewallv4 defaults </pre>
| |
|
| |
| * TODO: Adicionar no script /hardening_ubuntu24.sh firewall.
| |
|
| |
|
| === Firewall v6 === | | === Firewall v6 === |
|
| |
|
| '''Passo 1:''' Criar um arquivo <pre>sudo touch /etc/init.d/firewallv6</pre> | | '''Passo 1:''' wget -O /etc/init.d/firewallv6 https://git.reitoria.unesp.br/reginaldo.lopes/wiki-ti/raw/branch/main/firewallv6 && chmod 755 /etc/init.d/firewallv6 && update-rc.d firewallv6 defaults |
| | |
| '''Passo 2:''' Copiar e colocar o script a seguir no arquivo.
| |
| | |
| '''Passo 3:''' Modificar o script <IP>, <ifext>, <IP Acesso SSH ex: 2801:88::dti>, etc.
| |
| | |
| <pre>
| |
| #!/bin/sh
| |
| ### BEGIN INIT INFO
| |
| # Provides: firewallv6
| |
| # Required-Start: $local_fs $network $syslog
| |
| # Required-Stop: $local_fs $network $syslog
| |
| # Default-Start: 2 3 4 5
| |
| # Default-Stop: 0 1 6
| |
| # Short-Description: starts ip6tables rules
| |
| # Description: starts ip6tables rules - start-stop-daemon
| |
| ### END INIT INFO
| |
| | |
| iptables=/sbin/ip6tables
| |
| | |
| case "$1" in
| |
| start)
| |
| echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
| |
| echo "| Script de Firewall IPv6 - IPTABLES"
| |
| echo "| Criado por: CSIRT UNESP"
| |
| echo "| security@unesp.br"
| |
| echo "| Uso: /etc/init.d/firewall start|stop|restart"
| |
| echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
| |
| | |
| echo ""
| |
| echo "Iniciando Firewall [ OK ]"
| |
| | |
| iflo="lo"
| |
| ifext="< INTERFACE ex:eth0>"
| |
| ip="<IP ex2801:88:1000:bf::25> "
| |
| #netapp=""
| |
| #monitor="< ZABBIX>"
| |
| ntp="2801:88:ffff:b0b0::255"
| |
| | |
| echo "Definindo variaveis [ OK ]"
| |
| | |
| /sbin/modprobe ip_tables | |
| /sbin/modprobe ip_conntrack | |
| /sbin/modprobe iptable_filter | |
| /sbin/modprobe ipt_LOG
| |
| /sbin/modprobe ipt_limit
| |
| /sbin/modprobe ipt_state
| |
| /sbin/modprobe ipt_REJECT
| |
| /sbin/modprobe ip_conntrack_tftp
| |
| | |
| echo "Carregamento de Modulos [ OK ]"
| |
| | |
| $iptables -Z
| |
| $iptables -F
| |
| $iptables -X
| |
| $iptables -F -t nat
| |
| $iptables -X -t nat
| |
| $iptables -F -t mangle
| |
| $iptables -X -t mangle
| |
| | |
| echo "Zerando regras e tabelas [ OK ]"
| |
| | |
| $iptables -P INPUT DROP
| |
| $iptables -P FORWARD DROP
| |
| $iptables -P OUTPUT DROP
| |
| $iptables -N valid-src
| |
| $iptables -N valid-dst
| |
| $iptables -N ssh-rules
| |
| $iptables -I INPUT -i $ifext -j valid-src
| |
| $iptables -I OUTPUT -o $ifext -j valid-dst
| |
| | |
| | |
| echo "Criando Politicas Padrao [ OK ]"
| |
| | |
| #Regras de Seguranca
| |
| | |
| echo 1 > /proc/sys/net/ipv4/tcp_syncookies
| |
| echo "SYN - FLOOD [ OK ]"
| |
| echo "----------------------------------------------"
| |
| echo "Seguranca [ OK ]"
| |
| | |
| | |
| #Regras de INPUT
| |
| $iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
| |
| $iptables -A INPUT -p ipv6-icmp -j ACCEPT
| |
| $iptables -A INPUT -p tcp -d $ip --dport 22 -j ssh-rules
| |
| #Regras de OUTPUT
| |
| $iptables -A OUTPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
| |
| $iptables -A OUTPUT -p ipv6-icmp -j ACCEPT
| |
| $iptables -A OUTPUT -s $ip -d $ntp -p udp --dport 123 -j ACCEPT
| |
| $iptables -A OUTPUT -p tcp -m state --state NEW -s $ip --dport 53 -j ACCEPT
| |
| $iptables -A OUTPUT -s $ip -p udp --dport 53 -j ACCEPT
| |
| $iptables -A OUTPUT -p tcp -m state --state NEW -s $ip --dport 80 -j ACCEPT
| |
| $iptables -A OUTPUT -p tcp -m state --state NEW -s $ip --dport 443 -j ACCEPT
| |
| | |
| | |
| echo "Regras de INPUT/FORWARD [ OK ]"
| |
| | |
| $iptables -A INPUT -p ALL -i $iflo -j ACCEPT
| |
| $iptables -A OUTPUT -p ALL -o $iflo -j ACCEPT
| |
| | |
| echo "Habilitando Conexões Locais [ OK ]"
| |
| | |
| $iptables -A ssh-rules -p tcp -m state --state NEW -d $ip -s <IP Acesso SSH ex: 2801:88::dti> --dport 22 -j ACCEPT
| |
| | |
| echo "Acesso SSH Restrito [ OK ]"
| |
| | |
| #$iptables -A INPUT -p tcp -i $ifext -d $ip -s $monitor --dport 10050 -j ACCEPT
| |
| #$iptables -A OUTPUT -p tcp -o $ifext -s $ip -d $monitor --dport 10051 -j ACCEPT
| |
| #echo "Acesso Zabbix [ OK ]"
| |
| | |
| | |
| # Descomente abaixo para servidor WEB
| |
| #$iptables -A INPUT -p tcp -i $ifext -d $ip -m multiport --dport 80,443 -j ACCEPT
| |
| #echo "HTTP"
| |
|
| |
|
| #$iptables -A INPUT -p udp -i $ifext -s XXXXXXXXXXXXX -d $ip -m multiport --dport 9101:9103 -j ACCEPT
| | '''Passo 2:''' Modificar o script <IP>, <ifext>, <IP Acesso SSH ex: 200.145.dti.dti>, etc. |
| #$iptables -A INPUT -p tcp -i $ifext -s XXXXXXXXXXXXX -d $ip -m multiport --dport 9101:9103 -j ACCEPT
| |
| #echo "Servidor Bacula [ OK ]"
| |
|
| |
|
| echo "----------------------------------------------"
| | == checklist rápido antes de colocar em produção == |
| echo ""
| |
| echo ""
| |
| echo "Firewall Ativado"
| |
| echo ""
| |
| echo ""
| |
| ;;
| |
|
| |
|
| stop)
| | [ ] Somente as portas estritamente necessárias para o serviço devem permanecer abertas. |
| echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
| |
| echo "| Script de Firewall IPv6 - IPTABLES"
| |
| echo "| Criado por: CSIRT UNESP"
| |
| echo "| security@unesp.br"
| |
| echo "| Uso: /etc/init.d/firewall start|stop|restart"
| |
| echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
| |
|
| |
|
| echo ""
| | [ ] Acesso administrativo com chave SSH. |
| echo "Parando Firewall [ OK ]"
| |
| iptables=/sbin/ip6tables
| |
|
| |
|
| $iptables -P INPUT ACCEPT
| | [ ] Realizar todas as atualizações antes de colocar em produção. |
| $iptables -P FORWARD ACCEPT
| |
| $iptables -P OUTPUT ACCEPT
| |
|
| |
|
| echo "Criando Politicas Padrao(ACCEPT) [ OK ]"
| | [ ] Os logs devem ser enviados para o Wazuh desde o primeiro boot. |
|
| |
|
| $iptables -Z
| | [ ] Configurar backup conforme a necessidade da VM. |
| $iptables -F
| |
| $iptables -X
| |
| $iptables -F -t nat
| |
| $iptables -X -t nat
| |
| $iptables -F -t mangle
| |
| $iptables -X -t mangle
| |
|
| |
|
| echo "Zerando regras e tabelas [ OK ]"
| | [ ] Scanear a VM com o [https://wiki-ti.unesp.br/index.php/RUNBOOK_Identifica%C3%A7%C3%A3o_de_vulnerabilidades_com_OpenVAS Greenbone]. |
|
| |
|
| echo ""
| | [ ] Alterar senha local e colocar no Gerenciador de senhas. |
| ;;
| |
| | |
| restart)
| |
| $0 stop
| |
| sleep 2
| |
| $0 start
| |
| service fail2ban restart
| |
| ;;
| |
| | |
| *)
| |
| echo " Usage: {start|stop|restart}"
| |
| ;;
| |
| esac
| |
| </pre>
| |
| | |
| * Executar o comando "chmod 755 /etc/init.d/firewallv*"
| |
| | |
| * Para que o script inicie sempre no boot do sistema, execute o comando <pre>update-rc.d firewallv6 defaults </pre>
| |
| | |
| * TODO: Adicionar no script /hardening_ubuntu24.sh firewall.
| |
|
| |
|
| == Histórico de Revisões do Documento == | | == Histórico de Revisões do Documento == |
| Linha 571: |
Linha 80: |
| Versão 1.1 NTP e SSH. | | Versão 1.1 NTP e SSH. |
|
| |
|
| Versão 1.2 apt full-upgrade e install openssh-server | | Versão 1.2 apt full-upgrade e install openssh-server. |
| | |
| | Versão 1.3 Download do firewall no script. |
| | |
| | Versão 1.4 checklist rápido. |
|
| |
|
| == Referências == | | == Referências == |
| [https://downloads.cisecurity.org/#/ Cis controls] | | [https://downloads.cisecurity.org/#/ Cis controls] |
| | |
| | [https://www.youtube.com/watch?v=5WUVslckejA Youtube - Hardening, Superfície de Ataque e Priorização de Vulnerabilidades ] |
| | |
| | [[Arquivo:Hardening.pdf|Hardening, Superfície de Ataque e Priorização de Vulnerabilidades (PDF)]] |