[zorp-hu] (már nem) KSH és a biztonságtudat

Magosányi Árpád zorp-hu@lists.balabit.hu
Wed, 18 Feb 2004 12:35:45 +0000


A levelezőm azt hiszi, hogy Kosa Attila a következőeket írta:
> Jo, legyunk ontopic-ok egy kicsit :)
> 
> Ha megnezzuk az emlitett cimet, akkor lathato, hogy sajat maguknak
> krealtak egy certificate-et, ami asp1 nevre van kiallitva, mikozben a
> site neve asp.ksh.hu. Tudnal mutatni egy olyan konfigot, amely ehhez az
> esethez jol van beallitva?

Először is lássuk be, hogy valamely szervezettel vagy emberrel
kapcsolatos -akár jogos- ellenszenved kiélésére nem ez a lista
való.

A kérdésedet ontopic módon így tudom értelmezni:
"""
Van egy saját gyártmányú certem, ami "asp1" névre
van kiállítva. Valamiért szeretném ha a szerveren
ugyanez a cert maradna, ugyanakkor a külvilág számára
szeretnék egy korrekt certet mutatni.
"""

Mint mindannyian tudjuk, ebben az esetben a pssl
használata, és a korrekt certtel való átkulcsolás
a megoldás.

class MyHttpsProxy(PsslProxy):
        def config(self):
                # both side need ssl
                self.server_need_ssl = TRUE
                self.client_need_ssl = TRUE

                # correct secret key and cert generated by openssl
                self.client_cert = '/etc/zorp/myhttps.crt'
                self.client_key = '/etc/zorp/myhttps.key'

                # do check clients certificates in behalf of the server
                self.client_verify_type = SSL_VERIFY_REQUIRED_TRUSTED

                # strict check of https server certs
                self.server_verify_type = SSL_VERIFY_REQUIRED_TRUSTED

                # put the allowed CAs' certs into this directory, so
                # only the good servers will be allowed, for instance
                # if you only put verysign CA cert here, only those
                # servers will be allowed, which owns VS certs
                # WARNING: never allow sef singed certs;-))))
                # you can gain CA certs form apache-ssl deb package
		# put here the cert of the CA which signed the server
		# key, or set server_verify_type to NONE
                self.server_ca_directory = '/etc/zorp/ca.d/'

                # you want to shutdown each way Read and Write)
                # separately.
                self.shutdown_soft = TRUE

                # now I stack Http Proxy with the previous
                # URI filtering into the SSL proxy, so sex.com
                # cannot be visited neither via HTTP and HTTPS...
                self.stack_proxy = MyHttpProxy

Ha a levél végén lévő patchet alkalmazod (emlékezetből írtam, lehet
hogy nem is fordul, a következő unoff zorpban benne lesz tesztelve),
akkor a MyHttpProxyban a pssl client_cert attribútuma alapján
eldöntheted, hogy egyáltalán odaengeded-e józsit a szerverhez.

Sajnos nem találtam olyan kérdést, amelyik a te kérdésedhez közelebb
lenne és ontopic.

M  modules/zorp-module-pssl-2.0.0/pssl.c

* modified files

--- orig/modules/zorp-module-pssl-2.0.0/pssl.c
+++ mod/modules/zorp-module-pssl-2.0.0/pssl.c
@@ -72,6 +72,7 @@
   SSL_CTX *client_ctx, *server_ctx;
   int verify_type[EP_MAX];
   int verify_depth[EP_MAX];
+  GString *client_name;
 } PsslProxy;
 
 #define ENABLE_PKT_STATS 1
@@ -100,6 +101,7 @@
   self->poll = z_poll_new();
   
   self->client_keyfile = g_string_sized_new(32);
+  self->client_name = g_string_sized_new(0);
   self->client_certfile = g_string_sized_new(32);
 
   self->client_ca_dir = g_string_sized_new(0);
@@ -178,6 +180,10 @@
                   "client_key_file",
                  Z_VAR_GET | Z_VAR_SET_CONFIG | Z_VAR_TYPE_STRING,
                  self->client_keyfile);
+  z_proxy_var_new(&self->super,
+                  "client_name",
+                 Z_VAR_GET | Z_VAR_TYPE_STRING,
+                 self->client_name);
                  
   z_proxy_var_new(&self->super,
                   "client_cert_file",
@@ -356,6 +362,7 @@
       
       X509_NAME_oneline(X509_get_subject_name(peercert), tmp,
sizeof(tmp) - 1);
       X509_free(peercert);
+      self->client_name = g_string_assign(self->client_name,tmp);
       z_proxy_log(self, PSSL_DEBUG, 4, "Identified peer on the client
side; peer='%s'", tmp);
     }
   





-- 
GNU GPL: csak tiszta forrásból