Xinetd primer

Xinetd primer


Xinetd är en vårdnadshavare som hanterar åtkomst till din dator från internet. Det är en demon som kör hela tiden och lyssnar på alla portar för anslutnings- eller serviceförfrågningar. Om du inte kör en server behöver du inte xinetd. Men även om din dator bara är för hemmabruk kan du behöva tillåta andra att få tillgång till tjänster på din dator någon gång i framtiden. När du gör, måste du installera xinetd för att skydda din dator från skadlig aktivitet.

Operativ system

Verktyget xinetd är skriven för Unix och Unix-liknande system. Så det kommer att installeras på Linux och Mac OS, men inte på Windows. Programmet är gratis att använda och kan nås från GitHub.

Du kan hämta programmet från det här huvudförvaret och det finns också en gaffel för koden. Detta är ett välkänt och pålitligt program som har laddats ner och installerats många gånger, så du bör inte oroa dig för att farorna med programmet är en skadlig falsk.

Syftet med xinetd

Xinet-systemet är avsett att fungera som en server. Du vet antagligen att i en typisk internetanslutning kontaktar en dator en annan. Datorn som initierar kontakten kallas "klient"Och programmet som kontaktas är"server.”Det vanliga skälet till anslutningen är så att klienten kan få en tjänst från servern. Den kontaktade datorn måste dock ha ett program som väntar på förfrågningar. Detta är funktionen för xinetd.

Det grundläggande kravet för xinetd är att det kommer att ta emot förfrågningar och vidarebefordra dem till rätt applikation, vilket indikeras av portnumret som skrivs i rubriken på den anslutande anslutningen eller servicebegäran. Xinetd-programmet tillhandahåller inte faktiskt den begärda tjänsten utan fungerar som en gatekeeper.

Alternativ: xinetd vs inetd

Utvecklarna av xinetd var inte de första människorna som kom med idén om ett program som lyssnar på nätverket för inkommande förfrågningar. I själva verket är xinetd avsett som en förbättring av det ursprungliga programmet som utförde denna uppgift, som kallas inetd.

Namnet "xinetd" är en förkortning för "utökad daemon för internettjänster”. ”Demon för internettjänster” beskriver originalet inetd. Med inetd får du samma serverövervakning som xinetd tillhandahåller. Denna demon har emellertid inga försvarsmekanismer och anses nu vara osäker.

Den gamla inetd fungerade inte ensam. Det överlämnade förfrågningar till tcpd, som kontrollerade behörighetsfiler (hosts.allow och hosts.deny). Som namnet antyder hanterar tcpd TCP-anslutningsförfrågningar. Men det granskar också UDP-portar, så det är en implementering av gränssnittet för transportlager. Du kanske också kan se en TCP-omslag - det här är bara ett annat namn för tcpd. Införandet av tcpd lägger till en viss förbättring av åtkomstkontrollen. Tillståndsprocessen drivs emellertid av två manuellt befolkade filer, och därför var det inte en mycket omfattande säkerhetslösning.

Xinetd-funktioner

Driftläget xinetd liknar det för inetd kombinerat med tcpd. Men xinetd-lösningen har mycket bättre säkerhetsfunktioner än inetd / tcpd-kombinationen. Funktionerna hos demonen inkluderar:

  • åtkomstkontroll för TCP och UDP
  • loggning av händelser som registrerar framgång och misslyckande av anslutningen
  • åtkomstkontroll baserad på tidssegment
  • samtidig servergräns - DoS-attackförsvar
  • loggfilstorleksgräns
  • tilldelning av tjänster till olika gränssnitt, vilket gör att vissa tjänster kan begränsas till det privata nätverket
  • proxy-funktion inklusive översättning av nätverksadresser

Xinetd kan fungera som medlare för RPC-tjänster. Men denna funktion är inte så bra implementerad. Avsaknaden av säkerhetsfunktion i RPC har minskat efterfrågan på åtkomst till den tjänsten, så det är tveksamt att utvecklarna av xinetd kommer att spendera tid på att göra sitt RPC-gränssnitt perfekt..

Metoder för åtkomstkontroll

Som inetd, xinetd låter dig tillåta eller blockera anslutningar enligt begärarens IP-adress. Med inetd kan du också identifiera tillåtna och blockerade anslutningskällor med värdnamn eller domännamn. Var och en av dessa alternativ kräver en sökningsprocedur. För värdnamnsalternativet måste du ha dessa namn inställda i ditt eget nätverks DNS-system. För domäner skulle du förmodligen vara bättre på att lita på det offentliga DNS-systemet.

Valet av om du identifierar begärare efter IP-adress, värdnamn eller domännamn är upp till dig. dock, genom att hålla fast vid IP-adressen skapas anslutningar snabbare eftersom det eliminerar behovet av en uppslagningsfas.

Systemkonfiguration

För att kunna använda xinetd måste du först installera den och sedan uppdatera konfigurationsfilen. I huvudsak är konfigurationsfilen ditt kommandocenter för xinetd. Eftersom detta program är en demon, när du startar det, det kommer att fortsätta att köra för alltid. Det är inte ett interaktivt verktyg som du kan justera på kommandoraden. All din kommunikation med programmet sker via konfigurationsfilen.

Demonen fortsätter att kontrollera konfigurationsfilen när den får en begäran från omvärlden. Den laddar inte konfigurationen i minnet när den startar. Det betyder Du kan justera prestandan för daemonen medan den körs genom att ändra instruktionerna i konfigurationsfilen.

Konfigurationsfilen för xinet är mycket viktigare än konfigurationssystemen för andra verktyg. Det beror på att du kan ändra instruktionerna för demonen genom konfigurationen utan att behöva stoppa xinetd-programmet och starta om det.

Ställa in konfigurationsfilen

Leta efter filen /etc/xinetd.conf. Detta är programmets huvudkonfigurationsfil och fungerar som en uppslagstabell som applikationen läser för att räkna ut vilka anslutningar som ska tillåtas och vilka tjänster att ringa.

Du kan skapa xinetd.conf-filen från en befintlig inetd.conf fil med xconv.pl program, som utgör en del av paketet som du kan ladda ner från GitHub-förvaret för xinetd. Kör konverteringsprogrammet med följande kommando:

/usr/local/sbin/xconv.pl < /etc/inetd.conf > /etc/xinetd.conf

Den nya konfigurationsfilen är inte perfekt och den behöver ytterligare ändringar innan du kan starta xinetd.

