Script de Inicialização

1. Script de Inicialização

Everton Souza
brunosouza141

(usa Outra)

Enviado em 25/08/2021 - 17:06h

Eu criei um serviço para inicializar o meu script que executa os comandos configurando o firewall através do iptables, se eu der um SYSTEMCTL START FIREWALL ele executa o script normalmente, mas mesmo se eu der um SYSTEMCTL ENABLE FIREWALL ele não dá boot na inicialização.
Configuração do serviço:
[Unit]
Description="Firewall"
After=network.target

[Service]
Type=simple
ExecStart=/bin/bash /usr/local/bin/firewall.sh start
TimeoutStartSec=0
[Install]
WantedBy=default.target

O script:

#!/bin/bash


echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p icmp -j ACCEPT

iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.100.0/24 -d 0/0 --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.100.0/24 -d 0/0 --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

O output do SYSTEMCTL STATUS FIREWALL:

firewall.service - "Firewall"
Loaded: loaded (/usr/lib/systemd/system/firewall.service; enabled; vendor preset: disabled)
Active: inactive (dead)


  


2. Re: Script de Inicialização

Carlos A. P. Cunha
Carlos_Cunha

(usa Linux Mint)

Enviado em 25/08/2021 - 19:04h

brunosouza141 escreveu:

Eu criei um serviço para inicializar o meu script que executa os comandos configurando o firewall através do iptables, se eu der um SYSTEMCTL START FIREWALL ele executa o script normalmente, mas mesmo se eu der um SYSTEMCTL ENABLE FIREWALL ele não dá boot na inicialização.
Configuração do serviço:
[Unit]
Description="Firewall"
After=network.target

[Service]
Type=simple
ExecStart=/bin/bash /usr/local/bin/firewall.sh start
TimeoutStartSec=0
[Install]
WantedBy=default.target

O script:

#!/bin/bash


echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p icmp -j ACCEPT

iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.100.0/24 -d 0/0 --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.100.0/24 -d 0/0 --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

O output do SYSTEMCTL STATUS FIREWALL:

firewall.service - "Firewall"
Loaded: loaded (/usr/lib/systemd/system/firewall.service; enabled; vendor preset: disabled)
Active: inactive (dead)


Provável que ele não esteja colocando na inicialização por o script não esta seguindo alguns "boas praticas necessárias", adicione no topo do script isso(depois vc pode alterar para o que melhor lhe seria):


### BEGIN INIT INFO
# Provides: iptables
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Firewall
# Description: Firewall
### END INIT INFO


Depois execute:

systemctl daemon-reload
systemctl enable SEU-SERVICE

# Ver se esta OK
systemctl is-enabled SEU-SERVICE



Se tudo OK, de reboot e valide.

#-------------------------------------------------------------------------------------#
"Falar é fácil, me mostre o código." - Linus Torvalds
#-------------------------------------------------------------------------------------#



3. Re: Script de Inicialização

Everton Souza
brunosouza141

(usa Outra)

Enviado em 26/08/2021 - 10:18h


Carlos_Cunha escreveu:

brunosouza141 escreveu:

Eu criei um serviço para inicializar o meu script que executa os comandos configurando o firewall através do iptables, se eu der um SYSTEMCTL START FIREWALL ele executa o script normalmente, mas mesmo se eu der um SYSTEMCTL ENABLE FIREWALL ele não dá boot na inicialização.
Configuração do serviço:
[Unit]
Description="Firewall"
After=network.target

[Service]
Type=simple
ExecStart=/bin/bash /usr/local/bin/firewall.sh start
TimeoutStartSec=0
[Install]
WantedBy=default.target

O script:

#!/bin/bash


echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p icmp -j ACCEPT

iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.100.0/24 -d 0/0 --dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.100.0/24 -d 0/0 --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

O output do SYSTEMCTL STATUS FIREWALL:

firewall.service - "Firewall"
Loaded: loaded (/usr/lib/systemd/system/firewall.service; enabled; vendor preset: disabled)
Active: inactive (dead)


Provável que ele não esteja colocando na inicialização por o script não esta seguindo alguns "boas praticas necessárias", adicione no topo do script isso(depois vc pode alterar para o que melhor lhe seria):


### BEGIN INIT INFO
# Provides: iptables
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Firewall
# Description: Firewall
### END INIT INFO


Depois execute:

systemctl daemon-reload
systemctl enable SEU-SERVICE

# Ver se esta OK
systemctl is-enabled SEU-SERVICE



Se tudo OK, de reboot e valide.

#-------------------------------------------------------------------------------------#
"Falar é fácil, me mostre o código." - Linus Torvalds
#-------------------------------------------------------------------------------------#


Muito obrigado pela resposta mas não surtiu efeito.
Eu sei que ainda tenho que aprender bastante de como montar meu script, e é por isso que preciso de ajuda.
o Interessante é que se eu colocar o " iptables -P INPUT DROP" no começo do código ele funciona e executa esse comando, mas o resto não executa. Posso colocar esse comando no começo, meio ou fim, ele é executa do DROP rsrs



4. Re: Script de Inicialização

Carlos A. P. Cunha
Carlos_Cunha

(usa Linux Mint)

Enviado em 26/08/2021 - 12:04h




Muito obrigado pela resposta mas não surtiu efeito.
Eu sei que ainda tenho que aprender bastante de como montar meu script, e é por isso que preciso de ajuda.
o Interessante é que se eu colocar o " iptables -P INPUT DROP" no começo do código ele funciona e executa esse comando, mas o resto não executa. Posso colocar esse comando no começo, meio ou fim, ele é executa do DROP rsrs


Agora que reparei também, vc não tem a função start no seu script de firewall , logo não vai funcionar mesmo
Tente remover o "start" e teste acredito que deve funcionar, já que sua ideia e só executar o mesmo...., caso não funcionar terá que criar a função de start dentro do script.

Algo assim:


case $1 in

start)
echo "Start Firewall"
-> REGRAS PARA QUANDO INICIAR
;;
stop)
echo "Stop Firewall"
-> REGRAS REMOVIDAS QUANDO PARAR
;;
*)
echo "Opção inválida"
;;

esac





#-------------------------------------------------------------------------------------#
"Falar é fácil, me mostre o código." - Linus Torvalds
#-------------------------------------------------------------------------------------#







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts