Vous devez modifier directement les fichiers de configuration afin de créer et modifier les ensembles de règles et les pools d'adresses. Les fichiers de configuration suivent les règles de syntaxe UNIX standard :
Le signe dièse (#) indique qu'une ligne contient des commentaires.
Une ligne peut contenir à la fois des commentaires et des règles.
Vous pouvez ajouter des espaces supplémentaires afin de faciliter la lecture des règles.
La définition d'une règle peut s'étaler sur plusieurs lignes. Insérez un backslash (\) à la fin d'une ligne pour indiquer que la règle continue sur la ligne suivante.
La procédure ci-dessous décrit la configuration des :
fichiers de configuration de filtrage de paquets ;
fichiers de configuration des règles NAT ;
fichiers de configuration de pool d'adresses.
Connectez-vous en tant que superutilisateur ou prenez un rôle bénéficiant du profil des droits de gestion IP Filter.
Vous pouvez créer un rôle et lui attribuer le profil de droits de gestion IP Filter. Pour créer un rôle et l'attribuer à un utilisateur, reportez-vous à la section Configuring RBAC (Task Map) du System Administration Guide: Security Services.
Lancez l'éditeur de fichiers de votre choix. Créez et modifiez le fichier de configuration de la fonction que vous souhaitez configurer.
Pour créer un fichier de configuration des règles de filtrage de paquets, modifiez le fichier ipf.conf.
Oracle Solaris IP Filter utilise les règles de filtrage de paquets spécifiées dans le fichier ipf.conf. Si vous placez le fichier de règles de filtrage de paquets dans le fichier /etc/ipf/ipf.conf, ce fichier est chargé à l'initialisation du système. Pour empêcher le chargement des règles de filtrage à l'initialisation, le cas échéant, placez-les dans le fichier de votre choix. Vous pouvez ensuite activer les règles à l'aide de la commande ipf, comme décrit à la section Activation d'un nouvel ensemble de règles de filtrage de paquets ou d'un ensemble mis à jour.
Pour plus d'informations sur la création de règles de filtrage de paquets, reportez-vous à la section Utilisation de la fonctionnalité de filtrage de paquets de Oracle Solaris IP Filter.
Si le fichier ipf.conf est vide, aucun filtrage n'est appliqué. Un fichier ipf.conf vide correspond à un ensemble de règles défini comme suit :
pass in all pass out all |
Pour créer un fichier de configuration des règles NAT, modifiez le fichier ipnat.conf.
&ProductBase IP Filter utilise les règles NAT spécifiées dans le fichier ipnat.conf. Si vous placez le fichier de règles NAT dans le fichier >/etc/ipf/ipnat.conf, ce fichier est chargé à l'initialisation du système. Pour empêcher le chargement des règles NAT à l'initialisation, le cas échéant, placez le fichier ipnat.conf dans le dossier de votre choix. Ensuite, vous pouvez activer les règles NAT à l'aide de la commande ipnat.
Pour plus d'informations sur la création de règles NAT, reportez-vous à la section Utilisation de la fonctionnalité NAT de Oracle Solaris IP Filter.
Pour créer un fichier de configuration des pools d'adresses, modifiez le fichier ippool.conf.
Oracle Solaris IP Filter utilise le pool d'adresses spécifié dans le fichier ippool.conf. Si vous placez le fichier de règles du pool d'adresses dans le fichier /etc/ipf/ippool.conf, ce fichier est chargé à l'initialisation du système. Pour empêcher le chargement du pool d'adresses à l'initialisation, le cas échéant, placez le fichier ippool.conf dans le dossier de votre choix. Ensuite, vous pouvez activer le pool d'adresses à l'aide de la commande ippool.
Pour plus d'informations sur la création de pools d'adresses, reportez-vous à la section Utilisation de la fonctionnalité de pools d'adresses de Oracle Solaris IP Filter.
Les exemples ci-dessous illustrent les règles de filtrage de paquets utilisées dans les configurations de filtrage.
Cet exemple correspond à une configuration définie sur une machine hôte avec une interface réseau elxl.
# pass and log everything by default pass in log on elxl0 all pass out log on elxl0 all # block, but don't log, incoming packets from other reserved addresses block in quick on elxl0 from 10.0.0.0/8 to any block in quick on elxl0 from 172.16.0.0/12 to any # block and log untrusted internal IPs. 0/32 is notation that replaces # address of the machine running Solaris IP Filter. block in log quick from 192.168.1.15 to <thishost> block in log quick from 192.168.1.43 to <thishost> # block and log X11 (port 6000) and remote procedure call # and portmapper (port 111) attempts block in log quick on elxl0 proto tcp from any to elxl0/32 port = 6000 keep state block in log quick on elxl0 proto tcp/udp from any to elxl0/32 port = 111 keep state |
Cet ensemble de règles commence par deux règles illimitées qui permettent à tout type de données d'entrer et sortir via l'interface elxl. Le deuxième ensemble de règles empêche tout paquet entrant issu des espaces d'adresses privées 10.0.0.0 et 172.16.0.0 de traverser la pare-feu. L'ensemble de règles suivant bloque des adresses internes spécifiques de la machine hôte. Enfin, le dernier ensemble de règles empêche l'entrée des paquets via les ports 6000 et 111.
Cet exemple présente la configuration d'une machine hôte tenant lieu de serveur Web. Cette machine possède une interface réseau eri.
# web server with an eri interface # block and log everything by default; then allow specific services # group 100 - inbound rules # group 200 - outbound rules # (0/32) resolves to our IP address) *** FTP proxy *** # block short packets which are packets fragmented too short to be real. block in log quick all with short # block and log inbound and outbound by default, group by destination block in log on eri0 from any to any head 100 block out log on eri0 from any to any head 200 # web rules that get hit most often pass in quick on eri0 proto tcp from any \ to eri0/32 port = http flags S keep state group 100 pass in quick on eri0 proto tcp from any \ to eri0/32 port = https flags S keep state group 100 # inbound traffic - ssh, auth pass in quick on eri0 proto tcp from any \ to eri0/32 port = 22 flags S keep state group 100 pass in log quick on eri0 proto tcp from any \ to eri0/32 port = 113 flags S keep state group 100 pass in log quick on eri0 proto tcp from any port = 113 \ to eri0/32 flags S keep state group 100 # outbound traffic - DNS, auth, NTP, ssh, WWW, smtp pass out quick on eri0 proto tcp/udp from eri0/32 \ to any port = domain flags S keep state group 200 pass in quick on eri0 proto udp from any port = domain to eri0/32 group 100 pass out quick on eri0 proto tcp from eri0/32 \ to any port = 113 flags S keep state group 200 pass out quick on eri0 proto tcp from eri0/32 port = 113 \ to any flags S keep state group 200 pass out quick on eri0 proto udp from eri0/32 to any port = ntp group 200 pass in quick on eri0 proto udp from any port = ntp to eri0/32 port = ntp group 100 pass out quick on eri0 proto tcp from eri0/32 \ to any port = ssh flags S keep state group 200 pass out quick on eri0 proto tcp from eri0/32 \ to any port = http flags S keep state group 200 pass out quick on eri0 proto tcp from eri0/32 \ to any port = https flags S keep state group 200 pass out quick on eri0 proto tcp from eri0/32 \ to any port = smtp flags S keep state group 200 # pass icmp packets in and out pass in quick on eri0 proto icmp from any to eri0/32 keep state group 100 pass out quick on eri0 proto icmp from eri0/32 to any keep state group 200 # block and ignore NETBIOS packets block in quick on eri0 proto tcp from any \ to any port = 135 flags S keep state group 100 block in quick on eri0 proto tcp from any port = 137 \ to any flags S keep state group 100 block in quick on eri0 proto udp from any to any port = 137 group 100 block in quick on eri0 proto udp from any port = 137 to any group 100 block in quick on eri0 proto tcp from any port = 138 \ to any flags S keep state group 100 block in quick on eri0 proto udp from any port = 138 to any group 100 block in quick on eri0 proto tcp from any port = 139 to any flags S keep state group 100 block in quick on eri0 proto udp from any port = 139 to any group 100 |
Cet exemple présente la configuration d'un routeur possédant une interface interne, ce0, et une interface externe, ce1.
# internal interface is ce0 at 192.168.1.1 # external interface is ce1 IP obtained via DHCP # block all packets and allow specific services *** NAT *** *** POOLS *** # Short packets which are fragmented too short to be real. block in log quick all with short # By default, block and log everything. block in log on ce0 all block in log on ce1 all block out log on ce0 all block out log on ce1 all # Packets going in/out of network interfaces that aren't on the loopback # interface should not exist. block in log quick on ce0 from 127.0.0.0/8 to any block in log quick on ce0 from any to 127.0.0.0/8 block in log quick on ce1 from 127.0.0.0/8 to any block in log quick on ce1 from any to 127.0.0.0/8 # Deny reserved addresses. block in quick on ce1 from 10.0.0.0/8 to any block in quick on ce1 from 172.16.0.0/12 to any block in log quick on ce1 from 192.168.1.0/24 to any block in quick on ce1 from 192.168.0.0/16 to any # Allow internal traffic pass in quick on ce0 from 192.168.1.0/24 to 192.168.1.0/24 pass out quick on ce0 from 192.168.1.0/24 to 192.168.1.0/24 # Allow outgoing DNS requests from our servers on .1, .2, and .3 pass out quick on ce1 proto tcp/udp from ce1/32 to any port = domain keep state pass in quick on ce0 proto tcp/udp from 192.168.1.2 to any port = domain keep state pass in quick on ce0 proto tcp/udp from 192.168.1.3 to any port = domain keep state # Allow NTP from any internal hosts to any external NTP server. pass in quick on ce0 proto udp from 192.168.1.0/24 to any port = 123 keep state pass out quick on ce1 proto udp from any to any port = 123 keep state # Allow incoming mail pass in quick on ce1 proto tcp from any to ce1/32 port = smtp keep state pass in quick on ce1 proto tcp from any to ce1/32 port = smtp keep state pass out quick on ce1 proto tcp from 192.168.1.0/24 to any port = smtp keep state # Allow outgoing connections: SSH, WWW, NNTP, mail, whois pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = 22 keep state pass out quick on ce1 proto tcp from 192.168.1.0/24 to any port = 22 keep state pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = 80 keep state pass out quick on ce1 proto tcp from 192.168.1.0/24 to any port = 80 keep state pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = 443 keep state pass out quick on ce1 proto tcp from 192.168.1.0/24 to any port = 443 keep state pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = nntp keep state block in quick on ce1 proto tcp from any to any port = nntp keep state pass out quick on ce1 proto tcp from 192.168.1.0/24 to any port = nntp keep state pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = smtp keep state pass in quick on ce0 proto tcp from 192.168.1.0/24 to any port = whois keep state pass out quick on ce1 proto tcp from any to any port = whois keep state # Allow ssh from offsite pass in quick on ce1 proto tcp from any to ce1/32 port = 22 keep state # Allow ping out pass in quick on ce0 proto icmp all keep state pass out quick on ce1 proto icmp all keep state # allow auth out pass out quick on ce1 proto tcp from ce1/32 to any port = 113 keep state pass out quick on ce1 proto tcp from ce1/32 port = 113 to any keep state # return rst for incoming auth block return-rst in quick on ce1 proto tcp from any to any port = 113 flags S/SA # log and return reset for any TCP packets with S/SA block return-rst in log on ce1 proto tcp from any to any flags S/SA # return ICMP error packets for invalid UDP packets block return-icmp(net-unr) in proto udp all |