Konfigurationsfil är standardavsnitt

När du tittar i din nyligen genererade xinetd.conf-fil måste du fokusera på två viktiga konfigurationsavsnitt. Den första av dessa är defaults avsnitt och den andra är tjänster sektion.

Som du antagligen redan gissat berättar standardavsnittet xinetd vad man ska göra om det inte hittar specifika instruktioner för dess aktuella uppgift i servicesektionen.

Några viktiga alternativ som du kan ställa in i standardavsnittet är:

  • only_from
  • ingen åtkomst
  • log_type
  • log_on_success
  • log_on_failure
  • instanser
  • per_source

De följande avsnitten förklarar dessa alternativ mer detaljerat.

Åtkomstvillkor

Only_from och ingen åtkomst effektivt utföra samma uppgift, som är att blockera (ingen åtkomst) eller tillåta (endast från) specifik adress eller adressintervall. Det är tillrådligt att använda ett av dessa alternativ för att blockera allt som standard och sedan bygga upp en lista över tjänster som är lägre ner i konfigurationsfilen. Genom denna strategi täcker du dig själv om en händelse du inte redogjorde för inträffar.

Dessa två alternativ är också giltiga kommandon att inkludera i servicesektionen. Så du kan Börja med att förbjuda allt som standard och lägg sedan till tjänster. Om det finns en tjänstesektion som hänför sig till den anslutningsförfrågningstyp som xinetd får, kommer den inte att titta på standardavsnittet i konfigurationen.

Instruktionerna för only_from och no_access i en beskrivning för en tjänst åsidosätter de endast_from- och no_access-uttalandena i avsnittet standardinställningar.

Formatet för dessa två alternativ är

=

Kom ihåg att adresserna kan uttryckas som IP-adresser, värdnamn eller domännamn. Det är dock bättre att hålla sig till IP-adresser. Du kan använda CIDR-notation för att ange ett intervall. Här är två exempel på hur du kan använda dessa alternativ:

no_access = 0.0.0.0/0

Detta är förmodligen den vanligaste raden i standardavsnittet eftersom den blockerar alla. Standardavsnittet finns bara där i konfigurationsfilen för att berätta för xinetd vad som ska göras i händelse av en tjänstbegäran som inte täcks i tjänstesektionen. Du bör arbeta med antagandet att du kommer att kunna ge specifika instruktioner för varje tjänsttyp som din dator kan tillhandahålla, så det är rimligt att ange att alla andra förfrågningar är blockerade. Som dörrvaktaren på en exklusiv VIP-fest skulle säga, "Om du inte är med på listan, kommer du inte in."

Ett alternativ till denna strategi är att släppa in alla. Du skulle implementera detta med:

only_from = 0.0.0.0/0

Den här policyn är inte riktigt vettig i avsnittet standardvärden. Standardavsnittet hänvisas bara till om du inte lägger in instruktioner för en tjänst, så när xinet inte tillhandahåller standardvärdena har det ett fall som inte innehåller några instruktioner för den. Så att tillåta åtkomst under dessa omständigheter skulle resultera i ett fel eftersom du inte har sagt xinet vad du ska göra med begäran. Det är logiskt att använda detta catch-all only_from-alternativ i beskrivningen av en tjänst, så det här meddelandet skulle säga xinetd att tillåta förfrågningar från alla möjliga källor att använda den tjänsten.

Tyvärr finns det en funktion i alternativet only_from och no_access som skulle skapa en konflikt om du implementerade en policy som beskrivs ovan. Det är, både no_access och only_from är globala och xinetd kontrollerar båda av dem varje gång den har en uppgift att utföra. Så om du båda har ställt in, kommer valet att validera den inkommande begäran mot det no_access-uttalandet i standardavsnittet även om det finns en giltig servicekonfiguration.

Denna grävning om ingen tillgång och bara från att vara global kan övervinnas genom att besluta om en politik om bara någonsin med det ena eller det andra i din xinetd.conf-fil. Det är vanligt att hålla sig till only_from och ignorera no_access-alternativet. Du kan skapa en fångstinstruktion endast genom att lämna adresslistan tom i standardavsnittet, dvs. "only_from = ”Och det låter xinetd-programmet använda inställningen only_from i tjänstebeskrivningarna. Detta kommer att inträffa utan att ta upp en konflikt eftersom standardavsnittet endast_från värdet skrivs över av tjänstens endast_from-inställning.

Irriterande, om du inte sätter ett endast_from- eller no_access-uttalande i standardavsnittet tillåter xinetd alla anslutningar som du inte har täckt i servicesektionen, vilket förmodligen kommer att skapa ett fel.

Formatet för att lista flera adresser som parametrar för båda dessa alternativ är att lämna ett avstånd mellan varje adress (inga komma). Du kan också inkludera CIDR-intervall i listan.

Loggfilkommandon

De log_type, log_on_success, och log_on_failure alternativ alla fungerar tillsammans. Var och en har en serie konstanter som du måste mata in alternativet som parametrar.

Använd attributet log_type till ge sökvägen och namnet på en loggfil och använd attributet log_on_success och log_on_failure för att ange vilka fält som ska skrivas in i loggfilen för varje händelse.

Till exempel skulle du skriva en loggfiladress med:

log_type = FIL / usr / log / internetlog

Ett annat alternativ som är tillgängligt med attributet log_type är SYSLOG, som anger meddelandenivån för dessa händelser som kommer att rapporteras av syslogd. Möjliga värden är:

  • demon
  • auth
  • användare
  • local0-7

Ett exempel skulle vara:

log_type = SYSLOG local1

De Sylog attribut är inte viktigt och det är mycket mindre viktigt än FIL alternativ. Du måste verkligen ge ditt xinet namn på en loggfil du kan skriva till; du behöver inte ange Syslog-nivån för händelsemeddelanden.

De tillgängliga rapporteringsalternativen för log_on_success är:

  • PID - 0 om det är en intern xinetd-tjänst
  • HOST - kundens adress
  • USERID - identiteten för fjärranvändaren
  • EXIT - process exit status
  • DURATION - periodens varaktighet

Rapporteringsalternativen för log_on_failure är:

  • HOST - kundens adress
  • USERID - identiteten för fjärranvändaren
  • ATTEMPT - loggar ett misslyckat åtkomstförsök
  • RECORD - all tillgänglig information om klienten

Du kan inkludera flera alternativ på varje log_on_success- och log_on_failure-linjer och de bör separeras med mellanslag utan någon typ av skiljetecken. Till exempel:

log_type = FIL / usr / log / internetlog
log_on_success = HOST PID USERID DURATION EXIT
log_on_failure = HOST USERID ATTEMPT RECORD

Det är vanligt att lagra uttalanden log_type, log_in_success och log_on_failure på varandra följande rader i filen.

Kapacitetskontroller

Ytterligare två alternativ som du behöver lägga in i xinetd.conf begränsar antalet samtidiga anslutningar som din server ska acceptera. Detta är en viktig faktor och det är ett enkelt, men kraftfullt sätt att trounce Denial of Service (DoS) attacker. De två alternativen som implementerar denna strategi är instanser och per_source.

Alternativet instanser i avsnittet standardinställningar anger antalet anslutningar som xinetd tillåter att köras samtidigt och per_source-alternativet anger antalet anslutningsförfrågningar som demonet svarar på från samma källadress. Distribuerade attacker för denial of service (DDoS) kommer att komma runt per_source-gränsen, men inte instansalternativet. Tyvärr kommer implementeringen av denna tjänstgräns att blockera äkta användare under attackens varaktighet.

Formatet för dessa två alternativ är mycket rakt fram:

= antal.

Per_source-värdet ska vara lägre än instansvärdet.

Exempel på standardavsnitt

Om du sätter ihop alla detaljer som förklaras i det här avsnittet bör ditt xinetd.conf-standarduttalande se ut så här:

defaults
{
instanser = 20
per_source = 5
log_type = FIL / usr / log / internetlog
log_on_success = HOST PID USERID DURATION EXIT
log_on_failure = HOST USERID ATTEMPT RECORD
only_from =
}

Varje xinetd.conf-fil ska ha ett standardförklaring. Du behöver inte ha några uttalanden om tjänster.

Avsnitt för servicekonfiguration

För var och en av de tjänster som du vill att din server ska leverera bör du skriva ett avsnitt om serviceinstruktioner i xinetd.conf. Om du inte skriver några tjänster i konfigurationsfilen kommer xinetd att använda specifikationerna som anges i standardavsnittet. Du kan också skriva över inställningarna definierade i standardavsnitten genom att återställa de attributen med olika värden i avsnittet skrivet för att definiera en tjänst.

Tjänstetyper

De tillgängliga attributen för servicesektionen är olika för var och en av tre kategorier av tjänster. Dessa är:

  • INRE
  • INTE UPPFÖRD PÅ LISTAN
  • RPC

Servicekategorin (INTERN / UNLISTED / RPC) kan anges med attributet typ. Detta attribut är dock inte obligatoriskt och lämnas ofta ute.

Definitioner av serviceattribut

När du skriver en attributspecifikation är alla fält separerade med mellanslag eller vagnreturer - du använder inte någon form av separator eller skiljetecken i definitionen.

Layouten för ett tjänsteavtal är detsamma för avsnittet standardvärden:

service
{
  attributoperatörsvärde
}

