De documentatie van dit product is waar mogelijk geschreven met inclusief taalgebruik. Inclusief taalgebruik wordt in deze documentatie gedefinieerd als taal die geen discriminatie op basis van leeftijd, handicap, gender, etniciteit, seksuele oriëntatie, sociaaleconomische status of combinaties hiervan weerspiegelt. In deze documentatie kunnen uitzonderingen voorkomen vanwege bewoordingen die in de gebruikersinterfaces van de productsoftware zijn gecodeerd, die op het taalgebruik in de RFP-documentatie zijn gebaseerd of die worden gebruikt in een product van een externe partij waarnaar wordt verwezen. Lees meer over hoe Cisco gebruikmaakt van inclusief taalgebruik.
Cisco heeft dit document vertaald via een combinatie van machine- en menselijke technologie om onze gebruikers wereldwijd ondersteuningscontent te bieden in hun eigen taal. Houd er rekening mee dat zelfs de beste machinevertaling niet net zo nauwkeurig is als die van een professionele vertaler. Cisco Systems, Inc. is niet aansprakelijk voor de nauwkeurigheid van deze vertalingen en raadt aan altijd het oorspronkelijke Engelstalige document (link) te raadplegen.
Dit document beschrijft hoe u een omgekeerde proxy kunt gebruiken voor toegang tot de Cisco Finesse-desktop zonder verbinding te maken met een VPN op basis van 12.6 ES03-versies van Cisco Finesse, Cisco Unified Intelligence Center (CUIC) en Cisco Identity Service (ID’s).
Opmerking: NGX-installatie en -configuratie worden niet ondersteund door Cisco. Vragen met betrekking tot dit onderwerp kunnen worden besproken op de Cisco-communityforums.
Opmerking: voor ES03-implementaties van VPN-less raadpleegt u het leesmenu van de afzonderlijke componenten om de upgrades te plannen en compatibiliteitsbeperkingen te controleren. Cisco FineReader 12.6 ES03 Leesmij, CUIC / IDs 12.6 ES03 Leesmij
Cisco raadt kennis van de volgende onderwerpen aan:
De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
Opmerking: de configuratie in dit document is geconfigureerd, gehard en met Nginx reverse proxy (OpenResty) getest op CentOS 8.0, tegen een voorbeeldimplementatie van 2000 gebruikers-UCE. De referentiegegevens voor het prestatieprofiel zijn in dit document beschikbaar.
Dit implementatiemodel wordt ondersteund voor de UCCE/PCCE en HCS voor UCCE-oplossingen.
De implementatie van een reverse proxy wordt ondersteund (beschikbaar vanaf 12.6 ES01) als een optie voor toegang tot de Cisco Finesse-desktop zonder verbinding met een VPN. Deze functie biedt agenten de flexibiliteit om overal via het internet toegang te krijgen tot de Finesse-desktop.
Om deze functie in te schakelen, moet een reverse proxy-paar worden ingezet in de gedemilitariseerde zone (DMZ).
De toegang van media blijft onveranderd in omgekeerde volmachtsplaatsingen. Om verbinding met de media te maken, kunnen agents Cisco Jabber over Mobile en Remote Access Solution (MRA) of de Mobile Agent-mogelijkheid van UCCE met een Public Switched Telephone Network (PSTN) of mobiel endpoint gebruiken. Dit diagram laat zien hoe de netwerkimplementatie eruit zal zien wanneer u twee Finesse-clusters en twee CUIC-knooppunten benadert via een enkele hoge beschikbaarheid (HA) paar omgekeerde proxy-knooppunten.
Gelijktijdige toegang van agents op het internet en agents die verbinding maken via het LAN wordt ondersteund zoals in deze afbeelding.
Opmerking: Zie de functiegids voor proxyselectiecriteria van derden in plaats van Nginx ter ondersteuning van deze implementatie.
- UCS 12.6 functiehandleiding - Biedt een overzicht van functies, ontwerp en configuratiedetails voor de functie VPN-less.
- UCS 12.6 Security Guide - Biedt richtlijnen voor beveiligingsconfiguratie voor de implementatie van omgekeerde proxy.
Het wordt aanbevolen om de VPN-Minder sectie van de functiehandleiding en de beveiligingsgids te bekijken voordat u dit document leest.
Opmerking: aanbevolen wordt om de bestaande op ES01 gebaseerde Nginx-configuratie te verwijderen voordat u de ES03 Nginx-configuraties installeert.
Opmerking: voor ES03-configuratiescripts is ook de corresponderende ES03 COP-installatie in Cisco Finesse, CUIC en IDs vereist.
Finesse 12.6 ES03 introduceert authenticatie bij de proxy. Verificatie wordt ondersteund voor SSO- (Single Sign On) en niet-SSO-implementaties.
Verificatie wordt afgedwongen voor alle verzoeken en protocollen die bij de proxy worden geaccepteerd voordat ze worden doorgestuurd naar de upstream componentservers, waar de authenticatie die door de componentservers wordt afgedwongen ook plaatsvindt. Bij alle verificatie worden de algemene Finesse-aanmeldingsgegevens gebruikt om de aanvragen te verifiëren.
Persistente verbindingen, zoals websockets die zich voor authenticatie en postverbinding baseren op toepassingsprotocollen zoals XMPP (Extensible Messaging and Presence Protocol), worden bij de proxy geverifieerd door het IP-adres te valideren waarvan een succesvolle verificatie van toepassingen is uitgevoerd voordat de socketverbinding wordt gemaakt.
Non-SSO authenticatie vereist geen extra configuraties en zal werken met out of the box Nginx configuratie scripts zodra de vereiste script vervangingen zijn gemaakt. Verificatie is gebaseerd op de gebruikersnaam en het wachtwoord waarmee wordt ingelogd op Finesse. Toegang tot alle endpoints wordt gevalideerd met Finesse-verificatieservices.
De lijst van geldige gebruikers wordt lokaal gecachet bij de proxy (werkt het cache elke 15 minuten bij), die wordt gebruikt om de gebruiker in een verzoek te valideren. Gebruikersreferenties worden gevalideerd door het verzoek naar de geconfigureerde Finesse URI door te sturen en vervolgens wordt de aanmeldingshash lokaal gecachet (15 minuten in cachegeheugen) om nieuwe verzoeken lokaal te verifiëren. Als er een wijziging is in de gebruikersnaam of het wachtwoord, wordt deze pas na 15 minuten van kracht.
Voor een SSO-verificatie moet de beheerder de coderingssleutel voor de IDs-token configureren op de Nginx-server in het configuratiebestand. De encryptiesleutel van het teken IdS kan uit de server van IdS met het geheime CLI van showIDS worden verkregen. Ze moeten worden geconfigureerd als deel van een van de #Must-change vervangingen die de beheerder moet uitvoeren in de scripts voordat de SSO auth kan werken.
Verwijs naar de SSO gebruikersgids voor de configuraties van IdS SAML die voor de volmachtsresolutie moeten worden uitgevoerd om voor IDs te werken.
Zodra SSO-verificatie is geconfigureerd, kan een geldig paar tokens worden gebruikt om toegang te krijgen tot een van de eindpunten in het systeem. De proxyconfiguratie valideert de referenties door de aan ID’s gedane token-ophalen te onderscheppen of door geldige tokens te decoderen en ze vervolgens lokaal te cachen voor verdere validaties.
Websocket-verbindingen kunnen niet worden geverifieerd met de standaard autorisatieheader, omdat aangepaste headers niet worden ondersteund door native websocket-implementaties in de browser. Verificatieprotocollen op toepassingsniveau, waarbij de verificatiegegevens in de payload websocket-verbinding niet verhinderen, en dus kwaadaardige entiteiten kunnen DOS- of DDOS-aanvallen uitvoeren door ontelbare verbindingen te maken om het systeem te overweldigen.
Om deze mogelijkheid te beperken, hebben de geleverde nginx reverse proxy-configuraties specifieke controles om websocket-verbindingen alleen te accepteren van die IP-adressen die succesvol een geauthenticeerd REST-verzoek hebben ingediend vóór het tot stand brengen van de websocket-verbinding. Dit betekent dat klanten die proberen om websocket verbindingen te maken, voordat een REST-aanvraag wordt uitgegeven, nu een autorisatie mislukte fout krijgen en geen ondersteund gebruiksscenario is.
Finesse 12.6 ES02 authenticatie scripts actief voorkomen brute kracht aanvallen die kan worden gebruikt om het gebruikerswachtwoord te raden. Dit gebeurt door het IP-adres te blokkeren dat wordt gebruikt om toegang te krijgen tot de service, na een aantal mislukte pogingen in korte tijd. Deze verzoeken zullen door 418 cliëntfout worden verworpen. De details van de geblokkeerde IP-adressen kunnen worden benaderd via de bestanden <nginx-install-directory>/logs/blocking.log en <nginx-install-directory>/logs/error.log.
Het aantal mislukte aanvragen, het tijdsinterval en de blokkeringsduur kunnen worden geconfigureerd. Configuraties zijn aanwezig in het bestand <nginx-install-directory>/conf/conf.d/maps.conf.
## These two constants indicate five auth failures from a client can be allowed in thirty seconds. ## if the threshold is crossed,client ip will be blocked. map $host $auth_failure_threshold_for_lock { ## Must-change Replace below two parameters as per requirement default 5 ; } map $host $auth_failure_counting_window_secs { ## Must-change Replace below two parameters as per requirement default 30; } ## This indicates duration of blocking a client to avoid brute force attack map $host $ip_blocking_duration { ## Must-change Replace below parameter as per requirement default 1800; }
Om de IP-adressen te vinden die worden geblokkeerd, voert u de volgende opdrachten uit de map <nginx-install-directory>/logs uit.
grep "will be blocked for" blocking.log
grep "IP is already blocked." error.log
2021/10/29 17:30:59 [emerg] 1181750#1181750: *19 [lua] block_unauthorized_users.lua:153:
_redirectAndSendError(): 10.68.218.190 will be blocked for 30 minutes for exceeding retry limit.,
client: 10.68.218.190, server: saproxy.cisco.com, request:
"GET /finesse/api/SystemInfo?nocache=1636456574482 HTTP/2.0", host: "saproxy.cisco.com:8445",
referrer: "https://saproxy.cisco.com:8445/desktop/container/?locale=en_US&"
2021/10/29 19:21:00 [error] 943068#943068: *43 [lua] block_unauthorized_users.lua:53: 10.70.235.30 ::
IP is already blocked..., client: 10.70.235.30, server: saproxy.cisco.com, request:
"GET /finesse/api/SystemInfo?nocache=1635591686497 HTTP/2.0", host: "saproxy.cisco.com:8445",
referrer: "https://saproxy.cisco.com:8445/desktop/container/?locale=en_US"
Aanbevolen wordt dat klanten integreren met Fail2ban of vergelijkbaar om het verbod toe te voegen aan de IP-tabel/firewallregels.
Fail2ban scant logbestanden en blokkeert IP's die de schadelijke signalen tonen - te veel wachtwoordfouten, op zoek naar exploits, enz. Over het algemeen wordt Fail2Ban dan gebruikt om firewallregels bij te werken om de IP-adressen voor een bepaalde tijd af te wijzen, hoewel elke willekeurige andere actie (bijvoorbeeld het verzenden van een e-mail) ook kan worden geconfigureerd. Voor meer informatie, surf naar https://www.fail2ban.org/.
Fail2ban kan worden geconfigureerd om het blokkeren.log te controleren om de IP-adressen te identificeren die worden geblokkeerd door Nginx bij het detecteren van bruteforce-aanvallen, en te verbieden voor een configureerbare duur. De stappen voor het installeren en configureren van fail2ban op een CentOS reverse proxy zijn als volgt:
1. Installeer Fail2ban met yum.
yum update && yum install epel-release
yum install fail2ban
2. Maak een lokale gevangenis aan.
In gevangenisconfiguraties kan de beheerder verschillende eigenschappen configureren, zoals de poorten die moeten worden geblokkeerd door een geblokkeerd IP-adres, de duur waarvoor het IP-adres geblokkeerd blijft, de filterconfiguratie die wordt gebruikt voor het identificeren van het geblokkeerde IP-adres uit het bewaakte logbestand, enzovoort. Stappen om een aangepaste configuratie toe te voegen voor het verbieden van IP-adressen die worden geblokkeerd voor toegang tot de upstream servers zijn als volgt:
2.1. Ga naar de installatiegids van Fail2ban (in dit voorbeeld /etc/fail2ban)
cd /etc/fail2ban
2.2. Maak een kopie van jail.conf in jail.local om de lokale veranderingen te isoleren.
cp jail.conf jail.local
2.3. Voeg deze gevangenisconfiguraties toe aan het einde van het bestand jail.local, en vervang de poorten in de sjabloon door de eigenlijke poorten. Werk de tijdconfiguraties van het verbod bij zoals vereist.
# Jail configurations for HTTP connections.
[finesse-http-auth]
enabled = true
# The ports to be blocked. Add any additional ports.
port = http,https,<finesse-ports>,<cuic-ports>,<any-other-ports-to-be-blocked>
# Path to nginx blocking logs.
logpath = /usr/local/openresty/nginx/logs/blocking.log
# The filter configuration.
filter = finesseban
# Block the IP from accessing the port, once the IP is blocked by lua.
maxretry= 1
# Duration for retry set to 3 mins. Doesn't count as the maxretry is 1
findtime= 180
# Lock time is set to 3 mins. Change as per requirements.
bantime = 180
3. Configureer een filter.
Een filter vertelt Fail2ban wat te zoeken in de logs om de host te identificeren die moet worden verboden. De stappen voor het maken van een filter zijn als volgt:
3.1. Filter maken.d/finesseban.conf.
touch filter.d/finesseban.conf
3.2. Voeg deze regels toe aan het bestand filter.d/finesseban.conf.
[Definition]
# The regex match that would cause blocking of the host.
failregex = <HOST> will be blocked for
4. Start Fail2ban.
Voer deze opdracht uit om fail2ban te starten.
fail2ban-client start
Open de logbestanden van fail2ban en controleer of er geen fouten zijn. Standaard worden logbestanden voor fail2ban in het bestand /var/log/fail2ban.log opgenomen.
Alle geldige endpoints die op niet-geverifieerde wijze toegankelijk zijn, worden actief bijgehouden in de ES03-scripts.
Verzoeken naar deze niet-geverifieerde paden worden actief afgewezen, als een ongeldige URI wordt gevraagd, zonder deze verzoeken naar de upstream server te verzenden.
Wanneer het eerste optiesverzoek succesvol is, worden de reactiekopballen access-control-allow-headers, access-control-allow-origine, access-control-allow-methods, access-control-expose-headers, en access-control-allow-aanmeldingsgegevens gedurende vijf minuten bij de proxy gecachet. Deze kopregels worden voor elke respectievelijke upstream server gecached.
In dit document wordt de configuratie van Nginx beschreven als de omgekeerde proxy die moet worden gebruikt om Finesse VPN-less toegang mogelijk te maken. De UCS-oplossingscomponent, proxy- en OS-versies die worden gebruikt om de verstrekte instructies te verifiëren, worden verstrekt. De relevante instructies moeten worden aangepast aan het besturingssysteem/de proxy van uw keuze.
Opmerking: De beschreven Nginx-configuratie kan worden gedownload van de Finesse release 12.6(1)ES3 software download pagina.
Nadat u de proxy hebt geconfigureerd, configureer dan de oplossingscomponenten (Finesse/ CUIC / IDS) voor VPN Minder toegang met de geplande hostnaam en IP van de proxy/-services die worden gebruikt om toegang te krijgen tot de oplossing met deze opdrachten.
utils system reverse-proxy allowed-hosts add utils system reverse-proxy config-uri <uri> add
De details van deze opdrachten kunnen worden gevonden in de functiehandleiding UCCE 12.6 en moeten worden geraadpleegd voordat u dit document gebruikt.
In deze sectie worden de op OpenResty gebaseerde proxyinstallatiestappen uitvoerig beschreven. De omgekeerde proxy wordt doorgaans geconfigureerd als een toegewezen apparaat in de gedemilitariseerde netwerkzone (DMZ) zoals weergegeven in het implementatiediagram dat eerder werd vermeld.
Alle smaken van Nginx kunnen voor dit doel worden gebruikt, zolang ze zijn gebaseerd op Nginx 1.19+ en Lua ondersteunen:
Opmerking: de geleverde configuratie is getest met OpenResty 1.19 en zal naar verwachting werken met andere distributies met slechts kleine updates, indien aanwezig.
export PATH=/usr/local/openresty/bin:$PATH
openresty
in.openresty -s stop
.De configuratie wordt uitgelegd voor een OpenResty-gebaseerde Nginx installatie. De standaardmappen voor OpenResty zijn:
Opmerking: de verstrekte configuratie is bedoeld voor een voorbeeldimplementatie in 2000 en moet op passende wijze worden uitgebreid voor een grotere inzet.
In de standaardinstelling worden de proxy cache paden opgeslagen in het bestandssysteem. We raden aan om ze te veranderen in geheugendrives door een cachelocatie te maken in tmpfs zoals hier getoond.
Deze directory's moeten bijvoorbeeld worden aangemaakt voor de primaire Finesse. Dezelfde stappen moeten worden gevolgd voor de secundaire Finesse- en CUIC-servers.
mkdir -p /home/primaryFinesse/rest mkdir -p /home/primaryFinesse/desktop mkdir -p /home/primaryFinesse/shindig mkdir -p /home/primaryFinesse/openfire mkdir -p /home/primaryCUIC/cuic mkdir -p /home/primaryCUIC/cuicdoc mkdir -p /home/client_temp mkdir -p /home/proxy_temp
echo "tmpfs /home/primaryFinesse/rest tmpfs size=1510M,rw,auto,noexec,nodev,nosuid,gid=root,uid=root,mode=1700 0 0" >>
/etc/fstab echo "tmpfs /home/primaryFinesse/desktop tmpfs size=20M,rw,auto,noexec,nodev,nosuid,gid=root,uid=root,mode=1700 0 0" >>
/etc/fstab echo "tmpfs /home/primaryFinesse/shindig tmpfs size=500M,rw,auto,noexec,nodev,nosuid,gid=root,uid=root,mode=1700 0 0" >>
/etc/fstab echo "tmpfs /home/primaryFinesse/openfire tmpfs size=10M,rw,auto,noexec,nodev,nosuid,gid=root,uid=root,mode=1700 0 0" >>
/etc/fstab echo "tmpfs /home/primaryCUIC/cuic tmpfs size=100M,rw,auto,noexec,nodev,nosuid,gid=root,uid=root,mode=1700 0 0" >>
/etc/fstab echo "tmpfs /home/primaryCUIC/cuicdoc tmpfs size=100M,rw,auto,noexec,nodev,nosuid,gid=root,uid=root,mode=1700 0 0" >>
/etc/fstab echo "tmpfs /home/client_temp tmpfs size=2048M,rw,auto,noexec,nodev,nosuid,gid=root,uid=root,mode=1700 0 0" >>
/etc/fstab echo "tmpfs /home/proxy_temp tmpfs size=2048M,rw,auto,noexec,nodev,nosuid,gid=root,uid=root,mode=1700 0 0" >> /etc/fstab
Opmerking: Verhoog de client- en proxy_temp-caches met 1 GB voor elk nieuw Finesse-cluster dat aan de configuratie is toegevoegd.
mount -av
.df -h
opdracht.Als u bijvoorbeeld de paden voor de finesse-hoofdmap wilt wijzigen, gaat u naar <nginx-install-directory>conf/conf.d/finesse/caches en wijzigt u de bestaande cache-locatie /usr/local/openresty/nginx/cache/finesse25/naar de nieuwe bestandssysteemlocatie /home/primaryFinesse.##Must-change /usr/local/openresty/nginx/cache/finesse25 location would change depending on folder extraction proxy_cache_path /home/primaryFinesse/desktop levels=1:2 use_temp_path=on keys_zone=desktop_cache_fin25:10m max_size=15m inactive=3y use_temp_path=off; proxy_cache_path /home/primaryFinesse/shindig levels=1:2 use_temp_path=on keys_zone=shindig_cache_fin25:10m max_size=500m inactive=3y use_temp_path=off; proxy_cache_path /home/primaryFinesse/openfire levels=1:2 use_temp_path=on keys_zone=openfire_cache_fin25:10m max_size=10m inactive=3y use_temp_path=off; proxy_cache_path /home/primaryFinesse/rest levels=1:2 use_temp_path=on keys_zone=rest_cache_fin25:10m max_size=1500m inactive=40m use_temp_path=off;
Opmerking: Zorg ervoor dat de som van alle tmpfs-schijfgroottes die in alle vorige stappen zijn gemaakt, wordt toegevoegd aan de uiteindelijke geheugengrootte voor de implementatie, aangezien deze schijven geheugenblokken zijn die zo zijn geconfigureerd dat ze er als schijven uitzien in de toepassing en zo veel geheugenruimte verbruiken.
Zelfondertekende certificaten dienen alleen te worden gebruikt totdat de omgekeerde proxy gereed is om te worden uitgerold in productie. Gebruik bij een productie-inzet alleen een door de certificeringsinstantie (CA) ondertekend certificaat.
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /usr/local/openresty/nginx/ssl/nginx.key -out /usr/local/openresty/nginx/ssl/nginx.crt
(geef hostnaam door als : <reverseproxy_primary_fqdn>)sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /usr/local/openresty/nginx/ssl/nginxnode2.key -out /usr/local/openresty/nginx/ssl/nginxnode2.crt
(geef hostnaam door als :<reverseproxy_second_fqdn>)Opmerking: de verstrekte configuratie is bedoeld voor een voorbeeldimplementatie in 2000 en moet op passende wijze worden uitgebreid voor een grotere inzet.
Een CA-ondertekend certificaat kan op de omgekeerde proxy worden geïnstalleerd met de volgende stappen:
Om de CSR en private key te genereren,openssl req -new -newkey rsa:4096 -keyout nginx.key -out nginx.csr
logt u in op de proxy. Volg de prompt en geef de details. Dit genereert de CSR (nginx.csr in het voorbeeld) en de RSA private key (nginx.key in het voorbeeld) met een sterkte van 4096 bits.
Voorbeeld:[root@reverseproxyhost.companyname.com ssl]# openssl req -new -newkey rsa:4096 -keyout nginx.key -out nginx.csr Generating a RSA private key .....+++++ ...................................................................................................................................................+++++ writing new private key to 'nginx.key' Enter PEM pass phrase:passphrase Verifying - Enter PEM pass phrase:passphrase ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:US State or Province Name (full name) []:CA Locality Name (eg, city) [Default City]:Orange County Organization Name (eg, company) [Default Company Ltd]:CompanyName Organizational Unit Name (eg, section) []:BusinessUnit Common Name (eg, your name or your server's hostname) []:reverseproxyhostname.companydomain.com Email Address []:john.doe@comapnydomain.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:challengePWD An optional company name []:CompanyName
Noteer het PEM-wachtwoord, aangezien dit wordt gebruikt om de privé-sleutel tijdens de implementatie te decoderen.
Stuur de CSR naar de certificeringsinstantie en verkrijg het ondertekende certificaat.
Opmerking: Indien het van CA ontvangen certificaat geen certificaatketen is die alle respectieve certificaten bevat, stel alle relevante certificaten samen in één enkel certificaatketenbestand.
Ontcijfert de sleutel die eerder als deel van de eerste stap metopenssl rsa -in nginx.key -out nginx_decrypted.key
de opdracht is gegenereerd. Plaats het CA-ondertekende certificaat en de gedecrypteerde sleutel in de map /usr/local/openresty/nginx/ssl in de reverse proxy-machine. Update/voeg SSL-configuraties toe met betrekking tot het certificaat in de Nginx-configuraties in het configuratiebestand /usr/local/openresty/nginx/conf/conf.d/ssl/ssl.conf.
ssl_certificate /usr/local/openresty/nginx/ssl/ca_signed_cert.crt; ssl_certificate_key /usr/local/openresty/nginx/ssl/nginx_decrypted.key;
chmod 400 /usr/local/openresty/nginx/ssl/ca_signed_cert.crt
Voerchmod 400 /usr/local/openresty/nginx/ssl/nginx_decrypted.key
de gegevens in, zodat het certificaat alleen-lezen toestemming heeft en beperkt is tot de eigenaar.
Maak een aangepaste Diffie-Hellman parameter met deze opdrachten: openssl dhparam -out /usr/local/openresty/nginx/ssl/dhparam.pem 2048 chmod 400 /usr/local/openresty/nginx/ssl/dhparam.pem
Verander de serverconfiguratie om de nieuwe parameters in het bestand /usr/local/openresty/nginx/conf/conf.d/ssl/ssl.conf te gebruiken:ssl_dhparam /usr/local/openresty/nginx/ssl/dhparam.pem;
Opmerking: om dit in te schakelen, moet de server een CA-ondertekend certificaat gebruiken en moet de server toegang hebben tot de CA die het certificaat heeft ondertekend.
Voeg deze configuratie toe/update ze in de file/usr/local/openresty/nginx/conf/conf.d/ssl/ssl.conf:ssl_stapling on; ssl_stapling_verify on;
Het standaard Nginx-configuratiebestand (/usr/local/openresty/nginx/conf/nginx.conf) moet worden aangepast om deze vermeldingen te bevatten om beveiliging af te dwingen en prestaties te leveren. Deze inhoud moet worden gebruikt om het standaardconfiguratiebestand aan te passen dat is gemaakt door de Nginx-installatie.
# Increasing number of worker processes will not increase the processing the request. The number of worker process will be same as number of cores # in system CPU. Nginx provides "auto" option to automate this, which will spawn one worker for each CPU core. worker_processes auto; # Process id file location pid /usr/local/openresty/nginx/logs/nginx.pid; # Binds each worker process to a separate CPU worker_cpu_affinity auto; #Defines the scheduling priority for worker processes. This should be calculated by "nice" command. In our proxy set up the value is 0 worker_priority 0; error_log /usr/local/openresty/nginx/logs/error.log info; #user root root; # current limit on the maximum number of open files by worker processes, keeping 10 times of worker_connections worker_rlimit_nofile 102400; events { multi_accept on; # Sets the maximum number of simultaneous connections that can be opened by a worker process. # This should not be more the current limit on the maximum number of open files i.e. hard limit of the maximum number of open files for the user (ulimit -Hn) # The appropriate setting depends on the size of the server and the nature of the traffic, and can be discovered through testing. worker_connections 10240; #debug_connection 10.78.95.21 } http { include mime.types; default_type text/plain; ## Must-change Change with DNS resolver ip in deployment resolver 192.168.1.3; ## Must-change change lua package path to load lua libraries lua_package_path "/usr/local/openresty/lualib/resty/?.lua;/usr/local/openresty/nginx/lua/?.lua;;" ## Must-change change proxy_temp folder as per cache directory configurations proxy_temp_path /usr/local/openresty/nginx/cache/proxy_temp 1 2 ; ## Must-change change client_temp folder as per cache directory configurations client_body_temp_path /usr/local/openresty/nginx/cache/client_temp 1 2 ; lua_shared_dict userlist 50m; lua_shared_dict credentialsstore 100m; lua_shared_dict userscount 100k; lua_shared_dict clientstorage 100m; lua_shared_dict blockingresources 100m; lua_shared_dict tokencache_saproxy 10M; lua_shared_dict tokencache_saproxy125 10M; lua_shared_dict ipstore 10m; lua_shared_dict desktopurllist 10m; lua_shared_dict desktopurlcount 100k; lua_shared_dict thirdpartygadgeturllist 10m; lua_shared_dict thirdpartygadgeturlcount 100k; lua_shared_dict corsheadersstore 100k; init_worker_by_lua_block { local UsersListManager = require('users_list_manager') local UnauthenticatedDesktopResourcesManager = require("unauthenticated_desktopresources_manager") local UnauthenticatedResourcesManager = require("unauthenticated_thirdpartyresources_manager") -- Must-change Replace saproxy.cisco.com with reverseproxy fqdn if ngx.worker.id() == 0 then UsersListManager.getUserList("saproxy.cisco.com", "https://saproxy.cisco.com:8445/finesse/api/Users") UnauthenticatedDesktopResourcesManager.getDesktopResources("saproxy.cisco.com", "https://saproxy.cisco.com:8445/desktop/api/urls?type=desktop") UnauthenticatedResourcesManager.getThirdPartyGadgetResources("saproxy.cisco.com", "https://saproxy.cisco.com:8445/desktop/api/urls?type=3rdParty") end } include conf.d/*.conf; sendfile on; tcp_nopush on; server_names_hash_bucket_size 512;
Standaard luistert de Nginx-configuratie op poort 8445 voor Finesse-aanvragen. Tegelijkertijd kan slechts één poort van een omgekeerde proxy worden ingeschakeld om Finesse-verzoeken, bijvoorbeeld 8445, te ondersteunen. Als poort 443 moet worden ondersteund, bewerk dan het <nginx-install-directory>conf/conf.d/finesse.conf bestand om luisteren op 443 mogelijk te maken en luisteren op 8445 uit te schakelen.
ClientSSL-certificaatverificatie voor verbindingen van reverse proxy-hosts kan worden ingeschakeld op CCBU upstream-componenten CUIC/Finesse/IdS/Livedata via nieuwe CVOS CLI-optie die is
maakt gebruik van het systeem reverse-proxy client-auth inschakelen/uitschakelen/status.
Standaard is dit uitgeschakeld en moet expliciet door de beheerder ingeschakeld worden door CLI op elke upstream server onafhankelijk uit te voeren. Zodra deze optie is ingeschakeld, zal Cisco Web Proxy Service die wordt uitgevoerd op upstream-host starten met het verifiëren van clientcertificaten in TLS-handdruk voor verbindingen die afkomstig zijn van vertrouwde omgekeerde proxyhosts die zijn toegevoegd als deel van het CLI-gebruikerssysteem dat omgekeerde proxy-proxy-hosts toevoegen <proxy-host>.
Hieronder is het configuratieblok voor hetzelfde in proxy-configuratiebestanden, namelijk ssl.conf en ssl2.conf
#Must-change /usr/local/openresty/nginx/ssl/nginx.crt change this location accordingly proxy_ssl_certificate /usr/local/openresty/nginx/ssl/nginx.crt; #Must-change /usr/local/openresty/nginx/ssl/nginx.key change this location accordingly proxy_ssl_certificate_key /usr/local/openresty/nginx/ssl/nginx.key;
SSL-certificaat dat wordt gebruikt voor uitgaand verkeer (proxy naar upstream) kan hetzelfde zijn als SSL-certificaat dat is geconfigureerd voor inkomend verkeer (SSL-connector voor componentserverblokken). Als zelfondertekend certificaat wordt gebruikt als proxy_ssl_certificate dan het moet worden geüpload naar upstream componenten (Finesse/IdS/CUIC/Livedata) om vertrouwen op te slaan voor het succesvol te worden geverifieerd.
Upstream validatie van servercertificaten door reverse proxy is optioneel en wordt standaard uitgeschakeld. Als u volledige TLS wederzijdse auth wilt bereiken tussen omgekeerde proxy en upstream hosts, moet onder configuratie uncommentented uit ssl.conf en ssl2.conf bestanden.#Enforce upstream server certificate validation at proxy -> #this is not mandated as per CIS buit definitely adds to security. #It requires the administrator to upload all upstream server certificates to the proxy certificate store #Must-Change Uncomment below lines IF need to enforce upstream server certificate validation at proxy #proxy_ssl_verify on; #proxy_ssl_trusted_certificate /usr/local/openresty/nginx/ssl/finesse25.crt; proxy_ssl_trusted_certificate: This file should contain the all upstream certificate enteries concatenated together
Caveats voor het configureren van wederzijdse TLS-auth:
Het reverse proxy cache kan worden gewist met de
opdracht.
In dit gedeelte worden kort de standaardrichtlijnen beschreven die moeten worden gevolgd wanneer u Nginx als proxyserver instelt.
Deze richtlijnen zijn afgeleid van het Center for Internet Security. Zie voor meer informatie over elk richtsnoer dezelfde.
De omgekeerde proxyimplementatie van de Finesse-desktop vereist een afbeeldingsbestand om de lijst van extern zichtbare hostname/poortcombinaties te configureren en de koppeling ervan aan de feitelijke servernamen en poorten die worden gebruikt door de Finesse-, IdS- en CUIC-servers. Dit afbeeldingsbestand dat op interne servers is geconfigureerd, is de belangrijkste configuratie waarmee de via internet verbonden clients kunnen worden omgeleid naar de vereiste hosts en poorten die op internet worden gebruikt.
Het afbeeldingsbestand moet worden geïmplementeerd op een webserver die toegankelijk is voor de componentservers en de URI ervan moet worden geconfigureerd om de implementatie te laten werken. Aanbevolen wordt het afbeeldingsbestand te configureren met behulp van een speciale webserver die binnen het netwerk beschikbaar is. Als zo'n server niet beschikbaar is, kan in plaats daarvan de omgekeerde proxy worden gebruikt, die vereist dat de proxy vanuit het netwerk toegankelijk is en ook het risico met zich meebrengt dat de informatie wordt blootgesteld aan externe cliënten die ongeoorloofde toegang tot de DMZ kunnen maken. In het volgende hoofdstuk wordt beschreven hoe dit kan worden bereikt.
Raadpleeg de handleiding met functies voor de exacte stappen om het afbeeldingsbestand URI op alle componentservers te configureren en voor meer informatie over het maken van de afbeeldingsbestandsgegevens.
Deze stappen zijn alleen nodig als de omgekeerde proxy ook wordt gebruikt als de proxy mapping file host.
nginx -s reload
opdracht.curl
opdracht.Als het gekozen besturingssysteem CentOS 8 is, is het aan te raden dat de kernel hardening/tuning wordt uitgevoerd met het gebruik van deze sysctl-configuraties voor installaties die een speciale server gebruiken voor het hosten van de proxy.
## Configurations for kernel hardening - CentOS8. The file path is /etc/sysctl.conf ## Note that the commented configurations denote that CentOS 8's default value matches ## the recommended/tested value, and are not security related configurations. # Avoid a smurf attack net.ipv4.icmp_echo_ignore_broadcasts = 1 # Turn on protection for bad icmp error messages net.ipv4.icmp_ignore_bogus_error_responses = 1 # Turn on syncookies for SYN flood attack protection net.ipv4.tcp_syncookies = 1 # Turn on and log spoofed, source routed, and redirect packets net.ipv4.conf.all.log_martians = 1 net.ipv4.conf.default.log_martians = 1 # Turn off routing net.ipv4.ip_forward = 0 net.ipv4.conf.all.forwarding = 0 net.ipv6.conf.all.forwarding = 0 net.ipv4.conf.all.mc_forwarding = 0 net.ipv6.conf.all.mc_forwarding = 0 # Block routed packets net.ipv4.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0 net.ipv6.conf.default.accept_source_route = 0 # Block ICMP redirects net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 net.ipv6.conf.default.accept_redirects = 0 net.ipv4.conf.all.secure_redirects = 0 net.ipv4.conf.default.secure_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 # Filter routing packets with inward-outward path mismatch(reverse path filtering) net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Router solicitations & advertisements related. net.ipv6.conf.default.router_solicitations = 0 net.ipv6.conf.default.accept_ra_rtr_pref = 0 net.ipv6.conf.default.accept_ra_pinfo = 0 net.ipv6.conf.default.accept_ra_defrtr = 0 net.ipv6.conf.default.autoconf = 0 net.ipv6.conf.default.dad_transmits = 0 net.ipv6.conf.default.max_addresses = 1 net.ipv6.conf.all.accept_ra = 0 net.ipv6.conf.default.accept_ra = 0 # Backlog - increased from default 1000 to 5000. net.core.netdev_max_backlog = 5000 # Setting syn/syn-ack retries to zero, so that they don't stay in the queue. net.ipv4.tcp_syn_retries = 0 net.ipv4.tcp_synack_retries = 0 # Max tcp listen backlog. Setting it to 511 to match nginx config net.core.somaxconn = 511 # Reduce the duration of connections held in TIME_WAIT(seconds) net.ipv4.tcp_fin_timeout = 6 # Maximum resources allotted # fs.file-max = 2019273 # kernel.pid_max = 4194304 # net.ipv4.ip_local_port_range = 32768 60999 # TCP window size tuning # net.ipv4.tcp_window_scaling = 1 # net.core.rmem_default = 212992 # net.core.rmem_max = 212992 # net.ipv4.tcp_rmem = 4096 87380 6291456 # net.ipv4.udp_rmem_min = 4096 # net.core.wmem_default = 212992 # net.core.wmem_max = 212992 # net.ipv4.tcp_wmem = 4096 16384 4194304 # net.ipv4.udp_wmem_min = 4096 # vm.lowmem_reserve_ratio = 256 256 32 0 0 # net.ipv4.tcp_mem = 236373 315167 472746 # Randomize virtual address space kernel.randomize_va_space = 2 # Congestion control # net.core.default_qdisc = fq_codel # net.ipv4.tcp_congestion_control = cubic # Disable SysReq kernel.sysrq = 0 # Controls the maximum size of a message, in bytes kernel.msgmnb = 65536 # Controls the default maximum size of a message queue kernel.msgmax = 65536 # Controls the eagerness of the kernel to swap. vm.swappiness = 1
De computer wordt opnieuw opgestart nadat u de aanbevolen wijzigingen hebt aangebracht.
IPtabellen is een toepassing waarmee een systeembeheerder de IPv4- en IPv6-tabellen, -ketens en -regels kan configureren die worden geleverd door de Linux-kernel-firewall.
Deze IP-tabellen regels zijn ingesteld om de proxy applicatie te beveiligen tegen brute force aanvallen door de toegang in de Linux kernel firewall te beperken.
De opmerkingen in de configuratie geven aan welke dienst met behulp van de regels wordt beperkt.
Opmerking: als beheerders een andere poort gebruiken of toegang tot meerdere servers uitbreiden met dezelfde poorten, moet de juiste grootte voor deze poorten worden bepaald op basis van deze nummers.
## Configuration for iptables service
## The file path is /etc/sysconfig/iptables
## Make a note for must-change values to be replaced.
## Restart of the iptable service is required after applying following rules
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # Ensure loopback traffic is configured -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A INPUT -s 127.0.0.0/8 -j DROP # Ensure ping openeded only for the particular source and blocked for rest # Must-Change: Replace the x.x.x.x with valid ip address -A INPUT -p ICMP --icmp-type 8 -s x.x.x.x -j ACCEPT # Ensure outbound and established connections are configured -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT -A OUTPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT # Block ssh for external interface # Must-Change: Replace the ens224 with valid ethernet interface -A INPUT -p tcp -i ens224 --dport 22 -j DROP # Open inbound ssh(tcp port 22) connections -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT # Configuration for finesse 8445 port -A INPUT -p tcp -m tcp --dport 8445 --tcp-flags SYN SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 --connlimit-saddr -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Connections to 8445 exceeded connlimit " -A INPUT -p tcp -m tcp --dport 8445 --tcp-flags SYN SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 --connlimit-saddr -j DROP -A INPUT -p tcp -m tcp --dport 8445 --tcp-flags SYN SYN -m hashlimit --hashlimit-upto 6/sec --hashlimit-burst 8 --hashlimit-mode srcip,dstport --hashlimit-name TCP_8445_DOS -j ACCEPT -A INPUT -p tcp -m tcp --dport 8445 --tcp-flags SYN SYN -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Exceeded 8445 hashlimit " -A INPUT -p tcp -m tcp --dport 8445 --tcp-flags SYN SYN -j DROP # Configuration for IdS 8553 port -A INPUT -p tcp -m tcp --dport 8553 --tcp-flags SYN SYN -m connlimit --connlimit-above 6 --connlimit-mask 32 --connlimit-saddr -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " IdS connection limit exceeded" -A INPUT -p tcp -m tcp --dport 8553 --tcp-flags SYN SYN -m connlimit --connlimit-above 6 --connlimit-mask 32 --connlimit-saddr -j DROP -A INPUT -p tcp -m tcp --dport 8553 --tcp-flags SYN SYN -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 4 --hashlimit-mode srcip,dstport --hashlimit-name TCP_8553_DOS -j ACCEPT -A INPUT -p tcp -m tcp --dport 8553 --tcp-flags SYN SYN -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Exceeded 8553 hashlimit " -A INPUT -p tcp -m tcp --dport 8553 --tcp-flags SYN SYN -j DROP # Configuration for IdP 443 port -A INPUT -p tcp -m tcp --dport 443 --tcp-flags SYN SYN -m connlimit --connlimit-above 8 --connlimit-mask 32 --connlimit-saddr -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " IdP connection limit exceeded" -A INPUT -p tcp -m tcp --dport 443 --tcp-flags SYN SYN -m connlimit --connlimit-above 8 --connlimit-mask 32 --connlimit-saddr -j DROP -A INPUT -p tcp -m tcp --dport 443 --tcp-flags SYN SYN -m hashlimit --hashlimit-upto 4/sec --hashlimit-burst 6 --hashlimit-mode srcip,dstport --hashlimit-name TCP_443_DOS -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 --tcp-flags SYN SYN -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Exceeded 443 hashlimit " -A INPUT -p tcp -m tcp --dport 443 --tcp-flags SYN SYN -j DROP # Must-Change: A2A file transfer has not been considered for below IMNP configuration. # For A2A for support, these configuration must be recalculated to cater different file transfer scenarios. # Configuration for IMNP 5280 port -A INPUT -p tcp -m tcp --dport 5280 --tcp-flags SYN SYN -m connlimit --connlimit-above 30 --connlimit-mask 32 --connlimit-saddr -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " IMNP connection limit exceeded" -A INPUT -p tcp -m tcp --dport 5280 --tcp-flags SYN SYN -m connlimit --connlimit-above 30 --connlimit-mask 32 --connlimit-saddr -j DROP -A INPUT -p tcp -m tcp --dport 5280 --tcp-flags SYN SYN -m hashlimit --hashlimit-upto 20/sec --hashlimit-burst 25 --hashlimit-mode srcip,dstport --hashlimit-name TCP_5280_DOS -j ACCEPT -A INPUT -p tcp -m tcp --dport 5280 --tcp-flags SYN SYN -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Exceeded 5280 hashlimit " -A INPUT -p tcp -m tcp --dport 5280 --tcp-flags SYN SYN -j DROP # Configuration for IMNP 15280 port -A INPUT -p tcp -m tcp --dport 15280 --tcp-flags SYN SYN -m connlimit --connlimit-above 30 --connlimit-mask 32 --connlimit-saddr -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " IMNP connection limit exceeded" -A INPUT -p tcp -m tcp --dport 15280 --tcp-flags SYN SYN -m connlimit --connlimit-above 30 --connlimit-mask 32 --connlimit-saddr -j DROP -A INPUT -p tcp -m tcp --dport 15280 --tcp-flags SYN SYN -m hashlimit --hashlimit-upto 20/sec --hashlimit-burst 25 --hashlimit-mode srcip,dstport --hashlimit-name TCP_15280_DOS -j ACCEPT -A INPUT -p tcp -m tcp --dport 15280 --tcp-flags SYN SYN -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Exceeded 15280 hashlimit " -A INPUT -p tcp -m tcp --dport 15280 --tcp-flags SYN SYN -j DROP # Configuration for IMNP 25280 port -A INPUT -p tcp -m tcp --dport 25280 --tcp-flags SYN SYN -m connlimit --connlimit-above 30 --connlimit-mask 32 --connlimit-saddr -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " IMNP connection limit exceeded" -A INPUT -p tcp -m tcp --dport 25280 --tcp-flags SYN SYN -m connlimit --connlimit-above 30 --connlimit-mask 32 --connlimit-saddr -j DROP -A INPUT -p tcp -m tcp --dport 25280 --tcp-flags SYN SYN -m hashlimit --hashlimit-upto 20/sec --hashlimit-burst 25 --hashlimit-mode srcip,dstport --hashlimit-name TCP_25280_DOS -j ACCEPT -A INPUT -p tcp -m tcp --dport 25280 --tcp-flags SYN SYN -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Exceeded 25280 hashlimit " -A INPUT -p tcp -m tcp --dport 25280 --tcp-flags SYN SYN -j DROP # Configuration for CUIC 8444 port -A INPUT -p tcp -m tcp --dport 8444 --tcp-flags SYN SYN -m connlimit --connlimit-above 6 --connlimit-mask 32 --connlimit-saddr -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " CUIC connection limit exceeded" -A INPUT -p tcp -m tcp --dport 8444 --tcp-flags SYN SYN -m connlimit --connlimit-above 6 --connlimit-mask 32 --connlimit-saddr -j DROP -A INPUT -p tcp -m tcp --dport 8444 --tcp-flags SYN SYN -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 4 --hashlimit-mode srcip,dstport --hashlimit-name TCP_8444_DOS -j ACCEPT -A INPUT -p tcp -m tcp --dport 8444 --tcp-flags SYN SYN -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Exceeded 8444 hashlimit " -A INPUT -p tcp -m tcp --dport 8444 --tcp-flags SYN SYN -j DROP # Configuration for CUIC 8447 port -A INPUT -p tcp -m tcp --dport 8447 --tcp-flags SYN SYN -m connlimit --connlimit-above 6 --connlimit-mask 32 --connlimit-saddr -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " CUIC connection limit exceeded" -A INPUT -p tcp -m tcp --dport 8447 --tcp-flags SYN SYN -m connlimit --connlimit-above 6 --connlimit-mask 32 --connlimit-saddr -j DROP -A INPUT -p tcp -m tcp --dport 8447 --tcp-flags SYN SYN -m hashlimit --hashlimit-upto 2/sec --hashlimit-burst 4 --hashlimit-mode srcip,dstport --hashlimit-name TCP_8447_DOS -j ACCEPT -A INPUT -p tcp -m tcp --dport 8447 --tcp-flags SYN SYN -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Exceeded 8447 hashlimit " -A INPUT -p tcp -m tcp --dport 8447 --tcp-flags SYN SYN -j DROP # Configuration for LiveData 12005 port -A INPUT -p tcp -m tcp --dport 12005 --tcp-flags SYN SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 --connlimit-saddr -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " LD connection limit exceeded" -A INPUT -p tcp -m tcp --dport 12005 --tcp-flags SYN SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 --connlimit-saddr -j DROP -A INPUT -p tcp -m tcp --dport 12005 --tcp-flags SYN SYN -m hashlimit --hashlimit-upto 6/sec --hashlimit-burst 8 --hashlimit-mode srcip,dstport --hashlimit-name TCP_12005_DOS -j ACCEPT -A INPUT -p tcp -m tcp --dport 12005 --tcp-flags SYN SYN -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Exceeded 12005 hashlimit " -A INPUT -p tcp -m tcp --dport 12005 --tcp-flags SYN SYN -j DROP # Configuration for LiveData 12008 port -A INPUT -p tcp -m tcp --dport 12008 --tcp-flags SYN SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 --connlimit-saddr -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " LD connection limit exceeded" -A INPUT -p tcp -m tcp --dport 12008 --tcp-flags SYN SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 --connlimit-saddr -j DROP -A INPUT -p tcp -m tcp --dport 12008 --tcp-flags SYN SYN -m hashlimit --hashlimit-upto 6/sec --hashlimit-burst 8 --hashlimit-mode srcip,dstport --hashlimit-name TCP_12008_DOS -j ACCEPT -A INPUT -p tcp -m tcp --dport 12008 --tcp-flags SYN SYN -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix " Exceeded 12008 hashlimit " -A INPUT -p tcp -m tcp --dport 12008 --tcp-flags SYN SYN -j DROP # Block all other ports -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
Deze regels kunnen direct worden toegepast door de /etc/sysconfig/iptables handmatig te bewerken of de configuratie in een bestand zoals iptables.conf op te slaan en de cat iptables.conf >>/etc/sysconfig/iptables uit te voeren om de regels toe te passen.
Een herstart van de IPtables-service is vereist nadat u de regels hebt toegepast. Ga binnen systemctl restart iptables
om de IPtabeldienst opnieuw te beginnen.
Naast de vorige IPtabellen configuratie, installaties die het adresbereik kennen voor klanten die de proxy gebruiken worden aanbevolen om deze kennis te gebruiken om de proxy toegangsregels te beveiligen. Dit kan grote terugbetalingen opleveren als het gaat om het beveiligen van de proxy van botnets van kwaadaardige netwerken die vaak worden gecreëerd in de IP-adressenreeks van landen die minder strenge regels hebben met betrekking tot online beveiliging. Het is daarom sterk aanbevolen om het IP-adresbereik te beperken tot land/staat- of ISP-gebaseerde IP-bereiken als u zeker bent van de toegangspatronen.
Het is ook nuttig om te weten hoe een specifieke reeks adressen te blokkeren wanneer een aanval wordt geïdentificeerd om van een IP-adres of een reeks IP-adressen te worden gemaakt. In dergelijke gevallen kunnen de verzoeken van die IP-adressen worden geblokkeerd met onuitvoerbare regels.
Om meerdere verschillende IP-adressen te blokkeren, voegt u een regel toe aan het configuratiebestand van IPTables voor elk IP-adres.
Als u bijvoorbeeld adressen 192.0.2.3 en 192.0.2.4 wilt blokkeren, voert u het volgende in:
iptables -A INPUT -s 192.0.2.3 -j DROP iptables -A INPUT -s 192.0.2.4 - j DROP.
Blokkeer meerdere IP-adressen in een bereik en voeg één regel toe aan het configuratiebestand van IPTables met het IP-bereik.
Als u bijvoorbeeld adressen van 192.0.2.3 tot 192.0.2.35 wilt blokkeren, voert u het volgende in:
iptables -A INPUT -m iprange --src-range 192.0.2.3-192.0.2.35 -j DROP.
Blokkeer alle IP-adressen in een heel subnetgebied door één regel toe te voegen aan het configuratiebestand van IPTables met behulp van de klasseloze interdomeinrouting notatie voor het IP-adresbereik. Als u bijvoorbeeld alle klasse C-adressen wilt blokkeren, voert u het volgende in:
iptables -A INPUT -s 192.0.0.0/16 -j DROP.
SELinux is een platform security framework geïntegreerd als een verbetering in het Linux OS. De procedure om het SELinux-beleid te installeren en toe te voegen om OpenResty uit te voeren als de omgekeerde proxy wordt vervolgens geleverd.
openresty -s stop
opdracht.systemctl
opdracht zodat tijdens het opstarten het OpenResty proces automatisch start. Voer deze opdrachten in als hoofdgebruiker.
[Unit] Description=The OpenResty Application Platform After=syslog.target network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/usr/local/openresty/nginx/logs/nginx.pid ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t ExecStart=/usr/local/openresty/nginx/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
sudo systemctl enable openresty
.systemctl start openresty / systemctl stop openresty
opdracht en zorg ervoor dat het proces start / stopt als rootgebruiker.Om het SELinux-beleid te kunnen genereren, moeten het beleidscoreutils-devel pakket en zijn afhankelijkheden worden geïnstalleerd.
Voer deze opdracht in om policy-devel te installeren
yum install policycoreutils-devel
sepolicy
opdracht werkt. usage: sepolicy [-h] [-P POLICY] {booleans,communicate,generate,gui,interface,manpage,network,transition} ... SELinux Policy Inspection Tool
Een nieuwe Linux-gebruiker en -kaart maken met SElinux-gebruiker
Geef dit aan semanage login -l
om de koppeling tussen Linux-gebruikers en SELinux-gebruikers weer te geven.
[root@loadproxy-cisco-com ~]# semanage login -l Login Name SELinux User MLS/MCS Range Service __default__ unconfined_u s0-s0:c0.c1023 * * root unconfined_u s0-s0:c0.c1023 *
Als root, maak een nieuwe Linux-gebruiker (nginx-gebruiker) die is toegewezen aan de SELinux-gebruiker_u gebruiker.
useradd -Z user_u nginxuser [root@loadproxy-cisco-com ~]# passwd nginxuser Changing password for user nginxuser. New password: Retype new password: passwd: all authentication tokens updated successfully.
Om de afbeelding tussen nginxuser en user_u te bekijken, voert u deze opdracht in als root:
[root@loadproxy-cisco-com ~]# semanage login -l Login Name SELinux User MLS/MCS Range Service __default__ unconfined_u s0-s0:c0.c1023 * nginxuser user_u s0 * root unconfined_u s0-s0:c0.c1023 *
SELinux __default__ login standaard toegewezen aan de SELinux unconfined_u gebruiker. Het is vereist om user_u standaard met deze opdracht te beperken:
semanage login -m -s user_u -r s0 __default__
Om te controleren of de opdracht goed werkte, moet u semanage login -l
inloggen. Het zou deze output moeten produceren:
Wijzig nginx.conf en voer verandering eigendom uit voor nginxuser.
chown -R nginxuser:nginxuser
* in de map <OpenResty-install-directory> in.Wijzig het bestand nginx.conf om nginxuser op te nemen als de gebruiker voor het uitvoeren van werknemersprocessen.
........ user nginxuser nginxuser; ..........
Schrijf het SELinux beleid voor Nginx
sepolicy generate --init /usr/bin/nginx
opdracht, is het de voorkeur om te beginnen met een bestaand beleid.
make
bevel.semodule
opdracht. semodule -i nginx.pp
semodule --list-modules=full
ps -aefZ | grep nginx
Gebruik deze sectie om te controleren of uw configuratie goed werkt.
Voer de volgende stappen uit om de configuratie van de id’s te valideren:
De gegevensanalyse van top equivalent performance capture, gemaakt met de NMON tool, is beschikbaar op de Finesse release 12.6(1) ES03 software download pagina (load_result.zip). De gegevens vertegenwoordigen de staat van de volmacht voor Desktop en supervisor verrichtingen, op een steekproef 2000 plaatsing UCCE die SSO logins en de rapporten van het LDL van de CUIC zoals gevormd in de standaardlay-out voor 2000 gebruikers voor een periode van acht uren gebruikt. Het kan worden gebruikt om de computer, schijf, en netwerkvereisten voor een installatie af te leiden met behulp van Nginx op vergelijkbare hardware.
SELinux
setenforce 0
systemctl restart nginx
opdracht.cat /var/log/audit/audit.log | audit2allow -m nginx1 > nginx1.te. # this will create nginx1.te file or ausearch -c 'nginx' --raw | audit2allow -M my-nginx # this will create my-nginx.te file
make
opdracht.semodule -i nginx.pp
setenforce
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
5.0 |
24-Dec-2021 |
Verbeterde stappen voor OpenResty. De SSL-certificaatgeneratie en de toepassingsstappen gewijzigd. Het document is bijgewerkt met ES03-koppelingen. |
4.0 |
10-Dec-2021 |
ES03 updates. |
3.0 |
10-Nov-2021 |
Werkte de oplossingsgidsen en de authentificatiebeschrijving bij. |
2.0 |
09-Nov-2021 |
Eerste vrijgave |
1.0 |
09-Nov-2021 |
Eerste vrijgave |