IngleseFranceseSpagnolo

Ad


Favicon di OnWorks

ferm - Online nel cloud

Esegui ferm nel provider di hosting gratuito OnWorks su Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

Questo è il comando ferm che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici postazioni di lavoro online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

PROGRAMMA:

NOME


ferm - un parser di regole firewall per Linux

SINOSSI


ferm Opzioni file di input

DESCRIZIONE


ferm è un frontend per iptables. Legge le regole da un file di configurazione strutturato
e chiamate iptables(8) per inserirli nel kernel in esecuzione.

fermL'obiettivo è rendere le regole del firewall facili da scrivere e da leggere. Si cerca di ridurre
il noioso compito di scrivere le regole, consentendo così all'amministratore del firewall di spendere
più tempo per lo sviluppo di buone regole rispetto alla corretta attuazione della regola.

Per realizzare questo, ferm utilizza un linguaggio di configurazione semplice ma potente, che consente
variabili, funzioni, array, blocchi. Ti permette anche di includere altri file, permettendo
creare librerie di strutture e funzioni di uso comune.

ferm, pronunciato "firm", sta per "For Easy Rule Making".

AVVERTENZE


Questa pagina di manuale lo fa non indend per insegnarti come funziona il firewall e come scrivere bene
regole. C'è già abbastanza documentazione su questo argomento.

INTRODUZIONE


Cominciamo con un semplice esempio:

catena INGRESSO {
proto tcp ACCETTO;
}

Questo aggiungerà una regola alla catena di input predefinita, abbinando e accettando tutti i tcp
pacchetti. Ok, rendiamolo più complicato:

catena (INGRESSO USCITA) {
proto (udp tcp) ACCETTA;
}

Questo inserirà 4 regole, vale a dire 2 nell'input della catena e 2 nell'output della catena, corrispondenza e
accettando sia i pacchetti udp che tcp. Normalmente digiteresti questo:

iptables -A INGRESSO -p tcp -j ACCEPT
iptables -A OUTPUT -p tcp -j ACCETTA
iptables -A INGRESSO -p udp -j ACCEPT
iptables -A OUTPUT -p udp -j ACCETTA

Nota quanto meno scrivere dobbiamo fare? :-)

Fondamentalmente, questo è tutto, anche se puoi renderlo molto più complesso.
Qualcosa da guardare:

catena INGRESSO {
politica ACCETTA;
daddr 10.0.0.0/8 proto tcp dport ! ftp jump mychain sport: 1023 TOS 4 settos 8 mark 2;
daddr 10.0.0.0/8 proto tcp dport ftp RIFIUTA;
}

Il mio punto qui è che *tu* devi fare delle belle regole, tenerle leggibili per te e
altri, e non farne un pasticcio.

Aiuterebbe il lettore se le regole del firewall risultanti fossero poste qui come riferimento.
Inoltre, potresti includere la versione nidificata con una migliore leggibilità.

Prova a usare i commenti per mostrare cosa stai facendo:

# questa riga abilita il proxy http trasparente per la rete interna:
proto tcp se eth0 daddr ! 192.168.0.0/255.255.255.0
dport http REDIRECT alle porte 3128;

Ne sarai grato più tardi!

catena INGRESSO {
politica ACCETTA;
interfaccia (eth0 ppp0) {
# nega l'accesso a famigerati hacker, torna qui in caso di mancata corrispondenza
# è stato trovato per riprendere il normale firewall
saltare i cattivi;

protocollo tcp jump fw_tcp;
protocollo udp jump fw_udp;
}
}

Più annidi, meglio è. Assicurati che l'ordine specificato sia corretto, tu
non vorrei fare questo:

catena AVANTI {
proto! udp DROP;
proto tcp dport ftp ACCETTA;
}

perché la seconda regola non corrisponderà mai. Il modo migliore è specificare prima tutto ciò che è
permesso, e poi negare tutto il resto. Guarda gli esempi per altre buone istantanee.
La maggior parte delle persone fa qualcosa del genere:

protocollo tcp {
porta (
sshhttpftp
) ACCETTO;
dport 1024:65535 ! sin ACCETTARE;
GOCCIOLARE;
}

STRUTTURA OF A FIREWALL RISORSE


La struttura di un file firewall appropriato sembra un codice C semplificato. Solo pochi
i caratteri sintattici sono usati nei file di configurazione ferm. Oltre a queste speciali
caratteri, ferm usa 'chiavi' e 'valori', pensali come opzioni e parametri, o come
variabili e valori, qualunque cosa.

Con queste parole definisci le caratteristiche del tuo firewall. Ogni firewall
consiste di due cose: in primo luogo, controlla se il traffico di rete corrisponde a determinate condizioni e
secondo, cosa fare con quel traffico.

Puoi specificare condizioni valide per il programma di interfaccia del kernel che stai utilizzando,
probabilmente iptables(8). Ad esempio, in iptables, quando stai cercando di abbinare i pacchetti tcp,
tu diresti:

iptables --protocollo tcp

In definitiva, questo diventerà:

protocollo tcp;

Basta digitare questo in ferm non fa nulla, devi dirlo a ferm (in realtà, devi
dire iptables(8) e il kernel) cosa fare con il traffico che soddisfa questa condizione:

iptables --protocol tcp -j ACCETTA

Oppure, tradotto in ferm:

protocollo tcp ACCETTA;

I ; il carattere è alla fine di ogni regola ferma. Ferm ignora le interruzioni di riga, il che significa che
l'esempio precedente è identico al seguente:

protocollo tcp
ACCETTARE;

Ecco un elenco dei caratteri speciali:

; Questo personaggio finalizza una regola.

Separato da punto e virgola, puoi scrivere più regole in una riga, anche se questo
diminuisce la leggibilità:

protocollo tcp ACCETTA; protocollo udp DROP;

{} Il simbolo di annidamento definisce un 'blocco' di regole.

Le parentesi graffe contengono un numero qualsiasi di regole nidificate. Tutte le partite prima del
blocco sono riportati a questi.

La parentesi graffa di chiusura finalizza il set di regole. Non dovresti scrivere un ';' dopo
quello, perché sarebbe una regola vuota.

Esempio:

catena INPUT proto icmp {
echo-request di tipo icmp ACCEPT;
GOCCIOLARE;
}

Questo blocco mostra due regole all'interno di un blocco, che verranno entrambe unite a qualsiasi cosa
davanti, quindi otterrai due regole:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCETTA
iptables -A INPUT -p icmp -j DROP

Possono esserci più livelli di nidificazione:

catena INGRESSO {
proto-icmp {
echo-request di tipo icmp ACCEPT;
GOCCIOLARE;
}
daddr 172.16.0.0/12 RIFIUTO;
}

Nota che la regola 'REJECT' non è influenzata da 'proto icmp', anche se non c'è
';' dopo la parentesi graffa di chiusura. Tradotto in iptables:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCETTA
iptables -A INPUT -p icmp -j DROP
iptables -A INGRESSO -d 172.16.0.0/12 -j RIFIUTA

