build 7bbbddf7 | content blog-content@c8490fa · 338 posts | profiles 20 · corpus 267 | 0 skipped | | format
apiVersion: soultec.ch/v1kind: Postmetadata: name: how-to-secure-your-dmz-with-a-proxy locale: de labels: author: norbert-hamm series: how-to capability/security: 2.16 annotations: source: blog-content/posts/de/how-to-secure-your-dmz-with-a-proxy.md route: /de/insights/how-to-secure-your-dmz-with-a-proxy/ schema: /nerd/schema/posts.json markdown: /de/insights/how-to-secure-your-dmz-with-a-proxy.mdspec: title: Die DMZ mit einem Proxy absichern date: 2022-04-13 author: norbert-hamm locale: de summary: >- Sicherheit wird immer wichtiger. Die On-Premises-Infrastruktur abzusichern hat bei vielen unserer Kunden hohe Priorität. Heute geht es um die DMZ und einen Proxy. capabilities: [security] series: how-to hero: /blog-assets/how-to-secure-your-dmz-with-a-proxy/hero.webp migrated: 2026-08-24 translationReviewed: false draft: false sections: - body: | Sicherheit wird immer wichtiger. Die On-Premises-Infrastruktur abzusichern hat bei vielen unserer Kunden hohe Priorität, und wir helfen dabei. Heute geht es darum, wie du deine DMZ mit einem Proxy absicherst. - heading:

LDAP, NTP und DNS über einen Proxy

