Scrivere direttamente in / proc contro usando sysctl -w


8

Sto cercando di configurare il kernel del mio server Linux in modo che non funga da router, per maggiore sicurezza. Il punto non è inoltrare i pacchetti.

Ho trovato questo:

echo 0 > /proc/sys/net/ipv4/ip_forward  

e questo:

sysctl -w net.ipv4.ip_forward=0  

Ovviamente entrambi fanno la stessa cosa, ma non sono sicuro di quale sia la vera differenza tra loro. Vorrei anche rendere permanenti gli effetti, se possibile.


Nessuna differenza, sysctl fa lo stesso del comando echo. Semplicemente più facile
vonbrand,

Risposte:


6

Non c'è differenza. Il sysctlcomando su Linux scrive direttamente nei file in /proc/sys. Questo frammento del codice sorgente sysctllo dimostra:

/*
 * Write a sysctl setting
 */
static int WriteSetting(const char *setting)
{
    /* ... */

    /* used to open the file */
    tmpname = xmalloc(equals - name + 1 + strlen(PROC_PATH));
    strcpy(tmpname, PROC_PATH);
    strncat(tmpname, name, (int) (equals - name));
    tmpname[equals - name + strlen(PROC_PATH)] = 0;
    /* change . to / */
    slashdot(tmpname + strlen(PROC_PATH), '.', '/');

    /* ... */

    fp = fopen(tmpname, "w");
    /* some error checking ... */
    rc = fprintf(fp, "%s\n", value);

    /* ... */
}

Se si desidera qualcosa di permanente, è necessario modificare /etc/sysctl.confo aggiungere un file in /etc/sysctl.d(ad esempio /etc/sysctl.d/99-disable-ip-forwarding.conf) contenente:

# Disable IP packet forwarding
net.ipv4.ip_forward = 0

A proposito, alcune distribuzioni lo disabilitano già esplicitamente per impostazione predefinita. Ad esempio RHEL <= 6 o Fedora <= 15 hanno questo in /etc/sysctl.conf:

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

Fedora 20 non lo disabilita più esplicitamente. Non ci sta spedizioni impostazione /etc/sysctl.conf, /etc/sysctl.d/o /usr/lib/sysctl.d/.


L'inoltro non è sempre disattivato per impostazione predefinita?
user1686

È quello che penso anche io, ma non sai mai quali potrebbero essere le distribuzioni selvagge là fuori :-)
Cristian Ciupitu,

@grawity infatti, è disattivato di default anche nella mia distribuzione. Sono un po 'confuso ora, c'è qualche altra configurazione del kernel per evitare che il nostro sistema funzioni come router?
John M.

@JohnM .: cosa c'è da evitare se il valore predefinito è disabilitato?
Cristian Ciupitu,

@CristianCiupitu, non lo so, sono nuovo su Linux e tutto ciò che voglio disabilitare il mio server da runnig come router. Quindi non sono sicuro che questo comando sia sufficiente :)
John M.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.