$ Espansione variabile. Sostituisce '$FOO' con il valore della variabile. Vedi la sezione
VARIABILI per i dettagli.

& Chiamata di funzione. Vedi la sezione FUNZIONI per i dettagli.

() Il simbolo della matrice. Usando le parentesi, puoi definire un 'elenco' di valori che
dovrebbe essere applicato per la chiave a sinistra di esso.

Esempio:

protocollo ( tcp udp icmp )

questo si tradurrà in tre regole:

... -p tcp ...
... -pudp...
... -p icmp ...

Solo i valori possono essere "elencati", quindi non puoi fare qualcosa del genere:

proto tcp ( ACCETTA LOG );

ma puoi fare questo:

catena (INPUT OUTPUT FORWARD) proto (icmp udp tcp) DROP;

(che risulterà in nove regole!)

I valori sono separati da spazi. Il simbolo dell'array è sia sinistro che destro
associativo, in contrasto con il blocco annidato, che è solo associativo a sinistra.

" # " Il simbolo del commento. Tutto ciò che segue questo simbolo fino alla fine della riga è
ignorato.

"`comando`"
Eseguire il comando in una shell e inserire l'output del processo. Vedi la sezione
apici inversi per i dettagli.

'corda'
Cita una stringa che può contenere spazi, il simbolo del dollaro, ecc.

LOG log-prefix ' ehi, questo è il mio prefisso di log!';

"corda"
Cita una stringa (vedi sopra), ma i riferimenti alle variabili con il simbolo del dollaro lo sono
valutato:

DNAT a "$myhost:$myport";

Parole
Nella sezione precedente, abbiamo già introdotto alcune parole chiave di base come "catena",
"protocollo" e "ACCETTO". Esploriamo la loro natura.

Esistono tre tipi di parole chiave:

· località le parole chiave definiscono dove verrà creata una regola. Esempio: "tabella", "catena".

· stile le parole chiave eseguono un test su tutti i pacchetti che passano. La regola attuale è senza
effetto se una (o più) delle partite non passa. Esempio: "proto", "daddr".

La maggior parte delle corrispondenze è seguita da un parametro: "proto tcp", "daddr 172.16.0.0/12".

· bersaglio le parole chiave indicano cosa fare con un pacchetto. Esempio: "ACCETTO", "RIFIUTO",
"salto".

Alcuni obiettivi definiscono più parole chiave per specificare i dettagli: "RIFIUTA rifiuto-con icmp-
rete irraggiungibile".

Ogni regola consiste in a località e bersaglio, più qualsiasi numero di fiammiferi:

filtro tabella # posizione
proto tcp dport (http https) # corrispondenza
ACCETTARE; # obbiettivo

A rigor di termini, c'è un quarto tipo: ferm parole chiave (che controllano l'interno di ferm
comportamento), ma verranno spiegati in seguito.

parametri
Molte parole chiave accettano parametri. Questi possono essere specificati come letterali, riferimenti variabili o
liste (array):

proto udp
saddr $TRUSTED_HOSTS;
proto tcp dport (http https ssh);
LOG log-prefix "funky wardriver alert: ";

Alcuni di essi possono essere negati (gli elenchi non possono essere negati):

proto! esp;
proto udp dport !dominio;

Le parole chiave che non accettano parametri sono negate da un prefisso '!':

protocollo tcp !syn;

Leggi iptables(8) per vedere dove il ! può essere utilizzato.

BASIC PAROLE CHIAVE


Dove parole chiave
dominio [ip|ip6]
Imposta il dominio. "ip" è l'impostazione predefinita e significa "IPv4" (iptables). "ip6" è per IPv6
supporto, utilizzando "ip6tables".

tavolo [filtro|nat|mangiare]
Specifica in quale tabella netfilter verrà inserita questa regola: "filter" (predefinito),
"nat" o "mangiare".

catena [nome della catena]
Specifica la catena netfilter (all'interno della tabella corrente) questa regola sarà
inserito a. I nomi di catena predefiniti comuni sono "INPUT", "OUTPUT", "FORWARD",
"PREROUTING", "POSTROUTING", a seconda della tabella. Guarda il filtro di rete
documentazione per i dettagli.

Se specifichi una catena inesistente qui, ferm aggiungerà la regola a una catena personalizzata
con quel nome.

politica [ACCETTO|DROP|..]
Specifica la policy predefinita per la catena corrente (solo built-in). Può essere uno di
i target integrati (ACCEPT, DROP, REJECT, ...). Un pacchetto che non rispetta le regole
in una catena verranno trattati come specificato dalla policy.

Per evitare ambiguità, specificare sempre le politiche di tutte le catene predefinite
esplicitamente.

@sottocatena ["NOME-CATENA"] { ... }
Funziona come i normali operatori di blocco (cioè senza il @sottocatena parola chiave), tranne
che ferm sposta le regole all'interno delle parentesi graffe in una nuova catena personalizzata. Il nome
per questa catena viene scelta automaticamente da ferm.

In molti casi, questo è più veloce di un semplice blocco, perché il kernel potrebbe saltare a
enorme blocco di regole quando una precondizione è falsa. Immagina il seguente esempio:

catena di filtri tabella INPUT {
saddr (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) {
proto tcp dport (http https ssh) ACCETTA;
proto udp dport dominio ACCEPT;
}
}

Questo genera 20 regole. Quando arriva un pacco che non passa il sadr
match, controlla comunque tutte le 20 regole. Con @sottocatena, questo controllo è fatto
una volta, con conseguente filtraggio della rete più veloce e minor carico della CPU:

catena di filtri tabella INPUT {
saddr (1.2.3.4 2.3.4.5 3.4.5.6 4.5.6.7 5.6.7.8) @sottocatena {
proto tcp dport (http https ssh) ACCETTA;
proto udp dport dominio ACCEPT;
}
}

Facoltativamente, puoi definire il nome della sottocatena:

saddr (1.2.3.4 2.3.4.5 3.4.5.6) @subchain "foobar" {
proto tcp dport (http https ssh) ACCETTA;
proto udp dport dominio ACCEPT;
}

Il nome può essere un letterale stringa tra virgolette o un'espressione ferm espansa
come @cat("interface_", $iface) o @substr($var,0,20).

Puoi ottenere lo stesso dichiarando esplicitamente una catena personalizzata, ma potresti sentirti
che usando @sottocatena richiede meno digitazione.

Standard iptables stile parole chiave
interfaccia [nome-interfaccia]
Definisci il nome dell'interfaccia, la tua scheda di rete esterna, come eth0, o dialup come
ppp1, o qualunque dispositivo tu voglia abbinare per il passaggio dei pacchetti. è equivalente
all'interruttore "-i" in iptables(8).

faccia esterna [nome-interfaccia]
Uguale all'interfaccia, solo per abbinare l'interfaccia in uscita per un pacchetto, come in
iptables(8).

protocollo [nome-protocollo|numero-protocollo]
Attualmente supportati dal kernel sono tcp, udp e icmp o i rispettivi
numeri.

saddr|papà [specifica-indirizzo]
Corrispondenze sui pacchetti provenienti dall'indirizzo specificato (saddr) o mirati a
l'indirizzo (daddr).

Consigli d'uso:

saddr 192.168/8 ACCETTO; # (identico al successivo :)
saddr 192.168.0.0/255.255.255.0 ACCETTO;
daddr mio.dominio.com ACCEPT;

frammento
Specificare che devono essere abbinati solo i pacchetti IP frammentati. Quando i pacchetti sono
maggiore della dimensione massima del pacchetto che il tuo sistema può gestire (chiamata Massima
Unità di trasmissione o MTU) verranno tagliati in bit e inviati uno per uno come
singoli pacchetti. Vedere ifconfig(8) se vuoi trovare l'MTU per il tuo sistema (il
il valore predefinito è solitamente 1500 byte).