body: | Um eine DMZ abzuschotten, dürfen die benötigten Ports nicht pauschal für alle Systeme geöffnet werden. Eine übliche Schwierigkeit: Wenn sich Domänenbenutzer in der DMZ anmelden wollen, erreichen sie die Active-Directory-Server nicht. Die Antwort ist ein Proxy Server, der die Anfragen aus der DMZ weiterleitet. Das gilt für die Protokolle NTP, DNS und LDAPS. Damit die DMZ abgeschottet bleibt, öffnet nur der Proxy die Ports 53 (DNS), 123 (NTP), 636 (LDAPS) und 3268-3269 (LDAP GC) zu den Active-Directory-Servern. Alle anderen Systeme in der DMZ bedient der Proxy Server. ![](/blog-assets/how-to-secure-your-dmz-with-a-proxy/01.webp) Für den Aufbau brauchst du ein Linux-System als Proxy. Darauf werden die nötigen Dienste installiert und konfiguriert. Wir haben hier ein aktuelles RedHat Enterprise Linux 8 verwendet. Weil bestimmte Werkzeuge nicht mehr in der Basisdistribution enthalten sind, holst du sie aus der Open-Source-Community. ### OpenLDAP Für das Proxying der LDAP-Anfragen kommt OpenLDAP zum Einsatz. Du bekommst es unter [https://ltb-project.org/](https://ltb-project.org/). Unsere Konfiguration sieht so aus: #### /usr/local/openldap/etc/openldap/slapd.conf ``` ### Schema includes ########################################################### include /usr/local/openldap/etc/openldap/schema/core.schema include /usr/local/openldap/etc/openldap/schema/cosine.schema include /usr/local/openldap/etc/openldap/schema/inetorgperson.schema include /usr/local/openldap/etc/openldap/schema/misc.schema include /usr/local/openldap/etc/openldap/schema/nis.schema include /usr/local/openldap/etc/openldap/schema/microsoft.minimal.schema ## Module paths ############################################################## modulepath /usr/local/openldap/libexec/openldap moduleload back_ldap moduleload rwm # Main settings ############################################################### pidfile /usr/local/openldap/var/run/slapd.pid argsfile /usr/local/openldap/var/run/slapd.args ### Database definition (Proxy to AD) ######################################### database ldap suffix "DC=sample,DC=intra" rootdn "cn=ldap,DC=sample,DC=intra" rootpw "BIND-PW-PROXY" readonly yes protocol-version 3 rebind-as-user yes uri "ldaps://ADC001,ldaps://ADC002" idassert-bind bindmethod=simple binddn="CN=svc-ldap,OU=Service_Accounts,DC=sample,DC=intra" credentials="BIND-PW-AD" mode=none flags=non-prescriptive tls_reqcert=never tls_cacert=/usr/local/openldap/etc/openldap/CA.cer # AD Certificate overlay rwm rwm-map attribute uid sAMAccountName ### Logging ################################################################### loglevel 0 ### Limits #################################################################### sizelimit unlimited ### LDAPS #################################################################### TLSCACertificateFile /usr/local/openldap/etc/openldap/CA.cer # PKI CA Certificate TLSCertificateFile /usr/local/openldap/etc/openldap/proxyldap001.cer # LDAP Proxy Certificate TLSCertificateKeyFile /usr/local/openldap/etc/openldap/proxyldap001.key # LDAP Proxy Key ``` Wenn die Konfiguration steht, startest du den Dienst. Testen kannst du direkt auf dem Proxy. ``` [root@localhost]# ldapsearch -LLL -x -h localhost -b "DC=sample,DC=intra" -D "cn=ldap,DC=sample,DC=intra" -w "BIND-PW-PROXY" "(objectClass=USER)" ``` Die Ausgabe sollte jetzt alle Benutzerobjekte des AD liefern. ### NTP Damit Windows als Quelle für den Chrony-Dienst unter Linux taugt, musst du den NTP-Dienst auf den Windows Domain Controllern anpassen. Sonst kann Chrony den NTP-Servern nicht trauen. #### Was auf Windows zu tun ist Zuerst startest du eine CMD als Administrator. Dann führst du diese Befehle aus: ``` w32tm /config /manualpeerlist:"0.ch.pool.ntp.org,0x8 1.ch.pool.ntp.org,0x8 2.ch.pool.ntp.org,0x8 3.ch.pool.ntp.org,0x8" /syncfromflags:manual /reliable:yes /update w32tm /resync /rediscover w32tm /config /LocalClockDispersion:0 w32tm /config /update net stop w32time && net start w32time ``` #### Die Konfiguration unter Linux Damit Linux als NTP-Proxy arbeitet, reicht Chrony, das bei RedHat dabei ist. Du passt nur die Konfiguration an und startest danach den Dienst. ##### /etc/chrony.conf ``` # These servers were defined in the installation: (Active Directory) server 192.168.46.100 trust server 192.168.46.101 trust # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). # Record the rate at which the system clock gains/losses time. driftfile /var/lib/chrony/drift # Allow the system clock to be stepped in the first three updates # if its offset is larger than 1 second. makestep 1.0 3 # Enable kernel synchronization of the real-time clock (RTC). rtcsync # Enable hardware timestamping on all interfaces that support it. #hwtimestamp * # Increase the minimum number of selectable sources required to adjust # the system clock. #minsources 2 # Allow NTP client access from local network. (DMZ) allow 10.10.10.0/24 # Serve time even if not synchronized to a time source. local stratum 5 # Specify file containing keys for NTP authentication. keyfile /etc/chrony.keys # Get TAI-UTC offset and leap seconds from the system tz database. leapsectz right/UTC # Specify directory for log files. logdir /var/log/chrony # Select which information is logged. #log measurements statistics tracking ``` Zum Testen fragst du die Quellen ab. ``` [root@localhost]# chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 192.168.46.100 2 6 1 9 +76us[ +76us] +/- 32ms ^ 192.168.46.101 4 6 1 9 +206us[ +206us] +/- 29ms ``` ### DNS Als DNS Server verwenden wir ISC BIND. Den gibt es für alle aktuellen Linux-Distributionen, und er ist schnell konfiguriert. Forwards lassen sich dafür einfach einrichten. #### /etc/named.conf ``` options { listen-on port 53 { 127.0.0.1; 10.10.10.200; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; 10.10.10.0/24; }; forwarders { 192.168.46.100; 192.168.46.101; }; recursion yes; dnssec-enable no; dnssec-validation no; auth-nxdomain no; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; ``` Nach dem Start des Dienstes laufen die Abfragen über DNS. ``` [root@localhost]# nslookup ADC001 Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: Name: ADC001.sample.intra Address: 192.168.46.100 ``` ### Die Firewall unter Linux Damit die Systeme in der DMZ die Dienste nutzen können, öffnest du die Linux-Firewall entsprechend. ``` firewall-cmd --add-service=dns --permanent firewall-cmd --add-service=ntp --permanent firewall-cmd --add-port=123/udp --permanent firewall-cmd --add-port=636/tcp --permanent firewall-cmd --reload ``` ### Fazit Nach der Konfiguration dieser drei Dienste hast du einen funktionierenden Proxy, der NTP-, DNS- und LDAPS-Anfragen innerhalb der DMZ beantwortet, und du musst nicht alle Systeme durch die Firewall schleusen. Wenn du deine Sicherheit auf die nächste Stufe bringen willst, [melde dich](https://soultec.ch/contact-us/). Wir helfen gerne, deine IT-Infrastruktur abzusichern.status: corpus: 267 alsoLike: - {ref: posts/how-to-build-a-test-environment-for-opswat-metadefender-managed-file-transfer, score: 1.00} - {ref: posts/vmware-security-advisory, score: 0.85} - {ref: solutions/vmware/vmware-cloud-foundation/addon/advanced-cyber-compliance, score: 0.58}
{ "apiVersion": "soultec.ch/v1", "kind": "Post", "metadata": { "name": "how-to-secure-your-dmz-with-a-proxy", "locale": "de", "labels": { "author": "norbert-hamm", "series": "how-to", "capability/security": "2.16" }, "annotations": { "source": "blog-content/posts/de/how-to-secure-your-dmz-with-a-proxy.md", "route": "/de/insights/how-to-secure-your-dmz-with-a-proxy/", "schema": "/nerd/schema/posts.json", "markdown": "/de/insights/how-to-secure-your-dmz-with-a-proxy.md" } }, "spec": { "title": "Die DMZ mit einem Proxy absichern", "date": "2022-04-13", "author": "norbert-hamm", "locale": "de", "summary": "Sicherheit wird immer wichtiger. Die On-Premises-Infrastruktur abzusichern hat bei vielen unserer Kunden hohe Priorität. Heute geht es um die DMZ und einen Proxy.", "capabilities": [ "security" ], "series": "how-to", "hero": "/blog-assets/how-to-secure-your-dmz-with-a-proxy/hero.webp", "migrated": "2026-08-24", "translationReviewed": false, "draft": false }, "sections": [ { "body": "Sicherheit wird immer wichtiger. Die On-Premises-Infrastruktur abzusichern hat bei vielen unserer Kunden hohe Priorität, und wir helfen dabei. Heute geht es darum, wie du deine DMZ mit einem Proxy absicherst." }, { "heading": "

LDAP, NTP und DNS über einen Proxy

",
"body": "Um eine DMZ abzuschotten, dürfen die benötigten Ports nicht pauschal für alle Systeme geöffnet werden. Eine übliche Schwierigkeit: Wenn sich Domänenbenutzer in der DMZ anmelden wollen, erreichen sie die Active-Directory-Server nicht.\n\nDie Antwort ist ein Proxy Server, der die Anfragen aus der DMZ weiterleitet. Das gilt für die Protokolle NTP, DNS und LDAPS.\n\nDamit die DMZ abgeschottet bleibt, öffnet nur der Proxy die Ports 53 (DNS), 123 (NTP), 636 (LDAPS) und 3268-3269 (LDAP GC) zu den Active-Directory-Servern. Alle anderen Systeme in der DMZ bedient der Proxy Server.\n\n![](/blog-assets/how-to-secure-your-dmz-with-a-proxy/01.webp)\n\nFür den Aufbau brauchst du ein Linux-System als Proxy. Darauf werden die nötigen Dienste installiert und konfiguriert. Wir haben hier ein aktuelles RedHat Enterprise Linux 8 verwendet.\n\nWeil bestimmte Werkzeuge nicht mehr in der Basisdistribution enthalten sind, holst du sie aus der Open-Source-Community.\n\n### OpenLDAP\n\nFür das Proxying der LDAP-Anfragen kommt OpenLDAP zum Einsatz. Du bekommst es unter [https://ltb-project.org/](https://ltb-project.org/). \nUnsere Konfiguration sieht so aus:\n\n#### /usr/local/openldap/etc/openldap/slapd.conf\n\n```\n### Schema includes ###########################################################\ninclude /usr/local/openldap/etc/openldap/schema/core.schema\ninclude /usr/local/openldap/etc/openldap/schema/cosine.schema\ninclude /usr/local/openldap/etc/openldap/schema/inetorgperson.schema\ninclude /usr/local/openldap/etc/openldap/schema/misc.schema\ninclude /usr/local/openldap/etc/openldap/schema/nis.schema\ninclude /usr/local/openldap/etc/openldap/schema/microsoft.minimal.schema\n\n## Module paths ##############################################################\nmodulepath /usr/local/openldap/libexec/openldap\nmoduleload back_ldap\nmoduleload rwm\n\n# Main settings ###############################################################\npidfile /usr/local/openldap/var/run/slapd.pid\nargsfile /usr/local/openldap/var/run/slapd.args\n\n### Database definition (Proxy to AD) #########################################\ndatabase ldap\nsuffix \"DC=sample,DC=intra\"\nrootdn \"cn=ldap,DC=sample,DC=intra\"\nrootpw \"BIND-PW-PROXY\"\nreadonly yes\nprotocol-version 3\nrebind-as-user yes\nuri \"ldaps://ADC001,ldaps://ADC002\"\nidassert-bind bindmethod=simple\n binddn=\"CN=svc-ldap,OU=Service_Accounts,DC=sample,DC=intra\"\n credentials=\"BIND-PW-AD\"\n mode=none\n flags=non-prescriptive\n tls_reqcert=never\n tls_cacert=/usr/local/openldap/etc/openldap/CA.cer # AD Certificate\noverlay rwm\nrwm-map attribute uid sAMAccountName\n\n### Logging ###################################################################\nloglevel 0\n\n### Limits ####################################################################\nsizelimit unlimited\n\n### LDAPS ####################################################################\nTLSCACertificateFile /usr/local/openldap/etc/openldap/CA.cer # PKI CA Certificate\nTLSCertificateFile /usr/local/openldap/etc/openldap/proxyldap001.cer # LDAP Proxy Certificate\nTLSCertificateKeyFile /usr/local/openldap/etc/openldap/proxyldap001.key # LDAP Proxy Key\n```\n\nWenn die Konfiguration steht, startest du den Dienst. Testen kannst du direkt auf dem Proxy.\n\n```\n[root@localhost]# ldapsearch -LLL -x -h localhost -b \"DC=sample,DC=intra\" -D \"cn=ldap,DC=sample,DC=intra\" -w \"BIND-PW-PROXY\" \"(objectClass=USER)\"\n```\n\nDie Ausgabe sollte jetzt alle Benutzerobjekte des AD liefern.\n\n### NTP\n\nDamit Windows als Quelle für den Chrony-Dienst unter Linux taugt, musst du den NTP-Dienst auf den Windows Domain Controllern anpassen. Sonst kann Chrony den NTP-Servern nicht trauen.\n\n#### Was auf Windows zu tun ist\n\nZuerst startest du eine CMD als Administrator. Dann führst du diese Befehle aus:\n\n```\nw32tm /config /manualpeerlist:\"0.ch.pool.ntp.org,0x8 1.ch.pool.ntp.org,0x8 2.ch.pool.ntp.org,0x8 3.ch.pool.ntp.org,0x8\" /syncfromflags:manual /reliable:yes /update\nw32tm /resync /rediscover\nw32tm /config /LocalClockDispersion:0 \nw32tm /config /update\nnet stop w32time && net start w32time\n```\n\n#### Die Konfiguration unter Linux\n\nDamit Linux als NTP-Proxy arbeitet, reicht Chrony, das bei RedHat dabei ist. Du passt nur die Konfiguration an und startest danach den Dienst.\n\n##### /etc/chrony.conf\n\n```\n# These servers were defined in the installation: (Active Directory)\nserver 192.168.46.100 trust\nserver 192.168.46.101 trust\n# Use public servers from the pool.ntp.org project.\n# Please consider joining the pool (http://www.pool.ntp.org/join.html).\n\n# Record the rate at which the system clock gains/losses time.\ndriftfile /var/lib/chrony/drift\n\n# Allow the system clock to be stepped in the first three updates\n# if its offset is larger than 1 second.\nmakestep 1.0 3\n\n# Enable kernel synchronization of the real-time clock (RTC).\nrtcsync\n\n# Enable hardware timestamping on all interfaces that support it.\n#hwtimestamp *\n\n# Increase the minimum number of selectable sources required to adjust\n# the system clock.\n#minsources 2\n\n# Allow NTP client access from local network. (DMZ)\nallow 10.10.10.0/24\n\n# Serve time even if not synchronized to a time source.\nlocal stratum 5\n\n# Specify file containing keys for NTP authentication.\nkeyfile /etc/chrony.keys\n\n# Get TAI-UTC offset and leap seconds from the system tz database.\nleapsectz right/UTC\n\n# Specify directory for log files.\nlogdir /var/log/chrony\n\n# Select which information is logged.\n#log measurements statistics tracking\n```\n\nZum Testen fragst du die Quellen ab.\n\n```\n[root@localhost]# chronyc sources\nMS Name/IP address Stratum Poll Reach LastRx Last sample\n===============================================================================\n^* 192.168.46.100 2 6 1 9 +76us[ +76us] +/- 32ms\n^ 192.168.46.101 4 6 1 9 +206us[ +206us] +/- 29ms\n```\n\n### DNS\n\nAls DNS Server verwenden wir ISC BIND. Den gibt es für alle aktuellen Linux-Distributionen, und er ist schnell konfiguriert.\n\nForwards lassen sich dafür einfach einrichten.\n\n#### /etc/named.conf\n\n```\noptions {\n listen-on port 53 { 127.0.0.1; 10.10.10.200; };\n directory \"/var/named\";\n dump-file \"/var/named/data/cache_dump.db\";\n statistics-file \"/var/named/data/named_stats.txt\";\n memstatistics-file \"/var/named/data/named_mem_stats.txt\";\n allow-query { localhost; 10.10.10.0/24; };\n\n forwarders {\n 192.168.46.100;\n 192.168.46.101;\n };\n\n recursion yes;\n\n dnssec-enable no;\n dnssec-validation no;\n\n auth-nxdomain no;\n managed-keys-directory \"/var/named/dynamic\";\n\n pid-file \"/run/named/named.pid\";\n session-keyfile \"/run/named/session.key\";\n};\n\nlogging {\n channel default_debug {\n file \"data/named.run\";\n severity dynamic;\n };\n};\n```\n\nNach dem Start des Dienstes laufen die Abfragen über DNS.\n\n```\n[root@localhost]# nslookup ADC001\nServer: 127.0.0.1\nAddress: 127.0.0.1#53\n\nNon-authoritative answer:\nName: ADC001.sample.intra\nAddress: 192.168.46.100\n```\n\n### Die Firewall unter Linux\n\nDamit die Systeme in der DMZ die Dienste nutzen können, öffnest du die Linux-Firewall entsprechend.\n\n```\nfirewall-cmd --add-service=dns --permanent \nfirewall-cmd --add-service=ntp --permanent \nfirewall-cmd --add-port=123/udp --permanent \nfirewall-cmd --add-port=636/tcp --permanent \nfirewall-cmd --reload\n```\n\n### Fazit\n\nNach der Konfiguration dieser drei Dienste hast du einen funktionierenden Proxy, der NTP-, DNS- und LDAPS-Anfragen innerhalb der DMZ beantwortet, und du musst nicht alle Systeme durch die Firewall schleusen.\n\nWenn du deine Sicherheit auf die nächste Stufe bringen willst, [melde dich](https://soultec.ch/contact-us/). Wir helfen gerne, deine IT-Infrastruktur abzusichern." } ], "status": { "corpus": 267, "alsoLike": [ { "ref": "posts/how-to-build-a-test-environment-for-opswat-metadefender-managed-file-transfer", "score": "1.00" }, { "ref": "posts/vmware-security-advisory", "score": "0.85" }, { "ref": "solutions/vmware/vmware-cloud-foundation/addon/advanced-cyber-compliance", "score": "0.58" } ] }}
apiVersion = "soultec.ch/v1"kind = "Post"[metadata]name = "how-to-secure-your-dmz-with-a-proxy"locale = "de"[metadata.labels]author = "norbert-hamm"series = "how-to""capability/security" = "2.16"[metadata.annotations]source = "blog-content/posts/de/how-to-secure-your-dmz-with-a-proxy.md"route = "/de/insights/how-to-secure-your-dmz-with-a-proxy/"schema = "/nerd/schema/posts.json"markdown = "/de/insights/how-to-secure-your-dmz-with-a-proxy.md"[spec]title = "Die DMZ mit einem Proxy absichern"date = 2022-04-13author = "norbert-hamm"locale = "de"summary = "Sicherheit wird immer wichtiger. Die On-Premises-Infrastruktur abzusichern hat bei vielen unserer Kunden hohe Priorität. Heute geht es um die DMZ und einen Proxy."capabilities = ["security"]series = "how-to"hero = "/blog-assets/how-to-secure-your-dmz-with-a-proxy/hero.webp"migrated = 2026-08-24translationReviewed = falsedraft = false[[sections]]body = "Sicherheit wird immer wichtiger. Die On-Premises-Infrastruktur abzusichern hat bei vielen unserer Kunden hohe Priorität, und wir helfen dabei. Heute geht es darum, wie du deine DMZ mit einem Proxy absicherst."[[sections]]heading = "

