Wireshark : Netzwerkanalyse - Capture Remote Host (*Ubuntu)

Ich habe hier einen kleinen Server am laufen der mir als Gateway dient. Dieser läuft ohne GUI und ein tcpdump ist nicht so schön zu lesen wie der Output von Wireshark. Da ich aber keine GUI installieren wollte der Weg über remote Wireshark ;-)

Wenn noch nicht passiert installieren wir erstmal Wireshark
sudo apt install wireshark
jetzt erstellen wir eine PIPE auf der Kiste auf der Wireshark läuft
mkfifo /tmp/remote-wire
dann können wir auch schon Wireshark starten
wireshark -k -i /tmp/remote-wire
# Erklärung Parameter
# -k starte sofort das capturing
# -i definiert das interface hier ist es die PIPE
jetzt noch eine ssh Verbindung aufbauen und alles in die PIPE leiten
ssh root@GATEWAY-IP "tcpdump -s 0 -U -n -w - -i ens9 not port 22" > /tmp/remote-wire
ens9 ist bei mir die Netzwerkkarte ins Internet.

Auf dem Remote System muss natürlich tcpdump installiert sein.
apt install tcpdump
In meinem Beispiel muss root der ssh Zugang erlaubt werden. Das kann in der Datei /etc/ssh/sshd_config erledigt werden. Dort den Parameter PermitRootLogin auf yes setzen.
PermitRootLogin yes
Der Parameter PermitRootLogin yes sollte nur auf Testsystemen aktiviert sein für einen produktiven Einsatz sollte das NICHT gesetzt werden

Ansible : Schleifen realisieren

Der Eintrag dient mir hauptsächlich als Gedächtnisstütze, braucht man nicht jeden Tag :-)

Eine einfache Schleife mit einem Counter von 1 bis 4 kann man so realisieren.
- hosts: localhost
  tasks:
    - name: loop test
      debug:
        msg: "{{ item }}"
      with_sequence: count=4
Liefert dann
TASK [loop test] ***************************************************************************************************
ok: [localhost] => (item=1) => {
    "msg": "1"
}
ok: [localhost] => (item=2) => {
    "msg": "2"
}
ok: [localhost] => (item=3) => {
    "msg": "3"
}
ok: [localhost] => (item=4) => {
    "msg": "4"
}

Verschachtelte Schleifen mit 2 dics kann man so realisieren (in diesem Beispiel wurden Benutzer die Rechte auf MySQL Datenbanken eingetragen)
- hosts: localhost
  tasks:
    - name: loop test
      debug:
        msg: "name {{ item[0] }} db : {{ item[1] }}.*:ALL"
      with_nested:
        - [ 'user01', 'user02' ]
        - [ 'db01', 'db02', 'db03' ]
Liefert dann
TASK [loop test] ***************************************************************************************************
ok: [localhost] => (item=[u'user01', u'db01']) => {
    "msg": "name user01 db : db01.*:ALL"
}
ok: [localhost] => (item=[u'user01', u'db02']) => {
    "msg": "name user01 db : db02.*:ALL"
}
ok: [localhost] => (item=[u'user01', u'db03']) => {
    "msg": "name user01 db : db03.*:ALL"
}
ok: [localhost] => (item=[u'user02', u'db01']) => {
    "msg": "name user02 db : db01.*:ALL"
}
ok: [localhost] => (item=[u'user02', u'db02']) => {
    "msg": "name user02 db : db02.*:ALL"
}
ok: [localhost] => (item=[u'user02', u'db03']) => {
    "msg": "name user02 db : db03.*:ALL"
}

Jetzt gibt es noch die Möglichkeit mit inner und outer loop zu arbeiten. Gestartet wird dann das playbook outer_loop.yaml

outer_loop.yaml
- hosts: localhost
  tasks:
    - include_tasks: inner_loop.yaml
      with_sequence: count=4
      loop_control:
        loop_var: IDX
inner_loop.yaml
- debug:
    msg: "create directory /opt/{{ item}}-{{ IDX }}"
  with_items:
    - dic1
    - dic2
    - dic3
Das liefert dann
TASK [debug] *******************************************************************************************************
ok: [localhost] => (item=dic1) => {
    "msg": "create directory /opt/dic1-1"
}
ok: [localhost] => (item=dic2) => {
    "msg": "create directory /opt/dic2-1"
}
ok: [localhost] => (item=dic3) => {
    "msg": "create directory /opt/dic3-1"
}

TASK [debug] *******************************************************************************************************
ok: [localhost] => (item=dic1) => {
    "msg": "create directory /opt/dic1-2"
}
ok: [localhost] => (item=dic2) => {
    "msg": "create directory /opt/dic2-2"
}
ok: [localhost] => (item=dic3) => {
    "msg": "create directory /opt/dic3-2"
}

TASK [debug] *******************************************************************************************************
ok: [localhost] => (item=dic1) => {
    "msg": "create directory /opt/dic1-3"
}
ok: [localhost] => (item=dic2) => {
    "msg": "create directory /opt/dic2-3"
}
ok: [localhost] => (item=dic3) => {
    "msg": "create directory /opt/dic3-3"
}

TASK [debug] *******************************************************************************************************
ok: [localhost] => (item=dic1) => {
    "msg": "create directory /opt/dic1-4"
}
ok: [localhost] => (item=dic2) => {
    "msg": "create directory /opt/dic2-4"
}
ok: [localhost] => (item=dic3) => {
    "msg": "create directory /opt/dic3-4"
}

Quellen :
Ansible Documentation - Loops
Ansible Documentation - Complex Loops

Git : User / Passwortabfrage bei git push

Bei dem Versuch ein git push zu machen erfolgt eine Abfrage nach Passwort & User. Der Hash des SSH Keys war aber sauber im Server registriert. Mit dem Befehl git remote -v habe ich mir erstmal die Quellen angesehen. Der initiale pull wurde scheinbar mit https ausgeführt, somit wird der ssh key gar nicht angefragt.
git remote -v
origin https://[URL]/[GRUPPE]/[PROJEKT].git (fetch)
origin https://[URL]/[GRUPPE]/[PROJEKT].git (push)
Nachdem ich die Quelle auf ssh konfiguriert habe lief auch alles so wie erwartet.
git remote set-url origin git@[FQDN]:[GRUPPE]/[PROJEKT].git
Ein erneutes Abfragen der Konfiguration
git remote -v
origin	git@[FQDN]:[GRUPPE]/[PROJEKT].git (fetch)
origin	git@[FQDN]:[GRUPPE]/[PROJEKT].git (push)

interessanter Trend ...

Habe gerade einen interessanten Trend zum Thema Ansible gefunden, aber schaut selbst.

Trend für Deutschland einsehen bei Google Trends

Ansible : Debian updaten

Hier ein Beispiel für ein Playbook das ein Update auf einem Debian System ausführt.
    - name: Update Repositories and update Distribution to the latest Version
      apt:
        update_cache: yes
        cache_valid_time: 21600
        upgrade: dist
        dpkg_options: 'force-confold,force-confdef'
      register: update_apt
      tags: update_apt
“Sicher ist, dass nichts sicher ist. Selbst das nicht.”
Joachim Ringelnatz