Come configurare smartphone e PC. Portale informativo

Esempio: consentire ssh su una porta non standard.

FirewallD è uno strumento di gestione del firewall disponibile per impostazione predefinita sui server CentOS 7. È fondamentalmente un wrapper attorno a IPTables e viene fornito con uno strumento di configurazione grafica firewall-config e uno strumento da riga di comando firewall-cmd. Con il servizio IPtables, ogni modifica richiede l'eliminazione delle vecchie regole e la creazione di nuove regole nel file ` /etc/sysconfig/iptables`, mentre con firewalld si applicano solo le differenze.

Zone firewall

FirewallD utilizza servizi e zone invece di regole e catene in Iptables. Le seguenti zone sono disponibili per impostazione predefinita:

  • gocciolare– Elimina tutti i pacchetti di rete in entrata senza risposta, sono disponibili solo le connessioni di rete in uscita.
  • bloccare– Rifiuta tutti i pacchetti di rete in entrata con un messaggio icmp-host-prohibited, sono disponibili solo le connessioni di rete in uscita.
  • pubblico– sono accettati solo collegamenti in entrata selezionati, per l'utilizzo in aree pubbliche
  • esterno– Per le reti esterne con mascheramento, vengono accettate solo le connessioni in ingresso selezionate.
  • dmz– DMZ, accessibile pubblicamente con accesso limitato alla rete interna, sono accettate solo connessioni in ingresso selezionate.
  • opera
  • casa– Per i computer nella zona principale, vengono accettate solo le connessioni in entrata selezionate.
  • interno– Per i computer della rete interna, vengono accettate solo le connessioni in entrata selezionate.
  • di fiducia– Tutte le connessioni di rete sono accettate.

Per ottenere un elenco di tutte le zone disponibili:

# firewall-cmd --get-zones work drop interno esterno trusted home dmz public block

Per visualizzare un elenco di zone predefinite:

# firewall-cmd --get-default-zone public

Per modificare la zona predefinita:

Servizi di firewall

I servizi FirewallD sono file di configurazione XML, con informazioni sulla voce di servizio per firewalld. Per ottenere un elenco di tutti i servizi disponibili:

# firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetd raggio rpcsyncdmaster samba client sano smtp smtps snmp snmptrap calamari ssh sinergia syslog syslog-tls telnet tftp tftp-client tinc tor-socks trasmissione-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

I file di configurazione XML sono archiviati in directory /usr/lib/firewalld/services/ e /etc/firewalld/servizi/.

Configurazione di un firewall con FirewallD

Ad esempio, ecco come configurare un firewall con FirewallD se stai eseguendo un server Web, SSH sulla porta 7022 e un server di posta.

Per prima cosa imposteremo la zona predefinita per la DMZ.

# firewall-cmd --set-default-zone=dmz # firewall-cmd --get-default-zone dmz

Per aggiungere regole di servizio persistenti per HTTP e HTTPS nella DMZ, eseguire il comando seguente:

# firewall-cmd --zone=dmz --add-service=http --permanent # firewall-cmd --zone=dmz --add-service=https --permanent

Aprire la porta 25 (SMTP) e la porta 465 (SMTPS):

firewall-cmd --zone=dmz --add-service=smtp --permanent firewall-cmd --zone=dmz --add-service=smtps --permanent

Porte aperte, IMAP, IMAPS, POP3 e POP3S:

Firewall-cmd --zone=dmz --add-service=imap --permanent firewall-cmd --zone=dmz --add-service=imaps --permanent firewall-cmd --zone=dmz --add-service= pop3 --permanent firewall-cmd --zone=dmz --add-service=pop3s --permanent

Poiché la porta SSH è stata modificata in 7022, rimuoveremo il servizio SSH (porta 22) e apriremo la porta 7022

firewall-cmd --remove-service=ssh --permanent firewall-cmd --add-port=7022/tcp --permanent

Per implementare le modifiche, è necessario riavviare il firewall:

Firewall-cmd --reload

E infine, puoi elencare le regole.

A partire da CentoOS 7, è apparso un nuovo strumento per configurare le regole di filtraggio del traffico firewalld. Si consiglia di utilizzarlo per gestire le regole di iptables. CentOS 8 ora utilizza il framework nftables invece del pacchetto di filtraggio iptables standard e quando configuri le regole del firewall tramite firewalld, stai effettivamente configurando nftables. In questo articolo, esamineremo l'installazione, i concetti di base e la configurazione di firewalld su un server che esegue CentOS 8 (è lo stesso su CentOS 7).


Firewall D– un firewall per proteggere il server dal traffico indesiderato con supporto per la gestione dinamica delle regole (senza riavvio) e l'implementazione di regole firewall permanenti. Funziona come frontend per e nftables. FirewallD può essere utilizzato su quasi tutte le distribuzioni Linux.

Concetti, zone e regole di base del firewalld

Prima di procedere con l'installazione e la configurazione firewalld, conosceremo il concetto di zone, che vengono utilizzate per determinare il livello di fiducia per le varie connessioni. Per diverse zone firewalld puoi applicare varie regole di filtraggio, specificare opzioni firewall attive sotto forma di servizi, protocolli e porte predefiniti, port forwarding e regole avanzate.

Firewall filtra il traffico in entrata per zone, a seconda delle regole applicate alla zona. Se IP- l'indirizzo del mittente della richiesta corrisponde alle regole di una zona, quindi il pacchetto verrà inviato attraverso questa zona. Se l'indirizzo non corrisponde a nessuna delle zone configurate sul server, il pacchetto verrà elaborato dalla zona predefinita. Durante l'installazione firewalld viene chiamata la zona predefinita pubblico.

firewalld ha zone in cui le autorizzazioni per vari servizi sono già preconfigurate. Puoi utilizzare queste impostazioni o creare le tue zone. Elenco delle zone predefinite create durante l'installazione di firewalld (memorizzate nella directory /usr/lib/firewalld/zones/):

gocciolare livello minimo di fiducia. Tutte le connessioni in entrata vengono bloccate senza risposta, sono consentite solo le connessioni in uscita;
bloccare la zona è simile alla precedente, ma quando le richieste in arrivo vengono rifiutate, viene inviato un messaggio icmp-host-prohibited per Ipv4 o icmp6-adm-prohibited per Ipv6;
pubblico rappresenta reti pubbliche non affidabili. Puoi consentire connessioni in entrata selezionate su base individuale;
esterno reti esterne quando si utilizza un firewall come gateway. È configurato per mascherare NAT in modo che la tua rete interna rimanga privata ma accessibile;
interno antonimo di zona esterna. L'host ha un livello di fiducia sufficiente, sono disponibili numerosi servizi aggiuntivi;
dmz utilizzato per i computer situati nella DMZ (computer isolati senza accesso al resto della rete). Sono consentite solo alcune connessioni in entrata;
opera zona per macchine funzionanti (la maggior parte dei computer sulla rete sono affidabili);
casa zona della rete domestica. La maggior parte dei PC può essere considerata affidabile, ma sono supportate solo alcune connessioni in entrata;
di fiducia fidati di tutte le macchine sulla rete. La più aperta di tutte le opzioni disponibili richiede un uso consapevole.

V firewalld vengono utilizzate due serie di regole: permanente e temporanea. Le regole temporanee funzionano fino al riavvio del server. Per impostazione predefinita, quando si aggiungono regole a firewalld, le regole sono considerate temporanee ( tempo di esecuzione). Per aggiungere una regola su base permanente, è necessario utilizzare il flag — permanente. Tali regole verranno applicate dopo il riavvio del server.

Installazione e abilitazione di firewalld su CentOS

Su CentOS 7/8, firewalld è installato per impostazione predefinita con il sistema operativo. Se lo hai rimosso e vuoi installare firewalld, puoi usare il gestore /dnf standard:

# yum install firewalld -y - per Centos 7
# dnf install firewalld -y - per Centos 8

Al demone firewalld avviato automaticamente con l'avvio del server, è necessario aggiungerlo a:

# systemctl abilita firewalld

E corri:

# systemctl avvia firewalld

Verifica lo stato del servizio:

# systemctl stato firewalld

● firewalld.service - firewalld - demone firewall dinamico Caricato: caricato (/usr/lib/systemd/system/firewalld.service; abilitato; predefinito del fornitore: abilitato) Attivo: attivo (in esecuzione) da lunedì 14-10-2019 14:54 :40 +06; 22s fa Documenti: man:firewalld(1) PID principale: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 14 ottobre 14:54:40 server.vpn.ru systemd: avvio firewalld - demone firewall dinamico... 14 ottobre 14:54:40 server.vpn.ru systemd: avvio firewalld - demone firewall dinamico.

Oppure comanda:

# firewall-cmd --state

Il comando firewall-cmd è il frontend firewalld per nftables/iptables.

# firewall-cmd --state

Lavorare con regole firewall

Regole predefinite:

Prima di configurare le regole firewalld, è necessario verificare quale zona è l'impostazione predefinita:

# firewall-cmd --get-default-zone

Poiché abbiamo appena installato firewalld e non l'abbiamo ancora configurato, abbiamo una zona predefinita pubblico.

Controlliamo la zona attiva. È anche uno - pubblico:

# firewall-cmd --get-active-zones

Interfacce pubbliche: eth0

Come puoi vedere, l'interfaccia di rete eth0 è controllata dalla zona pubblico.

Per visualizzare le regole della zona attiva, digitare:

# firewall-cmd --list-all

Destinazione pubblica (attiva): default icmp-block-inversion: nessuna interfaccia: eth0 sorgenti: servizi: dhcpv6-client porte ssh: protocolli: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Dall'elenco, puoi vedere che le normali operazioni relative al client DHCP e ssh sono state aggiunte a questa zona.

Zone disponibili

Per visualizzare un elenco di tutte le zone, è necessario eseguire il comando:

# firewall-cmd --get-zones

Ho questa lista:

Blocca dmz drop esterno casa interno pubblico attendibile lavoro

Per verificare le regole di una zona specifica, è necessario aggiungere la zona bandiera.

# firewall-cmd --zone=home --list-all

Destinazione home: default icmp-block-inversion: nessuna interfaccia: sorgenti: servizi: dhcpv6-client mdns samba-client porte ssh: protocolli: masquerade: no forward-ports: sorgenti-porte: icmp-blocks: rich rules:

Le regole di tutte le zone possono essere visualizzate con il comando:

# firewall-cmd --list-all-zones

L'elenco sarà piuttosto ampio, poiché possono esserci molte zone.

Modifica la zona predefinita.

Per impostazione predefinita, tutte le interfacce di rete si trovano nella zona pubblico, ma possono essere trasferiti in una qualsiasi delle zone con il comando:

# firewall-cmd --zone=home -change-interface=eth0

Dopo il parametro --zona= specificare la zona desiderata.

Per modificare la zona di default è necessario utilizzare il comando:

# firewall-cmd --set-default-zone=home

Aggiungi le regole dell'applicazione

Per aprire una porta per un'applicazione, puoi aggiungere un servizio alle eccezioni. Elenca i servizi disponibili:

L'output conterrà un gran numero di servizi. Informazioni dettagliate sul servizio sono contenute nella relativa xml file. Questi file si trovano nella directory /usr/lib/firewalld/services.

Ad esempio:

# cd /usr/lib/firewalld/services

Posta (SMTP) Questa opzione consente il recapito della posta SMTP in entrata. Se è necessario consentire agli host remoti di connettersi direttamente alla macchina per consegnare la posta, abilitare questa opzione. Non è necessario abilitarlo se raccogli la posta dal server del tuo ISP tramite POP3 o IMAP, o se utilizzi uno strumento come fetchmail. Tieni presente che un server SMTP configurato in modo errato può consentire a macchine remote di utilizzare il tuo server per inviare spam.

Il file XML contiene la descrizione del servizio, il protocollo e il numero di porta che verrà aperto in firewalld.

Quando si aggiungono regole, è possibile utilizzare il parametro --servizio aggiuntivo per rendere disponibile un servizio specifico:

# firewall-cmd --zone=public --add-service=http

# firewall-cmd --zone=public --add-service=https

Dopo aver aggiunto le regole, puoi verificare se i servizi sono stati aggiunti alla zona specificata:

# firewall-cmd --zone=public --list-services

dhcpv6-client http https ssh

Se vuoi rendere permanenti queste regole, devi aggiungere il parametro durante l'aggiunta -permanente.

Per rimuovere un servizio da una zona:

# firewall-cmd --permanent --zone=public --remove-service=http

dhcpv6-client https ssh test

Se desideri aggiungere il tuo servizio alle eccezioni, puoi creare un file xml te stesso e compilalo. Puoi copiare i dati da qualsiasi servizio, modificare il nome, la descrizione e il numero di porta.

Copiamo il file smtp.xml alla directory per lavorare con i servizi utente:

# cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services

Modificare la descrizione del servizio nel file.

Anche il file xml stesso deve essere rinominato in base al nome del servizio. Successivamente, è necessario riavviare firewalld e verificare se il nostro servizio è nell'elenco:

Ho chiamato il servizio test ed è apparso nell'elenco:

syslog-tls telnet test tftp

Ora puoi aggiungere il servizio creato a qualsiasi zona:

# firewall-cmd --zone=pubblico --add-service=test --permanente

# firewall-cmd --zone=public --permanent --list-services

dhcpv6-client http https ssh test

Se non hai trovato il servizio che ti serve nell'elenco, puoi aprire la porta desiderata su firewalld con il comando:

# firewall-cmd --zone=public -add-port=77/tcp - apri la porta 77 TCP
# firewall-cmd --zone=public -add-port=77/udp - apre la porta 77 upp
# firewall-cmd --zone=public -add-port=77-88/udp - intervallo di porte aperte 77-88 upp
# firewall-cmd --zone=public -list-ports - controlla l'elenco delle porte consentite

Blocca/consenti risposte ICMP:

# firewall-cmd --zone=pubblico --add-icmp-block=echo-reply
# firewall-cmd --zone= public --remove-icmp-block=echo-reply

Elimina la porta aggiunta:

# firewall-cmd --zone=public -remove-port=77/udp - rimuove la regola temporanea 77 upp

# firewall-cmd --permanent --zone=public -remove-port=77/udp - rimuove la regola permanente

Aggiunta di zone personalizzate

Puoi creare la tua zona (la chiamerò nostro):

# firewall-cmd --permanent --new-zone=our

Dopo aver creato una nuova zona, nonché dopo aver creato un servizio, è necessario un riavvio firewalld:

# firewall-cmd --reload

# firewall-cmd --get-zones

Blocca dmz drop esterno home interno il nostro lavoro di fiducia pubblica

Zona nostro a disposizione. Puoi aggiungere servizi ad esso o aprire porte specifiche.

Firewalld: blocco degli indirizzi IP, creazione di eccezioni

È possibile aggiungere indirizzi IP affidabili alle eccezioni del firewall o bloccare quelle indesiderate.

Per aggiungere un indirizzo IP specifico (ad esempio 8.8.8.8) al tuo server tramite firewalld, usa il comando:

# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="8.8.8.8" accept"

Controlla la zona e assicurati IP aggiunto alle eccezioni nelle regole avanzate:

Destinazione pubblica (attiva): default icmp-block-inversion: nessuna interfaccia: eth0 sorgenti: servizi: dhcpv6-client http https ssh test port: protocolli: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: famiglia di regole="ipv4" indirizzo di origine="8.8.8.8" accetta