LDAP, NTP und DNS über einen Proxy

"
body = '''Um eine DMZ abzuschotten, dürfen die benötigten Ports nicht pauschal für alle Systeme geöffnet werden. Eine übliche Schwierigkeit: Wenn sich Domänenbenutzer in der DMZ anmelden wollen, erreichen sie die Active-Directory-Server nicht.Die Antwort ist ein Proxy Server, der die Anfragen aus der DMZ weiterleitet. Das gilt für die Protokolle NTP, DNS und LDAPS.Damit die DMZ abgeschottet bleibt, öffnet nur der Proxy die Ports 53 (DNS), 123 (NTP), 636 (LDAPS) und 3268-3269 (LDAP GC) zu den Active-Directory-Servern. Alle anderen Systeme in der DMZ bedient der Proxy Server.![](/blog-assets/how-to-secure-your-dmz-with-a-proxy/01.webp)Für den Aufbau brauchst du ein Linux-System als Proxy. Darauf werden die nötigen Dienste installiert und konfiguriert. Wir haben hier ein aktuelles RedHat Enterprise Linux 8 verwendet.Weil bestimmte Werkzeuge nicht mehr in der Basisdistribution enthalten sind, holst du sie aus der Open-Source-Community.### OpenLDAPFür das Proxying der LDAP-Anfragen kommt OpenLDAP zum Einsatz. Du bekommst es unter [https://ltb-project.org/](https://ltb-project.org/). Unsere Konfiguration sieht so aus:#### /usr/local/openldap/etc/openldap/slapd.conf```### Schema includes ###########################################################include /usr/local/openldap/etc/openldap/schema/core.schemainclude /usr/local/openldap/etc/openldap/schema/cosine.schemainclude /usr/local/openldap/etc/openldap/schema/inetorgperson.schemainclude /usr/local/openldap/etc/openldap/schema/misc.schemainclude /usr/local/openldap/etc/openldap/schema/nis.schemainclude /usr/local/openldap/etc/openldap/schema/microsoft.minimal.schema## Module paths ##############################################################modulepath /usr/local/openldap/libexec/openldapmoduleload back_ldapmoduleload rwm# Main settings ###############################################################pidfile /usr/local/openldap/var/run/slapd.pidargsfile /usr/local/openldap/var/run/slapd.args### Database definition (Proxy to AD) #########################################database ldapsuffix "DC=sample,DC=intra"rootdn "cn=ldap,DC=sample,DC=intra"rootpw "BIND-PW-PROXY"readonly yesprotocol-version 3rebind-as-user yesuri "ldaps://ADC001,ldaps://ADC002"idassert-bind bindmethod=simple binddn="CN=svc-ldap,OU=Service_Accounts,DC=sample,DC=intra" credentials="BIND-PW-AD" mode=none flags=non-prescriptive tls_reqcert=never tls_cacert=/usr/local/openldap/etc/openldap/CA.cer # AD Certificateoverlay rwmrwm-map attribute uid sAMAccountName### Logging ###################################################################loglevel 0### Limits ####################################################################sizelimit unlimited### LDAPS ####################################################################TLSCACertificateFile /usr/local/openldap/etc/openldap/CA.cer # PKI CA CertificateTLSCertificateFile /usr/local/openldap/etc/openldap/proxyldap001.cer # LDAP Proxy CertificateTLSCertificateKeyFile /usr/local/openldap/etc/openldap/proxyldap001.key # LDAP Proxy Key```Wenn die Konfiguration steht, startest du den Dienst. Testen kannst du direkt auf dem Proxy.```[root@localhost]# ldapsearch -LLL -x -h localhost -b "DC=sample,DC=intra" -D "cn=ldap,DC=sample,DC=intra" -w "BIND-PW-PROXY" "(objectClass=USER)"```Die Ausgabe sollte jetzt alle Benutzerobjekte des AD liefern.### NTPDamit Windows als Quelle für den Chrony-Dienst unter Linux taugt, musst du den NTP-Dienst auf den Windows Domain Controllern anpassen. Sonst kann Chrony den NTP-Servern nicht trauen.#### Was auf Windows zu tun istZuerst startest du eine CMD als Administrator. Dann führst du diese Befehle aus:```w32tm /config /manualpeerlist:"0.ch.pool.ntp.org,0x8 1.ch.pool.ntp.org,0x8 2.ch.pool.ntp.org,0x8 3.ch.pool.ntp.org,0x8" /syncfromflags:manual /reliable:yes /updatew32tm /resync /rediscoverw32tm /config /LocalClockDispersion:0 w32tm /config /updatenet stop w32time && net start w32time```#### Die Konfiguration unter LinuxDamit Linux als NTP-Proxy arbeitet, reicht Chrony, das bei RedHat dabei ist. Du passt nur die Konfiguration an und startest danach den Dienst.##### /etc/chrony.conf```# These servers were defined in the installation: (Active Directory)server 192.168.46.100 trustserver 192.168.46.101 trust# Use public servers from the pool.ntp.org project.# Please consider joining the pool (http://www.pool.ntp.org/join.html).# Record the rate at which the system clock gains/losses time.driftfile /var/lib/chrony/drift# Allow the system clock to be stepped in the first three updates# if its offset is larger than 1 second.makestep 1.0 3# Enable kernel synchronization of the real-time clock (RTC).rtcsync# Enable hardware timestamping on all interfaces that support it.#hwtimestamp *# Increase the minimum number of selectable sources required to adjust# the system clock.#minsources 2# Allow NTP client access from local network. (DMZ)allow 10.10.10.0/24# Serve time even if not synchronized to a time source.local stratum 5# Specify file containing keys for NTP authentication.keyfile /etc/chrony.keys# Get TAI-UTC offset and leap seconds from the system tz database.leapsectz right/UTC# Specify directory for log files.logdir /var/log/chrony# Select which information is logged.#log measurements statistics tracking```Zum Testen fragst du die Quellen ab.```[root@localhost]# chronyc sourcesMS Name/IP address Stratum Poll Reach LastRx Last sample===============================================================================^* 192.168.46.100 2 6 1 9 +76us[ +76us] +/- 32ms^ 192.168.46.101 4 6 1 9 +206us[ +206us] +/- 29ms```### DNSAls DNS Server verwenden wir ISC BIND. Den gibt es für alle aktuellen Linux-Distributionen, und er ist schnell konfiguriert.Forwards lassen sich dafür einfach einrichten.#### /etc/named.conf```options { listen-on port 53 { 127.0.0.1; 10.10.10.200; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; 10.10.10.0/24; }; forwarders { 192.168.46.100; 192.168.46.101; }; recursion yes; dnssec-enable no; dnssec-validation no; auth-nxdomain no; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key";};logging { channel default_debug { file "data/named.run"; severity dynamic; };};```Nach dem Start des Dienstes laufen die Abfragen über DNS.```[root@localhost]# nslookup ADC001Server: 127.0.0.1Address: 127.0.0.1#53Non-authoritative answer:Name: ADC001.sample.intraAddress: 192.168.46.100```### Die Firewall unter LinuxDamit die Systeme in der DMZ die Dienste nutzen können, öffnest du die Linux-Firewall entsprechend.```firewall-cmd --add-service=dns --permanent firewall-cmd --add-service=ntp --permanent firewall-cmd --add-port=123/udp --permanent firewall-cmd --add-port=636/tcp --permanent firewall-cmd --reload```### FazitNach der Konfiguration dieser drei Dienste hast du einen funktionierenden Proxy, der NTP-, DNS- und LDAPS-Anfragen innerhalb der DMZ beantwortet, und du musst nicht alle Systeme durch die Firewall schleusen.Wenn du deine Sicherheit auf die nächste Stufe bringen willst, [melde dich](https://soultec.ch/contact-us/). Wir helfen gerne, deine IT-Infrastruktur abzusichern.'''[status]corpus = 267[[status.alsoLike]]ref = "posts/how-to-build-a-test-environment-for-opswat-metadefender-managed-file-transfer"score = "1.00"[[status.alsoLike]]ref = "posts/vmware-security-advisory"score = "0.85"[[status.alsoLike]]ref = "solutions/vmware/vmware-cloud-foundation/addon/advanced-cyber-compliance"score = "0.58"
<?xml version="1.0" encoding="UTF-8"?><manifest kind="Post"> <apiVersion>soultec.ch/v1</apiVersion> <metadata> <name>how-to-secure-your-dmz-with-a-proxy</name> <locale>de</locale> <labels> <author>norbert-hamm</author> <series>how-to</series> <entry key="capability/security">2.16</entry> </labels> <annotations> <source>blog-content/posts/de/how-to-secure-your-dmz-with-a-proxy.md</source> <route>/de/insights/how-to-secure-your-dmz-with-a-proxy/</route> <schema>/nerd/schema/posts.json</schema> <markdown>/de/insights/how-to-secure-your-dmz-with-a-proxy.md</markdown> </annotations> </metadata> <spec> <title>Die DMZ mit einem Proxy absichern</title> <date>2022-04-13</date> <author>norbert-hamm</author> <locale>de</locale> <summary>Sicherheit wird immer wichtiger. Die On-Premises-Infrastruktur abzusichern hat bei vielen unserer Kunden hohe Priorität. Heute geht es um die DMZ und einen Proxy.</summary> <capabilities> <item>security</item> </capabilities> <series>how-to</series> <hero>/blog-assets/how-to-secure-your-dmz-with-a-proxy/hero.webp</hero> <migrated>2026-08-24</migrated> <translationReviewed>false</translationReviewed> <draft>false</draft> </spec> <sections> <section> <body>Sicherheit wird immer wichtiger. Die On-Premises-Infrastruktur abzusichern hat bei vielen unserer Kunden hohe Priorität, und wir helfen dabei. Heute geht es darum, wie du deine DMZ mit einem Proxy absicherst.</body> </section> <section> <heading>