I frammenti sono usati frequentemente negli attacchi DOS, perché non c'è modo di trovarli
l'origine di un pacchetto di frammenti.

sport|sport [specifica della porta]
Corrisponde ai pacchetti sulla porta TCP o UDP specificata. "sport" corrisponde alla fonte
port e dport corrisponde alla porta di destinazione.

Questa corrispondenza può essere utilizzata solo dopo aver specificato "protocollo tcp" o "protocollo udp",
perché solo questi due protocolli hanno effettivamente delle porte.

E alcuni esempi di porte/intervalli validi:

dport 80 ACCETTA;
dport http ACCETTO;
dport ssh:http ACCETTO;
dport 0:1023 ACCETTA; # equivalente a :1023
dport 1023:65535 ACCETTO;

syn Specificare che il flag SYN in un pacchetto tcp deve essere abbinato, che sono usati per
costruire nuove connessioni tcp. È possibile identificare le connessioni in entrata con questo e
decidi se vuoi permetterlo o meno. I pacchetti che non hanno questo flag sono
probabilmente da una connessione già stabilita, quindi è considerato ragionevolmente
sicuro lasciarli passare.

modulo [nome-modulo]
Carica un modulo iptables. La maggior parte dei moduli fornisce più parole chiave corrispondenti. Arriveremo a
quello dopo.

Standard bersaglio parole chiave
saltare [nome-catena-personalizzata]
Passa a una catena personalizzata. Se nessuna regola nella catena personalizzata corrisponde, netfilter restituisce
alla regola successiva della catena precedente.

realgoto [nome-catena-personalizzata]
Vai a una catena personalizzata. non mi piace il saltare opzione, RITORNO non continuerà l'elaborazione
in questa catena ma invece nella catena che ci ha chiamato via saltare.

La parola chiave realgoto è stato scelto durante il periodo di transizione, perché goto
(già deprecato) era un alias per saltare.

ACCETTO Accetta pacchetti corrispondenti.

GOCCIA Elimina i pacchetti corrispondenti senza ulteriore avviso.

RIFIUTARE Rifiuta i pacchetti corrispondenti, cioè invia un pacchetto ICMP al mittente, che è la porta
irraggiungibile per impostazione predefinita. È possibile specificare un altro tipo di ICMP.

RIFIUTARE; # predefinito su icmp-port-unreachable
REJECT rifiuto-con icmp-net-irraggiungibile;

Digita "iptables -j REJECT -h" per i dettagli.