Operatören som används för attribututdrag är vanligtvis lika ("=”). Mycket få attribut tillåter värden att läggas till en befintlig lista med "+="Eller tagit bort en lista med"-=”- i båda dessa fall skriver du operatören utan de offerter som visas här.

Här är de attribut som är tillgängliga för en INRE servicetyp:

  • socket_type
  • flaggor
  • trevlig
  • vänta
  • protokoll (om inte listat i / etc / services)
  • port (om inte listad i / etc / services)
  • cps
  • access_times

Tillgängliga attribut för en RPC tjänsten är:

  • socket_type
  • flaggor
  • användare
  • server
  • server_args
  • trevlig
  • vänta
  • protokoll
  • rpc_version
  • rpc_number
  • cps
  • access_times

De INTE UPPFÖRD PÅ LISTAN servicetyper kan ha något av följande attribut:

  • socket_type
  • flaggor
  • användare
  • server
  • server_args
  • max_load
  • trevlig
  • vänta
  • protokoll (om inte listat i / etc / services)
  • port (om inte listad i / etc / services)
  • access_times
  • cps

Serviceattributändamål

Betydelserna för dessa attribut visas i tabellen nedan:

AttributeDescription
typ INTERN, RPC, UNLISTED eller INTERNAL UNLISTED
socket_type stream (TCP), dgram (UDP), raw (IP direct access) eller seqpacket ().
id skapa ett unikt namn för den här tjänsten
flaggor förklaras nedanstående tabell
användare anger serverprioritet
server Sökvägen och programmet
server args argument för att klara med tjänstsamtalet
max_load antal samtidiga processer för en tjänst
trevlig ökar prioriteringen för tjänsten
vänta ja | no - blockerar eller tillåter samtidig behandling av nya förfrågningar
protokoll kan utelämnas om protokollet är listat i / etc / protokoll
hamn portnummer måste också finnas i / etc / services och vara samma nummer
rpc_version version av RPC
rpc_number RPC-nummer
cps anslutningsgräns, andra argument är valfritt och ger antal sekunder att vänta när gränsen nås
access_times timmar på dagen då en tjänst kan köras
binda svara på anslutningar till en specifik IP-adress
dirigera om vidarebefordrar förfrågningar om en tjänst till en annan dator

De flaggor attribut kan ha följande värden:

IDONLY: accepterar endast anslutningar från klienter som har en identifieringsserver

NORETRY: förhindrar skapandet av en ny process vid anslutningsfel

NAMEINARGS: det första argumentet i server_args är server värde. Används när du ringer tcpd

Förutom ovanstående attribut kan alternativen som finns tillgängliga i standardavsnittet också skrivas till en tjänsts definition. Dessa är:

  • only_from
  • ingen åtkomst
  • log_type
  • log_on_success
  • log_on_failure
  • instanser
  • per_source

Att använda dessa attribut igen kommer att skriva över alla värden som ställts in för dem i avsnittet standardvärden. Kom dock ihåg att only_from och ingen åtkomst attribut är globala, så du måste organisera användningen av dessa alternativ för att undvika motstridiga parametrar.

Exempel på servicedeklaration

Här är två exempel på definitionen av en tjänst.

service ntalk
{
socket_type = dgram
vänta = ja
användare = ingen
server = /usr/sbin/in.ntalkd
access_times = 7: 00-12: 30 13: 30-21: 00
endast_från = 192.168.1.0/24
}

service ftp
{
socket_type = ström
vänta = nej
användare = root
server = /usr/sbin/in.ftpd
server_args = -l
instanser = 4
fin = 10
}

Notera användningen av access_times i ntalk definition. Detta använder två tidsintervaller med från och till tider separerade med ett streck (“-”) utan mellanrum. De två tidsintervallen är separerade med ett mellanrum. Tidsdefinitionerna använder 24-timmars klockformat.

De only_from attribut i ntalk definition begränsar åtkomsten till den här tjänsten så att endast adresser i det lokala nätverket kan använda den.

De ntalk tjänsten har en socket_type av dgram, vilket betyder att det är en UDP-tjänst. De socket_type i ftp definition är ström, vilket betyder att det här är en TCP-tjänst.

Skapa flera instanser av en tjänst

Tjänstedefinitionen använder tjänstnamnet som dess identifierare som standard. Du kanske dock vill skapa flera kopior av en tjänst och ge varandra olika attribut. Eftersom servicenamnet måste motsvara det namn som används i / etc / services fil, att få flera versioner av en tjänst som körs skulle vara omöjligt. Id-attributet möjliggör emellertid denna driftsstrategi.

En mycket vanlig användning av detta scenario är när du vill skapa olika FTP-servrar för intern och extern åtkomst. Med den här metoden kan du hålla din fillagring för kontoret helt separat från de nedladdningsbara filerna som du gör tillgängliga för allmänheten.

I det här fallet skulle du definiera "Service ftp" två gånger. Du skulle sedan ge en instans attributet id = ftp-intern och den andra id = ftp-extern. Från och med därefter kan xinetd skilja mellan de två. För att göra varje instans tillgänglig för olika målgrupper skulle du använda only_from attribut för att begränsa åtkomst till ftp-interntjänsten till bara adresser i nätverket och åtkomst till ftp-extern tjänst till alla icke-nätverksadresser.

Bind en adress till en tjänst

Scenariot med att skapa olika tjänster för interna och externa användare kan mycket hjälpa till av attributet bind. Termen "binda”Används ofta i TCP-programmering. Det betyder vanligtvis att koppla en anslutning till en port och därmed skapa ett id för sessionen. I det här fallet betyder dock "bind" något annat. I exemplet med intern och extern åtkomst till FTP-servern, du kan binda datorns nätverksadress till ftp-intern instans och datorns offentliga IP-adress till ftp-extern instans.

I det här exemplet kan det vara möjligt att utelämna attributet only_from i tjänstens definition. Det är dock säkrare att lämna dessa begränsningar i. Så den fullständiga definitionen av dina interna och externa FTP-servrar skulle vara:

service ftp
{
id = ftp-extern
server = /usr/sbin/in.ftpd
server_args = -l
instanser = 4
only_from = 0.0.0.0/0
bindning = 202.19.244.130
}

service ftp
{
id = ftp-intern
socket_type = ström
server = /usr/sbin/in.ftpd
server_args = -l
endast_från = 192.168.1.0/24
bindning = 192.168.1.5
}

Denna strategi kräver att din FTP-server har en statisk IP-adress tilldelad den för allmän åtkomst. Du måste också ställa in din DHCP-server för att reservera samma adress för din interna FTP-server. Trots att ovanstående scenario fungerar när en enda dator används för både intern och extern åtkomst kan du också fördela adresserna för separata datorer för varje FTP-instans.

Inaktivera inetd-specifika tjänster

Det finns tre xinetd-tjänster som ger information om systemet.

  • servrar: rapportera om de servrar som används
  • tjänster: rapportera om tillgängliga tjänster, deras protokoll och deras hamnar
  • xadmin: kombinerar ovanstående två kommandon

Dessa tjänster är en säkerhetssvaghet eftersom de kan användas av hackare för att få information om ditt nätverk och server. Därför är det bättre att inaktivera dem. Du kan göra detta med det inaktiverade attributet, som går in i ditt defaults definition. Inkludera bara följande rad i ditt standardavsnitt för att ta bort dessa faciliteter:

inaktiverat = servrarna xadmin

Med konfigurationsfiländringarna som beskrivs ovan kan du nu börja använda xinetd.

Kör xinetd

Du startar xinetd på kommandoraden. Kommandot kan också köras från en batchfil, så att du kan lägga till det i datorns startprocedurer. Programmet kan köras med följande alternativ:

SwitchOptionDescription
-d Felsökningsläge
-syslog               syslog_facility Samma som log_type SYSLOG i konf-filens standardinställningar
-FileLog loggfil Samma som log_type FIL i konfigureringsfilen standard
-f  config_file Anger konfigurationsfilen - standard är /etc/xinetd.conf
-pidfile pid_file Skriv process-ID till pid_file
-hålla sig vid liv Avsluta aldrig
-begränsa proc_limit Maximalt antal processer som kan köras samtidigt
-logprocs begränsa Maximalt antal servrar som kan köras samtidigt
-version Skriv ut xinetd-versionen
-inetd_compat Läs /etc/inetd.conf såväl som xinetd-konfigurationsfilen
-cc intervall Utför konsistenskontroller varje intervallsekund

Det är också möjligt att starta xinetd utan några alternativ.

Använd xinetd

Om du har en Linux-dator kanske du redan har xinetd installerat. Du kan kontrollera genom att köra xinetd -version. Om din dator kör inetd istället är chansen stor att du inte kör Linux. Byt ut programmet med xinetd och konvertera din konfigurationsfil från inetd-kompatibilitet till xinetd-användning som förklarats ovan.

Använder du xinetd just nu? Lämna ett meddelande i kommentarer avsnitt nedan för att dela dina erfarenheter med samhället.

Se även: 15 bästa gratis Syslog-servrar

Bild: Nätverksanslutning från Pixabay. Licensierad under CC0 Creative Commons

Brayan Jackson Administrator
Candidate of Science in Informatics. VPN Configuration Wizard. Has been using the VPN for 5 years. Works as a specialist in a company setting up the Internet.
follow me

Add a Comment

Your email address will not be published. Required fields are marked *

1 + 2 =

Xinetd primer

Xinetd primer


Xinetd er en værge, der administrerer adgang til din computer fra internettet. Det er en dæmon, der kører hele tiden og lytter på alle porte for at få forbindelse eller serviceanmodninger. Hvis du ikke kører en server, har du ikke brug for xinetd. Selv hvis din computer kun er til hjemmebrug, kan du muligvis give andre adgang til tjenester på din computer på et tidspunkt i fremtiden. Når du gør det, skal du installere xinetd for at beskytte din computer mod ondsindet aktivitet.

Operativ system

Xinetd-værktøjet blev skrevet til Unix og Unix-lignende systemer. Så det vil installeres på Linux og Mac OS, men ikke på Windows. Programmet er gratis at bruge og kan fås adgang til det fra GitHub.

Du kan få programmet fra dette masterlager, og der er også en gaffel af koden. Dette er et velkendt og pålideligt program, der er blevet downloadet og installeret mange gange, så du skal ikke bekymre dig om farerne ved, at programmet er en ondsindet falsk.

Formålet med xinetd

Xinet-systemet er beregnet til at fungere som en server. Du ved sandsynligvis, at i en typisk internetforbindelse kontakter en computer en anden. Computeren, der indleder kontakt, kaldes “klient”Og det program, der kontaktes, er”server.”Den sædvanlige grund til forbindelsen er, så klienten kan få en service fra serveren. Den kontaktede computer skal dog have et program, der kører, og venter på anmodninger. Dette er xinetds funktion.

Det grundlæggende krav til xinetd er, at det vil modtage anmodninger og videresende dem til den rigtige applikation, hvilket er angivet med det portnummer, der er skrevet i overskriften på den ankomende forbindelse eller serviceanmodning. Xinetd-programmet leverer faktisk ikke den ønskede service, men fungerer som en gatekeeper.

Alternativer: xinetd vs inetd

Udviklerne af xinetd var ikke de første mennesker, der kom med ideen om et program, der lytter på netværket for indgående anmodninger. Faktisk er xinetd beregnet som en forbedring af det originale program, der udførte denne opgave, der kaldes inetd.

Navnet “xinetd” er en forkortelse for “udvidet internettjeneste-dæmon”. "Internet-servicesdemon" beskriver originalen inetd. Med inetd får du den samme serveranmodningsovervågning, som xinetd leverer. Imidlertid har denne dæmon ingen forsvarsmekanismer, og det betragtes nu som usikker.

Den gamle indetd virkede ikke alene. Det sendte anmodninger videre til tcpd, som kontrollerede tilladelsesfiler (hosts.allow og hosts.deny). Som navnet antyder, håndterer tcpd TCP-forbindelsesanmodninger. Dog undersøger den også UDP-porte, så det er en implementering af Transport Layer-interface. Du kan også se omtale af en TCP-indpakning - dette er bare et andet navn på tcpd. Inkluderingen af ​​tcpd tilføjede en vis forbedring af adgangskontrollen. Tilladelsesprocessen blev imidlertid drevet af to manuelt befolket fil, og det var derfor ikke en meget omfattende sikkerhedsløsning.

Xinetd funktioner

Driftstilstanden xinetd ligner den for inetd kombineret med tcpd. Imidlertid har xinetd-løsningen meget bedre sikkerhedsfunktioner end inetd / tcpd-kombinationen. Funktioner af dæmonen inkluderer:

  • adgangskontrol til TCP og UDP
  • begivenhedslogging, der registrerer forbindelsens succes og fiasko
  • adgangskontrol baseret på tidssegmenter
  • samtidig servergrænse - DoS-angreb forsvar
  • log filstørrelsesgrænse
  • tildeling af tjenester til forskellige grænseflader, hvilket gør det muligt for visse tjenester at være begrænset til det private netværk
  • proxy-funktion inklusive oversættelse af netværksadresse

Xinetd er i stand til at fungere som mægler for RPC-tjenester. Denne funktion er imidlertid ikke særlig implementeret. Manglen på sikkerhedsfunktion i RPC har reduceret efterspørgslen efter adgang til denne tjeneste, så det er tvivlsomt, at udviklerne af xinetd vil bruge tid på at perfektere sin RPC-interface.

Metoder til adgangskontrol

Som inetd, xinetd giver dig mulighed for at tillade eller blokere forbindelser i henhold til anmodningens IP-adresse. Med inetd kan du også identificere tilladte og blokerede forbindelseskilder ved værtsnavn eller domænenavn. Hver af disse indstillinger kræver en opslagsprocedure. I tilfælde af valg af værtsnavne skal du have disse navne sat op i dit eget netværks DNS-system. For domæner ville du sandsynligvis have det bedre med at stole på det offentlige DNS-system.

Valget af, om du identificerer forespørgere efter IP-adresse, værtnavn eller domænenavn, er op til dig. Imidlertid, ved at holde fast ved IP-adressen skabes forbindelser hurtigere fordi det eliminerer behovet for en opslagsfase.

System konfiguration

For at bruge xinetd skal du først installere det og derefter opdater konfigurationsfilen. I det væsentlige er konfigurationsfilen dit kommandocenter til xinetd. Da dette program er en dæmon, når du først har startet det, det vil fortsætte med at køre for evigt. Det er ikke et interaktivt værktøj, som du kan justere på kommandolinjen. Al din kommunikation med programmet sker gennem konfigurationsfilen.

Demonen fortsætter med at kontrollere konfigurationsfilen, når den modtager en anmodning fra omverdenen. Det indlæser ikke konfigurationen i hukommelsen, når den starter op. Det betyder du kan justere ydeevnen af ​​dæmonen, mens den kører ved at ændre instruktionerne i konfigurationsfilen.

Konfigurationsfilen til xinet er meget vigtigere end konfigurationssystemerne til andre værktøjer. Dette skyldes, at du kan ændre instruktionerne for dæmonen gennem konfigurationen uden at skulle stoppe xinetd-programmet og genstarte det.

Opsætning af konfigurationsfilen

Se efter filen /etc/xinetd.conf. Dette er programmets hovedkonfigurationsfil og fungerer som en opslagstabel, som applikationen læser for at finde ud af, hvilke forbindelser der skal tillades, og hvilke tjenester man skal ringe til.

Du kan oprette xinetd.conf-filen fra en eksisterende inetd.conf fil med xconv.pl program, som er en del af pakken, som du kan downloade fra GitHub-arkivet til xinetd. Kør konverteringsprogrammet med følgende kommando:

/usr/local/sbin/xconv.pl < /etc/inetd.conf > /etc/xinetd.conf

Den nye konfigurationsfil er ikke perfekt, og den skal yderligere ændres, inden du kan starte xinetd.

Afsnittet om standardindstillinger for konfigurationsfil

Når du ser i din nyoprettede fil xinetd.conf, skal du fokusere på to nøglekonfigurationsafsnit. Den første af disse er defaults sektion og det andet er tjenester afsnit.

Som du sandsynligvis allerede har gættet, fortæller standardafsnittet xinetd, hvad de skal gøre, hvis det ikke finder specifikke instruktioner til dens aktuelle opgave i servicesektionen.

Nogle nøglemuligheder, som du kan indstille i afsnittet om standardindstillinger er:

  • only_from
  • ingen adgang
  • log_type
  • log_on_success
  • log_on_failure
  • forekomster
  • per_source

De næste afsnit forklarer disse indstillinger mere detaljeret.

Adgangsbetingelser

Only_from og ingen adgang effektivt udføre den samme opgave, som er at blokere (ingen adgang) eller tillade (kun_fra) specifik adresse eller adresserinteresser. Det anbefales at bruge en af ​​disse indstillinger til at blokere alt som standard og derefter opbygge en liste over tjenester lavere nede i konfigurationsfilen. Med denne strategi dækker du dig selv, hvis der sker en begivenhed, som du ikke har taget højde for.

Disse to indstillinger er også gyldige kommandoer, der skal medtages i servicesektionen. Så du kan start med at forbyde alt som standard og tilføj derefter tjenester. Hvis der er en servicesektion, der vedrører den forbindelsesanmodningstype, som xinetd modtager, ser den ikke på standardafsnittet i konfigurationen.

Instruktionerne i only_from og no_access i en beskrivelse af en tjeneste tilsidesætter udsagnene only_from og no_access i afsnittet om standardindstillinger.

Formatet for disse to indstillinger er

=

Husk, at adresserne kan udtrykkes som IP-adresser, værtsnavne eller domænenavne. Det er dog bedre at holde sig til IP-adresser. Du kan bruge CIDR-notation til at specificere et interval. Her er to eksempler på, hvordan du kan bruge disse indstillinger:

no_access = 0.0.0.0/0

Dette er sandsynligvis den mest almindelige linje i standardafsnittet, fordi det blokerer for alle. Afsnittet om standardindstillinger er kun der i konfigurationsfilen for at fortælle xinet, hvad de skal gøre i tilfælde af en serviceanmodning, der ikke er dækket i servicesektionen. Du skal arbejde ud fra den antagelse, at du vil være i stand til at give specifikke instruktioner for hver servicetype, som din computer kan levere, så det er rimeligt at oplyse, at alle andre anmodninger er blokeret. Som portneren på en eksklusiv VIP-fest sagde: "Hvis du ikke er på listen, kommer du ikke ind."

Et alternativ til denne strategi er at slippe alle ind. Du vil implementere dette med:

only_from = 0.0.0.0/0

Denne politik giver ikke rigtig mening i afsnittet om standardindstillinger. Standardafsnittet henvises kun til, hvis du ikke har angivet instruktioner til en tjeneste, så når xinet ikke resorterer til standardindstillingerne, har det en sag, der ikke indeholder nogen instruktioner til den. Så at tillade adgang under disse omstændigheder ville resultere i en fejl, fordi du ikke har fortalt xinet, hvad du skal gøre med anmodningen. Det er logisk at bruge denne catch-all only_from-indstilling i beskrivelsen af ​​en tjeneste, så denne meddelelse fortæller xinetd at tillade anmodninger fra alle mulige kilder om at bruge denne service.

Desværre er der en funktion i only_from- og no_access-indstillingerne, der ville skabe en konflikt, hvis du implementerede en politik som beskrevet ovenfor. Det er, både no_access og only_from er globale og xinetd kontrollerer dem begge hver gang den har en opgave at udføre. Så hvis du begge har indstillet, validerer dæmonen den indgående anmodning mod den no_access-erklæring i standardafsnittet, selvom der er en gyldig servicekonfiguration opsat.

Denne underlig om no_access og kun_fra at være global kan overvindes ved at beslutte en politik om kun nogensinde ved hjælp af den ene eller den anden i din xinetd.conf-fil. Det er almindelig praksis at holde sig med only_from og ignorere muligheden no_access. Du kan oprette en catch-all-instruktion ved at lade adresselisten være tom i afsnittet om standardindstillinger, dvs. "only_from = ”Og det lader xinetd-programmet bruge den eneste_from-indstilling i servicebeskrivelserne. Dette vil ske uden at rejse en konflikt, fordi værdien for standardafsnittet only_from overskrives af tjenestens only_from-indstilling.

annoyingly, Hvis du ikke lægger en only_from- eller en no_access-erklæring i standardafsnittet, tillader xinetd alle forbindelser som du ikke har dækket i servicesektionen, hvilket sandsynligvis vil skabe en fejl.

Formatet til liste af flere adresser som parametre for begge disse indstillinger er at efterlade et mellemrum mellem hver adresse (ingen kommaer). Du kan også medtage CIDR-intervaller på listen.

Logfil-kommandoer

Det log_type, log_on_success, og log_on_failure indstillinger fungerer alle sammen. Hver har en række konstanter, som du har brug for at tilføje indstillingen som parametre.

Brug attributten log_type til angiv stien og navnet på en logfil og brug attributten log_on_success og log_on_failure til at specificere, hvilke felter der skal skrives i logfilposten for hver begivenhed.

For eksempel vil du skrive en logfiladresse med:

log_type = FIL / usr / log / internetlog

En anden mulighed tilgængelig med attributten log_type er SYSLOG, der indstiller meddelelsesniveauet for disse begivenheder, der vil blive rapporteret af syslogd. Mulige værdier er:

  • dæmon
  • auth
  • bruger
  • local0-7

Et eksempel ville være:

log_type = SYSLOG local1

Det Sylog attribut er ikke afgørende, og det er meget mindre vigtigt end FIL mulighed. Du har virkelig brug for at give din xinetd navnet på en logfil, du kan skrive til; behøver du ikke at specificere Syslog-niveau for begivenhedsmeddelelser.

De tilgængelige rapporteringsindstillinger for log_on_success er:

  • PID - 0, hvis det er en intern xinetd-tjeneste
  • HOST - klientens adresse
  • USERID - identiteten af ​​den eksterne bruger
  • EXIT - process exit status
  • DURATION - periode af sessionens varighed

Rapporteringsmulighederne for log_on_failure er:

  • HOST - klientens adresse
  • USERID - identiteten af ​​den eksterne bruger
  • ATTEMPT - logger et mislykket adgangsforsøg
  • RECORD - alle tilgængelige oplysninger om klienten

Du kan inkludere flere indstillinger på hver log_on_success og log_on_failure linjer, og de skal adskilles af mellemrum uden nogen form for tegnsætning. For eksempel:

log_type = FIL / usr / log / internetlog
log_on_success = HOST PID USERID DURATION EXIT
log_on_failure = HOST USERID ATTEMPT RECORD

Det er almindelig praksis at bevare log_type-, log_in_success- og log_on_failure-udsagnene på hinanden følgende linjer i filen.

Kapacitetskontrol

To yderligere indstillinger, som du har brug for at sætte i xinetd.conf, begrænser antallet af samtidige forbindelser, som din server skal acceptere. Dette er en vigtig faktor, og det er en enkel, men kraftfuld måde at trounce Denial of Service (DoS) angreb på. De to muligheder, der implementerer denne strategi er forekomster og per_source.

Muligheden for forekomster i afsnittet om standardindstillinger specificerer antallet af forbindelser, som xinetd tillader at køre samtidigt, og optionen per_source specificerer antallet af forbindelsesanmodninger, som dæmonen vil svare på fra den samme kildeadresse. Distribueret benægtelse af tjeneste-angreb (DDoS) kommer rundt på per_source-grænsen, men ikke mulighederne for tilfælde. Desværre vil implementeringen af ​​denne servicegrænse blokere ægte brugere i angrebets varighed.

Formatet for disse to indstillinger er meget ligetil:

= antal.

Værdien per_source skal være lavere end forekomstværdien.

Eksempel på standardafsnit

Når du sammensætter alle detaljerne, der er forklaret i dette afsnit, skal din xinetd.conf-standardopgørelse se sådan ud:

defaults
{
tilfælde = 20
per_source = 5
log_type = FIL / usr / log / internetlog
log_on_success = HOST PID USERID DURATION EXIT
log_on_failure = HOST USERID ATTEMPT RECORD
only_from =
}

Hver xinetd.conf-fil skal have en angivelse af standardindstillinger. Du behøver ikke have nogen erklæringer om tjenester.

Servicekonfigurationsafsnit

For hver af de tjenester, du vil have din server til at levere, skal du skrive et serviceinstruktionsafsnit i xinetd.conf. Hvis du ikke skriver nogen tjenester i konfigurationsfilen, bruger xinetd specifikationerne i afsnittet om standardindstillinger. Du kan også overskrive de indstillinger, der er defineret i standardafsnittene, ved at ændre disse attributter med forskellige værdier i det afsnit, der er skrevet for at definere en service.

Servicetyper

De tilgængelige attributter for servicesektionen er forskellige for hver af tre kategorier af tjenester. Disse er:

  • INDRE
  • unoterede
  • RPC

Tjenestekategorien (INTERN / UNLISTED / RPC) kan specificeres med attributten type. Denne attribut er imidlertid ikke obligatorisk og udelades ofte.

Definitioner af serviceattribut

Når du skriver en attributspecifikation, er alle felter adskilt af mellemrum eller vognretur - du bruger ikke nogen form for separator eller tegnsætning i definitionen.

Layoutet for en serviceerklæring er den samme for standardafsnittet:

service
{
  attribut operator værdi
}

Den operatør, der bruges til attributopgørelser, er normalt lig ("=”). Meget få attribut tillader værdier at føjes til en eksisterende liste med "+=”Eller fjernet en liste med“-=”- i begge disse tilfælde skriver du operatøren uden de tilbud, der er vist her.

Her er de attributter, der er tilgængelige for en INDRE servicetype:

  • socket_type
  • flag
  • pæn
  • vente
  • protokol (hvis ikke angivet i / etc / services)
  • port (hvis ikke angivet i / etc / services)
  • cps
  • access_times

De tilgængelige attributter for en RPC service er:

  • socket_type
  • flag
  • bruger
  • server
  • server_args
  • pæn
  • vente
  • protokol
  • rpc_version
  • rpc_number
  • cps
  • access_times

Det unoterede servicetyper kan have en af ​​følgende attributter:

  • socket_type
  • flag
  • bruger
  • server
  • server_args
  • max_load
  • pæn
  • vente
  • protokol (hvis ikke angivet i / etc / services)
  • port (hvis ikke angivet i / etc / services)
  • access_times
  • cps

Serviceattributformål

Betydningen af ​​disse attributter er vist i nedenstående tabel:

AttributeDescription
type INTERN, RPC, UNLISTED eller INTERNAL UNLISTED
socket_type stream (TCP), dgram (UDP), rå (IP direkte adgang) eller seqpacket ().
id oprette et unikt navn for denne service
flag forklaret nedenfor
bruger specificerer serverprioriteten
server Stien og programmet for tjenesten
server args argumenter, der skal overføres med servicekaldet
max_load antal samtidige processer for en tjeneste
pæn øger prioriteten for tjenesten
vente ja | ingen blokerer eller tillader samtidig behandling af nye anmodninger
protokol kan udelades, hvis protokollen er anført i / etc / protokoller
Havn portnummer skal også findes i / etc / services og være det samme nummer
rpc_version version af RPC
rpc_number RPC-nummer
cps forbindelsesgrænse, andet argument er valgfrit og giver antal sekunder at vente, når grænsen er nået
access_times timer på dagen, hvor en service kan køres
binde svar på forbindelser til en bestemt IP-adresse
omdirigering videresender anmodninger om en service videre til en anden computer

Det flag attribut kan have følgende værdier:

IDONLY: accepter kun forbindelser fra klienter, der har en identifikationsserver

NORETRY: forhindrer oprettelse af en ny proces ved forbindelsesfejl

NAMEINARGS: det første argument i server_args er server værdi. Bruges når du ringer til tcpd

Ud over ovennævnte attributter kan de indstillinger, der er tilgængelige i afsnittet om standardindstillinger, også skrives til en tjenestes definition. Disse er:

  • only_from
  • ingen adgang
  • log_type
  • log_on_success
  • log_on_failure
  • forekomster
  • per_source

Brug af disse attributter igen vil overskrive de værdier, der er indstillet til dem i afsnittet om standardindstillinger. Husk dog, at only_from og ingen adgang attributter er globale, så du skal organisere brugen af ​​disse indstillinger for at undgå modstridende parametre.

Eksempler på serviceerklæring

Her er to eksempler på definitionen af ​​en tjeneste.

service ntalk
{
socket_type = dgram
vent = ja
bruger = ingen
server = /usr/sbin/in.ntalkd
adgangstider = 7: 00-12: 30 13: 30-21: 00
only_from = 192.168.1.0/24
}

service ftp
{
socket_type = stream
vent = nej
bruger = rod
server = /usr/sbin/in.ftpd
server_args = -l
tilfælde = 4
dejligt = 10
}

Bemærk brugen af access_times i ntalk definition. Dette bruger to intervaller af gange med fra og til tider adskilt af en bindestreg (“-”) uden mellemrum. De to tidsintervaller adskilles med et mellemrum. Tidsdefinitionerne bruger 24-timers urformatet.

Det only_from attribut i ntalk definition begrænser adgangen til denne service, så kun adresser på det lokale netværk kan bruge den.

Det ntalk service har en socket_type af dgram, hvilket betyder, at det er en UDP-tjeneste. Det socket_type i ftp definition er strøm, hvilket betyder, at dette er en TCP-service.

Opret flere forekomster af en tjeneste

Servicedefinitionen bruger servicenavnet som dens identifikation som standard. Det kan dog være en god idé at oprette flere kopier af en tjeneste og give hver forskellige attributter. Da servicenavnet skal svare til det navn, der bruges i / etc / services fil, at få flere versioner af en tjeneste, der kører, ville være umuligt. Id-attributten aktiverer imidlertid denne driftsstrategi.

En meget almindelig anvendelse af dette scenarie ville være, når du vil oprette forskellige FTP-servere til intern og ekstern adgang. På denne måde kan du holde din fillagring til kontoret helt adskilt fra de downloadbare filer, som du stiller til rådighed for offentligheden.

I dette tilfælde vil du definere “Service ftp” to gange. Derefter giver du én instans attributten id = ftp-intern og den anden id = ftp-ekstern. Fra da af kan xinetd skelne mellem de to. For at gøre hver instans tilgængelig for forskellige målgrupper, ville du bruge only_from attribut for at begrænse adgangen til ftp-interntjeneste til blot adresser på netværket og adgang til ftp-ekstern service til alle ikke-netværksadresser.

Bind en adresse til en service

Scenariet med oprettelse af forskellige tjenester til interne og eksterne brugere kan i høj grad hjælpes med attributten bind. Begrebet "binde”Bruges ofte i TCP-programmering. Det betyder normalt at knytte en forbindelse til en port, således at der oprettes en id til sessionen. I dette tilfælde betyder "bind" imidlertid noget andet. I eksemplet med den interne og eksterne adgang til FTP-serveren, kan du binde computerens netværksadresse til den ftp-interne instans og den offentlige IP-adresse på den computer til den ftp-eksterne instans.

I dette eksempel kunne det være muligt at udelade den eneste_fra attribut i tjenestens definition. Det er dog mere sikkert at efterlade disse begrænsninger i. Så den fulde definition af dine interne og eksterne FTP-servere ville være:

service ftp
{
id = ftp-ekstern
server = /usr/sbin/in.ftpd
server_args = -l
tilfælde = 4
only_from = 0.0.0.0/0
bind = 202.19.244.130
}

service ftp
{
id = ftp-intern
socket_type = stream
server = /usr/sbin/in.ftpd
server_args = -l
only_from = 192.168.1.0/24
bind = 192.168.1.5
}

Denne strategi kræver, at din FTP-server har en statisk IP-adresse tildelt den til offentlig adgang. Du skal også konfigurere din DHCP-server for at reservere den samme adresse til din interne FTP-server. Selvom ovenstående scenario fungerer, når en enkelt computer bruges til både intern og ekstern adgang, kan du også allokere adresserne på separate computere til hver FTP-instans.

Deaktiver inetd-specifikke tjenester

Der er tre xinetd-tjenester der giver information om systemet.

  • servere: rapporter om de servere, der er i brug
  • tjenester: rapporter om tilgængelige tjenester, deres protokoller og deres havne
  • xadmin: kombinerer ovenstående to kommandoer

Disse tjenester er en sikkerhedssvaghed fordi de kan bruges af hackere til at få oplysninger om dit netværk og server. Derfor er det bedre at deaktivere dem. Du kan gøre dette med den deaktiverede attribut, der går ind i din defaults definition. Medtag blot følgende linje i dit standardindstillinger for at fjerne disse faciliteter:

deaktiveret = serverservices xadmin

Med konfigurationsfilændringerne beskrevet ovenfor, kan du nu begynde at bruge xinetd.

Kører xinetd

Du starter xinet på kommandolinjen. Kommandoen kan også køres fra en batchfil, så du kan føje den til din computers opstartprocedurer. Programmet kan køres med følgende indstillinger:

SwitchOptionDescription
-d Fejlretningstilstand
-syslog               syslog_facility Det samme som log_type SYSLOG i konfigurationsfilens standardindstillinger
-filelog logfil Det samme som log_type FIL i konfigurationen som standard
-f  config_file Specificerer konfigurationsfilen - standard er /etc/xinetd.conf
-pidfile pid_file Skriv proces-id'et til pid_file
-overleve Ophør aldrig
-begrænse proc_limit Maksimum antal processer, der kan køres samtidigt
-logprocs begrænse Maksimum antal servere, der kan køre samtidigt
-version Udskriv xinetd-versionen
-inetd_compat Læs /etc/inetd.conf såvel som xinetd-konfigurationsfilen
-cc interval Udfør konsistenskontrol hvert interval sekund

Det er også muligt at starte xinetd uden nogen muligheder.

Brug xinetd

Hvis du har en Linux-computer, har du muligvis allerede installeret xinetd. Du kan kontrollere ved at køre xinetd -version. Hvis din computer kører inetd i stedet, er chancerne for, at du ikke kører Linux. Udskift programmet med xinetd og konverter din konfigurationsfil fra inetd-kompatibilitet til xinetd-brug som forklaret ovenfor.

Bruger du xinetd i øjeblikket? Efterlad en besked i Kommentarer afsnit nedenfor for at dele dine oplevelser med samfundet.

Se også: 15 bedste gratis Syslog-servere

Billede: Netværksinternetforbindelse fra Pixabay. Licenseret under CC0 Creative Commons

Brayan Jackson Administrator
Candidate of Science in Informatics. VPN Configuration Wizard. Has been using the VPN for 5 years. Works as a specialist in a company setting up the Internet.
follow me

Add a Comment

Your email address will not be published. Required fields are marked *

8 + 2 =