LDAP, NTP und DNS über einen Proxy

</heading>
<body>Um eine DMZ abzuschotten, dürfen die benötigten Ports nicht pauschal für alle Systeme geöffnet werden. Eine übliche Schwierigkeit: Wenn sich Domänenbenutzer in der DMZ anmelden wollen, erreichen sie die Active-Directory-Server nicht.Die Antwort ist ein Proxy Server, der die Anfragen aus der DMZ weiterleitet. Das gilt für die Protokolle NTP, DNS und LDAPS.Damit die DMZ abgeschottet bleibt, öffnet nur der Proxy die Ports 53 (DNS), 123 (NTP), 636 (LDAPS) und 3268-3269 (LDAP GC) zu den Active-Directory-Servern. Alle anderen Systeme in der DMZ bedient der Proxy Server.![](/blog-assets/how-to-secure-your-dmz-with-a-proxy/01.webp)Für den Aufbau brauchst du ein Linux-System als Proxy. Darauf werden die nötigen Dienste installiert und konfiguriert. Wir haben hier ein aktuelles RedHat Enterprise Linux 8 verwendet.Weil bestimmte Werkzeuge nicht mehr in der Basisdistribution enthalten sind, holst du sie aus der Open-Source-Community.### OpenLDAPFür das Proxying der LDAP-Anfragen kommt OpenLDAP zum Einsatz. Du bekommst es unter [https://ltb-project.org/](https://ltb-project.org/). Unsere Konfiguration sieht so aus:#### /usr/local/openldap/etc/openldap/slapd.conf```### Schema includes ###########################################################include /usr/local/openldap/etc/openldap/schema/core.schemainclude /usr/local/openldap/etc/openldap/schema/cosine.schemainclude /usr/local/openldap/etc/openldap/schema/inetorgperson.schemainclude /usr/local/openldap/etc/openldap/schema/misc.schemainclude /usr/local/openldap/etc/openldap/schema/nis.schemainclude /usr/local/openldap/etc/openldap/schema/microsoft.minimal.schema## Module paths ##############################################################modulepath /usr/local/openldap/libexec/openldapmoduleload back_ldapmoduleload rwm# Main settings ###############################################################pidfile /usr/local/openldap/var/run/slapd.pidargsfile /usr/local/openldap/var/run/slapd.args### Database definition (Proxy to AD) #########################################database ldapsuffix "DC=sample,DC=intra"rootdn "cn=ldap,DC=sample,DC=intra"rootpw "BIND-PW-PROXY"readonly yesprotocol-version 3rebind-as-user yesuri "ldaps://ADC001,ldaps://ADC002"idassert-bind bindmethod=simple binddn="CN=svc-ldap,OU=Service_Accounts,DC=sample,DC=intra" credentials="BIND-PW-AD" mode=none flags=non-prescriptive tls_reqcert=never tls_cacert=/usr/local/openldap/etc/openldap/CA.cer # AD Certificateoverlay rwmrwm-map attribute uid sAMAccountName### Logging ###################################################################loglevel 0### Limits ####################################################################sizelimit unlimited### LDAPS ####################################################################TLSCACertificateFile /usr/local/openldap/etc/openldap/CA.cer # PKI CA CertificateTLSCertificateFile /usr/local/openldap/etc/openldap/proxyldap001.cer # LDAP Proxy CertificateTLSCertificateKeyFile /usr/local/openldap/etc/openldap/proxyldap001.key # LDAP Proxy Key```Wenn die Konfiguration steht, startest du den Dienst. Testen kannst du direkt auf dem Proxy.```[root@localhost]# ldapsearch -LLL -x -h localhost -b "DC=sample,DC=intra" -D "cn=ldap,DC=sample,DC=intra" -w "BIND-PW-PROXY" "(objectClass=USER)"```Die Ausgabe sollte jetzt alle Benutzerobjekte des AD liefern.### NTPDamit Windows als Quelle für den Chrony-Dienst unter Linux taugt, musst du den NTP-Dienst auf den Windows Domain Controllern anpassen. Sonst kann Chrony den NTP-Servern nicht trauen.#### Was auf Windows zu tun istZuerst startest du eine CMD als Administrator. Dann führst du diese Befehle aus:```w32tm /config /manualpeerlist:"0.ch.pool.ntp.org,0x8 1.ch.pool.ntp.org,0x8 2.ch.pool.ntp.org,0x8 3.ch.pool.ntp.org,0x8" /syncfromflags:manual /reliable:yes /updatew32tm /resync /rediscoverw32tm /config /LocalClockDispersion:0 w32tm /config /updatenet stop w32time &amp;&amp; net start w32time```#### Die Konfiguration unter LinuxDamit Linux als NTP-Proxy arbeitet, reicht Chrony, das bei RedHat dabei ist. Du passt nur die Konfiguration an und startest danach den Dienst.##### /etc/chrony.conf```# These servers were defined in the installation: (Active Directory)server 192.168.46.100 trustserver 192.168.46.101 trust# Use public servers from the pool.ntp.org project.# Please consider joining the pool (http://www.pool.ntp.org/join.html).# Record the rate at which the system clock gains/losses time.driftfile /var/lib/chrony/drift# Allow the system clock to be stepped in the first three updates# if its offset is larger than 1 second.makestep 1.0 3# Enable kernel synchronization of the real-time clock (RTC).rtcsync# Enable hardware timestamping on all interfaces that support it.#hwtimestamp *# Increase the minimum number of selectable sources required to adjust# the system clock.#minsources 2# Allow NTP client access from local network. (DMZ)allow 10.10.10.0/24# Serve time even if not synchronized to a time source.local stratum 5# Specify file containing keys for NTP authentication.keyfile /etc/chrony.keys# Get TAI-UTC offset and leap seconds from the system tz database.leapsectz right/UTC# Specify directory for log files.logdir /var/log/chrony# Select which information is logged.#log measurements statistics tracking```Zum Testen fragst du die Quellen ab.```[root@localhost]# chronyc sourcesMS Name/IP address Stratum Poll Reach LastRx Last sample===============================================================================^* 192.168.46.100 2 6 1 9 +76us[ +76us] +/- 32ms^ 192.168.46.101 4 6 1 9 +206us[ +206us] +/- 29ms```### DNSAls DNS Server verwenden wir ISC BIND. Den gibt es für alle aktuellen Linux-Distributionen, und er ist schnell konfiguriert.Forwards lassen sich dafür einfach einrichten.#### /etc/named.conf```options { listen-on port 53 { 127.0.0.1; 10.10.10.200; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; 10.10.10.0/24; }; forwarders { 192.168.46.100; 192.168.46.101; }; recursion yes; dnssec-enable no; dnssec-validation no; auth-nxdomain no; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key";};logging { channel default_debug { file "data/named.run"; severity dynamic; };};```Nach dem Start des Dienstes laufen die Abfragen über DNS.```[root@localhost]# nslookup ADC001Server: 127.0.0.1Address: 127.0.0.1#53Non-authoritative answer:Name: ADC001.sample.intraAddress: 192.168.46.100```### Die Firewall unter LinuxDamit die Systeme in der DMZ die Dienste nutzen können, öffnest du die Linux-Firewall entsprechend.```firewall-cmd --add-service=dns --permanent firewall-cmd --add-service=ntp --permanent firewall-cmd --add-port=123/udp --permanent firewall-cmd --add-port=636/tcp --permanent firewall-cmd --reload```### FazitNach der Konfiguration dieser drei Dienste hast du einen funktionierenden Proxy, der NTP-, DNS- und LDAPS-Anfragen innerhalb der DMZ beantwortet, und du musst nicht alle Systeme durch die Firewall schleusen.Wenn du deine Sicherheit auf die nächste Stufe bringen willst, [melde dich](https://soultec.ch/contact-us/). Wir helfen gerne, deine IT-Infrastruktur abzusichern. </body> </section> </sections> <status> <corpus>267</corpus> <alsoLike> <item> <ref>posts/how-to-build-a-test-environment-for-opswat-metadefender-managed-file-transfer</ref> <score>1.00</score> </item> <item> <ref>posts/vmware-security-advisory</ref> <score>0.85</score> </item> <item> <ref>solutions/vmware/vmware-cloud-foundation/addon/advanced-cyber-compliance</ref> <score>0.58</score> </item> </alsoLike> </status></manifest>
How-To · 2022-04-13