Bloccare IP, è necessario sostituire accettare sul rifiutare:

# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" indirizzo di origine="8.8.4.4" rifiuto"

# firewall-cmd --zone=pubblico --list-all

Destinazione pubblica (attiva): default icmp-block-inversion: nessuna interfaccia: eth0 sorgenti: servizi: dhcpv6-client http https ssh test port: protocolli: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: famiglia di regole="ipv4" indirizzo di origine="8.8.8.8" accetta famiglia di regole="ipv4" indirizzo di origine="8.8.4.4" rifiuta

Puoi consentire un servizio specifico solo per richieste provenienti da un indirizzo IP specifico:

#firewall-cmd --permanent --add-rich-rule "rule family="ipv4" source address="10.10.1.0/24" service name="https" accept"

Se hai urgente bisogno di bloccare tutte le richieste al server in generale, usa il comando panic:

# firewall-cmd --panic-on

Puoi disattivare la modalità panico sia con il comando:

# firewall-cmd --panic-off

Oppure riavviando il server.

Puoi bloccare la configurazione del firewalld per impedire ai servizi root locali di modificare le regole del firewall che hai creato:

# firewall-cmd --lockdown-on

Disabilita la modalità di blocco:

# firewall-cmd --lockdown-off

Port forwarding in firewalld

È possibile creare una regola di port forwarding in firewalld. Per inoltrare la porta 443 alla 9090:

# firewall-cmd --zone=pubblico --add-forward-port=port=443:proto=tcp:toport=9090 --permanent

Per rimuovere una regola di port forwarding:

# firewall-cmd --zone=pubblico --remove-forward-port=port=443:proto=tcp:toport=9090

FirewallD è uno strumento di gestione del firewall disponibile per impostazione predefinita sui server CentOS 7. È fondamentalmente un wrapper attorno a IPTables e viene fornito con uno strumento di configurazione grafica firewall-config e uno strumento da riga di comando firewall-cmd. Con il servizio IPtables, ogni modifica richiede l'eliminazione delle vecchie regole e la creazione di nuove regole nel file ` /etc/sysconfig/iptables`, mentre con firewalld si applicano solo le differenze.

Zone firewall

FirewallD utilizza servizi e zone invece di regole e catene in Iptables. Le seguenti zone sono disponibili per impostazione predefinita:

  • gocciolare– Elimina tutti i pacchetti di rete in entrata senza risposta, sono disponibili solo le connessioni di rete in uscita.
  • bloccare– Rifiuta tutti i pacchetti di rete in entrata con un messaggio icmp-host-prohibited, sono disponibili solo le connessioni di rete in uscita.
  • pubblico– sono accettati solo collegamenti in entrata selezionati, per l'utilizzo in aree pubbliche
  • esterno– Per le reti esterne con mascheramento, vengono accettate solo le connessioni in ingresso selezionate.
  • dmz– DMZ, accessibile pubblicamente con accesso limitato alla rete interna, sono accettate solo connessioni in ingresso selezionate.
  • opera
  • casa– Per i computer nella zona principale, vengono accettate solo le connessioni in entrata selezionate.
  • interno– Per i computer della rete interna, vengono accettate solo le connessioni in entrata selezionate.
  • di fiducia– Tutte le connessioni di rete sono accettate.

Per ottenere un elenco di tutte le zone disponibili:

# firewall-cmd --get-zones work drop interno esterno trusted home dmz public block

Per visualizzare un elenco di zone predefinite:

# firewall-cmd --get-default-zone public

Per modificare la zona predefinita:

Servizi di firewall

I servizi FirewallD sono file di configurazione XML, con informazioni sulla voce di servizio per firewalld. Per ottenere un elenco di tutti i servizi disponibili:

# firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetd raggio rpcsyncdmaster samba client sano smtp smtps snmp snmptrap calamari ssh sinergia syslog syslog-tls telnet tftp tftp-client tinc tor-socks trasmissione-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

I file di configurazione XML sono archiviati in directory /usr/lib/firewalld/services/ e /etc/firewalld/servizi/.

Configurazione di un firewall con FirewallD

Ad esempio, ecco come configurare un firewall con FirewallD se stai eseguendo un server Web, SSH sulla porta 7022 e un server di posta.

Per prima cosa imposteremo la zona predefinita per la DMZ.

# firewall-cmd --set-default-zone=dmz # firewall-cmd --get-default-zone dmz

Per aggiungere regole di servizio persistenti per HTTP e HTTPS nella DMZ, eseguire il comando seguente:

# firewall-cmd --zone=dmz --add-service=http --permanent # firewall-cmd --zone=dmz --add-service=https --permanent

Aprire la porta 25 (SMTP) e la porta 465 (SMTPS):

firewall-cmd --zone=dmz --add-service=smtp --permanent firewall-cmd --zone=dmz --add-service=smtps --permanent

Porte aperte, IMAP, IMAPS, POP3 e POP3S:

Firewall-cmd --zone=dmz --add-service=imap --permanent firewall-cmd --zone=dmz --add-service=imaps --permanent firewall-cmd --zone=dmz --add-service= pop3 --permanent firewall-cmd --zone=dmz --add-service=pop3s --permanent

Poiché la porta SSH è stata modificata in 7022, rimuoveremo il servizio SSH (porta 22) e apriremo la porta 7022

firewall-cmd --remove-service=ssh --permanent firewall-cmd --add-port=7022/tcp --permanent

Per implementare le modifiche, è necessario riavviare il firewall:

Firewall-cmd --reload

E infine, puoi elencare le regole.

Zone

Il demone firewalld gestisce gruppi di regole utilizzando le cosiddette zone.

Le zone sono essenzialmente insiemi di regole che regolano il traffico in base al livello di fiducia in una particolare rete. Le zone sono assegnate alle interfacce di rete e controllano il comportamento del firewall.

I computer che si connettono frequentemente a reti diverse (come i laptop) possono utilizzare le zone per modificare i set di regole in base al loro ambiente. Ad esempio, quando ci si connette a una rete Wi-Fi pubblica, il firewall può applicare regole più rigorose, allentando le restrizioni su una rete domestica.

In firewalld esistono le seguenti zone:

  • drop: il livello più basso di attendibilità della rete. Tutto il traffico in entrata viene eliminato senza risposta, sono supportate solo le connessioni in uscita.
  • block: questa zona è simile alla precedente, ma le richieste in arrivo vengono eliminate con un messaggio icmp-host-prohibited o icmp6-adm-prohibited.
  • public: questa zona rappresenta una rete pubblica che non può essere considerata attendibile, ma accetta le connessioni in entrata caso per caso.
  • esterno: zona di reti esterne. Supporta il mascheramento NAT, che mantiene la rete interna chiusa ma comunque accessibile.
  • interno: il rovescio della zona esterna, reti interne. I computer in questa zona possono essere considerati attendibili. Sono disponibili servizi aggiuntivi.
  • dmz: utilizzato per i computer situati nella DMZ (computer isolati che non avranno accesso al resto della rete); supporta solo alcune connessioni in entrata.
  • lavoro: zona della rete di lavoro. La maggior parte delle macchine sulla rete può essere considerata affidabile. Sono disponibili servizi aggiuntivi.
  • casa: zona della rete domestica. L'ambiente può essere considerato affidabile, ma sono supportate solo le connessioni in ingresso definite dall'utente.
  • attendibile: tutte le macchine sulla rete possono essere considerate attendibili.

Regole di salvataggio

le regole firewalld sono permanenti o temporanee. Se una regola viene visualizzata o cambia nel set, il comportamento corrente del firewall cambia immediatamente. Tuttavia, dopo un riavvio, tutte le modifiche andranno perse se non vengono salvate.

La maggior parte dei comandi firewall-cmd può utilizzare il flag --permanent, che salverà la regola, dopodiché verrà utilizzata in modo permanente.

