[Systemd] Problème de création d'un service (Résolu)

Applications, problèmes de configuration réseau
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

[Systemd] Problème de création d'un service (Résolu)

Message par niccoper »

Bonjour,

j'essaye de créer un service systemd lançant un script bash. Cependant, à l'issue de l'installation, lors du lancement du service, le script ne semble pas avoir été exécuté. Pourriez-vous me donner un coup de main svp ?

Ci-dessous les étapes de la démarche

1 - Script à lancer au démarrage

J'ai repris et modifié un script existant, nommé firewall.sh, destiné à appliquer des règles iptables. Le script fonctionne correctement. lorsque le script est lancé avec le paramètre "start", il applique bien les règles voulues (visibles avec iptables -L). Même chose, si le script est lancé avec stop, les règles par défaut sont appliquées.

Code : Tout sélectionner

#! /bin/sh
### BEGIN INIT INFO
# Provides:          firewall
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       firewall set up
#                    placed in /etc/init.d.
### END INIT INFO

# Author: Foo Bar <mapomme@>
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Setting up the system firewall"
NAME=firewall.sh
#~ DAEMON=/usr/sbin/$NAME
#~ DAEMON_ARGS="--options args"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
#~ [ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
#~ [ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
#~ . /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
#~ . /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
start()
{
	#~ # Return
	#~ #   0 if daemon has been started
	#~ #   1 if daemon was already running
	#~ #   2 if daemon could not be started
	#~ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
		#~ || return 1
	#~ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
		#~ $DAEMON_ARGS \
		#~ || return 2
	#~ # Add code here, if necessary, that waits for the process to be ready
	#~ # to handle requests from services started subsequently which depend
	#~ # on this one.  As a last resort, sleep for some time.

	### Flush puis purge des anciennes règles ###
	iptables -F
	iptables -X

	### Politique par défaut => Tout est refusé ###
	iptables -P INPUT DROP
	iptables -P FORWARD DROP
	iptables -P OUTPUT DROP

	# DNS
	iptables -A INPUT -p udp -m udp --sport 53 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
	iptables -A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 
	
	# HTTP
	iptables -A INPUT -p tcp -m tcp --sport 80 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
	iptables -A OUTPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 
	
	# HTTPS
	iptables -A INPUT -p tcp -m tcp --sport 443 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
	iptables -A OUTPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 
	
	# TOR (+ autorisations sur localhost, cf fin du fichier)
	iptables -A INPUT -p tcp -m tcp --sport 9001 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
	iptables -A OUTPUT -p tcp -m tcp --dport 9001 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 
	
	# FTP
	iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 
	iptables -A INPUT -p tcp -m tcp --sport 21 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

	# NTP
	iptables -A OUTPUT -p tcp -m tcp --dport 3596 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 
	iptables -A INPUT -p tcp -m tcp --sport 3596 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

	# DCH Client
	iptables -A OUTPUT -p tcp -m tcp --dport 5209 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 
	iptables -A INPUT -p tcp -m tcp --sport 5209 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

	#ICMP depuis le réseau local
	iptables -A OUTPUT -d 192.168.0.0/24 -p icmp -j ACCEPT
	iptables -A INPUT -s 192.168.0.0/24 -p icmp -j ACCEPT
	
	#Autoriser le traffic sur localhost notamment pour TOR
	iptables -A OUTPUT -d 127.0.0.1 -s 127.0.0.1 -j ACCEPT
	iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
}

#
# Function that stops the daemon/service
#
stop()
{
	#~ # Return
	#~ #   0 if daemon has been stopped
	#~ #   1 if daemon was already stopped
	#~ #   2 if daemon could not be stopped
	#~ #   other if a failure occurred
	#~ start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
	#~ RETVAL="$?"
	#~ [ "$RETVAL" = 2 ] && return 2
	#~ # Wait for children to finish too if this is a daemon that forks
	#~ # and if the daemon is only ever run from this initscript.
	#~ # If the above conditions are not satisfied then add some other code
	#~ # that waits for the process to drop all resources that could be
	#~ # needed by services started subsequently.  A last resort is to
	#~ # sleep for some time.
	#~ start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	#~ [ "$?" = 2 ] && return 2
	#~ # Many daemons don't delete their pidfiles when they exit.
	#~ rm -f $PIDFILE
	#~ return "$RETVAL"
	
	### Flush puis purge des anciennes règles ###
	iptables -F
	iptables -X

	### Politique par défaut => Tout est accepté ###
	iptables -P INPUT ACCEPT
	iptables -P FORWARD ACCEPT
	iptables -P OUTPUT ACCEPT
}