Die DMZ mit einem Proxy absichern

Sicherheit wird immer wichtiger. Die On-Premises-Infrastruktur abzusichern hat bei vielen unserer Kunden hohe Priorität. Heute geht es um die DMZ und einen Proxy.

2022-04-13Datum
Norbert HammAutor
4Min. Lesezeit
Themen Security 2.16

Dieser Beitrag ist von 2022. Er bleibt online, weil er nach wie vor nachgefragt wird, beschreibt aber einen Produktstand von damals.

Sicherheit wird immer wichtiger. Die On-Premises-Infrastruktur abzusichern hat bei vielen unserer Kunden hohe Priorität, und wir helfen dabei. Heute geht es darum, wie du deine DMZ mit einem Proxy absicherst.

LDAP, NTP und DNS über einen Proxy

Um eine DMZ abzuschotten, dürfen die benötigten Ports nicht pauschal für alle Systeme geöffnet werden. Eine übliche Schwierigkeit: Wenn sich Domänenbenutzer in der DMZ anmelden wollen, erreichen sie die Active-Directory-Server nicht.

Die Antwort ist ein Proxy Server, der die Anfragen aus der DMZ weiterleitet. Das gilt für die Protokolle NTP, DNS und LDAPS.

Damit die DMZ abgeschottet bleibt, öffnet nur der Proxy die Ports 53 (DNS), 123 (NTP), 636 (LDAPS) und 3268-3269 (LDAP GC) zu den Active-Directory-Servern. Alle anderen Systeme in der DMZ bedient der Proxy Server.