RITORNO Termina la catena corrente e torna alla catena di chiamate (se "salta
[nome-catena-personalizzata]" è stato utilizzato).

NOP Nessuna azione.

SUPPLEMENTARI PAROLE CHIAVE


Netfilter è modulare. I moduli possono fornire obiettivi aggiuntivi e abbinare parole chiave. La lista
di moduli netfilter è in costante crescita e ferm cerca di tenere il passo con il loro supporto
tutto. Questo capitolo descrive i moduli attualmente supportati.

iptables stile moduli
conto Traffico dell'account per tutti gli host nella rete/maschera di rete definita. Questo è uno dei
abbina moduli che si comportano come un bersaglio, cioè dovrai principalmente usare il NOP
bersaglio.

mod account aname mynetwork aaddr 192.168.1.0/24 in breve NOP;

tipo di indirizzo
Controlla il tipo di indirizzo; indirizzo di origine o indirizzo di destinazione.

mod addrtype tipo src BROADCAST;
mod addrtype dst-type LOCALE;

Digita "iptables -m addrtype -h" per i dettagli.

ah Controlla l'intestazione SPI in un pacchetto AH.

mod ahspi 0x101;
mod ah ahspi! 0x200:0x2ff;

Argomenti aggiuntivi per IPv6:

mod ah ahlen 32 ACCETTO;
mod ah ahlen !32 ACCETTO;
mod ah ahre ACCEPT;

commento Aggiunge un commento di un massimo di 256 caratteri a una regola, senza alcun effetto. Notare che
a differenza dei commenti ferm ('#'), questo verrà visualizzato in "iptables -L".

commento commento mod "Questo è il mio commento." ACCETTARE;

condizione
Corrisponde se un valore in /proc/net/ipt_condition/NAME è 1 (il percorso è
/proc/net/ip6t_condition/NAME per il dominio ip6).

mod condizione condizione (abc def) ACCEPT;
mod condizione condizione !foo ACCEPT;

connbyte
Corrisponde a quanti byte o pacchetti una connessione (o uno dei due flussi
che costituiscono la connessione) hanno trasferito finora, o per byte medi per
pacchetto.

mod connbytes connbytes 65536: connbytes-dir entrambi connbytes-mode byte ACCEPT;
mod connbytes connbytes !1024:2048 connbytes-dir risposta connbytes-mode pacchetti ACCEPT;

Valori validi per connbytes-dir: i, rispondere, entrambi; per modalità connbytes:
pacchetti, bytes, avgpkt.

limite
Consente di limitare il numero di connessioni TCP parallele a un server per
indirizzo IP del client (o blocco di indirizzi).

mod connlimit connlimit-sopra 4 REJECT;
mod connlimit connlimit-sopra !4 ACCETTO;
mod connlimit connlimit-sopra 4 connlimit-mask 24 REJECT;

connmark
Controllare il campo mark associato alla connessione, impostato dal target CONNMARK.

marchio connmark mod 64;
marchio connmark mod 6/7;

conntrack
Controlla le informazioni di tracciamento della connessione.

mod conntrack ctstate (STABILITO CORRELATO);
mod conntrack ctproto tcp;
mod conntrack ctorigsrc 192.168.0.2;
mod conntrack torigdst 1.2.3.0/24;
mod conntrack ctorigsrport 67;
mod conntrack torigdstport 22;
mod conntrack ctreplsrc 2.3.4.5;
mod conntrack ctrepldst! 3.4.5.6;
mod conntrack ctstatus ASSICURATO;
mod conntrack cctexpire 60;
mod conntrack cctexpire 180:240;

Digita "iptables -m conntrack -h" per i dettagli.

dccp Controllare gli attributi specifici del DCCP (Datagram Congestion Control Protocol). Questo
il modulo viene caricato automaticamente quando si utilizza "protocollo dccp".

proto dccp sport 1234 dport 2345 ACCETTO;
proto dccp tipi dccp (SYNCACK ACK) ACCEPT;
proto dccp tipi dccp !REQUEST DROP;
proto dccp dccp-opzione 2 ACCETTA;

dscp Corrisponde al campo DSCP a 6 bit all'interno del campo TOS.

mod dscp dscp 11;
mod dscp dscp-classe AF41;

ECN Abbina i bit ECN di un'intestazione TCP IPv4.

mod ecn ecn-tcp-cwr;
mod ecn ecn-tcp-ece;
mod ecn ecn-ip-ect 2;

Digita "iptables -m ecn -h" per i dettagli.

esp Controlla l'intestazione SPI in un pacchetto ESP.

mod esp espspi 0x101;
mod soprattutto! 0x200:0x2ss;

eui64 "Questo modulo corrisponde alla parte EUI-64 di un indirizzo IPv6 autoconfigurato senza stato.
Confronta l'EUI-64 derivato dall'indirizzo MAC di origine nel frame Ethernet con
i 64 bit inferiori dell'indirizzo di origine IPv6. Ma il bit "Universale/Locale" non lo è
rispetto. Questo modulo non corrisponde ad altri frame del livello di collegamento ed è valido solo in
le catene PREROUTING, INPUT e FORWARD."

mod eui64 ACCETTA;

sfocato "Questo modulo corrisponde a un limite di velocità basato su un controller a logica fuzzy [FLC]."

mod fuzzy limite inferiore 10 limite superiore 20 ACCEPT;

eh Corrisponde all'intestazione delle opzioni Hop-by-Hop (ip6).

mod hbh hbh-len 8 ACCETTO;
mod hbh hbh-len !8 ACCETTO;
mod hbh hbh-opts (1:4 2:8) ACCETTA;

hl Corrisponde al campo Hop Limit (ip6).

mod hl hl-eq (8 10) ACCETTO;
mod hl hl-eq !5 ACCETTO;
mod hl hl-gt 15 ACCETTO;
mod hl hl-lt ​​2 ACCETTO;

aiutante Controlla quale modulo di supporto conntrack tiene traccia di questa connessione. Il porto potrebbe essere
specificato con "-portnr".

mod helper helper irc ACCETTA;
mod helper helper ftp-21 ACCETTA;

icmp Controlla gli attributi specifici dell'ICMP. Questo modulo viene caricato automaticamente quando usi
"protocollo icmp".

proto icmp tipo icmp echo-request ACCEPT;

Questa opzione può essere utilizzata anche in be ip6 dominio, anche se questo è chiamato icmpv6 in
ip6tables.

Utilizzare "iptables -p icmp "-h"" per ottenere un elenco di tipi ICMP validi.

spensierato Abbina un intervallo di indirizzi IPv4.

mod iprange src-range 192.168.2.0-192.168.3.255;
mod iprange dst-range! 192.168.6.0-192.168.6.255;

ipv4opzioni
Abbina le opzioni dell'intestazione IPv4 come il routing di origine, il percorso di registrazione, il timestamp e
avviso router.

mod ipv4options ssrr ACCETTO;
mod ipv4options lsrr ACCETTO;
mod ipv4options no-srr ACCETTO;
mod ipv4options !rr ACCETTO;
mod ipv4options !ts ACCETTA;
mod ipv4options !ra ACCETTO;
mod ipv4options !any-opt ACCETTA;

intestazione ipv6
Corrisponde all'intestazione dell'estensione IPv6 (ip6).

intestazione mod ipv6header !(hop frag) ACCEPT;
intestazione mod ipv6header (auth dst) ACCEPT;

limite di hash
Simile a "limite mod", ma aggiunge la possibilità di aggiungere per destinazione o per porta
limiti gestiti in una tabella hash.

mod hashlimit hashlimit 10/minuto hashlimit-burst 30/minuto
hashlimit-mode dstip hashlimit-name foobar ACCEPT;

Valori possibili per la modalità hashlimit: dstip dstport srcip srcport (o un elenco con
più di uno di questi).

Ci sono più impostazioni possibili, digita "iptables -m hashlimit -h" per
documentazione.

lunghezza Controlla la lunghezza del pacco.

mod lunghezza lunghezza 128; # esattamente 128 byte
lunghezza mod lunghezza 512:768; # gamma
lunghezza lunghezza mod! 256; # negato

limitare Limita la velocità del pacchetto.

limite limite mod 1/secondo;
limite mod limite 15/minuto limit-burst 10;

Digita "iptables -m limit -h" per i dettagli.

Mac Corrisponde all'indirizzo MAC di origine.

mod mac sorgente mac 01:23:45:67:89;

marchio Corrisponde ai pacchetti in base al loro campo mark netfilter. Questo potrebbe essere un numero intero a 32 bit
tra 0 e 4294967295.

marchio mod 42;

mh Corrisponde all'intestazione della mobilità (dominio ip6).

aggiornamento vincolante proto mh tipo mh ACCEPT;

multiporta
Corrisponde a un insieme di porte di origine o di destinazione (solo UDP e TCP).

mod multiporta sorgenti-porte (https ftp);
mod multiport destinazioni-porte (dominio mysql);

Questa regola ha un grande vantaggio su "dport" e "sport": genera una sola regola
per un massimo di 15 porte invece di una regola per ogni porta.

ennesimo Abbina ogni ennesimo pacchetto.

mod ennesimo ogni 3;
mod nesimo contatore 5 ogni 2;
mod nesimo avvio 2 ogni 3;
mod nesimo start 5 pacchetto 2 ogni 6;

Digita "iptables -m nth -h" per i dettagli.

eccetera. Abbina i pacchetti a seconda del sistema operativo del mittente.

mod os genere Linux;
mod of! genere FreeBSD ttl 1 log 1;

Digita "iptables -m osf -h" per i dettagli.

proprietario Controlla le informazioni sul creatore del pacchetto, vale a dire ID utente, ID gruppo, ID processo,
ID sessione e nome comando.

proprietario mod uid-proprietario 0;
proprietario mod gid-proprietario 1000;
proprietario mod pid-proprietario 5432;
proprietario mod sid-proprietario 6543;
proprietario mod proprietario cmd "sendmail";

("cmd-owner", "pid-owner" e "sid-owner" richiedono speciali patch del kernel no
incluso nel kernel Linux vanilla)

physdev Corrisponde al dispositivo fisico su cui un pacchetto è entrato o sta per uscire dal
macchina. Questo è utile per le interfacce a ponte.

mod physdev physdev-in ppp1;
mod physdev physdev-out eth2;
mod physdev physdev-è-in;
mod physdev physdev-è-fuori;
mod physdev physdev-è-ponte;

tipo di pacchetto Controlla il tipo di pacchetto a livello di collegamento.

mod pkttype tipo pkt unicast;
mod pkttype pkt tipo broadcast;
mod pkttype multicast di tipo pkt;

politica Corrisponde al criterio IPsec applicato a questo pacchetto.

mod policy dir out pol ipsec ACCETTA;
mod policy strict reqid 23 spi 0x10 proto ah ACCETTO;
mod policy mode tunnel tunnel-src 192.168.1.2 ACCETTA;
mod policy mode tunnel tunnel-dst 192.168.2.1 ACCETTA;
mod policy strict next reqid 24 spi 0x11 ACCETTA;

Nota che la parola chiave proto è anche usato come versione abbreviata di protocollo
(modulo di corrispondenza integrato). Puoi risolvere questo conflitto usando sempre il lungo
parola chiave protocollo.

PSD Rileva le scansioni delle porte TCP/UDP.

mod psd psd-soglia-peso 21 psd-soglia-ritardo 300
psd-lo-ports-peso 3 psd-hi-ports-peso 1 DROP;

quota Implementa le quote di rete decrementando un contatore di byte con ogni pacchetto.

mod quota quota 65536 ACCETTO;

casuale Abbina una percentuale casuale di tutti i pacchetti.

media casuale mod 70;

regno Abbina il regno di routing. Utile in ambienti che utilizzano BGP.

regno mod regno 3;

recente Contrassegna temporaneamente gli indirizzi IP di origine.

mod set recente;
mod recenti rcheck secondi 60;
mod recente set rsource name "badguy";
mod recente set rdest;
mod recente rcheck nome sorgente "badguy" secondi 60;
mod aggiornamento recente secondi 120 hitcount 3 rttl;

Questo modulo netfilter ha un difetto di progettazione: sebbene sia implementato come una corrispondenza
modulo, ha un comportamento simile a un bersaglio quando si utilizza la parola chiave "set".

<http://snowman.net/projects/ipt_recent/>

rt Corrisponde all'intestazione di routing IPv6 (solo ip6).

mod rt rt-tipo 2 rt-len 20 ACCEPT;
mod rt rt-type !2 rt-len !20 ACCETTA;
mod rt rt-segsleft 2:3 ACCETTO;
mod rt rt-segsleft !4:5 ACCETTO;
mod rt rt-0-res rt-0-addrs (::1 ::2) rt-0-non-rigoroso ACCEPT;

SCTP Controllare gli attributi specifici di SCTP (Stream Control Transmission Protocol). Questo
modulo viene caricato automaticamente quando si utilizza "protocollo sctp".

proto sctp sport 1234 dport 2345 ACCETTO;
proto sctp solo tipi di blocchi DATA: Be ACCEPT;
proto sctp tipi di blocchi qualsiasi (INIT INIT_ACK) ACCEPT;
proto sctp chunk-types !all (HEARBEAT) ACCEPT;

Utilizzare "iptables -p sctp "-h"" per ottenere un elenco di tipi di blocchi validi.

set Verifica l'IP/Porta/MAC di origine o di destinazione rispetto a un set.

mod set set badguys src DROP;

Vederehttp://ipset.netfilter.org/> per maggiori informazioni.

stato Controlla lo stato di rilevamento della connessione.

stato mod stato INVALID DROP;
stato mod stato (STABILITO CORRELATO) ACCEPT;

Digita "iptables -m state -h" per i dettagli.

statistica
successore di ennesimo ed casuale, attualmente non documentato nel iptables(8) pagina man.

mod statistica modalità probabilità casuale 0.8 ACCEPT;
mod modo statistico n-esimo ogni 5 pacchetti 0 DROP;

stringa Corrisponde a una stringa.

mod string stringa "foo bar" ACCEPT;
mod string algo kmp da 64 a 128 hex-string "deadbeef" ACCEPT;

tcp Controlla gli attributi specifici del TCP. Questo modulo viene caricato automaticamente quando usi
"protocollo tcp".

prototipo tcp sport 1234;
protocollo tcp dport 2345;
proto tcp flag tcp (SYN ACK) SYN;
proto tcp tcp-flag ! (RISC. SINC) SINC;
proto tcp tcp-flags ALL (RST ACK);
sintesi proto-tcp;
proto tcp tcp-opzione 2;
protocollo tcp mss 512;

Digita "iptables -p tcp -h" per i dettagli.

tcpmss Controllare il campo TCP MSS di un pacchetto SYN o SYN/ACK.

mod tcpmss mss 123 ACCETTO;
mod tcpmss mss 234:567 ACCETTO;

tempo Controlla se l'ora di arrivo di un pacchetto rientra nell'intervallo specificato.

ora mod ora inizio 12:00;
orario mod timestop 13:30;
giorni di tempo mod (lun mer ven);
data ora mod datastart 2005:01:01;
mod ora datainizio 2005:01:01:23:59:59;
mod ora datestop 2005:04:01;
ora giorno del mese (30 31);
giorni feriali mod time (mer gio);
mod ora timestart 12:00 utc;
mod ora timestart 12:00 localtz;

Digita "iptables -m time -h" per i dettagli.

tos Corrisponde a un pacchetto sul valore TOS specificato.

mod tos Riduci-Costo ACCEPT;
mod tos !Normal-Service ACCEPT;

Digita "iptables -m tos -h" per i dettagli.

TTL Corrisponde al campo ttl (time to live) nell'intestazione IP.

mod ttl ttl-eq 12; # ttl è uguale a
mod ttl ttl-gt 10; # ttl maggiore di
mod ttl ttl-lt 16; # ttl meno di

u32 Confronta i dati grezzi dal pacchetto. Puoi specificare più di un filtro in un fermo
elenco; questi non sono espansi in più regole.

mod u32 u32 '6&0xFF=1' ACCETTA;
mod u32 u32 ('27&0x8f=7' '31=0x527c4833') DROP;

immondo Corrisponde a pacchetti che sembrano malformati o insoliti. Questa partita non ha più
parametri.

iptables bersaglio moduli
I seguenti obiettivi aggiuntivi sono disponibili in ferm, a condizione che tu li abbia abilitati in
il tuo kernel:

CLASSIFICARE
Imposta la classe CBQ.

CLASSIFICA classe set 3:50;

GRUPPO
Configura un semplice cluster di nodi che condividono un determinato indirizzo IP e MAC.
Le connessioni sono distribuite staticamente tra i nodi.

CLUSTERIP nuovo hashmode sourceip clustermac 00:12:34:45:67:89
totale-nodi 4 nodo locale 2 hash-init 12345;

CONNMARK
Imposta il valore del contrassegno netfilter associato a una connessione.

CONNMARK set mark 42;
CONNMARK salva-mark;
marchio di ripristino CONNMARK;
CONNMARK maschera di contrassegno di salvataggio 0x7fff;
CONNMARK maschera di ripristino dei segni 0x8000;

CONNSECMARK
Questo modulo copia i contrassegni di sicurezza dai pacchetti alle connessioni (se non etichettati),
e dalle connessioni di nuovo ai pacchetti (anche solo se non etichettati). Tipicamente utilizzato in
insieme a SECMARK, è valido solo nella tabella mangle.

CONNSECMARK salva;
ripristino CONNSECMARK;

DTA a [indirizzo-ip|intervallo-ip|intervallo-ip-porta]
Modificare l'indirizzo di destinazione del pacchetto.

DNAT a 10.0.0.4;
DNAT a 10.0.0.4:80;
DNAT a 10.0.0.4:1024-2048;
DNAT a 10.0.1.1-10.0.1.20;

ECN Questo obiettivo consente di aggirare selettivamente i buchi neri ECN noti. Può solo
essere utilizzato nel tavolo del mangano.

ECN ecn-tcp-rimuovi;

HL Modificare il campo Limite hop IPv6 (solo ip6/mangle).

HL hl-set 5;
HL hl-dic 2;
HL hl-inc 1;

IPV4OPTSSTRIP
Elimina tutte le opzioni IP da un pacchetto. Questo modulo non richiede alcuna opzione.

IPV4OPTSSTRIP;

LOG Registra tutti i pacchetti che corrispondono a questa regola nel registro del kernel. Fai attenzione con il registro
allagamento. Nota che questo è un "bersaglio non definitivo", ovvero l'attraversamento delle regole
continua alla regola successiva.

LOG avviso a livello di log prefisso log "Guarda questo: ";
LOG log-tcp-sequenza log-tcp-opzioni;
LOG log-ip-opzioni;

MARK Imposta il campo mark netfilter per il pacchetto (un intero a 32 bit compreso tra 0 e
4294967295):

MARK set-mark 42;
SEGNO set-xmark 7/3;
MARCHIO e contrassegno 31;
MARCHIO o contrassegno 1;
MARCHIO xor-mark 12;

MASCHERA
Pacchetti abbinati in maschera. Facoltativamente seguito da una porta o da un intervallo di porte per
iptables. Specificare come "123", "123-456" o "123:456". Il parametro dell'intervallo di porte
specifica da quali porte locali dovrebbero avere origine le connessioni mascherate.

MASCHERA;
MASQUERADE ai porti 1234:2345;
MASQUERADE alle porte 1234:2345 casuale;

MIRROR Bersaglio dimostrativo sperimentale che inverte i campi sorgente e destinazione
nell'intestazione IP.

SPECCHIO;

NETMAP Mappa un'intera rete su un'altra rete in nat tabella.

NETMAP a 192.168.2.0/24;

NESSUNA TRACCIA Disabilita il monitoraggio della connessione per tutti i pacchetti che corrispondono a quella regola.

proto tcp dport (135:139 445) NOTRACK;

NLOG Registra i pacchetti su netlink; questo è il successore di ULOG.

NFLOG nflog-group 5 nflog-prefix "Guarda questo: ";
NFLOG nflog-intervallo 256;
NFLOG nflog-soglia 10;

NFCODA Accodamento dello spazio utente, richiede il supporto del kernel nfnetlink_queue.

proto tcp dport ftp NFQUEUE numero-coda 20;

CODA Accodamento dello spazio utente, il predecessore di NFCODA. Tutti i pacchetti vanno in coda 0.

proto tcp dport ftp CODA;

REINDIRIZZARE ai porti [porti]
Proxy trasparente: modifica l'IP di destinazione del pacchetto sulla macchina
stessa.

proto tcp dport http REDIRECT alle porte 3128;
proto tcp dport http REDIRECT to-ports 3128 casuale;

STESSO Simile a SNAT, ma un client è mappato allo stesso IP di origine per tutti i suoi
connessioni.

UGUALE a 1.2.3.4-1.2.3.7;
SAME a 1.2.3.8-1.2.3.15 cenno del capo;
SAME a 1.2.3.16-1.2.3.31 casuale;

SECMARK Viene utilizzato per impostare il valore del contrassegno di sicurezza associato al pacchetto per l'uso da parte di
sottosistemi di sicurezza come SELinux. È valido solo nella tabella mangle.

SECMARK selctx "system_u:object_r:httpd_packet_t:s0";

SET [aggiungo-set|del-set] [imposta nome] [bandiera/e]
Aggiungi l'IP al set specificato. Vederehttp://ipset.netfilter.org/>

proto icmp tipo icmp echo-request SET add-set badguys src;

SNAT a [indirizzo-ip|intervallo-ip|intervallo-ip-porta]
Modificare l'indirizzo di origine del pacchetto.

SNAT a 1.2.3.4;
SNAT a 1.2.3.4: 20000-30000;
SNAT a 1.2.3.4 casuale;

TCPMSS Modificare il valore MSS dei pacchetti TCP SYN.

TCPMSS set-mss 1400;
TCPMSS morsetto-mss-to-pmtu;

QUELLI set-to [valore]
Imposta il bit del tipo di servizio del pacchetto TCP su questo valore. Questo sarà usato da
qualunque cosa sia disposto a fare lo scheduler del traffico, principalmente la tua macchina Linux, ma forse
di più. I bit tos originali vengono cancellati e sovrascritti da questo valore.

TOS impostato su Maximize-Throughput;
TOS e-tos 7;
TOS or-to 1;
TOS xor-tos 4;

Digita "iptables -j TOS -h" per i dettagli.

TTL Modifica il campo dell'intestazione TTL.

TTL ttl-set 16;
TTL ttl-dic 1; # diminuisce di 1
TTL ttl-inc 4; # aumenta di 4

ULOG Registra i pacchetti in un programma in spazio utente.

ULOG ulog-nlgroup 5 ulog-prefix "Guarda questo: ";
ULOG ulog-cprange 256;
ULOG ulog-qsoglia 10;

ALTRO DOMINI


Dalla versione 2.0, ferm supporta non solo ip ed ip6, ma anche arp (tabelle ARP) e eb
(tabelle di collegamento ethernet). I concetti sono simili a iptables.

arptables parole chiave
fonte-ip, destinazione-ip
Corrisponde all'indirizzo IPv4 di origine o di destinazione. Uguale a sadr ed papà nel ip
dominio.

sorgente-mac, destinazione-mac
Corrisponde all'indirizzo MAC di origine o di destinazione.

interfaccia, faccia esterna
Interfaccia di ingresso e uscita.

h-lunghezza
Lunghezza hardware del pacchetto.

catena INGRESSO h-lunghezza 64 ACCETTA;

codice operativo Codice operazione, per i dettagli vedere il iptables(8).

codice operativo 9 ACCETTA;

tipo h Tipo di hardware.

h-tipo 1 ACCETTA;

prototipo
Tipo di protocollo.

prototipo 0x800 ACCEPT;

storpiare
Le parole chiave mangle-ip-s, mangle-ip-d, mangle-mac-s, mangano-mac-d, mangle-bersaglio
può essere utilizzato per ARP mangling. Vedere iptables(8) per i dettagli.

betabili parole chiave
proto Corrisponde al protocollo che ha creato il frame, ad es IPv4 or PPP. Per un elenco, vedere
/etc/ethertypes.

interfaccia, faccia esterna
Interfaccia fisica di input e output.

ingresso logico, uscita logica
L'interfaccia del ponte logico.

sadr, papà
Corrisponde all'indirizzo MAC di origine o di destinazione.

partita moduli
Sono supportati i seguenti moduli di corrispondenza: 802.3, arp, ip, mark_m, pkttype, stp,
vlan, registro.

Target estensioni
Sono supportate le seguenti estensioni di destinazione: arpreply, dnat, mark, redirect,
strappare.

Si prega di notare che c'è un conflitto tra --segnare dal mark_m modulo partita
ed -j marchio. Poiché entrambi sarebbero implementati con la parola chiave ferm marchio, noi
deciso di risolverlo scrivendo il nome del bersaglio in maiuscolo, come nell'altro
domini. L'esempio seguente riscrive il segno da 1 a 2:

segno 1 SEGNALE 2;

AVANZATE CARATTERISTICHE


Variabili
In file firewall complessi, è utile utilizzare variabili, ad esempio per fornire una rete
interfaccia un nome significativo.

Per impostare le variabili, scrivi:

@def $DEV_INTERNET = eth0;
@def $PORTE = (http ftp);
@def $MORE_PORTE = ($PORTE 8080);

Nel codice ferm reale, le variabili vengono utilizzate come qualsiasi altro parametro di parole chiave:

catena interfaccia INPUT $DEV_INTERNET proto tcp dport $MORE_PORTS ACCEPT;

Si noti che le variabili possono essere utilizzate solo nei parametri delle parole chiave ("192.168.1.1", "http"); essi
non può contenere parole chiave ferm come "proto" o "interfaccia".

Le variabili sono valide solo nel blocco corrente:

@def $DEV_INTERNET = eth1;
catena INGRESSO {
protocollo tcp {
@def $DEV_INTERNET = ppp0;
interfaccia $DEV_INTERNET dport http ACCEPT;
}
interfaccia $DEV_INTERNET DROP;
}

sarà ampliato a:

catena INGRESSO {
protocollo tcp {
interfaccia ppp0 dport http ACCEPT;
}
interfaccia eth1 DROP;
}

Il "def $DEV_INTERNET = ppp0" è valido solo nel blocco "proto tcp"; il blocco genitore
sa ancora "set $DEV_INTERNET = eth1".

I file di inclusione sono speciali: le variabili dichiarate in un file incluso sono ancora disponibili in
il blocco delle chiamate. Questo è utile quando si include un file che dichiara solo variabili.

Automatico variabili
Alcune variabili sono impostate internamente da ferm. Gli script di Ferm possono usarli come qualsiasi altro
variabile.

$NOMEFILE
Il nome del file di configurazione relativo alla directory ferm è stato avviato.

$NOMEBFILE
Il nome di base del file di configurazione.

$NOMEDIR
La directory del file di configurazione.

$DOMINIO Il dominio attuale. Uno di ip, ip6, arp, eb.

$TABELLA La tabella di netfilter corrente.

$CATENA L'attuale catena netfilter.

$LINEA La riga dello script corrente. Può essere usato così:

@def &log($msg) = {
LOG log-prefix "rule=$msg:$LINE ";
}
.
.
.
&log("messaggio di registro");

funzioni
Le funzioni sono simili alle variabili, tranne per il fatto che possono avere parametri e forniscono
ferm comandi, non valori.

@def &FOO() = proto (tcp udp) dominio dport;
&PIPPO() ACCETTO;

@def &TCP_TUNNEL($porta, $destinazione) = {
catena di filtri tabella FORWARD interfaccia ppp0 proto tcp dport $port daddr $dest outerface eth0 ACCEPT;
table nat chain PREROUTING interfaccia ppp0 proto tcp dport $port daddr 1.2.3.4 DNAT a $dest;
}

&TCP_TUNNEL(http, 192.168.1.33);
&TCP_TUNNEL(ftp, 192.168.1.30);
&TCP_TUNNEL((ssh smtp), 192.168.1.2);

Una chiamata di funzione che contiene un blocco (come '{...}') deve essere l'ultimo comando in un ferm
regola, cioè deve essere seguita da ';'. Il '&PIPPO()' esempio non contiene un blocco, quindi
puoi scrivere 'ACCETTO' dopo la chiamata. Per aggirare questo problema, puoi riordinare le parole chiave:

@def &IPSEC() = { proto (esp ah); proto udp dport 500; }
catena INPUT ACCEPT &IPSEC();

Backtick
Con i backtick, puoi usare l'output di un comando esterno:

@def $DNSSERVERS = `server dei nomi grep /etc/resolv.conf | awk '{stampa $2}'`;
catena INPUT proto tcp saddr $DNSSERVERS ACCEPT;

Il comando viene eseguito con la shell (/bin/sh), proprio come i backtick in perl. ferm lo fa
non eseguire alcuna espansione variabile qui.

L'output viene quindi tokenizzato e salvato come elenco ferm (array). Righe che iniziano con '#'
vengono ignorati; le altre righe possono contenere un numero qualsiasi di valori, separati da spazi.

Inclusioni
I @includere parola chiave consente di includere file esterni:

@include 'vars.ferm';

Il nome del file è relativo al file chiamante, ad esempio quando si include da
/etc/ferm/ferm.conf, la dichiarazione di cui sopra include /etc/ferm/vars.ferm. Variabili e
le funzioni dichiarate in un file incluso sono ancora disponibili nel file chiamante.

includere funziona all'interno di un blocco:

catena INGRESSO {
@include 'input.ferm';
}

Se specifichi una directory (con un '/' finale), tutti i file in questa directory sono
inclusi, in ordine alfabetico:

@include 'ferm.d/';

Con un simbolo del tubo finale, ferm esegue un comando shell e ne analizza l'output:

@include '/root/generate_ferm_rules.sh $HOSTNAME|'

Condizionali
La parola chiave @Se introduce un'espressione condizionale:

@if $condizione DROP;

Un valore viene valutato vero proprio come in Perl: zero, lista vuota, stringa vuota sono false,
tutto il resto è vero. Esempi per valori veri:

(ab); 1; 'pippo'; (0 0)

Esempi di valori falsi:

(); 0; '0'; ''

Vi sono anche le @altro:

@if $condizione DROP; @else RIFIUTO;

Nota il punto e virgola prima di @altro.

È possibile utilizzare le parentesi graffe dopo entrambe @Se or @altro:

@if $condizione {
MARK set-mark 2;
RESTITUZIONE;
} @altro {
MARK set-mark 3;
}

Poiché anche la parentesi graffa di chiusura termina il comando, non è necessario il punto e virgola.

Non c'è @else, Utilizzare @altro @Se anziché.

Esempio:

@def $have_ipv6 = `test -f /proc/net/ip6_tables_names && echo 1 || eco`;
@se $have_ipv6 {
dominio ip6 {
#....
}
}

ganci
Per eseguire comandi personalizzati, puoi installare hook:

@hook pre "echo 0 >/proc/sys/net/ipv4/conf/eth0/inoltro";
@hook post "echo 1 >/proc/sys/net/ipv4/conf/eth0/inoltro";
@hook flush "echo 0 >/proc/sys/net/ipv4/conf/eth0/inoltro";

Il comando specificato viene eseguito utilizzando la shell. "pre" significa eseguire il comando prima
applicare le regole del firewall e "post" significa eseguire il comando in seguito. ganci "a filo"
vengono eseguiti dopo che ferm ha scaricato le regole del firewall (opzione --flush). Puoi installare qualsiasi
numero di ganci.

INTERNO FUNZIONI


Ci sono diverse funzioni integrate che potresti trovare utili.

@eq(a,b)
Verifica l'uguaglianza di due valori. Esempio:

@if @eq($DOMINIO, ip6) DROP;

@ne(a,b)
Simile a @eq, questo verifica la non uguaglianza.

@non(x)
Nega un valore booleano.

@resolve((nomehost1 nomehost2 ...), [genere])
Di solito, i nomi host vengono risolti da iptables. Per consentire a ferm di risolvere i nomi host, utilizzare il pulsante
funzione @resolve:

saddr @resolve(my.host.foo) proto tcp dport ssh ACCEPT;
saddr @resolve((another.host.foo Third.host.foo)) proto tcp dport openvpn ACCEPT;
daddr @resolve(ipv6.google.com, AAAA) protocollo tcp dport http ACCEPT;

Nota le doppie parentesi nella seconda riga: la coppia interna per la creazione di un elenco di ferm,
e la coppia esterna come delimitatori dei parametri della funzione.

Il secondo parametro è facoltativo e specifica il tipo di record DNS. L'impostazione predefinita è "A".

Fare attenzione con i nomi host risolti nella configurazione del firewall. Le richieste DNS possono bloccare il
configurazione del firewall per lungo tempo, lasciando la macchina vulnerabile o potrebbero non funzionare.

@gatto(a, b, ...)
Concatena tutti i parametri in un'unica stringa.

@substr(espressione, compensare, lunghezza)
Estrae una sottostringa dall'espressione e la restituisce. Il primo carattere è all'offset 0. Se
OFFSET è negativo, inizia così lontano dalla fine della stringa.

@length(espressione)
Restituisce la lunghezza in caratteri del valore di ESPR.

@nomebase(percorso)
Restituisce il nome di base del file per un determinato percorso (File::Spec::splitpath).

@dirname(percorso)
Restituisce il nome dell'ultima directory per un determinato percorso, assumendo che l'ultimo componente sia a
nome file (File::Spec::splitpath).

@ipfilter(lista)
Filtra gli indirizzi IP che ovviamente non corrispondono al dominio corrente. Questo è
utile per creare variabili e regole comuni per IPv4 e IPv6:

@def $TRUSTED_HOSTS = (192.168.0.40 2001:abcd:ef::40);

dominio (ip ip6) catena INPUT {
saddr @ipfilter($TRUSTED_HOSTS) proto tcp dport ssh ACCETTA;
}

RICETTE


I ./esempi/ directory contiene numerose configurazioni ferm che possono essere utilizzate per iniziare
un nuovo firewall. Questa sezione contiene più campioni, ricette e trucchi.

Facile porto invio
La funzione Ferm rende le attività di routine facili e veloci:

@def &FORWARD_TCP($proto, $porta, $destinazione) = {
catena di filtri tabella FORWARD interfaccia $DEV_WORLD outerface $DEV_DMZ daddr $dest proto $proto dport $port ACCEPT;
tabella nat catena PREROUTING interfaccia $DEV_WORLD daddr $HOST_STATIC proto $proto dport $port DNAT a $dest;
}

&FORWARD_TCP(tcp, http, 192.168.1.2);
&FORWARD_TCP(tcp, smtp, 192.168.1.3);
&FORWARD_TCP((tcp udp), dominio, 192.168.1.4);

Assistenza ferm
Se la macchina di destinazione non è in grado di funzionare ferm per qualche motivo (forse un dispositivo integrato
senza Perl), puoi modificare il ferm file di configurazione su un altro computer e lascia ferm
generare uno script di shell lì.

Esempio per OpenWRT:

ferm --remote --shell miowrt/ferm.conf >mywrt/firewall.user
chmod +x miowrt/firewall.utente
scp miowrt/firewall.user miowrt.local.net:/eccetera/
ssh mywrt.local.net /etc/firewall.user

VERSIONI


--noexec Non eseguire il iptables(8) comandi, ma salta invece. In questo modo puoi
analizza i tuoi dati, usa --Linee per visualizzare l'output.

--sciacquone Cancella le regole del firewall e imposta la politica di tutte le catene su ACCEPT. ferm
necessita di un file di configurazione per determinare quali domini e tabelle sono
colpiti.

--Linee Mostra le linee del firewall che sono state generate dalle regole. Verranno mostrati
appena prima che vengano eseguiti, quindi se ricevi messaggi di errore da iptables(8)
ecc., puoi vedere quale regola ha causato l'errore.

--interattivo
Applicare le regole del firewall e chiedere conferma all'utente. Ripristina il
precedente set di regole se non c'è una risposta valida dell'utente entro 30 secondi (vedi
--tempo scaduto). Questo è utile per l'amministrazione remota del firewall: puoi testare
le regole senza temere di chiudersi fuori.

--tempo scaduto S If --interattivo viene utilizzato, quindi eseguire il rollback se non esiste una risposta utente valida
dopo questo numero di secondi. Il valore predefinito è 30.

--Aiuto Mostra un breve elenco di opzioni della riga di comando disponibili.

--versione Mostra il numero di versione del programma.

--veloce Abilita la modalità veloce: ferm genera un iptables-salva(8) file e lo installa
con iptables-ripristino(8). Questo è molto più veloce, perché ferm chiama iptables(8)
una volta per ogni regola per impostazione predefinita.

La modalità veloce è abilitata per impostazione predefinita poiché ferm 2.0, deprecando questa opzione.

--Lento Disabilita la modalità veloce, ad esempio corri iptables(8) per ogni regola, e non usare
iptables-ripristino(8).

--conchiglia Genera uno script di shell che chiami iptables-ripristino(8) e lo stampa.
Implica --fast --lines.

--a distanza Genera regole per una macchina remota. Implica --noexec ed --Linee. Può essere
combinato con --conchiglia.

--dominio {ip|ip6}
Gestire solo il dominio specificato. ferm l'output può essere vuoto se il dominio è
non configurato nel file di input.

--def '$nome=valore'
Sostituisci una variabile definita nel file di configurazione.

Usa ferm online utilizzando i servizi onworks.net


Server e workstation gratuiti

Scarica app per Windows e Linux

Comandi Linux

Ad