- Windows Server Administration

Active Directory, File-, Print-Server, etc.
Sie haben eine kleine Firma mit bis zu 30 Clients dann sind sie bei mir genau richtig.

- Installation eines Windows Clients
Windows Installation mit allen Updates & Office & sonstiger Software.

- Microsoft Office Programmierung
Benötigen Sie Funktionen in Ihrem Officepaket welche nicht vorhanden sind kann dies meist mit VBA programmiert werden.

- Microsoft Office Schulung
Themen sind als Module zusammenstellbar.
Schulungen in ihrer Firma oder externen Räumen.

- Soft- & Hardware Verkauf
Für Sie angepasst. Wird nur mit Betreuung des Kunden angeboten.

 

 

Aktuelle Beiträge

  • Excel alle Treffer eines Suchmustern zugänglich machen

    Mit Excel gibt es die Suchen-Funktion. Diese liefert Treffer, auch über die gesamte Arbeitsmappe.

    Es gibt aber noch keine Möglichkeit die Trefferliste zu exportieren oder zu kopieren

    Diese kleine VBA-Script scheibt die Treffen in eine eigenes Tabellen-Blatt

    Vorarbeit:
    - In den VBA-Editor wechsel: ALT-F11
    - Menü -> Einfügen Modul
    - VBA-Code kopieren und einfügen
    - Excel-Mappe als .xlsm speichern
    - In den Optionen sollte das Menüband angepasst werden und die Entwicklertools aktiviert sein
    - Sollten Markos nicht erlaubt sein diese aktivieren
      -> Truste Center -> Eiinstellungen für das Trust Center
      -> Makroeinstellungen müssen mindestens auf "Alle Makros mit Benachrigitgung deaktivieren" gestellt sein
    - Im Menüpunkt gibt es jetzt die Entwickertools

    Ausführen:
    Makros-Button aklicken

     

    Script:

    Option Explicit
    
    Sub FindString()
      '#########################################
      Const cTabellennameTreffer = "Treffer"
      '#########################################
      
      Dim c As Range
      Dim ws As Worksheet, wsTreffer As Worksheet
      Dim wb As Workbook
      Dim suchMuster As String
      Dim i As Integer
        
      suchMuster = InputBox("Bitte Suchmuster eingeben" & vbCrLf & "Voreingestellt ist exakter Treffer" & vbCrLf & "Sonst Platzhalter verwenden" & vbCrLf & " ->  *" & vbCrLf & " ->  ?", "Trefferliste erstellen", ActiveCell.Value)
      If suchMuster = "" Or Replace(Replace(suchMuster, "?", ""), "*", "") = "" Then
        MsgBox "Leeres Suchmuster ''", vbOKOnly, "Abbruch der Suche"
        GoTo Exit_:
      End If
      Application.ScreenUpdating = False
      Set wb = ActiveWorkbook
      On Error Resume Next
      Set wsTreffer = wb.Worksheets(cTabellennameTreffer)
      If wsTreffer Is Nothing Then
        Set wsTreffer = wb.Worksheets.Add
        With wsTreffer
         .Name = "Treffer"
         .Range("A1") = "Zelle"
         .Range("B1") = "Tabelle"
         .Range("C1") = "Zellinhalt"
         .Range("D1") = "Verknüpfung"     
         .Rows("1:1").Font.Bold = True
         .Activate
          With ActiveWindow
            .SplitColumn = 0
            .SplitRow = 1
          End With
        End With
        ActiveWindow.FreezePanes = True
      End If
      wsTreffer.Range("A2:D100000") = ""
      On Error GoTo Errors_
      i = 2
      For Each ws In wb.Worksheets
        If ws.Name <> "Treffer" Then
          With ws.Range("A1:AZZ100000")
            Set c = .Find(suchMuster, LookIn:=xlValues)
            If Not c Is Nothing Then
              Do
                Set c = .FindNext()
                If Not c Is Nothing Then
                  wsTreffer.Cells(i, 1) = c.Address
                  wsTreffer.Cells(i, 2) = ws.Name
                  wsTreffer.Cells(i, 3) = c.Value
                  wsTreffer.Cells(i, 4) = " =" & IIf(InStr(1, ws.Name, " ", vbTextCompare), "'", "") & ws.Name & IIf(InStr(1, ws.Name, " ", vbTextCompare), "'!", "!") & c.Address
                  c.Value = Replace(c.Value, c.Value, "|-|")
                  i = i + 1
                End If
              Loop While Not c Is Nothing
            End If
          End With
        End If
      Next
      i = 2
      With wsTreffer
        While .Cells(i, 1) <> ""
          Set ws = wb.Worksheets(.Cells(i, 2).Value)
          Set c = ws.Range(.Cells(i, 1).Value)
          c.Value = .Cells(i, 3)
          i = i + 1
        Wend
        .Activate
      End With
      Set ws = Nothing
      Set wsTreffer = Nothing
      Set wb = Nothing
      
    Exit_:
      Application.ScreenUpdating = True
      Exit Sub
    Errors_:
      Err.Clear
      GoTo Exit_
    End Sub
    

     

     
  • Wordpress Admin-Bereich absichern

    Um einen Angreifer den Zugriff auf die Login-Seite  zu erschweren kann über den Apache-Server eine .htaccess Anweisung erstellt werden.
    Wordpress leitet /admin und /login auf /admin-login.php um. Somit muss nur der Zugriff auf diese PHP-Seite begrenzt werden.
    Diese Zugriffsbegrenzung auf Apache-Ebene löst die eigentliche Anmeldung in Wordpress nicht ab.
    Es kann also die selbe Anmeldung Benutzername/Passwort oder eine 2. Kombination verwendet werden.

    Hierfür benötigt es 2 Dateien. Die .htaccess ist schon vorhanden. Als 2. muss noch eine .htpasswd erstellt werden mit dem Benutzername und Passwort

    1.) Vorarbeit
    Als erstes wird der absolute Pfad zur Wordpressinstallation auf dem Server benötigt. Wordpress ist dabei keine Hilfe. Ein FTP-Programm ist mal vorausgesetzt ;-)
    Einfach eine Datei z.B. dir.php erstellen und mit einem Editor öffnen und folgendes Eingeben.

    <?php
    echo __DIR__;
    ?>
    

    Die Datei in die Wordpress-Installation hochladen und über den Browser aufrufen
    z.B: https://bsp-homepage.de/dir.php (Wordpress wurde ins Web-Basisverzeichnis installiert)
          https://bsp-homepage.de/wordpress/dir.php (In einen Unterordner)

    Angezeigt wird dann so etwas ähnliches:
    Die meisten Hoster setzen nach www die Kundennr. ein
    /var/www/[KundenNr]/html      bzw.    /var/www/[KundenNr]/html/wordpress
    Dieser Pfad wird später in die .htaccess-Datei eingetragen für den Verweis auf die .htpasswd

    2.) Passwort-Datei erstellen
    Hierfür kann einfach einen Online Passwort-Generator verwendet werden.  z.B. htpasswdgenerator.de oder redim.de Das erzeugte Passwort hat dann in etwa folgendes Aussehen:
    Benutzer: klaus
    Passwort: klein
    Ergibt den Eintrag für die .htpasswd:

      klaus:$apr1$t3iyb10q$7/mp1fTeqSwM.TMnfyjnk1
    

    Eine neue Datei erzeugen und die Zeichenfolge einfügen,  speichern und in den Wordpress-Ordner hochladen. 


    3.) .htaccess anpassen
    Die Datei am einfachsten per FTP herunterladen und mit einem Editor öffnen.
    Dann folgendes an Anfang in die Datei einfügen.
    Hinweis: in diesem Bsp. liegt die Wordpress-Installation im Unterordner /wordpress Liegt die Installation wie scho noben erwähnt im Basisorder einfach /wordpress löschen

    <IfModule mod_auth.c>
      SetEnvIf Request_URI "^/wordpress/wp-login\.php$" ADMIN_INDEX
      SuthName "Adminbereich"
      SuthType Basic
      AuthUserFile /var/www/[KundenNr]/html/wordpress/.htpasswd
      <Limit GET POST>
        Require valid-user
      </Limit>
      Satisfy any
      Order   allow,deny
      Allow from all
      Deny from env=ADMIN_INDEX
    </IfModule>
    
    # BEGIN WordPress
    # Die Anweisungen (Zeilen) zwischen „BEGIN WordPress“ und „END WordPress“ sind
    # dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
    # Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.
    
    RewriteEngine On
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /wordpress/index.php [L]
    
    # END WordPress
    

     

     

     
  • Eigener Cloudserver mit nextCloud / ownCloud

    NextCloud

    bietet einen einfachen Webinstaller an

    Installation

    • Einfach die setup-nextcloud.php herunterladen
      Zum COMMUNITY PROJECTS herunterscrollen und den  Web Installer  Button anklicken
    • Auf dem eigenen Web-Server einen Unterordner z.B. nextcloud  erzeugen und die setup-nextcloud.php dorthin kopieren
    • Die setup-nextcloud.php auf den eigenen Webadresse aufrufen und Setup durchlaufen
    •  Eine MySQL-Datenbank sollte vorhanden sein
    • Nextcloud an die Datenbank anschließen
    • Fehelrmeldung (Falsche TDL von nextcloud.com mit eingener ersetzen
      -> https://bsp-homepage.de/nextcloud/index.php/core/apps/recommended
    • Zusatzpakete installieren (wenn gewünscht)
    • Infofenster durchlaufen oder mit X abbrechen

    Speicherort der Daten

    In /nextcloud/data/user sind die Dateien der einzelnen Benutzer abgglegt

    Windows-App

    PC-Seite:
    Die Desktop-App von ownCloud oder nextCloud herunterladen und installieren.
    - App mit ownCloud verbinden. (URL siehe WebDAV ↓ )
    - Lokalen und Server-Ordner festlegen.

    WebDAV

    https://bsp-seite.de/nextcloud/remote.php/webdav/

     


    OwnCloud

    Wenn nur Bilder oder Videos Online betrachtet werden soll ist ownClound als Wahl geeignet. Auch als Backupserver für lokale Dateien des PC's via Desktop-App funktioniert ebenfalls gut.
    Sobald aber aus dem "Markt" zusätzliche Apps installiert werden muss ein Enterprise-Key gekauft werden. Sonst kommt immer ein nerfiges Popup.

    Installation

    Einfach auf Download.zip klicken und die owncloud-complete-latest.zip herunterladen.

    A) SSH Zugriff auf den Webspace vorhanden (schnelles entpacken)
    - Per FTP die Zip-Datei auf den Webspace kopieren.
    - Per SSH auf den Server einloggen und in den html-Ordner wechseln
    - Vorab kurz prüfen ob die Daten in der Zip im owncloud Ordner liegen.
       -> Wenn ja, die Zip mit  unzip -q owncloud-complete-latest.zip   entpacken (Dauert etwas).
       -> Nein, ownclound Ordner erzeugen  mkdir owncloud  und  unzip -q owncloud-complete-latest.zip -d ownloud  in den Ordner entpacken

    B) Kein SSH
    - Per FTP den kompletten Ordner ownclound in der Zip-Datei auf den Webspace kopieren (Dauert deutlich länger).

    • https://bsp-homepage.de/owncloud/ aufrufen, Admin-Benutzer und Passwort angeben
    • Eine MySQL-Datenbank erzeugen
    • Nextcloud an die Datenbank anschließen
    • Ggf. Desktop app herunterladen und verbinden
    • Zusatzpakete instalalieren (wenn gewollt)
    • Infofenster durchlaufen oder mit X abbrechen

    Market (Zusatzapps)

    Freie Apps
     * Lizenzeintrag "GNU Affero General Public License"
    - Kalender (eigener Menüpunkt)
    - Gallery (eigener Menüpunkt)
    - Music (eigener Menüpunkt)
    - PDF-Viewer (PDF's online betrachten)
    - OnlyOffice (?)
    - Files clipboard (Datien zwischen den Ordnern kopieren und verschieben
    -
    -  Ransomware Protection
    Kommerzielle Apps (Benötigen Eterprise Key)
     * Sind in der Lizenzinfo makriert "ownCloud Commercial License", "AGPL"
    - Tasks [Aufgaben] (eigener Menüpunkt)
    - Notes
    - Microsoft Office Online
    - Microsoft Teams Bridge
    -

    Speicherort der Daten

    in /owncloud/data/user sind die Dateien der einzelenen Benutzer abgglegt

    Windows-App

    PC-Seite:
    Die Desktop-App von ownCloud oder nextCloud herunterladen und Installieren.
    - App mit ownCloud verbinden. (URL siehe WebDAV ↓ )
    - Lokalen und Server-Ordner festlegen.

    WebDAV

    Unten links Einstallungen:
    https://bsp-homepage.de/owncloud/remote.php/dav/files/user/

     

     
  • Zugriffskontrolle via .htaccess auf Webseite(n)

    Der Artikel befasst sich mit der Zugriffskontrolle auf Serverebene (Apache) schon bevor der Angreifer zum Login der Webseite gelangt.
    Diese hier beschriebene Zugriffskontrolle soll ein guter Kompromiss zwischen Sicherheit und Komfort und administrativem Aufwand sein.

    Geregelt wird dies über die .htacces und .htpasswd Dateien.

    Viele CMS haben einen Backendbereich den es vor lästigen Zugriffsversuchen zu schützten gilt.
    Der Backendbereich ist durch das CMS immer via Benutzernamen und Passwort geregelt.
    Z.B. bei Joomla ist der Admin-Bereich auf einen fixen Unterordner bsp-homepage.de/administrator/ festgelegt. Diese kann also nicht geändert werden und ist somit dem Zugriff aus dem Internet erstmal offen. Dies kann zu Bruteforce Attacken führen und mache Provider legen dann den Zugang für ein paar Minuten lahm.

    Ein einfacher Ansatz ist eine Beschränkung auf bestimme Benutzer oder freigegebene IP-Adresse bzw. IP-Bereiche.

    Hieraus ergeben sich ein paar (kleine) administrative Problemchen.

    A.) IP-Bereichsfreigabe
    Hat ein Admin immer die selbe öffentliche IP dann kann nur diese freigegeben werden. (Diese Szenario ist äußert unwarscheinlich) bei einem Tarif für einen privaten DSL zugang.
    -> Freigabe für diese IP z.B.  allow from 93.192.15  
    Freigabe für IP-Bereiche. In der Ripe-Liste sind alle IP-Bereiche der jeweiligen Provider samt Bereiche aufgelistet
    -> Freigabe für die Deutsche Telekom AG (Auszug)
    allow from 93.192.0/10  
    allow from 62.154.0.0/16  

    Diese Liste kann dann immer wenn ein IP-Bereich eines Providers noch nicht erfasst ist um diesen Eintrag erweitert werden.

    B.) Benutzername & Passwort
    Wenn also außerhalb der IP-Bereichsfreigabe auf den Adminbereich Zugriff gewährt werden soll, eine Benutzerabfrage auslösen.
    -> Benutzerfreigabe via .htwaswd
    1. Möglichkeit ein einziges Masterpasswort auf Serverebene für den Backendbereich zu generieren und dieses dann alles Benutzer zukommen lassen.
    2. In der Praxis wird es nicht durchsetzbar sein 2 verschiede Passwörter pro Benutzer zu vergeben. Hierzu benötigt es ein wenig mithilfe der Benutzer.
        Einfach über diese Maske ein Passwort-Eintrag erzeugen und dem Admin zum Eintrag in die .htpasswd zukommen lassen.
       Hier ein Passwortgenerator: https://htpasswdgenerator.de/

    Das Ergebis könnte dann in etwa so aussehen:
    .htaccess

    AuthName "Adminbereich"
    Order deny,allow
    Deny from all
    
    # Erlaubte IP-Bereiche
    # Deutsche Telekom AG (Auszug IP-Bereiche)
    # allow from  91.0.0.0/10
    allow from 93.192.0.0/10
    
    # IP-Bereiche ist nicht gültig dann Benutzername abfragen
    AuthType Basic
    AuthUserFile /var/www/kundexyz/html/administrator/.htpasswd
    require valid-user
    satisfy any
    

     
    .htpaswd

    nurichdarfrein:$1$A2m8L7dS$NVgiwFpivjqTKbwsru.Mi0
    

     

     
  • Semmelknödel

    Rezept für 6 Knödel

    Zutaten:

    200 g (4) Semmel (alte getrocknete)
    1 Bund Petersilie (gekreuselt)
    2 Eier
    1 große Zwiebel
    300 ml Milch
    1 TL Salz
    Pfeffer & Muskatnuss

    Zubereitung:

    Die Semmel in 0,5-1 cm kleine Würfel zerteilen und in eine Schüssel geben.
    Die Zwiebel in kleine Würfel schneiden und über die Semmel zersteuen.
    Die verquirlten Eier über die Semmelstückchen geben,
    Mit nicht der kompletten Milch übergiesen, Salzen, Pfeffern und Muskat dazugeben.

    Jetzt das Ganze gut durchmischen.
    Eine halbe Stunde alles zeihen lassen.

    Danach alles durchkleten.
    Vermutlich ist der Teig noch zu trocken dann die restliche Milch hinzugeben. Bei einem zu feuchten Teig kann mit Semmelbrösen das Genze wieder verfestigt werden.

    Die Brotstückchen sollten jetzt gut zerdrückt werden können.
    Je nach persönlicher vorliebe die Stückchen mehr zerdrücken.

    Die Semmelknödel formen und in simmerndes gesalzenes Wasser geben. Nach ~ 20Min. sollten alle oben schwimmen und fertig.

     

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.