Für den Aufbau brauchst du ein Linux-System als Proxy. Darauf werden die nötigen Dienste installiert und konfiguriert. Wir haben hier ein aktuelles RedHat Enterprise Linux 8 verwendet.

Weil bestimmte Werkzeuge nicht mehr in der Basisdistribution enthalten sind, holst du sie aus der Open-Source-Community.

OpenLDAP

Für das Proxying der LDAP-Anfragen kommt OpenLDAP zum Einsatz. Du bekommst es unter https://ltb-project.org/.
Unsere Konfiguration sieht so aus:

/usr/local/openldap/etc/openldap/slapd.conf

### Schema includes ###########################################################
include                 /usr/local/openldap/etc/openldap/schema/core.schema
include                 /usr/local/openldap/etc/openldap/schema/cosine.schema
include                 /usr/local/openldap/etc/openldap/schema/inetorgperson.schema
include                 /usr/local/openldap/etc/openldap/schema/misc.schema
include                 /usr/local/openldap/etc/openldap/schema/nis.schema
include                 /usr/local/openldap/etc/openldap/schema/microsoft.minimal.schema

## Module paths ##############################################################
modulepath              /usr/local/openldap/libexec/openldap
moduleload              back_ldap
moduleload              rwm

# Main settings ###############################################################
pidfile                 /usr/local/openldap/var/run/slapd.pid
argsfile                /usr/local/openldap/var/run/slapd.args