Abilitazione del firewalld firewall

Per prima cosa devi abilitare il demone. Il file dell'unità systemd si chiama firewalld.service. Per avviare il demone, digita.

sudo systemctl avvia firewalld.service

Assicurati che il servizio sia in esecuzione:

firewall-cmd --state
in esecuzione

Il firewall è ora attivo e funzionante secondo la configurazione predefinita.

Il servizio è attualmente abilitato, ma non si avvierà automaticamente con il server. Per evitare di bloccarti accidentalmente sul tuo server, crea prima una serie di regole, quindi imposta l'avvio automatico.

Regole firewall predefinite

Visualizza le regole predefinite

Per scoprire quale zona è l'impostazione predefinita, digitare:

firewall-cmd --get-default-zone
pubblico

Al momento firewalld non ha ricevuto alcuna istruzione riguardo ad altre zone, inoltre nessuna interfaccia è vincolata ad altre zone, quindi ora la zona pubblica è la zona di default, così come l'unica zona attiva.

Per ottenere un elenco delle zone attive, immettere:


pubblico
interfacce: eth0 eth1

Ci sono due interfacce di rete legate alla zona pubblica: eth0 ed eth1. Le interfacce legate a una zona operano secondo le regole di quella zona.

Per vedere quali regole utilizza una zona per impostazione predefinita, digitare:

firewall-cmd --list-all
pubblico (predefinito, attivo)
interfacce: eth0 eth1
fonti:
servizi: dhcpv6-client ssh
porti:
mascherata: no
forward-port:
blocchi icmp:
regole ricche:

Quindi ora sai che:

  • public è la zona predefinita e l'unica zona attiva.
  • Le interfacce eth0 ed eth1 sono legate ad esso.
  • Supporta il traffico DHCP (assegnazione dell'indirizzo IP) e SSH (amministrazione remota).

Altre zone firewall

Ora dovresti familiarizzare con altre zone.

Per ottenere un elenco di tutte le zone disponibili, digitare:

firewall-cmd --get-zones

Per ottenere le impostazioni per una zona specifica, aggiungi il flag --zone= al comando.

firewall-cmd --zone=home --list-all
casa
interfacce:
fonti:
servizi: dhcpv6-client ipp-client mdns samba-client ssh
porti:
mascherata: no
forward-port:
blocchi icmp:
regole ricche:

Per elencare le definizioni di tutte le zone disponibili, aggiungi l'opzione --list-all-zones. Per una visualizzazione più comoda, l'output può essere passato al cercapersone:

firewall-cmd --list-all-zones | meno

Configurazione delle zone di interfaccia

Inizialmente, tutte le interfacce di rete sono associate alla zona predefinita.

Modifica della zona di interfaccia per una sessione

Per modificare un'interfaccia in un'altra zona per una sessione, utilizzare le opzioni --zone= e --change-interface=.

Ad esempio, per spostare eth0 nella home zone, digitare:

sudo firewall-cmd --zone=home --change-interface=eth0
successo

Nota: Quando si trasferisce un'interfaccia in un'altra zona, tenere presente che ciò potrebbe influire sul funzionamento di alcuni servizi. Ad esempio, la zona principale supporta SSH, quindi le connessioni a questo servizio non verranno interrotte. Ma alcune zone interrompono tutte le connessioni, incluso SSH, e quindi puoi bloccarti accidentalmente dall'accesso al tuo server.

Per verificare che l'interfaccia sia vincolata alla nuova zona, digitare:

firewall-cmd --get-active-zones
casa
interfacce: eth0
pubblico
interfacce: eth1

Dopo aver riavviato il firewall, l'interfaccia sarà nuovamente collegata alla zona predefinita.

sudo systemctl riavvia firewalld.service
firewall-cmd --get-active-zones
pubblico
interfacce: eth0 eth1

Modifica permanente della zona di interfaccia

Se non viene specificata un'altra zona nelle impostazioni dell'interfaccia, dopo aver riavviato il firewall, l'interfaccia verrà nuovamente collegata alla zona predefinita. Su CentOS, tali configurazioni sono archiviate nella directory /etc/sysconfig/network-scripts, in file del formato ifcfg-interface.

Per definire una zona per un'interfaccia, aprire il file di configurazione dell'interfaccia, ad esempio:

Aggiungi la variabile ZONE= alla fine del file e specifica un'altra zona come valore, ad esempio home:

. . .
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONA=casa

Salva e chiudi il file.

Per aggiornare le impostazioni, riavvia il servizio di rete e il firewall:

sudo systemctl riavvia il servizio di rete
sudo systemctl riavvia firewalld.service

Dopo il riavvio, l'interfaccia eth0 sarà vincolata alla home zone.

firewall-cmd --get-active-zones
casa
interfacce: eth0
pubblico
interfacce: eth1

Impostazione della zona predefinita

Puoi anche scegliere una zona predefinita diversa.

Questo viene fatto usando il parametro --set-default-zone=. Dopodiché, tutte le interfacce saranno associate a un'altra zona:

sudo firewall-cmd --set-default-zone=home
casa
interfacce: eth0 eth1

Crea regole per l'applicazione

Aggiunta di un servizio a una zona

Il modo più semplice consiste nell'aggiungere il servizio o la porta alla zona utilizzata dal firewall. Visualizza i servizi disponibili:

firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openpmvpipr pmwebabaoxy pmwebapis pop3s postgresql proxy-dhcp raggio rpc-bind samba samba-client smtp ssh telnet tftp tftp-client client di trasmissione vnc-server wbem-https

Nota: Ulteriori informazioni su ciascun servizio specifico sono disponibili nei file .xml nella directory /usr/lib/firewalld/services. Ad esempio, le informazioni sul servizio SSH sono archiviate in /usr/lib/firewalld/services/ssh.xml e hanno il seguente aspetto:



SSH

Per abilitare il supporto per un servizio in una determinata zona, utilizzare l'opzione --add-service=. È possibile specificare la zona di destinazione con l'opzione --zone=. Per impostazione predefinita, queste modifiche funzioneranno per una sessione. Per salvare le modifiche e usarle in modo permanente, aggiungi il flag --permanent.

Ad esempio, per avviare un server Web per servire il traffico HTTP, devi prima abilitare il supporto per questo traffico nell'area pubblica per una sessione:

sudo firewall-cmd --zone=public --add-service=http

Se il servizio deve essere aggiunto alla zona predefinita, il flag --zone= può essere omesso.

Verifica che l'operazione sia andata a buon fine:

firewall-cmd --zone=public --list-services
client dhcpv6 http ssh

Testare il funzionamento del servizio e del firewall. Se tutto funziona correttamente, puoi modificare il set di regole permanenti e aggiungervi una regola per supportare questo servizio.

sudo firewall-cmd --zone=public --permanent --add-service=http

Per visualizzare un elenco di regole permanenti, digitare:

sudo firewall-cmd --zone=public --permanent --list-services
client dhcpv6 http ssh

La zona pubblica ora supporta HTTP e la porta 80 in modo permanente. Se il server web può servire il traffico SSL/TLS, puoi anche aggiungere il servizio https (per una singola sessione o in un insieme di regole permanenti):

sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --zone=public --permanent --add-service=https

Cosa fare se il servizio desiderato non è disponibile?

Il firewalld firewall include per impostazione predefinita molti dei servizi più comuni. Tuttavia, alcune applicazioni richiedono servizi che non sono supportati da firewalld. In questo caso, puoi farlo in due modi.

Metodo 1: impostazione della porta

Il modo più semplice in questa situazione è aprire la porta dell'applicazione nell'area firewall richiesta. Devi solo specificare la porta o l'intervallo di porte e il protocollo.

Ad esempio, un'applicazione che utilizza la porta 5000 e TCP deve essere aggiunta all'area pubblica. Per abilitare il supporto dell'applicazione per sessione, utilizzare il parametro --add-port= e specificare il protocollo tcp o udp.

sudo firewall-cmd --zone=public --add-port=5000/tcp

Verifica che l'operazione sia andata a buon fine:

firewall-cmd --list-ports
5000/TCP

Puoi anche specificare un intervallo seriale di porte separando la prima e l'ultima porta dell'intervallo con un trattino. Ad esempio, se l'applicazione utilizza le porte UDP 4990-4999, per aggiungerle alla zona pubblica, digitare:

sudo firewall-cmd --zone=public --add-port=4990-4999/udp

Dopo il test, puoi aggiungere queste regole alle impostazioni del firewall permanente.

sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
sudo firewall-cmd --zone=public --permanent --list-ports
successo
successo
4990-4999/udp 5000/TCP

Metodo 2: definizione del servizio

L'aggiunta di porte alle zone è facile, ma se si dispone di molte di queste applicazioni, può essere difficile tenere traccia dell'utilità di ciascuna porta. Per evitare questa situazione, puoi definire i servizi invece delle porte.

I servizi sono semplicemente raccolte di porte con un nome e una descrizione specifici. I servizi sono più facili da gestire le impostazioni, ma sono più complessi delle porte stesse.

Il primo passaggio consiste nel copiare lo script esistente dalla directory /usr/lib/firewalld/services alla directory /etc/firewalld/services (è qui che il firewall cerca le impostazioni personalizzate).

Ad esempio, è possibile copiare la definizione del servizio SSH e utilizzarla per definire l'esempio del servizio condizionale. Il nome dello script deve corrispondere al nome del servizio e avere un'estensione .xml.

sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml

Modifica il file copiato.

sudo nano /etc/firewalld/services/example.xml

Il file contiene la definizione SSH:



SSH
Secure Shell (SSH) è un protocollo per l'accesso e l'esecuzione di comandi su macchine remote. Fornisce comunicazioni crittografate sicure. Se prevedi di accedere alla tua macchina in remoto tramite SSH su un'interfaccia con firewall, abilita questa opzione. È necessario che il pacchetto openssh-server sia installato affinché questa opzione sia utile.

Gran parte della definizione di un servizio è costituita dai metadati. È possibile modificare il nome breve del servizio nei tag . Questo è il nome leggibile dall'uomo del servizio. È inoltre necessario aggiungere una descrizione del servizio. L'unica modifica che influirà sul funzionamento del servizio è una modifica del numero di porta e del protocollo.

Torniamo al servizio di esempio; diciamo che richiede l'apertura della porta TCP 7777 e della porta UDP 8888. La definizione sarebbe simile a questa:



Esempio di servizio
Questo è solo un servizio di esempio. Probabilmente non dovrebbe essere utilizzato su un sistema reale.

Salva e chiudi il file.

Riavvia il firewall:

sudo firewall-cmd --reload

Il servizio apparirà ora nell'elenco dei servizi disponibili:

firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns esempio ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdnspm mountd ms-wbt mysql nfs ntp open vppr oxypmcd pmwebapi pmwebapis pop3s postgresql proxy-dhcp raggio rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

Creazione di zone

Il firewall fornisce molte zone predefinite, che nella maggior parte dei casi sono sufficienti per funzionare. Ma in alcune situazioni, diventa necessario creare una zona personalizzata.

Ad esempio, puoi creare una zona publicweb per un server Web e una zona privateDNS per un servizio DNS.

Quando si crea una zona, è necessario aggiungerla alle impostazioni del firewall permanente.

Prova a creare le zone publicweb e privateDNS:

sudo firewall-cmd --permanent --new-zone=publicweb
sudo firewall-cmd --permanent --new-zone=privateDNS

Verificare che le zone esistano:

sudo firewall-cmd --permanent --get-zones

Nella sessione corrente, le nuove zone non saranno disponibili:

firewall-cmd --get-zones
block dmz drop esterno casa interno pubblico lavoro fidato

Per accedere alle nuove zone è necessario riavviare il firewall:

sudo firewall-cmd --reload
firewall-cmd --get-zones
blocco dmz drop esterno casa interno privateDNS pubblico publicweb lavoro fidato

È ora possibile assegnare i servizi e le porte richiesti alle nuove zone. Ad esempio, puoi aggiungere SSH, HTTP e HTTPS all'area publicweb.

sudo firewall-cmd --zone=publicweb --add-service=ssh
sudo firewall-cmd --zone=publicweb --add-service=http
sudo firewall-cmd --zone=publicweb --add-service=https
firewall-cmd --zone=publicweb --list-all
web pubblico
interfacce:
fonti:
servizi: http https ssh
porti:
mascherata: no
forward-port:
blocchi icmp:
regole ricche:

Puoi aggiungere DNS alla zona privateDNS:

sudo firewall-cmd --zone=privateDNS --add-service=dns
firewall-cmd --zone=privateDNS --list-all
DNS privato
interfacce:
fonti:
servizi:dns
porti:
mascherata: no
forward-port:
blocchi icmp:
regole ricche:

È quindi possibile associare le interfacce di rete alle nuove zone:

sudo firewall-cmd --zone=publicweb --change-interface=eth0
sudo firewall-cmd --zone=privateDNS --change-interface=eth1

Ora puoi testare la configurazione. Se tutto funziona correttamente, puoi aggiungere queste regole alle impostazioni permanenti.

sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh
sudo firewall-cmd --zone=publicweb --permanent --add-service=http
sudo firewall-cmd --zone=publicweb --permanent --add-service=https
sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns

È quindi possibile configurare le interfacce di rete per la connessione automatica alla zona corretta.

Ad esempio, eth0 sarà legato a publicweb:

sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
. . .
IPV6_AUTOCONF=n
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONA=web pubblico

E l'interfaccia eth1 sarà collegata a privateDNS:

sudo nano /etc/sysconfig/network-scripts/ifcfg-eth1
. . .
MASCHERA DI RETE=255.255.0.0
DEFRUTE="no"
NM_CONTROLLED="sì"
ZONA=DNS privato

Riavvia i servizi di rete e il firewall:

sudo systemctl riavvia la rete
sudo systemctl riavvia firewalld

Controllare le zone:

firewall-cmd --get-active-zones
DNS privato
interfacce: eth1
web pubblico
interfacce: eth0

Verificare che i servizi richiesti siano in esecuzione nelle zone:

firewall-cmd --zone=publicweb --list-services
http http ssh
firewall-cmd --zone=privateDNS --list-services
dns

Le zone utente sono completamente operative. Puoi impostarne uno come zona predefinita. Ad esempio:

sudo firewall-cmd --set-default-zone=publicweb

Avvio automatico del firewall

Ora che hai controllato tutte le impostazioni e ti sei assicurato che tutte le regole funzionino come previsto, puoi impostare il firewall per l'avvio automatico.

Per fare ciò, inserisci:

sudo systemctl abilita firewalld

Il firewall verrà ora avviato con il server.

Conclusione

Il firewalld firewall è uno strumento molto flessibile. Le zone consentono di modificare rapidamente la politica del firewall.

Ora sai come funziona firewalld, hai familiarità con i concetti di base di un firewall, puoi creare zone personalizzate e aggiungere servizi.

Tag: ,

Oggi vi presenterò la mia visione della configurazione iniziale di un server universale su un sistema operativo popolare. Parlerò di come eseguire una configurazione di base del server centos subito dopo l'installazione per utilizzarlo in qualsiasi capacità tu scelga. Questi suggerimenti pratici aumentano la sicurezza e la comodità di lavorare con il server. L'articolo sarà rilevante per le ultime due versioni di Centos - 7 e 8.

  1. Elenca le impostazioni iniziali di centos che eseguo su un server appena installato.
  2. Mostra esempi di configurazioni che utilizzo in una configurazione tipica.
  3. Fornisci consigli sulla configurazione di centos in base alla tua esperienza con il sistema.
  4. Fornire un elenco di programmi e utilità tipici che consentono di amministrare il server.

Questo articolo fa parte di un'unica serie di articoli sul server.

introduzione

Dopo il rilascio della nuova versione di Centos 8, è diventato difficile descrivere la configurazione iniziale di entrambi i server in un unico articolo, ma non volevo separare l'articolo, poiché ci sono molti collegamenti in arrivo ad esso da luoghi diversi. È più conveniente mantenere materiale comune per entrambe le versioni, cosa che farò. Allo stesso tempo, saranno ben visibili le differenze tra le due versioni, che per un paio d'anni dopo il rilascio di centos 8 saranno entrambe rilevanti e bisognerà utilizzare entrambe le versioni, a seconda della situazione.

Centos 7 utilizza un gestore di pacchetti gnam, e in Centos 8 - dnf. Allo stesso tempo, hanno lasciato un collegamento simbolico da yum a dnf, quindi puoi scrivere sia il nome che il secondo. Per coerenza, userò yum dappertutto e ti avverto, solo così capisci perché lo faccio in questo modo. Infatti, CentOS 8 utilizza dnf, che è un gestore di pacchetti diverso e più moderno che consente di lavorare con diverse versioni dello stesso software. Per questo vengono utilizzati repository separati, che sono apparsi per centos 8.

Configurazione iniziale di CentOS

Personalmente, avvio qualsiasi configurazione di sistema, centos o altro, dopo l'installazione aggiornando completamente il sistema. Se l'immagine di installazione era nuova o se l'installazione è stata eseguita in rete, molto probabilmente non ci saranno aggiornamenti. Molto spesso lo sono, poiché le immagini di installazione non vengono sempre aggiornate regolarmente.

Aggiorniamo il sistema

# yum aggiornamento

Per facilità di amministrazione, installo sempre Midnight Commander, o semplicemente mc:

# yum installa mc

E subito per esso accendo l'evidenziazione della sintassi di tutti i file che non sono esplicitamente indicati nel file /usr/share/mc/sintassi/Sintassi sintassi per gli script sh e bash. Questa sintassi generica è adatta per i file di configurazione più comunemente usati sul server. Sovrascrivere il file sintassi.sconosciuta. Questo è il modello che verrà applicato ai file .conf e .cf, poiché nessuna sintassi è allegata esplicitamente ad essi.

# cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax

Successivamente, avremo bisogno di utilità di rete. A seconda del set di pacchetti iniziali che scegli durante l'installazione del sistema, avrai uno o un altro set di utilità di rete. Ecco un elenco di quelli a cui mi sono abituato personalmente: ifconfig, netstat, nslookup e altri. Se ti servono, proprio come me, ti consiglio di installarli separatamente, se non sono già installati. Se non ti servono davvero e non li usi, puoi saltare l'installazione. Controlliamo cosa abbiamo nel sistema al momento

#ifconfig

Se vedi la risposta:

Bash: ifconfig: comando non trovato

Significa che l'utilità non è installata. Invece di ifconfig in CentOS è ora un'utilità ip. Questo vale non solo per i cento. Questa è l'immagine in quasi tutte le moderne distribuzioni Linux popolari. Sono stato abituato a ifconfig per molto tempo, anche se non l'ho usato molto ultimamente. Mi è sempre piaciuto che in varie distribuzioni Linux tutto fosse più o meno lo stesso. Usando ifconfig, puoi configurare la rete non solo in linux, ma anche in freebsd. È comodo. E quando ogni kit di distribuzione ha il proprio strumento, questo non è conveniente. Anche se ora questo non è più molto rilevante, dal momento che non lavoro più con Freebsd e l'utilità ip è in tutte le distribuzioni Linux. Tuttavia, se hai bisogno di ifconfig puoi installare il pacchetto strumenti di rete che include:

# yum installa net-tools

Affinché i comandi nslookup funzionino per noi o, ad esempio, host, è necessario installare il pacchetto bind-utils. In caso contrario, il comando:

# ricerca

Ci sarà un output:

Bash: nslookup: comando non trovato

Quindi installa bind-utils:

# yum installa bind-utils

Disabilita SELinux

Disabilita SELinux. Il suo utilizzo e la sua configurazione sono una conversazione separata. Ora non lo farò. Quindi spegniamolo:

# mcedit /etc/sysconfig/selinux

cambia il valore

SELINUX=disabilitato

È possibile riavviare per rendere effettive le modifiche:

# riavviare

E se vuoi applicare la disabilitazione di SELinux senza riavviare, esegui il comando:

# imposta forza 0

Ricevo molte critiche sulla disabilitazione di SELinux continuamente. So come funziona, so come configurarlo. Non è davvero molto difficile e non difficile da padroneggiare. Questa è una mia scelta consapevole, anche se a volte la modifico. Il mio formato di lavoro con il sistema è tale che molto spesso non ho bisogno di SELinux, quindi non perdo tempo su di esso e lo disabilito nella configurazione di base di centos. La sicurezza del sistema è un lavoro complesso, soprattutto nel moderno mondo dello sviluppo web, dove microservizi e container dominano la palla. SELinux è uno strumento di nicchia che non è sempre e ovunque necessario. Pertanto, non ha posto in questo articolo. Chi ne ha bisogno abiliterà separatamente SELinux e lo configurerà.

Specificare i parametri di rete

Continuiamo la configurazione di base di centos dopo l'installazione. Ora facciamolo se per qualche motivo non lo abbiamo fatto durante l'installazione, o se hai bisogno di cambiarli. In generale, la rete in Centos viene configurata utilizzando responsabile del network e la sua utilità per la console nmtui. Viene fornito con la configurazione di base del sistema. C'è un'interfaccia grafica semplice e intuitiva, quindi non c'è nulla da dire. Sono più abituato a configurare la rete tramite i file di configurazione degli script di rete. In centos 7a versione, sono fuori dagli schemi, nell'8a versione sono stati rimossi. Per utilizzarli per configurare la rete, è necessario installare separatamente il pacchetto script di rete.

# yum installa gli script di rete

Ora puoi completare la configurazione della rete. Per fare ciò, apri il file /etc/sysconfig/network-scripts/ifcfg-eth0

# mcedit /etc/sysconfig/network-scripts/ifcfg-eth0

Se ottieni le impostazioni di rete tramite DHCP, il set minimo di impostazioni nel file di configurazione sarà il seguente.

TYPE="Ethernet" BOOTPROTO="dhcp" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" NAME="eth0" DEVICE="eth0" ONBOOT="yes"

Per impostare un indirizzo IP statico, le impostazioni saranno le seguenti.

TYPE="Ethernet" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" NAME="eth0" DEVICE="eth0" ONBOOT="yes" IPADDR=192.168.167.117 DNS1=192.168.167.113 PREFIX=28 GATEWAY= 192.168.167.113

Nel campo IPADDR, inserisci il tuo indirizzo, nella maschera di rete PREFIX, nel gateway GATEWAY, l'indirizzo DNS del server dns. Salva il file e riavvia la rete per applicare le impostazioni:

# systemctl riavvia la rete

Configurazione di un firewall

Aggiunta di repository

Quando si imposta centos, spesso è necessario un software che non sia nella rapa standard. Per installare pacchetti aggiuntivi, è necessario . Il più popolare è EPEL. C'era rpmforge, ma è stato chiuso per diversi anni. Tutti si sono dimenticati di lui. Colleghiamo il repository EPEL. Tutto è semplice con lui, si aggiunge dalla rapa standard:

# yum installa epel-release

Anche per CentOS 7 è estremamente utile il repository REMI, che permette di installare versioni più recenti di php, a differenza di quelle del repository standard. Lascia che ti ricordi che questa è la versione php 5.4, che non è più valida ed è stata rimossa dal supporto.

# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Per Centos 8 remi non è ancora rilevante, ma penso che sia temporaneo. In linea di principio, questi due repository in centos sono generalmente sufficienti per me nel caso generale. Altri sono già collegati per esigenze specifiche per installare vari software.

Configurazione dell'archiviazione della cronologia in bash_history

Passando alla configurazione del sistema centos sul server. Sarà utile apportare alcune modifiche al meccanismo standard per il salvataggio della cronologia dei comandi. Spesso aiuta quando è necessario ricordare uno dei comandi inseriti in precedenza. Le impostazioni predefinite hanno alcune limitazioni che sono scomode. Ecco la loro lista:

  1. Per impostazione predefinita, vengono salvati solo gli ultimi 1000 comandi. Se ce ne sono più, quelli più vecchi verranno eliminati e sostituiti da quelli nuovi.
  2. Non ci sono date per l'esecuzione dei comandi, solo un elenco di essi nell'ordine in cui sono stati eseguiti.
  3. Il file con l'elenco dei comandi viene aggiornato al termine della sessione. Durante le sessioni parallele, alcuni comandi potrebbero andare persi.
  4. Assolutamente tutti i comandi vengono salvati, anche se non ha senso salvarne alcuni.

L'elenco degli ultimi comandi eseguiti è memorizzato nella home directory dell'utente in un file .bash_storia(punto all'inizio). Può essere aperto con qualsiasi editor e visualizzato. Per una più comoda visualizzazione dell'elenco, è possibile inserire il comando nella console:

# storia

e vedere un elenco numerato. Puoi trovare rapidamente un comando specifico filtrando solo le righe di cui hai bisogno, in questo modo:

# storia | grep yum

Quindi vedremo tutte le opzioni per eseguire il comando yum, che sono archiviate nella cronologia. Risolviamo le carenze elencate delle impostazioni standard per la memorizzazione della cronologia dei comandi in CentOS. Per fare ciò, è necessario modificare il file .bashrc, che si trova nella stessa directory del file della cronologia. Aggiungi le seguenti righe ad esso:

Esporta HISTSIZE=10000 export HISTTIMEFORMAT="%h %d %H:%M:%S " PROMPT_COMMAND="history -a" export HISTIGNORE="ls:ll:history:w:htop"

La prima opzione aumenta la dimensione del file a 10.000 righe. Puoi farne di più, anche se di solito questa dimensione è sufficiente. Il secondo parametro specifica che la data e l'ora di esecuzione del comando devono essere salvate. La terza riga forza subito dopo l'esecuzione del comando a salvarlo nella cronologia. Nell'ultima riga, creiamo un elenco di eccezioni per quei comandi che non devono essere registrati nella cronologia. Ho fornito un esempio dell'elenco più semplice. Puoi aggiungerlo a tua discrezione.

Per applicare le modifiche, è necessario disconnettersi e riconnettersi o eseguire il comando:

# sorgente ~/.bashrc

Sulla configurazione dell'archiviazione della cronologia dei comandi, il gioco è fatto. Nel file .bashrc puoi configurare molte cose interessanti. Un tempo ci amavo e sperimentavo, ma poi ho abbandonato tutto, perché non ha senso. Quando lavoro con i server dei clienti, vedo molto spesso il bash predefinito, quindi è meglio abituarsi e lavorarci. E impostazioni e abbellimenti separati sono il lotto di personal computer e server. Non lavoratori. Quindi non devo configurare nient'altro secondo lo standard nel server centos a questo proposito.

Aggiornamento automatico del sistema

Per mantenere la sicurezza del server al livello corretto, è necessario almeno aggiornarlo in modo tempestivo: sia il kernel stesso con le utilità di sistema che altri pacchetti. Puoi farlo manualmente, ma per un lavoro più efficiente è meglio impostare l'esecuzione automatica. Non è necessario installare gli aggiornamenti automaticamente, ma almeno verificarne l'aspetto. Di solito seguo questa strategia.

Yum cron

Per controllare automaticamente gli aggiornamenti in Centos 7, l'utilità ci aiuterà yum cron. Viene installato tradizionalmente tramite yum dal repository standard.

# yum installa yum cron

Dopo aver installato yum-cron, viene creata un'attività automatica per eseguire l'utilità in /etc/cron.giornaliero e /etc/cron.ogni ora. Per impostazione predefinita, l'utilità scarica gli aggiornamenti che trova, ma non li applica. Viene invece inviata una notifica di aggiornamento all'amministratore sulla cassetta postale principale locale. Quindi accedi manualmente e decidi se installare gli aggiornamenti o meno in un momento conveniente per te. Questa modalità di funzionamento mi sembra la più conveniente, quindi non modifico queste impostazioni.

Puoi configurare yum-cron tramite i file di configurazione che si trovano in /etc/yum/yum-cron.conf e yum-cron-orario.conf. Sono ben commentati, quindi non necessitano di spiegazioni dettagliate. Faccio attenzione alla sezione , dove puoi specificare le opzioni per l'invio dei messaggi. L'impostazione predefinita è inviare la posta tramite l'host locale. Puoi modificare le impostazioni qui e inviare messaggi tramite un server di posta di terze parti. Invece, personalmente preferisco configurare globalmente per l'intero server l'inoltro della posta radice locale a una casella di posta esterna tramite autorizzazione su un altro server smtp.

Dnf automatico

Come ho detto prima, Centos 8 utilizza un gestore di pacchetti diverso: dnf. La configurazione degli aggiornamenti dei pacchetti viene eseguita tramite l'utilità dnf-automatico. Installiamolo e configuriamolo.

# yum installa dnf-automatico

La gestione dell'avvio programmato non è più gestita da cron, ma da systemd con il suo scheduler integrato. È possibile visualizzare i timer di avvio automatico con il comando:

# systemctl list-timer *dnf-*

Se non ci sono attività lì, puoi aggiungere il timer manualmente:

# systemctl enable --now dnf-automatic.timer

Il timer predefinito è impostato per avviare dnf-automatic un'ora dopo l'avvio del server e ripetere ogni giorno. La configurazione del timer vive qui - /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.

La configurazione per dnf-automatic vive in /etc/dnf/automatic.conf. Per impostazione predefinita, scarica solo gli aggiornamenti, ma non li applica. La configurazione è ben commentata, quindi puoi personalizzarla come desideri. Non sono richieste spiegazioni separate. Personalizza gli aggiornamenti dei pacchetti di sistema a tuo piacimento. Come ho detto, li scarico solo automaticamente. Tengo sempre sotto controllo l'installazione con il controllo manuale.

Disabilita l'allagamento dei messaggi in /var/log/messages

Continuando la configurazione di centos, risolveremo un piccolo inconveniente. Nell'installazione predefinita della versione 7 del sistema, tutto il registro di sistema /var/log/messaggi dopo qualche tempo il server verrà intasato con i seguenti record.

16 ottobre 14:01:01 xs-files systemd: fetta creata dall'utente-0.slice. 16 ottobre 14:01:01 xs-files systemd: avvio di user-0.slice. 16 ottobre 14:01:01 xs-files systemd: sessione avviata 14440 dell'utente root. 16 ottobre 14:01:01 xs-files systemd: avvio della sessione 14440 dell'utente root. 16 ottobre 14:01:01 xs-files systemd: slice user-0.slice rimossa. 16 ottobre 14:01:01 xs-files systemd: arresto di user-0.slice. 16 ottobre 15:01:01 xs-files systemd: fetta creata dall'utente-0.slice. 16 ottobre 15:01:01 xs-files systemd: avvio di user-0.slice. 16 ottobre 15:01:01 xs-files systemd: sessione avviata 14441 dell'utente root. 16 ottobre 15:01:01 xs-files systemd: avvio della sessione 14441 dell'utente root. 16 ottobre 15:01:01 xs-files systemd: sessione avviata 14442 dell'utente root. 16 ottobre 15:01:01 xs-files systemd: avvio della sessione 14442 dell'utente root. 16 ottobre 15:01:01 xs-files systemd: slice user-0.slice rimossa. 16 ottobre 15:01:01 xs-files systemd: arresto di user-0.slice. 16 ottobre 16:01:01 xs-files systemd: fetta creata dall'utente-0.slice. 16 ottobre 16:01:01 xs-files systemd: avvio di user-0.slice. 16 ottobre 16:01:01 xs-files systemd: sessione avviata 14443 dell'utente root. 16 ottobre 16:01:01 xs-files systemd: avvio della sessione 14443 dell'utente root. 16 ottobre 16:01:01 xs-files systemd: slice user-0.slice rimossa.

In Centos 8 non li ho notati, quindi non c'è niente da fare lì. I messaggi non hanno alcun uso pratico, quindi li disabiliteremo. Per fare ciò, creeremo una regola separata per rsyslog, in cui elenchiamo tutti i modelli di messaggio che taglieremo. Mettiamo questa regola in un file separato /etc/rsyslog.d/ignore-systemd-session-slice.conf.

# cd /etc/rsyslog.d && mcedit ignore-systemd-session-slice.conf if $nomeprogramma == "systemd" e ($msg contiene "Sessione iniziale" o $msg contiene "Sessione avviata" o $msg contiene "Creato slice" o $msg contiene "Starting user-" o $msg contiene "Starting User Slice of" o $msg contiene "Sessione rimossa" o $msg contiene "Slice slice rimossa User Slice of" o $msg contiene "Stopping User Slice of" ) quindi fermati

Salva il file e riavvia rsyslog per applicare le impostazioni.

# systemctl riavvia rsyslog

Va inteso che in questo caso stiamo disabilitando il flood al file di log solo sul server locale. Se memorizzi i log on , allora questa regola dovrà essere configurata su di esso.

Installazione di iftop, atop, htop, lsof su CentOS

E infine, al termine del setup, aggiungiamo alcune utili utilità che possono tornare utili durante il funzionamento del server.

iftop mostra in tempo reale il caricamento dell'interfaccia di rete, può essere avviato con vari tasti, non mi dilungo su questo in dettaglio, ci sono informazioni su questo argomento su Internet. Abbiamo messo:

# yum installa iftop

E due interessanti task manager, uso htop per la maggior parte del tempo, ma a volte atop torna utile. Mettiamo entrambi, guarda tu stesso, scopri cosa ti piace di più, si adatta:

# yum install htop # yum install in cima

Per visualizzare informazioni su quali file vengono utilizzati da determinati processi, ti consiglio di installare l'utilità lsof. Molto probabilmente tornerà utile prima o poi quando si diagnostica il funzionamento del server.

# yum install wget bzip2 traceroute gdisk

Questo è tutto per me. La configurazione di base di CentOS è terminata, puoi iniziare a installare e configurare le funzionalità principali.

Configurazione della posta di sistema

Per completare la configurazione del server CentOS, assicuriamoci che la posta indirizzata alla radice locale venga inviata tramite un server di posta esterno alla casella di posta selezionata. In caso contrario, verrà aggiunto localmente a un file /var/spool/mail/root. E potrebbero esserci informazioni importanti e utili. Configuriamolo per essere inviato alla casella di posta dell'amministratore di sistema.

Ne ho parlato in dettaglio in un articolo separato -. Qui, solo i comandi e la configurazione rapida sono brevi. Installa i pacchetti necessari:

# yum install mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain postfix

Disegniamo qualcosa come questa configurazione per postfix.

Cat /etc/postfix/main.cf ## DEFAULT CONFIG BEGIN ########################### directory_coda = /var/spool/postfix directory_comando = /usr/sbin daemon_directory=/usr/libexec/postfix data_directory=/var/lib/postfix mail_owner=postfix inet_interfaces=localhost inet_protocols=all unknown_local_recipient_reject_code=550 alias_maps=hash:/etc/alias alias_database=hash:/etc/aliases debug_peer_level=2 debugger_command=PATH =/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/ newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = nessuna manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.10.1/samples readme_directory = /usr/share/ doc/postfix-2.10.1/README_FILES ## DEFAULT CONFIG END ########################### # Nome del server emesso dal comando hostname myhostname = centos-test. xs .local # Qui n riguardo alla logica, dovrebbe essere lasciato solo il dominio, ma in questo caso è meglio lasciare il nome completo del server in modo che il nome completo del server appaia nel campo mittente #, è più comodo analizzare i messaggi di servizio miodominio = centos-test.xs.local mydestination = $myhostname myorigin = $mydomain # Indirizzo del server attraverso il quale invieremo mail relayhost = mailsrv.mymail.ru:25 smtp_use_tls = si smtp_sasl_auth_enable = si smtp_sasl_password_maps = hash:/etc/postfix /sasl_passwd smtp_sasl_security_options = nonanonimo smtp_tls_security_level = maggio

Creiamo un file con informazioni su nome utente e password per l'autorizzazione.

# mcedit /etc/postfix/sasl_passwd mailsrv.mymail.ru:25 [email protetta]:parola d'ordine

Creiamo un file db.

# postmap /etc/postfix/sasl_passwd

Ora puoi riavviare Postfix e verificare se funziona.

# systemctl riavvio postfisso

All'alias standard per root in /etc/alias, aggiungi l'indirizzo esterno dove verrà duplicata la posta indirizzata a root. Per fare ciò, modifica il file specificato, cambiando l'ultima riga.

#radice: vinaccia

radice: radice, [email protetta]

Aggiorna il database dei certificati:

#newalias

Inviamo una lettera tramite la console alla radice locale:

# df -h | mail -s radice "Utilizzo del disco".

La lettera dovrebbe essere inviata a una casella di posta esterna. Se utilizzi una casella di posta di Yandex, molto probabilmente riceverai un errore nel registro del server di posta e la lettera non verrà inviata.

Relay=smtp.yandex.ru:25, delay=0.25, delays=0/0/0.24/0.01, dsn=5.7.1, status=bounced (host smtp.yandex.ru ha detto: 553 5.7.1 Indirizzo mittente rifiutato: non di proprietà dell'utente auth.(in risposta al comando MAIL FROM))

Questo errore significa che non hai la stessa casella di posta del mittente della posta che utilizzi per l'autorizzazione. Come risolvere questo problema, dico in un articolo separato -. Con altri sistemi di posta in cui non esiste tale controllo, tutto dovrebbe andare bene e così via.

Questo completa la configurazione della posta locale. Ora tutte le lettere indirizzate alla radice locale, ad esempio i report di cron, verranno duplicate in una casella di posta esterna e inviate tramite un server di posta completo. Quindi le lettere verranno consegnate normalmente senza entrare nello spam (sebbene non necessariamente, ci siano anche filtri euristici).

Conclusione

Abbiamo eseguito alcuni passaggi iniziali per configurare un server CentOS, cosa che di solito faccio quando preparo un server subito dopo l'installazione. Non pretendo di essere una verità assoluta, forse mi sto perdendo qualcosa o sto facendo qualcosa che non va bene. Sarò lieto di commenti e osservazioni ragionevoli e significativi con suggerimenti.

..
  • Comprendere la distribuzione, la configurazione e la manutenzione delle reti basate su Linux.
  • La capacità di risolvere rapidamente i problemi emergenti e garantire un funzionamento stabile e senza interruzioni del sistema.
  • Mettiti alla prova nel test d'ingresso e consulta il programma per maggiori dettagli.

    Articoli correlati in alto