#
# Function that sends a SIGHUP to the daemon/service
#
reload() {
	#
	# If the daemon can reload its configuration without
	# restarting (for example, when it is sent a SIGHUP),
	# then implement that here.
	#
	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
	return 0
}

case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  status)
	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
	;;
  #reload|force-reload)
	#
	# If do_reload() is not implemented then leave this commented out
	# and leave 'force-reload' as an alias for 'restart'.
	#
	#log_daemon_msg "Reloading $DESC" "$NAME"
	#do_reload
	#log_end_msg $?
	#;;
  reload|force-reload|restart|force-reload)
	#
	# If the "reload" option is implemented then remove the
	# 'force-reload' alias
	#
	log_daemon_msg "Restarting $DESC" "$NAME"
	stop
	case "$?" in
	  0|1)
		start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		esac
		;;
	  *)
		# Failed to stop
		log_end_msg 1
		;;
	esac
	;;
  *)
	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
	exit 3
	;;
esac

if test "$2" = "-v"; then
	echo "Firewall activé"
	echo "Appuyez sur une touche pour continuer"
	read touche
fi

:


J'ai copié le script dans /usr/lib/systemd/

2 - Création du service

J'ai créé ensuite un service, nommé "firewall.sh", avec des options qui me paraissent adaptées à mon cas, notamment "Type=oneshot", comme préconisé dans la page du wiki consacrée à systemd (https://wiki.archlinux.org/index.php/Systemd)

Code : Tout sélectionner

[Unit]
Description=Firewall Rules

[Service]
Type=oneshot
ExecStart=/usr/lib/systemd/scripts/firewall.sh start
ExecStop=/usr/lib/systemd/scripts/firewall.sh stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
J'ai enregistré le service dans /usr/lib/systemd/system/

J'ajoute le service aux services lancé au démarrage avec

Code : Tout sélectionner

systemctl enable firewall
Cependant, lorsque je lance le service avec "systemctl start firewall" ou que je redémarre, le script ne semble pas avoir été exécuté, car lorsque j'exécute "iptables -L", j'ai en retour les règles de iptables par défaut, en l'occurence :

Code : Tout sélectionner

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   
Je n'ai pas de message d'erreur. J'ai tenté des modifications du fichier firewall.service et aucune n'a été probante.

Quelqu'un aurait une idée svp ?
Dernière modification par niccoper le dim. 26 avr. 2015, 19:06, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Systemd] Problème de création d'un service

Message par benjarobin »

La question que je me pose c'est surtout pourquoi tu n'utilises pas ce qui est déjà fournit par le système... Il y a tout ce qu'il faut pour gérer iptable voir le Wiki
Sinon voir les log du service créé
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

Re: [Systemd] Problème de création d'un service

Message par niccoper »

Bonjour benjarobin,

merci d'avoir prêté attention à mon message.

J'ai deux OS Linux sur ma machine, j'aurais aimé utiliser le même script pour les deux afin d'éviter des efforts de maintenance superflus. Par ailleurs je trouvais l'occasion intéressante de me familiariser avec les services de systemd. Pour finir, j'ai essayé de suivre le wiki de iptables mais j'ai systématiquement des erreurs. Lorsque je mets les règles que je souhaite dans /etc/iptables/iptables.rules (qui me semblent être correctement écrites), iptable ne démarre pas et plante sur la première ligne. Voir ci-dessous

1 - Utilisation de iptables

/etc/iptables/iptables.rules :

Code : Tout sélectionner

### Flush puis purge des anciennes règles ###
/usr/bin/iptables -F
iptables -X

### Politique par défaut => Tout est refusé ###
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# DNS
iptables -A INPUT -p udp -m udp --sport 53 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 

# HTTP
iptables -A INPUT -p tcp -m tcp --sport 80 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 

# HTTPS
iptables -A INPUT -p tcp -m tcp --sport 443 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 

# TOR (+ autorisations sur localhost, cf fin du fichier)
iptables -A INPUT -p tcp -m tcp --sport 9001 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 9001 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 

# FTP
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --sport 21 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# NTP
iptables -A OUTPUT -p tcp -m tcp --dport 3596 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --sport 3596 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# DCH Client
iptables -A OUTPUT -p tcp -m tcp --dport 5209 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT 
iptables -A INPUT -p tcp -m tcp --sport 5209 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

#ICMP depuis le réseau local
iptables -A OUTPUT -d 192.168.0.0/24 -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p icmp -j ACCEPT

#Autoriser le traffic sur localhost notamment pour TOR
iptables -A OUTPUT -d 127.0.0.1 -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
Résultat de la commande journalctl -xe :