### Database definition (Proxy to AD) #########################################
database                ldap
suffix                  "DC=sample,DC=intra"
rootdn                  "cn=ldap,DC=sample,DC=intra"
rootpw                  "BIND-PW-PROXY"
readonly                yes
protocol-version        3
rebind-as-user          yes
uri                     "ldaps://ADC001,ldaps://ADC002"
idassert-bind bindmethod=simple
    binddn="CN=svc-ldap,OU=Service_Accounts,DC=sample,DC=intra"
    credentials="BIND-PW-AD"
    mode=none
    flags=non-prescriptive
    tls_reqcert=never
    tls_cacert=/usr/local/openldap/etc/openldap/CA.cer  # AD Certificate
overlay                 rwm
rwm-map                 attribute       uid     sAMAccountName

### Logging ###################################################################
loglevel                0

### Limits ####################################################################
sizelimit               unlimited

### LDAPS ####################################################################
TLSCACertificateFile /usr/local/openldap/etc/openldap/CA.cer # PKI CA Certificate
TLSCertificateFile /usr/local/openldap/etc/openldap/proxyldap001.cer # LDAP Proxy Certificate
TLSCertificateKeyFile /usr/local/openldap/etc/openldap/proxyldap001.key # LDAP Proxy Key

Wenn die Konfiguration steht, startest du den Dienst. Testen kannst du direkt auf dem Proxy.

