Nadat je CentOS op je VPS-server hebt geïnstalleerd, is het ontzettend belangrijk om een aantal dingen te doen aanvullende acties over het instellen van de server en het garanderen van de bescherming ervan tegen verschillende aanvallen. Verderop in het artikel zal ik de naar mijn mening belangrijkste stappen bekijken voor het creëren van een volwaardige en veilige VPS-server.
Stap 1: Wijzig het wachtwoord voor het account - root
Nadat het aanmaken van de nieuwe VPS-server is voltooid, krijgt u een wachtwoord voor de root-superuser. Direct nadat u via SSH verbinding heeft gemaakt met uw server, moet u dit wijzigen, omdat... Soms is het opgegeven wachtwoord niet brute force-bestendig.
Laten we instellen Nieuw wachtwoord voor wortel.
Stap 2: Maak een nieuwe gebruiker aan
Aanvankelijk, na CentOS-installaties en andere Linux-distributies is een gebruiker onder de naam root beschikbaar. De root-superuser is een systeembeheerdersaccount en heeft maximale rechten in het systeem. Vanwege de hoge mogelijkheden wordt het aanbevolen om het root-account alleen in te gebruiken speciale gevallen, omdat dit draagt bij aan het per ongeluk begaan van destructieve en onomkeerbare fouten, die zeer moeilijk te corrigeren zullen zijn.
In dit opzicht maakt de serverbeheerder een nieuwe gebruiker aan aan wie rootrechten gedeeltelijk worden gedelegeerd. Hieronder bekijken we het creatie- en configuratieproces rekening nieuwe gebruiker van het systeem.
Laten we een nieuw account aanmaken waarmee we altijd op de server zullen werken.
gebruikersnaam toevoegen
Laten we een wachtwoord toevoegen om in te loggen op het systeem.
Als u plotseling uw wachtwoord vergeet, kunt u met dezelfde opdracht een nieuw wachtwoord instellen, en Oud wachtwoord zal worden gereset.
Om te nieuwe gebruiker kon installeren softwarepakketten en bewerken systeembestanden, moet u er superuser-bevoegdheden aan delegeren.
Dit kan gedaan worden door een account toe te voegen aan de superusergroep - wiel.
gpasswd -een gebruikersnaamwiel
Nu kan de nieuwe gebruikersnaam opdrachten uitvoeren als root met behulp van het sudo-hulpprogramma.
Om naar een nieuw gebruikersaccount over te schakelen, gebruikt u de opdracht su:
Stap 3: Schakel de firewall in
Ter bescherming tegen ongewenste externe verbindingen met onze server, moet u een firewall installeren en inschakelen.
Laten we de firewallservice installeren:
sudo yum installeer firewalld
Laten we de firewall inschakelen en deze toevoegen aan de lijst met services die automatisch worden gestart wanneer het systeem opnieuw wordt opgestart:
sudo systemctl start firewalld;
sudo systemctl enable firewalld;
Stap 4: SSH-configuratie instellen
Omdat er een netwerk is groot aantal Over de hele wereld draaien brute force programma's die dag en nacht wachtwoorden voor de rootgebruiker proberen te raden en de mogelijkheid bestaat dat ook jouw VPS onder vuur komt te liggen. In dit geval zou een redelijke oplossing zijn om de mogelijkheid voor de rootgebruiker om verbinding te maken via SSH uit te schakelen.
Laten we het configuratiebestand openen - /etc/ssh/sshd_config:
sudo vi /etc/ssh/sshd_config
Laten we de waarde van de PermitRootLogin-richtlijn wijzigen.
#PermitRootLogin ja PermitRootLogin nee
#PermitRootLogin ja VergunningRootLogin nr |
Als je niet genoeg ervaring hebt Linux-gebruiker systemen en uw hoster biedt u geen VNC-paneel, dan wordt het weigeren van root-toegang via ssh niet aanbevolen, omdat wanneer kritische fout, wat kan worden opgelost, alleen vanuit het root-account kunt u niets doen.
Ook zullen wij het standaardnummer wijzigen SSH-poort, omdat Het is op standaardpoort 22 dat brute force-programma's kloppen.
Alle poorten kunnen in drie groepen worden verdeeld:
- 0 - 1023 - goed beroemde havens, zie ook systeempoorten;
- 1024 - 49151 - geregistreerde poorten, zie ook gebruikerspoorten;
- 49152 - 65535 - dynamische poorten, zie ook privépoorten.
Laten we eerst het poortnummer selecteren waarop SSH zal werken. Het wordt aanbevolen om een poortnummerwaarde binnen het bereik 49152 - 65535 te selecteren. Om een poort te selecteren, moet u eerst controleren of deze bezet is door een andere dienst. Ik selecteer bijvoorbeeld poortnummer 63356.
Laten we controleren of poort 63356 bezet is met het volgende commando:
kat /etc/services | grep 63356/tcp
Als u naar aanleiding van het commando geen expliciet antwoord ontvangt, geeft dit aan dat deze poort vrij is. Anders ziet u in het antwoord de naam van de service die de door u geselecteerde poort al heeft bezet.
Nu veranderen we in het bestand /etc/ssh/sshd_config de waarde van de Port-richtlijn:
#Poort 22 Poort 63356
#Poort 22 Poort 63356 |
Laten we de SSH-service opnieuw opstarten om de instellingen te accepteren.
sudo systemctl herstart sshd
Laten we de firewall vertellen om verbindingen op de nieuwe SSH-poort toe te staan: 63356
sudo firewall-cmd --zone=public --permanent --add-port=63356/tcp;
sudo firewall-cmd --reload;
Laten we ervoor zorgen dat de toegevoegde poort luistert (actief):
ss -lntu | grep 63356
$ss -lntu | grep 63356
tcp LUISTEREN 0 128 *:63356 *:*
tcp LUISTER 0 128:::63356:::*
Om nu via SSH verbinding te maken met de server, moet u altijd expliciet het poortnummer opgeven.
ssh gebruikersnaam@server_ip_adres -p 63356
Stap #5: De servernaam (hostnaam) wijzigen
Hosters stellen de waarde van de variabele $HOSTNAME op gehuurde VPS-servers vaak naar eigen goeddunken in. Laten we de standaardhostnaam wijzigen in iets anders. Meestal is de hostnaam een soort domein.
Volledige informatie over de hostnaam kunt u vinden met het volgende commando:
hostnamectl-status
$hostnamectl-status
Statische hostnaam: hostnaam.ru
Pictogramnaam: computer-vm
Chassis: vm
Machine-ID:
Opstart-ID:
Virtualisatie: kvm
Besturingssysteem: CentOS Linux 7 (Kern)
CPE-besturingssysteemnaam: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-693.2.2.el7.x86_64
Architectuur: x86-64
Laten we de servernaam wijzigen:
sudo hostnamectl set-hostnaam "example.ru"
Laten we ervoor zorgen dat de naam is gewijzigd:
Stap #6: Stel de tijdzone in
Bij het huren van een VPS-server is het lokale tijd vaak gerelateerd aan de regio waarin het zich bevindt. Als uw VPS-server bijvoorbeeld in Amsterdam staat, dan werkt de server in Midden-Europese tijd.
Laten we eens kijken in welke tijdzone onze server werkt:
Krijg een lijst met beschikbare tijdzones:
timedatectl lijst-tijdzones
Ik woon in de tijdzone van Moskou, dus het is handig voor mij om de server tegelijkertijd te laten werken.
U kunt de servertijd in Moskou als volgt instellen:
timedatectl set-tijdzone Europa/Moskou
Stap #7: De landinstelling instellen
Landinstellingen definiëren de taal die het systeem gebruikt, evenals regionale kenmerken zoals valuta, getalnotaties, datums en tekensets.
De lijst met alle beschikbare landinstellingen wordt opgeslagen in de map - /usr/share/i18n/locales
U kunt de gebruikte landinstellingen bekijken met behulp van de onderstaande opdracht:
$landelijk
LANG=nl_US.UTF-8
LC_CTYPE="nl_US.UTF-8"
LC_NUMERIC="nl_US.UTF-8"
LC_TIME="nl_US.UTF-8"
LC_COLLATE="nl_US.UTF-8"
LC_MONETARY="nl_US.UTF-8"
LC_MESSAGES="nl_US.UTF-8"
LC_PAPER="nl_US.UTF-8"
LC_NAME="nl_US.UTF-8"
LC_ADDRESS="nl_US.UTF-8"
LC_TELEPHONE="nl_US.UTF-8"
LC_MEASUREMENT="nl_US.UTF-8"
LC_IDENTIFICATION="nl_US.UTF-8"
LC_ALL=
Als u de Russische landinstelling voor welk formaat dan ook wilt instellen, bijvoorbeeld tijd, gebruik dan de volgende opdracht:
sudo localectl set-locale LC_TIME=ru_RU.UTF-8
De taal als gevolg van het uitvoeren van het datumcommando zal veranderen in Russisch (na het opnieuw opstarten van de server).
Gebruik de opdracht om de Russische taal op het systeem te installeren:
sudo localectl set-locale LANG=ru_RU.UTF-8
De Russische landinstelling instellen voor alle omgevingsvariabelen:
sudo localectl set-locale LC_ALL=ru_RU.UTF-8
De landinstelling controleren:
lacalectl-status
Stap #8: SElinux uitschakelen
SELinux(Engels: Security-Enhanced Linux - Linux met verbeterde beveiliging) - implementatie van een geforceerd toegangscontrolesysteem dat parallel kan werken met een klassiek selectief toegangscontrolesysteem.
Hoewel SElinux het beveiligingsbeheer verbetert, is de kans groter dat het hindert dan dat het oplevert. echt voordeel, dus ik raad aan om het uit te schakelen.
Je kunt controleren of SElinux is ingeschakeld met het onderstaande commando:
Om SElinux uit te schakelen, bewerkt u het bestand - /etc/selinux/config en stelt u de SELINUX-richtlijn in op uitgeschakelde waarde.
CentOS is een gratis distributie gebaseerd op broncode Rode Hoed Enterprise-Linux Sterker nog, het is vrijwel zonder wijzigingen op basis van deze bronnen gemaakt; de ontwikkelaars hebben alleen alle Red Hat-branding weggelaten. Maar in tegenstelling tot Red Hat is CentOS volledig gratis en ontvangt het regelmatig updates, enige tijd nadat ze voor Red Hat zijn uitgebracht, omdat ze ook uit broncode zijn opgebouwd.
Heel vaak wordt CentOS gebruikt als besturingssysteem voor servers. In een van de vorige artikelen hebben we gekeken hoe het werkt. Vandaag zullen we kijken naar het opzetten van een CentOS 7-server na installatie. We bespreken alle basisinstellingen die u moet wijzigen om uw server klaar te maken voor gebruik.
1. Een statisch IP-adres instellen
Het eerste dat u hoeft te doen, is uw netwerk instellen. Op personal computers we gebruiken DHCP om een IP-adres te verkrijgen, en de computer zal elke keer dat hij opstart een ander adres hebben, de server moet altijd op hetzelfde adres draaien, dus wijzen we hem een statisch IP-adres toe. U moet ook DNS en de standaardgateway configureren. Maar installeer eerst het hulpprogramma net-tools:
yum installeer net-tools
Laten we eerst eens kijken naar de beschikbare netwerkinterfaces en huidig IP-adres:
Nu kunt u doorgaan met het configureren van de interface via het bestand /etc/sysconfig/network-scripts/ifcfg-enp0s3, bijvoorbeeld met behulp van de vi-editor:
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
IPADDR = jouw_ip
GATEWAY = gateway_voor_netwerktoegang
DNS1 = IP_adres_DNS1
DNS2 = IP_adres_DNS2
Na het aanbrengen van wijzigingen ziet dit bestand er als volgt uit:
Dan hoeft u alleen nog maar het netwerk opnieuw op te starten om de nieuwe instellingen toe te passen:
servicenetwerk opnieuw opstarten
Vervolgens kunt u, indien nodig, op dezelfde manier het IP-adres wijzigen.
2. Computernaam
Het volgende dat we moeten doen, is de computernaam wijzigen. De huidige computernaam wordt opgeslagen in de HOSTNAME-variabele:
Om het te veranderen moet je het bestand /etc/hostname bewerken en de oude naam daar vervangen door een nieuwe.
vi /etc/hostnaam
U kunt ook de opdracht hostnamectl gebruiken:
hostnamectl set-hostnaam "hostnaam"
3. CentOS-update
Na installatie is het gebruikelijk om te updaten software naar de nieuwste versie om alle beveiligingsupdates te installeren. Om de lijst met pakketten in de opslagplaatsen bij te werken en nieuwe versies te installeren, voert u de volgende opdracht uit:
yum-update && yum-upgrade
4. Installeer een browser
In veel gevallen moet u CentOS gebruiken vanaf de opdrachtregel zonder GUI, dus u hebt mogelijk een browser nodig om iets op internet te vinden of om de functionaliteit van sites vanaf de opdrachtregel te controleren. Om de browserlinks te installeren, typt u:
yum installatielinks
Er zijn andere consolebrowsers voor Linux, zoals Lynx of Elinks.
5. De tijdzone instellen
Het correct instellen van de tijdzone is erg belangrijk voor de server. Dit zal de logverwarring wegnemen en ervoor zorgen dat uw applicaties kunnen worden weergegeven juiste datum en tijd. Voor de configuratie wordt het timedatectl-hulpprogramma gebruikt.
Zorg eerst voor een lijst met tijdzones:
timedatectl lijst-tijdzones
Installeer vervolgens degene die u nodig heeft, bijvoorbeeld Europa/Kiev:
timedatectl set-tijdzone Europa/Kiev
Controleer dan:
7. De landinstelling instellen
De landinstelling bepaalt de taal en codering die op uw systeem worden gebruikt. Als u bijvoorbeeld de Russische taal wilt inschakelen, stelt u de waarde in op ru_RU.UTF-8
localectl set-locale LANG=ru_RU.UTF-8
Laten we dan eens kijken wat er gebeurde:
Stel vervolgens de toetsenbordindeling in:
localectl set-keymap ons
8. Schakel SELinux uit
Een set SELinux-beleidsregels is ontworpen om de toegang tot bestanden in Linux-systeem, maar als u ze niet gaat gebruiken, kan deze functie worden uitgeschakeld. Voer hiervoor het volgende uit:
sed -i "s/(^SELINUX=).*/SELINUX=uitgeschakeld/" /etc/selinux/config
Start vervolgens uw computer opnieuw op en controleer of de functie daadwerkelijk is uitgeschakeld:
9. Maak een gebruiker aan
Het is onveilig om het systeem als superuser te gebruiken en nog onveiliger om te vertrekken open toegang naar het root-account via ssh. Eerst creëren regelmatige gebruiker en stel er een wachtwoord voor in:
useradd-gebruikersnaam
# wachtwoord wachtwoord
Voeg vervolgens de gebruiker toe aan de wielgroep zodat de gebruiker als beheerder kan worden uitgevoerd:
usermod -G wiel gebruikersnaam
Nu hoeft u alleen nog maar de sudo-instellingen te corrigeren; voeg de volgende regel toe als deze er nog niet is:
%wiel ALLES = (ALLE) ALLES
10. Schakel repository's van derden in
Het toevoegen van repository's van derden aan een productieserver is geen goed idee en kan in sommige gevallen tot slechte gevolgen leiden. Soms heeft u echter programma's nodig die niet in de officiële repository's staan. Laten we daarom eens kijken hoe we verschillende repository's kunnen toevoegen.
Om de Enterprise Linux Repository (EPEL) toe te voegen, voert u het volgende uit:
yum installeer epel-release
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
10. SSH-installatie
Meestal moeten we niet rechtstreeks met servers werken, maar via het netwerk, via SSH. Meestal is de SSH-service al geïnstalleerd en geactiveerd, maar daarvoor goede werking Er zijn een paar instellingen die u moet maken. Eerst moet u configureren om alleen te gebruiken beveiligd protocol Om dit te doen, opent u het bestand /etc/ssh/ssh_config en verwijdert u de regel Protocol 2.1. En voeg in plaats daarvan toe:
U moet ook het inloggen als superuser uitschakelen:
VergunningRootLogin nr
11. Installeer Apache-webserver
Als u van plan bent de machine als webserver te gebruiken, heeft u Apache nodig. Hiermee kunt u websites, multimedia-inhoud, clientprogramma's en nog veel meer hosten. Installeren:
yum installeer httpd
Zodra de installatie is voltooid, moet u HTTP in uw firewall inschakelen voordat u verder kunt gaan:
firewall-cmd --add-service=http
# firewall-cmd -permanent -add-port=3221/tcp
# firewall-cmd --herladen
Nu hoeft u alleen nog Apache toe te voegen aan het opstarten:
systemctl start httpd.service
# systemctl schakel httpd.service in
12. Installeer PHP
PHP is moderne taal webapplicaties en scripts. Het wordt vaak gebruikt als programmeertaal algemeen doel. Installeren:
Na de installatie moet je Apache opnieuw opstarten:
echo -e "" > /var/www/html/phpinfo.php
Open vervolgens het gemaakte bestand in uw browser:
koppelingen http://127.0.0.1/phpinfo.php
13. Database-installatie
MariaDB is een database gebaseerd op MySQL-broncode. Op Red Hat gebaseerde Linux-distributies gebruiken MariaDB in plaats van MySQL. Databases - onvervangbaar ding op de server, dus het configureren van CentOS na de installatie moet ook de installatie ervan omvatten. Om MariaDB te installeren, typt u:
yum installeer mariadb-server mariadb
Voer vervolgens uit en voeg toe aan het opstarten:
systemctl start mariadb.service
# systemctl schakelt mariadb.service in
En sta de service toe in de firewall:
firewall-cmd --add-service=mysql
Het enige dat overblijft is het uitvoeren van het installatiescript:
/usr/bin/mysql_secure_installation
14. Installeer GCC
GCC staat voor GNU Compiler Collection, een set compilers die worden beschouwd als de standaard voor het bouwen van programma's op Linux. Maar het wordt standaard niet met CentOS geleverd, dus om te installeren typt u:
Dan kun je de GCC-versie bekijken:
15. Installeer Java
Java is een objectief-georiënteerde programmeertaal voor algemeen gebruik. Het wordt niet standaard geïnstalleerd, dus het configureren van CentOS 7 na de installatie kan de installatie ervan omvatten. Voer hiervoor het volgende uit:
jawel, installeer Java
Controleer vervolgens de versie:
Conclusies
In dit artikel hebben we gekeken hoe je een CentOS 7-server na installatie configureert. Zoals u kunt zien, zijn er veel basisstappen die u moet uitvoeren voordat u de server in productie gaat gebruiken. Als je vragen hebt, stel ze dan in de reacties!
Ik heb een vers geïnstalleerde CentOS 7-server op VDS met KVM-virtualisatie. Ik zal het hebben over hoe u de basisserverconfiguratie kunt uitvoeren, zodat u deze naar eigen goeddunken in welke hoedanigheid dan ook kunt gebruiken. Dit kan een webserver, VPN-server of monitoringserver zijn. Ik zal het hebben over de initiële instellingen van het CentOS-systeem, die de veiligheid en het gemak van het werken met de server vergroten. Ik merk op dat er in de 7e versie van het systeem enkele wijzigingen zijn aangebracht in vergelijking met eerdere versies.
Invoering
Eerste installatie van CentOS 7
We hebben dus: # uname -a Linux zeroxzed.ru 3.10.0-123.20.1.el7.x86_64 #1 SMP do 29 januari 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/LinuxLaten we eerst eens updaten basissysteem:
# yum -y-update
Voor het gemak van het beheer installeer ik altijd Middernacht commandant, of gewoon mc:
# ifconfig
En je zult het antwoord zien:
Bash: ifconfig: opdracht niet gevonden
Door ten minste Toen ik dit voor het eerst zag, was ik behoorlijk verrast. Ik dacht dat ik een fout had gemaakt bij het schrijven van het commando, ik heb alles meerdere keren gecontroleerd, maar het mocht niet baten. Het bleek dat ik afzonderlijk een pakket moest installeren om ifconfig en andere netwerkhulpprogramma's uit te voeren.
In plaats van ifconfig in CentOS 7 is er nu een hulpprogramma ip. Ik begrijp niet waarom er aparte controleprogramma's zijn netwerkinstellingen, als ifconfig de taak al perfect aankan. Bovendien vond ik dat altijd leuk verschillende distributies Linux is vrijwel hetzelfde. Met ifconfig kun je het netwerk niet alleen in Linux configureren, maar ook in freebsd. Het is handig. En als elke distributie zijn eigen tool heeft, is dit lastig. Daarom stel ik voor om de gebruikelijke ifconfig te installeren.
Laten we dit doen:
# yum -y installeer net-tools.x86_64
Om de nslookup- of bijvoorbeeld host-opdrachten te laten werken, moeten we nu het bind-utils-pakket installeren. Als dit niet gebeurt, gebruik dan het commando:
#nslookup
De uitvoer zal zijn:
Bash: nslookup: opdracht niet gevonden
Laten we dus bind-utils installeren:
# yum -y installeer bind-utils
Schakel SELinux uit. Het gebruik en de configuratie ervan is een aparte zaak. Ik zal dit nu niet doen. Dus laten we het uitschakelen:
# mcedit /etc/sysconfig/selinux
verander de waarde
SELINUX=uitgeschakeld
Om de wijzigingen door te voeren, start u opnieuw op:
# opnieuw opstarten
Netwerkparameters opgeven
Opslagplaatsen toevoegen
Om verschillende software te installeren, moet je repositories in CentOS verbinden. De meest populaire zijn EPEL en rpmforge, dus laten we ze toevoegen. Eerst installeren we EPEL. Alles is er eenvoudig mee, het wordt toegevoegd vanuit de standaardrepository:
# yum -y installeer epel-release
Installeer rpmforge:
# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt # yum -y installeer http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3 -1.el7.rf.x86_64.rpm
Iftop, atop, htop installeren op CentOS 7
En tot slot voegen we nog een paar handige hulpprogramma's toe die van pas kunnen komen tijdens de werking van de server.
iftop toont de netwerkinterfacebelasting in realtime en kan worden gestart verschillende sleutels Ik zal hier niet in detail op ingaan, er is informatie over dit onderwerp op internet. Wij plaatsen:
# yum -y installeer iftop
En twee interessante taakbeheerders, ik gebruik meestal htop, maar soms komt atop van pas. Laten we beide installeren, kijk zelf, zoek uit wat je het leukst vindt, wat bij je past:
# yum -y installeer htop # yum -y installeer bovenop
Zo ziet htop eruit:
Dat is alles voor mij. Basisopstelling CentOS 7 is klaar, u kunt beginnen met het installeren en configureren van de hoofdfunctionaliteit.
Conclusie
We hebben enkele van de initiële installatiestappen doorlopen die ik gewoonlijk doe bij het voorbereiden van een server. Ik pretendeer niet de absolute waarheid te zijn, misschien mis ik iets of doe ik iets dat niet helemaal correct is. Ik ben blij met redelijke en betekenisvolle opmerkingen en suggesties.
Het is handig om na configuratie de server direct met het monitoringsysteem te verbinden. Of stel het in als u dit nog niet heeft. Ik heb een gedetailleerde reeks artikelen over het opzetten van monitoring:
- Een voorbeeld van het opzetten van een zabbix-monitoringserver, of het alleen verbinden van centos met monitoring door er een agent op te installeren.
- E-mailmeldingen van zabbix instellen via een smtp-server van derden.
- Gedetailleerde monitoring van een webserver op basis van nginx + php-fpm.
- Websitemonitoringsysteem gebaseerd op zabbix.
- Bewaking van mysql-replicatie in zabbix.
CentOS 7 installatievideo
15 augustus 2014 12:57 uur 12.380 keer bekeken | Geen opmerkingen
Wanneer u voor het eerst inlogt op een nieuwe virtuele privéserver, moet u verschillende stappen uitvoeren om de beveiliging ervan te vergroten. IN deze handleiding We zullen het hebben over hoe u een nieuwe gebruiker kunt maken, deze de juiste rechten kunt geven en SSH kunt configureren.
1: Log in als rootgebruiker
Zodra u uw IP-adres en root-wachtwoord heeft, logt u in op de server als hoofdgebruiker (root). Gebruik hiervoor de opdracht (vervang het toegewezen IP-adres door uw IP-adres):
De terminal retourneert iets als:
De authenticiteit van host "111.22.33.444 (111.22.33.444)" kan niet worden vastgesteld.
De ECDSA-sleutelvingerafdruk is 79:95:46:1a:ab:37:11:8e:86:54:36:38:bb:3c:fa:c0.
Weet u zeker dat u wilt doorgaan met verbinden (ja/nee)?
Selecteer Ja en voer uw rootwachtwoord in.
Opmerking: Het regelmatig gebruiken van het root-account wordt niet aanbevolen; Deze handleiding helpt u bij het aanmaken van een nieuwe gebruiker voor permanent werk.
2: Wijzig uw wachtwoord
Op op dit moment Het root-wachtwoord wordt gebruikt, standaard ingesteld en ontvangen na registratie van de server. Het eerste dat u moet doen, is het vervangen door uw eigen wachtwoord.
Wat betreft de wachtwoorden die u instelt: CentOS-systeem heel voorzichtig. Daarom kan na het invoeren van een nieuw wachtwoord de melding BAD PASSWORD verschijnen. Je kunt er meer installeren complex wachtwoord, of negeer het bericht: in feite accepteert CentOS zelfs te simpele or kort wachtwoord, hoewel er wordt voorgesteld een complexere combinatie te gebruiken.
3: Maak een nieuwe gebruiker aan
Nadat u bent ingelogd op de server en het root-wachtwoord hebt gewijzigd, moet u opnieuw als root inloggen op de VPS. In dit gedeelte wordt gedemonstreerd hoe u een nieuwe gebruiker kunt aanmaken en er een wachtwoord voor kunt instellen.
Maak dus een nieuwe gebruiker aan; Gebruik hiervoor het volgende commando (vervang demo door uw gebruikersnaam):
adduser-demo
Maak nu een wachtwoord aan voor deze gebruiker (vervang demo opnieuw door de naam van de gebruiker die u zojuist hebt aangemaakt):
passwd-demo
4: Root-rechten
Op dit moment behoren alle beheerdersrechten toe aan de rootgebruiker. Om het nieuwe account permanent te kunnen gebruiken, moet u alle rootrechten overdragen aan de nieuwe gebruiker (demo).
Om taken met rootrechten uit te voeren, moet u de opdracht starten met sudo. Deze zinsnede is om twee redenen nuttig: 1) het beschermt het systeem tegen destructieve fouten gemaakt door de gebruiker; 2) het slaat alle opdrachten op die met sudo zijn gestart in het bestand /var/log/secure, dat later kan worden bekeken.
Nu moet je je sudo-instellingen wijzigen; voor dit gebruik teksteditor CentOS-standaard, genaamd vi:
Zoek de sectie Gebruikersrechtenspecificatie, die er als volgt uitziet:
#Specificatie van gebruikersrechten
root ALLE=(ALLE) ALLES
Voer na de regel met rootrechten in volgende regel waarmee alle rechten worden overgedragen aan de nieuwe gebruiker (druk op i om te beginnen met typen in vi):
demo ALLES=(ALLE) ALLES
Om het invoeren van tekst te voltooien, drukt u op Esc; typ vervolgens:, wq, Enter om het bestand op te slaan en te sluiten.
5: SSH instellen (optioneel)
Nu moeten we de server beveiligen. In dit aanvullende gedeelte leest u hoe u uw server kunt beschermen door het autorisatieproces moeilijker te maken.
Open het configuratiebestand:
sudo vi /etc/ssh/sshd_config
Zoek de volgende secties en breng dienovereenkomstig wijzigingen aan:
Poort 25000
VergunningRootLogin nr
Haven: Hoewel de standaardpoort 22 is, kunt u dit wijzigen in elk getal tussen 1025 en 65536. Deze handleiding gebruikt SSHD-poort 25000. Let op: nieuw nummer De poort moet worden onthouden/opgeschreven, omdat deze nodig is om via SSH op de server in te loggen.
ToestemmingRootLogin:Wijzig ja in nee om root-login uit te schakelen. Nu kunt u alleen met een nieuwe gebruiker inloggen op de server.
Zodat SSH er alleen gebruik van kan maken specifieke gebruiker, voeg deze regel toe onderaan het document (vervang demo door uw gebruikersnaam):
AllowUsers-demo
Sla vervolgens uw wijzigingen op en sluit het bestand.
Opnieuw opstartenSSH
Om te activeren wijzigingen aangebracht, start de SSHD-service opnieuw:
sudo systemctl herlaad sshd.service
Om de nieuwe instellingen te testen (log nog niet uit bij uw root-account), opent u een terminal en logt u in op de server als een nieuwe gebruiker (vergeet niet om het juiste IP-adres en de juiste poort in te voeren):
ssh -p 25000-demo @111.22.33.444
Er zou een melding moeten verschijnen:
Zones
De firewalld-daemon beheert groepen regels met behulp van zogenaamde zones.
Zones zijn in wezen sets regels die het verkeer controleren op basis van het vertrouwensniveau in een bepaald netwerk. Zones worden toegewezen aan netwerkinterfaces en bepalen het gedrag van de firewall.
Computers die regelmatig verbinding maken met verschillende netwerken (zoals laptops) kunnen zones gebruiken om regelsets te wijzigen, afhankelijk van de omgeving. Bijvoorbeeld bij het verbinden met openbaar netwerk WiFi-firewall kan strengere regels afdwingen en beperkingen op het thuisnetwerk versoepelen.
Firewalld heeft de volgende zones:
- daling: laagste niveau van netwerkvertrouwen. Alle inkomend verkeer reset zonder reactie, alleen uitgaande verbindingen worden ondersteund.
- block: Deze zone is vergelijkbaar met de vorige, maar inkomende verzoeken worden verwijderd met het bericht icmp-host-prohibited of icmp6-adm-prohibited.
- openbaar: Deze zone vertegenwoordigt een openbaar netwerk dat niet kan worden vertrouwd, maar inkomende verbindingen op privébasis toestaat.
- extern: zone externe netwerken. Ondersteunt NAT masquerading, zodat het interne netwerk privé maar toch toegankelijk blijft.
- intern: achterkant externe zones, interne netwerken. Computers in deze zone kunnen worden vertrouwd. Aanvullende diensten beschikbaar.
- dmz: gebruikt voor computers die zich in een DMZ bevinden (geïsoleerde computers die geen toegang hebben tot de rest van het netwerk); ondersteunt slechts enkele inkomende verbindingen.
- werk: werknetwerkzone. De meeste machines op het netwerk zijn te vertrouwen. Aanvullende diensten beschikbaar.
- thuis: thuisnetwerkzone. De omgeving is te vertrouwen, maar alleen ondersteund gebruiker gedefinieerd inkomende verbindingen.
- vertrouwd: Alle machines op het netwerk kunnen worden vertrouwd.
Regels opslaan
Firewallregels kunnen permanent of tijdelijk zijn. Als er een regel verschijnt of verandert in de set, verandert het huidige gedrag van de firewall onmiddellijk. Na een herstart gaan echter alle wijzigingen verloren als ze niet worden opgeslagen.
De meeste firewall-cmd-opdrachten kunnen de vlag --permanent gebruiken, waardoor de regel wordt opgeslagen, waarna deze permanent wordt gebruikt.
Firewall inschakelen
Eerst moet u de daemon inschakelen. Het systemd-eenheidsbestand heet firewalld.service. Om de daemon te starten, typt u.
sudo systemctl start firewalld.service
Zorg ervoor dat de service actief is:
firewall-cmd --state
rennen
De firewall is nu actief volgens de standaardconfiguratie.
De service is momenteel ingeschakeld, maar start niet automatisch met de server. Om te voorkomen dat u per ongeluk uzelf op uw eigen server blokkeert, maakt u eerst een set regels en configureert u vervolgens autorun.
Standaard firewallregels
Bekijk standaardregels
Om erachter te komen welke zone de standaardzone is, voert u het volgende in:
firewall-cmd --get-default-zone
publiek
Op dit moment heeft firewalld geen instructies ontvangen met betrekking tot de andere zones en zijn er geen interfaces gekoppeld aan de andere zones, dus nu is de openbare zone de standaardzone en ook de enige actieve zone.
Om een lijst met actieve zones te krijgen, typt u:
publiek
interfaces: eth0 eth1
Er zijn twee netwerkinterfaces gekoppeld aan de openbare zone: eth0 en eth1. Interfaces die aan een zone zijn gebonden, werken volgens de regels van die zone.
Om te zien welke regels een zone standaard gebruikt, typt u:
firewall-cmd --lijst-alles
openbaar (standaard, actief)
interfaces: eth0 eth1
bronnen:
diensten: dhcpv6-client ssh
poorten:
maskerade: nee
forward-poorten:
icmp-blokken:
rijke regels:
Dus nu weet je dat:
- openbaar is de standaardzone en de enige actieve zone.
- De eth0- en eth1-interfaces zijn eraan gebonden.
- Het ondersteunt DHCP-verkeer (IP-adrestoewijzing) en SSH-verkeer (beheer op afstand).
Andere firewallzones
Nu moet u vertrouwd raken met andere zones.
Om een lijst met alle beschikbare zones te krijgen, typt u:
firewall-cmd --get-zones
Om parameters voor een specifieke zone op te halen, voegt u de vlag --zone= toe aan de opdracht.
firewall-cmd --zone=home --lijst-alles
thuis
interfaces:
bronnen:
diensten: dhcpv6-client ipp-client mdns samba-client ssh
poorten:
maskerade: nee
forward-poorten:
icmp-blokken:
rijke regels:
Om de definities van alle beschikbare zones weer te geven, voegt u de optie --list-all-zones toe. Voor meer handig bekijken de uitvoer kan naar een pager worden gestuurd:
firewall-cmd --lijst-alle-zones | minder
Interfacezones instellen
In eerste instantie worden alle netwerkinterfaces toegewezen aan de standaardzone.
De interfacezone voor één sessie wijzigen
Om een interface voor één sessie naar een andere zone te verplaatsen, gebruikt u de opties --zone= en --change-interface=.
Om eth0 bijvoorbeeld naar de thuiszone te verplaatsen, voert u het volgende in:
sudo firewall-cmd --zone=home --change-interface=eth0
succes
Opmerking: Bij het overbrengen van een interface naar een andere zone dient u er rekening mee te houden dat dit de werking van sommige diensten kan beïnvloeden. De thuiszone ondersteunt bijvoorbeeld SSH, waardoor verbindingen van deze dienst niet worden verbroken. Maar sommige zones resetten alle verbindingen, inclusief SSH, en dan kun je jezelf per ongeluk buitensluiten van je eigen server.
Om ervoor te zorgen dat de interface aan de nieuwe zone is gebonden, voert u het volgende in:
firewall-cmd --get-active-zones
thuis
interfaces: eth0
publiek
interfaces: eth1
Nadat de firewall opnieuw is opgestart, wordt de interface teruggezet naar de standaardzone.
sudo systemctl herstart firewalld.service
firewall-cmd --get-active-zones
publiek
interfaces: eth0 eth1
De interfacezone permanent wijzigen
Als er geen andere zone is opgegeven in de interface-instellingen, wordt de interface na het opnieuw opstarten van de firewall teruggekoppeld naar de standaardzone. Op CentOS worden dergelijke configuraties opgeslagen in de directory /etc/sysconfig/network-scripts, in bestanden met het ifcfg-interfaceformaat.
Om de zone van een interface te definiëren, opent u het configuratiebestand van die interface, bijvoorbeeld:
Voeg aan het einde van het bestand de variabele ZONE= toe en specificeer een andere zone als waarde, bijvoorbeeld home:
. . .
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=thuis
Sla het bestand op en sluit het.
Om de instellingen bij te werken, start u de netwerkservice en firewall opnieuw op:
sudo systemctl herstart netwerk.service
sudo systemctl herstart firewalld.service
Na de herstart wordt de eth0-interface toegewezen aan de thuiszone.
firewall-cmd --get-active-zones
thuis
interfaces: eth0
publiek
interfaces: eth1
Standaard zone-instelling
U kunt ook een andere standaardzone kiezen.
Gebruik hiervoor de parameter --set-default-zone=. Hierna worden alle interfaces toegewezen aan een andere zone:
sudo firewall-cmd --set-default-zone=home
thuis
interfaces: eth0 eth1
Applicatieregels maken
Een dienst aan een zone toevoegen
De eenvoudigste manier is om een service of poort toe te voegen aan de zone die de firewall gebruikt. Bekijk beschikbare diensten:
firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp hoge beschikbaarheid http-https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp client transmissie-client vnc-server wbem-https
Opmerking: Meer informatie informatie over elke specifieke service kunt u vinden in de .xml-bestanden in de map /usr/lib/firewalld/services. Informatie over de SSH-service wordt bijvoorbeeld opgeslagen in /usr/lib/firewalld/services/ssh.xml en ziet er als volgt uit:
Om serviceondersteuning in een bepaalde zone in te schakelen, gebruikt u de --add-service= optie. U kunt de doelzone opgeven met de optie --zone=. Standaard werken deze wijzigingen voor één sessie. Om de wijzigingen op te slaan en permanent te gebruiken, voegt u de vlag --permanent toe.
Bijvoorbeeld om een webserver te starten voor het serveren HTTP-verkeer, moet u eerst ondersteuning voor dit verkeer in de openbare zone inschakelen voor één sessie:
sudo firewall-cmd --zone=public --add-service=http
Als de service aan de standaardzone moet worden toegevoegd, kan de vlag --zone= worden weggelaten.
Controleer of de bewerking is geslaagd:
firewall-cmd --zone=public --list-services
dhcpv6-client http ssh
Test de service en firewall. Als alles correct werkt, kunt u de permanente regelset bewerken en een regel toevoegen om deze service te ondersteunen.
sudo firewall-cmd --zone=public --permanent --add-service=http
Om een lijst met permanente regels te bekijken, typt u:
sudo firewall-cmd --zone=public --permanent --list-services
dhcpv6-client http ssh
De openbare zone ondersteunt nu permanent HTTP en poort 80. Als de webserver SSL/TLS-verkeer kan verwerken, kunt u ook de https-service toevoegen (voor een enkele sessie of aan een set persistente regels):
sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --zone=public --permanent --add-service=https
Wat te doen als de gewenste dienst niet beschikbaar is?
De firewalld firewall bevat standaard veel van de meest voorkomende services. Sommige toepassingen vereisen echter services die firewalld niet ondersteunt. In dit geval kunt u op twee manieren te werk gaan.
Methode 1: Poortinstelling
De eenvoudigste manier in deze situatie is om de applicatiepoort in de vereiste firewallzone te openen. U hoeft alleen maar de poort of het poortbereik en het protocol op te geven.
Een toepassing die poort 5000 en het TCP-protocol gebruikt, moet bijvoorbeeld aan de openbare zone worden toegevoegd. Om toepassingsondersteuning voor de onderste sessie in te schakelen, gebruikt u de --add-port= parameter en specificeert u het tcp- of udp-protocol.
sudo firewall-cmd --zone=public --add-port=5000/tcp
Controleer of de bewerking is geslaagd:
firewall-cmd --list-poorten
5000/TCP
U kunt ook een opeenvolgend bereik van poorten opgeven door de eerste en laatste poort in het bereik te scheiden met een streepje. Als uw toepassing bijvoorbeeld UDP-poorten 4990-4999 gebruikt, voert u het volgende in om ze toe te voegen aan de openbare zone:
sudo firewall-cmd --zone=public --add-port=4990-4999/udp
Na het testen kunt u deze regels toevoegen permanente instellingen firewall.
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
succes
succes
4990-4999/udp 5000/tcp
Methode 2: Een dienst definiëren
Het toevoegen van poorten aan zones is eenvoudig, maar als u veel van dergelijke toepassingen heeft, kan het lastig zijn om bij te houden waar elke poort voor dient. Om deze situatie te voorkomen, kunt u services definiëren in plaats van poorten.
Services zijn eenvoudigweg verzamelingen poorten met een specifieke naam en beschrijving. Services maken het gemakkelijker om instellingen te beheren, maar ze zijn zelf complexer dan poorten.
Eerst moet u het bestaande script kopiëren van de map /usr/lib/firewalld/services naar de map /etc/firewalld/services (dit is waar de firewall zoekt naar niet-standaard instellingen).
U kunt bijvoorbeeld de SSH-servicedefinitie kopiëren en deze gebruiken om een voorwaardelijke voorbeeldservice te definiëren. De scriptnaam moet overeenkomen met de servicenaam en de extensie .xml hebben.
sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
Bewerk het gekopieerde bestand.
sudo nano /etc/firewalld/services/example.xml
Het bestand bevat de SSH-definitie:
Een groot deel van de definitie van een dienst bestaat uit metadata. U kunt de korte naam van de dienst in tags wijzigen
Laten we terugkeren naar de voorbeeldservice; laten we zeggen dat hij vraagt om te openen TCP-poort 7777 en UDP-poort 8888. De definitie zou er als volgt uitzien:
Sla het bestand op en sluit het.
Start de firewall opnieuw:
sudo firewall-cmd --reload
De dienst verschijnt nu in de lijst met beschikbare diensten:
firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns voorbeeld ftp hoge beschikbaarheid http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pm proxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp straal rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmissie-client vnc-server wbem-https
Zones creëren
De firewall biedt veel vooraf gedefinieerde zones, die in de meeste gevallen voldoende zijn om de klus te klaren. Maar in sommige situaties wordt het noodzakelijk om een aangepaste zone te creëren.
U kunt bijvoorbeeld een publicweb-zone voor een webserver en een privateDNS-zone voor een DNS-service maken.
Wanneer u een zone aanmaakt, moet u deze toevoegen aan de permanente instellingen van uw firewall.
Probeer publicweb- en privateDNS-zones te maken:
sudo firewall-cmd --permanent --new-zone=publicweb
sudo firewall-cmd --permanent --new-zone=privateDNS
Controleer of er zones bestaan:
sudo firewall-cmd --permanent --get-zones
Nieuwe zones zijn niet beschikbaar in de huidige sessie:
firewall-cmd --get-zones
dmz blokkeren drop extern thuis intern publiek vertrouwd werk
Om toegang te krijgen tot nieuwe zones, moet u de firewall opnieuw opstarten:
sudo firewall-cmd --reload
firewall-cmd --get-zones
blok dmz drop extern huis intern privateDNS openbaar publicweb vertrouwd werk
Nu kunt u de benodigde services en poorten aan de nieuwe zones toewijzen. U kunt bijvoorbeeld SSH, HTTP en HTTPS toevoegen aan de publicweb-zone.
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 --lijst-alles
publiekweb
interfaces:
bronnen:
diensten: http https ssh
poorten:
maskerade: nee
forward-poorten:
icmp-blokken:
rijke regels:
U kunt DNS toevoegen aan de privateDNS-zone:
sudo firewall-cmd --zone=privateDNS --add-service=dns
firewall-cmd --zone=privateDNS --lijst-alles
privéDNS
interfaces:
bronnen:
diensten: dns
poorten:
maskerade: nee
forward-poorten:
icmp-blokken:
rijke regels:
Vervolgens kunt u netwerkinterfaces aan nieuwe zones toewijzen:
sudo firewall-cmd --zone=publicweb --change-interface=eth0
sudo firewall-cmd --zone=privateDNS --change-interface=eth1
Nu kunt u de opstelling testen. Als alles correct werkt, kunt u deze regels toevoegen aan de permanente instellingen.
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
Hierna kunt u de netwerkinterfaces configureren automatische verbinding naar de juiste zone.
Eth0 zal bijvoorbeeld worden gekoppeld aan publicweb:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
. . .
IPV6_AUTOCONF=nee
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=openbaarweb
En de eth1-interface zal gebonden zijn aan privateDNS:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth1
. . .
NETMASKER=255.255.0.0
DEFROUTE = "nee"
NM_CONTROLLED="ja"
ZONE=privéDNS
Opnieuw opstarten netwerkdiensten en firewall:
sudo systemctl herstart netwerk
sudo systemctl herstart firewalld
Controleer zones:
firewall-cmd --get-active-zones
privéDNS
interfaces: eth1
publiekweb
interfaces: eth0
Zorg ervoor dat de vereiste services actief zijn in de zones:
firewall-cmd --zone=publicweb --list-services
http-htpps-ssh
firewall-cmd --zone=privateDNS --list-services
dns
Gebruikerszones zijn volledig klaar voor gebruik. U kunt elk van deze uw standaardzone maken. Bijvoorbeeld:
sudo firewall-cmd --set-default-zone=publicweb
Automatische start van de firewall
Nu u alle instellingen heeft gecontroleerd en ervoor heeft gezorgd dat alle regels naar verwachting werken, kunt u de firewall zo configureren dat deze automatisch wordt gestart.
Om dit te doen, voert u het volgende in:
sudo systemctl activeert firewalld
De firewall start nu samen met de server.
Conclusie
Firewalld-firewall is erg flexibel hulpmiddel. Met zones kunt u snel het firewallbeleid wijzigen.
Nu u weet hoe firewalld werkt, bent u bekend met de basisconcepten van een firewall, kunt u aangepaste zones aanmaken en services toevoegen.
Trefwoorden: ,