Code : Tout sélectionner

-- L'unité (unit) iptables.service a commencé à démarrer.
avril 26 18:03:31 ncfa iptables-restore[1728]: iptables-restore: line 2 failed
avril 26 18:03:31 ncfa systemd[1]: iptables.service: main process exited, code=exited, status=1/FAILURE
avril 26 18:03:31 ncfa systemd[1]: Failed to start Packet Filtering Framework.
-- Subject: L'unité (unit) iptables.service a échoué
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unité (unit) iptables.service a échoué, avec le résultat failed.
avril 26 18:03:31 ncfa systemd[1]: Unit iptables.service entered failed state.
avril 26 18:03:31 ncfa systemd[1]: iptables.service failed.
avril 26 18:03:31 ncfa polkitd[470]: Unregistered Authentication Agent for unix-process:1723:188451 (system bus name :1.34, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale fr_FR.utf8) (disconnected from bus)
2 - Création d'un service firewall.sh

Pour en revenir à nos moutons, peux-tu m'indiquer quels log je dois regarder stp ? Parce que la commande "journal -xe" lorsque j'exécute la commande "systemctl start firewall" ne renvoie rien, de ce que j'en comprends, de significatif :

Code : Tout sélectionner

-- Subject: L'unité (unit) firewall.service a terminé son arrêt
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unité (unit) firewall.service a terminé son arrêt.
avril 26 18:11:42 ncfa polkitd[470]: Registered Authentication Agent for unix-process:1766:237528 (system bus name :1.36 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale fr_FR.utf8)
avril 26 18:11:42 ncfa systemd[1]: Starting Firewall Rules...
-- Subject: L'unité (unit) firewall.service a commencé à démarrer
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unité (unit) firewall.service a commencé à démarrer.
avril 26 18:11:42 ncfa systemd[1]: Started Firewall Rules.
-- Subject: L'unité (unit) firewall.service a terminé son démarrage
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- L'unité (unit) firewall.service a terminé son démarrage, avec le résultat done.
avril 26 18:11:42 ncfa polkitd[470]: Unregistered Authentication Agent for unix-process:1766:237528 (system bus name :1.36, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale fr_FR.utf8) (disconnected from bus)
lines 1560-1578/1578 (END)
Par ailleurs, lorsque j'exécute "systemctl status firewall", je n'ai pas de message d'erreur non plus :

Code : Tout sélectionner

● firewall.service - Firewall Rules
   Loaded: loaded (/usr/lib/systemd/system/firewall.service; enabled; vendor preset: disabled)
   Active: active (exited) since dim. 2015-04-26 18:11:42 CEST; 2min 27s ago
  Process: 1757 ExecStop=/usr/lib/systemd/scripts/firewall.sh stop (code=exited, status=0/SUCCESS)
  Process: 1771 ExecStart=/usr/lib/systemd/scripts/firewall.sh start (code=exited, status=0/SUCCESS)
 Main PID: 1771 (code=exited, status=0/SUCCESS)

avril 26 18:11:42 ncfa systemd[1]: Starting Firewall Rules...
avril 26 18:11:42 ncfa systemd[1]: Started Firewall Rules.
Edit : séparation de iptables et du service créé firewall
Dernière modification par niccoper le dim. 26 avr. 2015, 18:36, modifié 1 fois.
Avatar de l’utilisateur
papajoke
Elfe
Messages : 779
Inscription : sam. 30 août 2014, 19:54

Re: [Systemd] Problème de création d'un service

Message par papajoke »

Bonjour,
ton log n'est pas parlant ?

Code : Tout sélectionner

L'unité (unit) iptables.service a commencé à démarrer.
avril 26 18:03:31 ncfa iptables-restore[1728]: iptables-restore: line 2 failed
avril 26 18:03:31 ncfa systemd[1]: iptables.service: main process exited, code=exited, status=1/FAILURE
avril 26 18:03:31 ncfa systemd[1]: Failed to start Packet Filtering Framework.
-- Subject: L'unité (unit) iptables.service a échoué
c'est pas firewall.service mais iptables.service qui plante
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

Re: [Systemd] Problème de création d'un service

Message par niccoper »

Bonjour papajoke,

en fait j'ai parlé de deux services différents dans un même message. Du coup je l'ai édité pour rendre mon propos plus calir.

Le log que tu cites est celui qui correspond au lancement du service iptables. Je l'ai mentionné pour expliquer que je ne souhaitais pas utiliser iptables pour configurer les règles iptables mais un script distinct (le script que j'ai créé, firewall) .

Dans la seconde partie de mon message, je reviens à mon sujet initial, à savoir que losque je démarrais le service que j'ai créé (firewall), il ne se passait rien et je n'avais pas de message d'erreur.
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

Re: [Systemd] Problème de création d'un service

Message par niccoper »

Aïe, désolé je crois que j'ai crié au loup.

En fait, après plusieurs essais le script fonctionne très bien. Je ne sais pas ce qui s'est passé.

Encore désolé et merci d'avoir prêté attention à ma demande.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Systemd] Problème de création d'un service (Résolu)

Message par benjarobin »

Je te conseil vivement de relire le Wiki... iptables.rules est un fichier généré par iptables-save, ce n'est pas normalement un fichier que tu édites...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

Re: [Systemd] Problème de création d'un service (Résolu)

Message par niccoper »

Tu as raison.

J'ai lu attentivement cette fois-ci le wiki de iptables et je n'avais pas compris que l'on pouvait sauvegarder une conf iptable dans un fichier qui était utilisé par iptables. De la même manière, c'est quand même beaucoup plus propre d'utilser le fonctionnement natif des applications.

Mon problème est que là, lorsque je relance iptables après avoir sauvegardé les règles, il ne sa passe rien... Mais je vaius bien trouver ce qui ne fonctionne pas.

Merci encore de ta contribution
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Systemd] Problème de création d'un service (Résolu)

Message par benjarobin »

Tu dois faire ceci dans cet ordre :

Code : Tout sélectionner

systemctl stop firewall.service
systemctl disable firewall.service
systemctl stop iptables.service
# Lance ton script chargeant les règles iptables
# Par exemple : /usr/lib/systemd/scripts/firewall.sh start
# Vérifie que les règles sont bien chargés...
iptables-save > /etc/iptables/iptables.rules
systemctl enable iptables.service
reboot
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

Re: [Systemd] Problème de création d'un service (Résolu)

Message par niccoper »

C'est que ce j'ai fait, sauf que je n'avais pas arrêté iptables.

J'ai suivi ta démarche mais J'ai malheureusement le même résultat, à savoir, je reviens à la configuration par défaut (les chaînes sont toutes à ACCEPT).

Par ailleurs, lorsque je configure des règles (avec mon script firewall) et que j'exécute "systemctl start iptables", toute la conf disparaît et j'ai la conf par défaut.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Systemd] Problème de création d'un service (Résolu)

Message par benjarobin »

Quel est le contenu de /etc/iptables/iptables.rules ? Si tu as bien suivi ce que j'indique cela ne devrait pas être un souci !
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

Re: [Systemd] Problème de création d'un service (Résolu)

Message par niccoper »

le contenu de /etc/iptables/iptables.conf :

Code : Tout sélectionner

# Generated by iptables-save v1.4.21 on Sun Apr 26 20:22:08 2015
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p udp -m udp --sport 53 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 80 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 443 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 9001 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 21 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 3596 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --sport 5209 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.0.0/24 -p icmp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 9001 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 3596 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 5209 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -d 192.168.0.0/24 -p icmp -j ACCEPT
-A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
COMMIT
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Systemd] Problème de création d'un service (Résolu)

Message par benjarobin »

Comment dire... Je te laisse relire mes 2 derniers messages 2 fois... 10 si nécessaire...
Indice je n'ai jamais parlé de ce fichier : /etc/iptables/iptables.conf, il faut le supprimer...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

Re: [Systemd] Problème de création d'un service (Résolu)

Message par niccoper »

Au temps pour moi, j'ai mis le contenu de /etc/iptables/iptables.rules et non pas .conf
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Systemd] Problème de création d'un service (Résolu)

Message par benjarobin »

Personnellement je ne sais plus vraiment quoi croire. Quelle est la sortie de :

Code : Tout sélectionner

systemctl stop firewall.service
systemctl stop iptables.service
ls -l /etc/iptables/
# Lance ton script chargeant les règles iptables
iptables -L
iptables-save > /etc/iptables/iptables.rules
iptables-restore /etc/iptables/iptables.rules; echo $?
iptables -L
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

Re: [Systemd] Problème de création d'un service (Résolu)

Message par niccoper »

Code : Tout sélectionner