[root@localhost]# ldapsearch -LLL -x -h localhost -b "DC=sample,DC=intra" -D "cn=ldap,DC=sample,DC=intra" -w "BIND-PW-PROXY" "(objectClass=USER)"

Die Ausgabe sollte jetzt alle Benutzerobjekte des AD liefern.

NTP

Damit Windows als Quelle für den Chrony-Dienst unter Linux taugt, musst du den NTP-Dienst auf den Windows Domain Controllern anpassen. Sonst kann Chrony den NTP-Servern nicht trauen.

Was auf Windows zu tun ist

Zuerst startest du eine CMD als Administrator. Dann führst du diese Befehle aus:

w32tm /config /manualpeerlist:"0.ch.pool.ntp.org,0x8 1.ch.pool.ntp.org,0x8 2.ch.pool.ntp.org,0x8 3.ch.pool.ntp.org,0x8" /syncfromflags:manual /reliable:yes /update
w32tm /resync /rediscover
w32tm /config /LocalClockDispersion:0 
w32tm /config /update
net stop w32time && net start w32time

Die Konfiguration unter Linux

Damit Linux als NTP-Proxy arbeitet, reicht Chrony, das bei RedHat dabei ist. Du passt nur die Konfiguration an und startest danach den Dienst.

/etc/chrony.conf
# These servers were defined in the installation: (Active Directory)
server 192.168.46.100 trust
server 192.168.46.101 trust
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network. (DMZ)
allow 10.10.10.0/24

# Serve time even if not synchronized to a time source.
local stratum 5

# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys

# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking

Zum Testen fragst du die Quellen ab.

[root@localhost]# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 192.168.46.100                  2   6     1     9    +76us[  +76us] +/-   32ms
^  192.168.46.101                  4   6     1     9   +206us[ +206us] +/-   29ms

DNS

Als DNS Server verwenden wir ISC BIND. Den gibt es für alle aktuellen Linux-Distributionen, und er ist schnell konfiguriert.

Forwards lassen sich dafür einfach einrichten.

/etc/named.conf

options {
        listen-on port 53 { 127.0.0.1; 10.10.10.200; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; 10.10.10.0/24; };

        forwarders {
            192.168.46.100;
            192.168.46.101;
        };

        recursion yes;

        dnssec-enable no;
        dnssec-validation no;

        auth-nxdomain no;
        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

Nach dem Start des Dienstes laufen die Abfragen über DNS.

[root@localhost]# nslookup ADC001
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
Name:   ADC001.sample.intra
Address: 192.168.46.100

Die Firewall unter Linux

Damit die Systeme in der DMZ die Dienste nutzen können, öffnest du die Linux-Firewall entsprechend.

firewall-cmd --add-service=dns --permanent 
firewall-cmd --add-service=ntp --permanent 
firewall-cmd --add-port=123/udp --permanent 
firewall-cmd --add-port=636/tcp --permanent 
firewall-cmd --reload

Fazit

Nach der Konfiguration dieser drei Dienste hast du einen funktionierenden Proxy, der NTP-, DNS- und LDAPS-Anfragen innerhalb der DMZ beantwortet, und du musst nicht alle Systeme durch die Firewall schleusen.

Wenn du deine Sicherheit auf die nächste Stufe bringen willst, melde dich. Wir helfen gerne, deine IT-Infrastruktur abzusichern.

Passt ausserdem