Getting Started with Linux Server - Starting a firewall script with systemd
ฝัง
- เผยแพร่เมื่อ 29 ก.ย. 2024
- Short ✔ Comment ✔ Share ✔ Sign up ✔
In this lesson we will learn how to create and start a firewall script using systemd
Access to the course: aulaead.thinkif...
Blog: www.professorjo...
Facebook: / professorjosedeassis
Twitter: / joseassis
Google+: plus.google.co...
Linkedin: / professorjosedeassis
SlideShare: en.slideshare.n...
Parabéns pela belíssima didática sem enrolar e sem esconder nada. Gostava de saber se o que o senhor pensa sobre a firewal UFW ao invés do IPTABLES na qual não precisamos criar scripts de inicialização ou ele é mesmo muito simplório para uma empresa, por gentileza
Muito bom manda maisss
Obrigado!
Acompanha o meu blog: www.professorjosedeassis.com.br que sempre estou trazendo mais novidades.
No Face também : facebook.com/professorjosedeassis
Cursos Grátis no portal www.aulaead.com com Certificado, na prática e passo a passo !!! Linux Server, Linux Desktop, Windows Server, CISCO, GNS 3, VOIP, Programação, JAVA com Banco de Dados, Virtualização, REDES, Excel e muito mais !!!
EXCELENTE!!!!
Obrigado!
Professor espero que goste do script, não coloquei cores, mas ficou funcional:
# !/bin/bash
# Funcao 1
# Firewall
firewall()
{
if [[ -f /usr/local/bin/firewall.sh ]]
then
echo "Arquivo ja existente"
else
echo "
# !/bin/bash
iptables -I INPUT -p ICMP -j DROP" > /usr/local/bin/firewall.sh
chmod 777 /usr/local/bin/firewall.sh
echo "Script 'firewall.sh' criado"
fi
}
# Servico do Firewall
firewall_service()
{
if [[ -f /etc/systemd/system/firewall.service ]]
then
echo "Arquivo ja existente"
else
echo "
[Unit]
Description=Firewall
[Service]
ExecStart=/usr/local/bin/firewall.sh start
ExecStop=/usr/local/bin/firewall.sh stop
ExecReload=/usr/local/bin/firewall.sh restart
[Install]
WantebBy=multi-user.target" > /etc/systemd/system/firewall.service
echo "Servico 'firewall.service' criado"
chmod 777 firewall.service
fi
}
# Exclusao de Arquivos
deletar_arquivo()
{
if [[ -f /etc/systemd/system/firewall.service && -f /usr/local/bin/firewall.sh ]]
then
rm -rf /usr/local/bin/firewall.sh
rm -rf /etc/systemd/system/firewall.service
echo "Arquivos excluidos"
else
echo "Arquivos nao existem"
fi
}
# Execucao de Comandos
executar()
{
/usr/local/bin/firewall.sh
systemctl daemon-reload
systemctl enable firewall
systemctl start firewall
systemctl status firewall
}
############
# Programa #
############
clear
i=1
while(( $i == 1 ))
do
echo "Programa Firewall"
echo ""
echo "Tarefas Agendadas"
echo "[1] Criar arquivos de regras de Firewall"
echo "[2] Executar junto ao sistema"
echo "[3] Deletar Arquivo de Regras de Firewall [ICMP]"
echo "[4] Sair"
echo ""
echo -n "Resp: "
read resp
if (( $resp == 1 ))
then
firewall
firewall_service
elif (( $resp == 2))
then
executar
elif (( $resp == 3 ))
then
deletar_arquivo
else
i=2
clear
fi
done
parabéns pelo script, a linguagem shell script é muito usada e cai na certificação LPI
@@ProfessorJosedeAssis Valeu professor. Até dei uma melhorada, vou postar aqui.
@@ProfessorJosedeAssis #!/bin/bash
# Funcao 1
# Firewall
firewall()
{
if [[ -f /usr/local/bin/firewall.sh ]]
then
echo "Arquivo ja existente"
else
echo "#!/bin/bash" > /usr/local/bin/firewall.sh
echo "# Limpar todas as regras pré existentes" >> /usr/local/bin/firewall.sh
echo "iptables -F" >> /usr/local/bin/firewall.sh
echo "iptables -t nat -F" >> /usr/local/bin/firewall.sh
echo "iptables -t mangle -F" >> /usr/local/bin/firewall.sh
echo "# A linha abaixo ativa o módulo do netfilter que evita ataques DoS" >> /usr/local/bin/firewall.sh
echo "echo 1 > /proc/sys/net/ipv4/tcp_syncookies" >> /usr/local/bin/firewall.sh
echo "# Liberar portas dos serviços necessários" >> /usr/local/bin/firewall.sh
echo "iptables -A INPUT -p tcp --dport 22 -j ACCEPT" >> /usr/local/bin/firewall.sh
echo "iptables -A INPUT -p tcp --dport 80 -j ACCEPT" >> /usr/local/bin/firewall.sh
echo "iptables -A INPUT -p tcp --dport 443 -j ACCEPT" >> /usr/local/bin/firewall.sh
echo "iptables -A INPUT -p tcp --dport 3306 -j ACCEPT" >> /usr/local/bin/firewall.sh
echo "# Bloqueio de PING" >> /usr/local/bin/firewall.sh
echo "iptables -I INPUT -p ICMP -j DROP" >> /usr/local/bin/firewall.sh
echo "# A linha abaixo faz o bloqueio de conexões nas demais portas" >> /usr/local/bin/firewall.sh
echo "iptables -A INPUT -p tcp --syn -j DROP" >> /usr/local/bin/firewall.sh
chmod +x /usr/local/bin/firewall.sh
echo "Script 'firewall.sh' criado"
fi
}
# Servico do Firewall
firewall_service()
{
if [[ -f /etc/systemd/system/firewall.service ]]
then
echo "Arquivo ja existente"
else
echo "[Unit]" >> /etc/systemd/system/firewall.service
echo "Description=Firewall" >> /etc/systemd/system/firewall.service
echo "[Service]" >> /etc/systemd/system/firewall.service
echo "ExecStart=/usr/local/bin/firewall.sh start" >> /etc/systemd/system/firewall.service
echo "ExecStop=/usr/local/bin/firewall.sh stop" >> /etc/systemd/system/firewall.service
echo "ExecReload=/usr/local/bin/firewall.sh restart" >> /etc/systemd/system/firewall.service
echo "[Install]" >> /etc/systemd/system/firewall.service
echo "WantebBy=multi-user.target" >> /etc/systemd/system/firewall.service
echo "Servico 'firewall.service' criado"
fi
}
# Exclusao de Arquivos
deletar_arquivo()
{
if [[ -f /etc/systemd/system/firewall.service || -f /usr/local/bin/firewall.sh ]]
then
rm -rf /usr/local/bin/firewall.sh
rm -rf /etc/systemd/system/firewall.service
echo "Arquivos excluidos"
else
echo "Arquivos nao existem"
fi
}
# Execucao de Comandos
executar()
{
/usr/local/bin/firewall.sh
systemctl daemon-reload
systemctl enable firewall
systemctl start firewall
systemctl status firewall
}
############
# Programa #
############
i=1
while(( $i == 1 ))
do
clear
echo "Programa Firewall"
echo ""
echo "Tarefas Agendadas"
echo "[1] Criar arquivos de regras de Firewall"
echo "[2] Executar junto ao sistema"
echo "[3] Deletar Arquivo de Regras de Firewall [ICMP]"
echo "[4] Sair"
echo ""
echo -n "Resp: "
read resp
if (( $resp == 1 ))
then
firewall
firewall_service
echo ""
echo "--- Pressione qualquer tecla ---"
read
elif (( $resp == 2))
then
executar
echo ""
echo "Pressione qualquer tecla"
read
elif (( $resp == 3 ))
then
deletar_arquivo
echo ""
echo "--- Pressione qualquer tecla ---"
read
else
i=2
clear
fi
done
parabéns pelo conteúdo. Gostaria de acrescentar uma coisa:
em alguns casos o serviço pode retornar um erro de execução "process exited, code=exited, status=203/EXEC"
para contornar o problema é preciso indicar /bin/bash antes do caminho do script, ficando assim:
ExecStart=/bin/bash /usr/local/bin/firewall.sh start
ExecStop=/bin/bash /usr/local/bin/firewall.sh stop
ExecReload=/bin/bash /usr/local/bin/firewall.sh restart
Fonte: stackoverflow.com/questions/45776003/fixing-a-systemd-service-203-exec-failure-no-such-file-or-directory?
Agradeço a contribuição
o meu é debian 9, e ao chegar a linha 1 nao digita mais nada, oque devo fazer?
Conseguiu resolver estou com o mesmo problema
Mais uma aula sensacional !!!
Obrigado mestre !!!Acompanha o www.professorjosedeassis.com.br/ que sempre estou trazendo as novidades de TI !!! no Face também : facebook.com/professorjosedeassis Cursos Grátis no portal aulaead.com com Certificado, na prática e passo a passo !!! Linux Server, Linux Desktop, Windows Server, CISCO, GNS 3, VOIP, Programação, JAVA com Banco de Dados, Virtualização, REDES, Excel e muito mais !!!
Professor José de Assis, porque foi criado duas instâncias DROP na chain INPUT quando reinicia o servidor?
Vc deve ter executado o comando duas vezes, eu fiz isso.
Mas é só apagar tudo e refazer .
Tenho uma dúvida, pode me explicar por favor. O arquivo firewall.sh foi criado com uma regra input, no systemd foi configurado para esse arquivo iniciar como um serviço, pelo que entendi. No momento que o servidor é reiniciado e verificado o iptables, em 14:47 há duas regras criadas, porque ? Agradeço antecipadamente.
Allyson, isto acontece pois neste script de exemplo eu não limpei regras pré-existentes antes de iniciar. Esta playlist está em produção, em breve darei continuidade e mostrarei como resolver esta questão.
professor, o certificado no curso ead, como faz pra poder responder as questões dobre os outros módulos?
Depois que respondi as 11 do módulo um, não aprece pra poder continuar o questionário .
O questionário é único para todos os módulos. É só responder e acertar pelo menos 60% que você obtém o certificado.
Professor José de Assis, Não encotro o video da aula 4 desta serie em seus videos
Esta playlist está em produção, em breve voltarei a publicar vídeos aproveitando o lançamento do Debian 11
Não consegui iniciar o serviço do firewall de jeito nenhum. O serviço fica habilitado, mas não fica ativo. Alguém com o mesmo problema?
Prof José, dizer que adorei a sua aula. Estou trabalhando agora em ambiente Linux e as suas aulas estão ajudando bastante. Gostei bastante e já me subscrevi no canal. Escrevi de Luanda/Angola. Muito obrigado
Obrigado pelo apoio.
Aula incrível e de altíssima qualidade, obrigado professor.
Eu que agradeço o elogio, Bons estudos!
Massa.
Professor boa noite. Estou fazendo esse curso na plataforma aulaEAD e estou nessa aula. Já tentei seguindo o passo a passo configurar o firewall mas da vários erros aos quais não consigo corrigir(visto que fiz tudo conforme sua aula). Poderia me orientar ou passar um email de contato? Agradeço pela atenção e aguardo uma resposta.
Gostei demais, aprendi algo que procurava já fazia tempo: criar meus próprios serviços no sistemd. Valeu!
Único que deu certo, obrigado mestre
Disponha!
Excelente Professor, mais uma excelente aula!
Obrigado pelo apoio
Muito Bom professor, muito obrigado.
Obrigado pelo apoio !
Acompanha o meu blog: www.professorjosedeassis.com.br que sempre estou trazendo mais novidades.
No Face também : facebook.com/professorjosedeassis
Cursos Grátis no portal www.aulaead.com com Certificado, na prática e passo a passo !!! Linux Server, Linux Desktop, Windows Server, CISCO, GNS 3, VOIP, Programação, JAVA com Banco de Dados, Virtualização, REDES, Excel e muito mais !!!
muito boa as aulas nota 10, uma sugestão que vai bombar no seu canal , servidores com Slackware 14.2 ou superior ( todo os tipos de serviço que puder realizar )
Obrigado pelo apoio. Sugestão anotada !
Acompanha o meu blog: www.professorjosedeassis.com.br que sempre estou trazendo mais novidades.
No Face também : facebook.com/professorjosedeassis
Cursos Grátis no portal www.aulaead.com com Certificado, na prática e passo a passo !!! Linux Server, Linux Desktop, Windows Server, CISCO, GNS 3, VOIP, Programação, JAVA com Banco de Dados, Virtualização, REDES, Excel e muito mais !!!
Excelente.Grato.
Professor, indica um livro pra fixação desse curso!
Indico este curso:
www.aulaead.com/courses/curso-linux-security-iptables-squid-endian-firewall
Lamento muito o fim do projeto :( você ajudou bastante gente
Novos projetos em produção. Inscreva-se para não perder nenhuma novidade!
Ate este passo as máquinas cliente já deveriam ter acesso a internet ?
Não, para as máquinas clientes acessarem a internet você precisa configurar o NAT no iptables. O curso abaixo ensina a fazer isso:
aulaead.thinkific.com/courses/curso-linux-security-iptables-squid-endian-firewall
Lá está atualizado para o Debian 9 Stretch ?
Estou atualizando(previsão para finalizar em abril). Vou manter o curso com as duas versões do debian (8 e 9)