[root@ncfa ncflm]# systemctl stop firewall.service
[root@ncfa ncflm]# systemctl stop iptables.service
[root@ncfa ncflm]# ls -l /etc/iptables/
total 12
-rw-r--r-- 1 root root 105 25 mars  10:56 empty.rules
-rw-r--r-- 1 root root 197 26 avril 20:50 iptables.rules
-rw-r--r-- 1 root root 362 25 mars  10:56 simple_firewall.rules
[root@ncfa ncflm]# bash bash/scr/firewall.sh start
[root@ncfa ncflm]# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp spt:domain ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:http ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:https ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:etlservicemgr ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:ftp ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:iw-mmogame ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:nomad ctstate RELATED,ESTABLISHED
ACCEPT     icmp --  192.168.0.0/24       anywhere            
ACCEPT     all  --  localhost.localdomain  localhost.localdomain 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:etlservicemgr ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:iw-mmogame ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:nomad ctstate NEW,RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             192.168.0.0/24      
ACCEPT     all  --  localhost.localdomain  localhost.localdomain 
[root@ncfa ncflm]# iptables-save > /etc/iptables/iptables.rules
[root@ncfa ncflm]# iptables-restore /etc/iptables/iptables.rules; echo $?
0
[root@ncfa ncflm]# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp spt:domain ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:http ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:https ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:etlservicemgr ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:ftp ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:iw-mmogame ctstate RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:nomad ctstate RELATED,ESTABLISHED
ACCEPT     icmp --  192.168.0.0/24       anywhere            
ACCEPT     all  --  localhost.localdomain  localhost.localdomain 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:etlservicemgr ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:iw-mmogame ctstate NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:nomad ctstate NEW,RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             192.168.0.0/24      
ACCEPT     all  --  localhost.localdomain  localhost.localdomain
J'ai vérifié par acquis de conscience /usr/lib/systemd/system/iptables.service et j'ai bien

Code : Tout sélectionner

ExecStart=/usr/bin/iptables-restore /etc/iptables/iptables.rules
ExecReload=/usr/bin/iptables-restore /etc/iptables/iptables.rules
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Systemd] Problème de création d'un service (Résolu)

Message par benjarobin »

Et donc tout fonctionne normalement. Il suffit d'activer le service via : systemctl enable iptables.service
Puis de redémarrer...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

Re: [Systemd] Problème de création d'un service (Résolu)

Message par niccoper »

Désolé mais cela ne marche toujours pas.

si j'exécute iptables-L juste après le démarrage, j'obitient une liste de règles vide :

Code : Tout sélectionner

[root@ncfa ncflm]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Cependant lorsque j'exécute systemctl status iptables j'ai un truc bizarre :

Code : Tout sélectionner

[root@ncfa ncflm]# systemctl status iptables
● iptables.service - Packet Filtering Framework
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since dim. 2015-04-26 21:09:16 CEST; 1min 20s ago
  Process: 421 ExecStop=/usr/lib/systemd/scripts/iptables-flush (code=exited, status=0/SUCCESS)
  Process: 397 ExecStart=/usr/bin/iptables-restore /etc/iptables/iptables.rules (code=exited, status=0/SUCCESS)
 Main PID: 397 (code=exited, status=0/SUCCESS)

avril 26 21:09:15 ncfa systemd[1]: Starting Packet Filtering Framework...
avril 26 21:09:16 ncfa iptables-flush[421]: /usr/sbin/iptables
Ce "flush" à la dernière ligne c'est bizarre non ? Pourtant je ne vide pas la liste des règles de iptables.

Sinon, je te remercie de m'avoir autant aider, mais j'ai l'impression de te faire perdre ton temps. Le problème doit tenir à un petit truc que je n'ai pas remarqué encore. Je finirais bien par trouver où est le problème.
niccoper
Hankyu
Messages : 28
Inscription : jeu. 09 avr. 2015, 17:04

Re: [Systemd] Problème de création d'un service (Résolu)

Message par niccoper »

Non en fait ça parait cohérent. Il vide la liste des règles avant de la configurer
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17222
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Systemd] Problème de création d'un service (Résolu)

Message par benjarobin »

Non ce n'est pas du tout cohérent !

C'est simple pourtant au démarrage le service est démarré normalement par le système, puis quelqu'un appel après systemctl stop iptables (après pourquoi et qui l'a fait... ?)
Juste après un boot tu devrais avoir ceci

Code : Tout sélectionner

systemctl status iptables
● iptables.service - Packet Filtering Framework
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
   Active: active (exited) since dim. 2015-04-26 19:24:40 CEST; 1h 54min ago
  Process: 446 ExecStart=/usr/bin/iptables-restore /etc/iptables/iptables.rules (code=exited, status=0/SUCCESS)
 Main PID: 446 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/iptables.service

avril 26 19:24:40 benjarobin-fixe systemd[1]: Starting Packet Filtering Framework...
avril 26 19:24:40 benjarobin-fixe systemd[1]: Started Packet Filtering Framework.
Tu vois bien que ton service est inactive (dead) au lieu d'être active (exited)
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Répondre