# Allmänt Linux

# chmod fusklista

<table border="1" id="bkmrk-v%C3%A4rde-utseende-f%C3%B6rkl" style="border-collapse: collapse; width: 115.952%; height: 402px;"><colgroup><col style="width: 33.3731%;"></col><col style="width: 33.3731%;"></col><col style="width: 33.3731%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**Värde**</td><td style="height: 29.7969px;">**Utseende**</td><td style="height: 29.7969px;">**Förklaring**</td></tr><tr><td>400</td><td>-r--------.</td><td>- **Ägare (owner)**: `r--` = **4** (läsrättighet)
- **Grupp (group)**: `---` = 0 (inga rättigheter)
- **Övriga (others)**: `---` = 0 (inga rättigheter)

</td></tr><tr style="height: 170.812px;"><td style="height: 170.812px;">600</td><td style="height: 170.812px;">-rw-------</td><td style="height: 170.812px;">ägaren har **read** och **write**, ingen annan har något

- `6` = read (4) + write (2) = 6 → för ägaren
- `0` = inga rättigheter → för grupp
- `0` = inga rättigheter → för andra

</td></tr><tr><td>660</td><td>-rw-rw----</td><td>- **ägaren** läsa och ändra filen
- **medlemmar i filens grupp** läsa och ändra filen
- **alla andra användare** inte läsa, ändra eller köra filen

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;"> </td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;"></td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;"></td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">  
</td></tr></tbody></table>

# SSH

## Flaggor

-v = Verbose, använd vid felsökning  
-O exit host.jehrlander.net = stänga master session mot hosten

## error in libcrypto mot nätverksutrustning (Cisco)

Får man ex. `ssh_dispatch_run_fatal: Connection to 1.2.3.4 port 22: error in libcrypto` vid försök att SSHa kan det betyda att OS:et (i det här fallet Red Hat) inte längre accepterar SSH-koppel gentemot utrustning som har SSH-nycklar med gamla protokoll, ex. RSA.

För att komma runt problemet, generera istället nya SSH-nycklar. På ASA kan man göra det med ex. `crypto key generate ecdsa elliptic-curve 256` för att då istället använda ECDSA som krypteringsprotokoll. Verifiera med `show crypto key mypubkey ecdsa`.

## SSH-Nyckel

SSH nycklar kan användas för att inte behöva slå användarnamn och lösenord. Man genererar ett nyckelpar, en privat och en publik nyckel. Den publika nyckeln distribuerar man till enheter man vill logga in på och den privata har man kvar på sin maskin och använder för autentisering. Det är viktigt att man skyddar den privata nyckeln med exempelvis lösenord.

Man skapar en ny nyckel med

```
ssh-keygen -t rsa -C "förnamn.efternamn@jehrlander.net"
```

Under skapande av nyckeln sätter man ett lösenord. Man kan sedan skicka den publika nyckeln till mottagande server med:

```
ssh-copy-id -i ~/.ssh/id_rsa.pub jehrlander@10.0.0.5
```

Uppdatera sedan .ssh/config med IdentityFile (exempel finns nedan under config) eller SSH:a och specifisera nyckelfil genom `ssh -i ~/.ssh/<nyckelfil> <användarnamn>@<server>`.

Önskar man byta lösenord på sin SSH-nyckeln kan man göra det med `ssh-keygen -p -f ~/.ssh/id_rsa`.

## config

SSH-konfig finns i filen `~/.ssh/config`. Redigera med textredigerare. Se exempelkonfiguration:

```
Match Host "rt-*,sw-*
 ! Matchar olika hostnamn

Host router
 Hostname router.jehrlander.net
 ! För att specifisera specifikt hostname
 User jehrlander
 ! Specifisera användare som används vid SSH-anrop
 IdentityFile ~/.ssh/ida_rsa
 ! Används SSH-nyckel för inlogg så pekar man ut den här
 KexAlgorithms +ssh-rsa
 ! Specifisera SSH-krypteringsalgoritmer. Använd + för att lägga till, använder man = så hårdkodar man istället och accepterar inget annat
 Ciphers=aes256-cbc,aes256-ctr
 Specifisera specifika cipher. Hårdkodat med =
 ProxyJump jumpserver.jehrlander.net
 ! Ska man använda en server som jumphost specifiserar man det man ProxyJump
 GSSAPIClientIdentity user@AD.JERHLANDER.NET
 ! Används kerberos för inloggning kan man specifisera det här. Kräver att man har en kerberosbiljett vid inloggning
```

# KeePassXC

## CLI

Det finns ett CLI.

Använd med `keepassxc-cli [ options ] FILNAMN.kdbx`.

<table border="1" id="bkmrk-kommando-f%C3%B6rklaring-" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>**Kommando**</td><td>**Förklaring**</td></tr><tr><td>keepassxc-cli ls FILNAMN.kdbx</td><td>Lista alla namn på entires. Sedan kan man använda namnet för att kopiera lösenordet.</td></tr><tr><td>  
</td><td>  
</td></tr><tr><td>  
</td><td>  
</td></tr><tr><td>  
</td><td>  
</td></tr><tr><td>  
</td><td>  
</td></tr><tr><td>  
</td><td>  
</td></tr><tr><td>  
</td><td>  
</td></tr><tr><td>  
</td><td>  
</td></tr><tr><td>  
</td><td>  
</td></tr></tbody></table>

# DNS

Se DNS-inställningar med `resolvectl status`.

Töm DNS-cache med följande kommando:

```bash
sudo resolvectl flush-caches
```

# PowerDNS

Från en PowerDNS installerad på RHEL.

## Installation

Installera med `sudo dnf install -y pdns`. Installera backend med `sudo dnf install -y pdns-backend-sqlite`.

Kontrollera version:

```
pdns_server --version
Nov 02 07:26:46 Loading '/usr/lib64/pdns/libbindbackend.so'
PowerDNS Authoritative Server 5.0.7 (C) PowerDNS.COM BV
```

Kontrollera att tjänst finns:

```
systemctl status pdns
○ pdns.service - PowerDNS Authoritative Server
     Loaded: loaded (/usr/lib/systemd/system/pdns.service; disabled; preset: disabled)
     Active: inactive (dead)
       Docs: man:pdns_server(1)
             man:pdns_control(1)
             https://doc.powerdns.com
```

Konfiguration läggs i `/etc/pdns/pdns.conf`.

Installera databas med `sudo dnf install -y sqlite`.

Skapa databaskatalog:` sudo mkdir -p /var/lib/powerdns`

Skapa databasen:

```
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 \
< /usr/share/doc/pdns/schema.sqlite3.sql
```

Verifiering av databas:

```
sudo ls -lh /var/lib/powerdns/
total 76K
-rw-r-----. 1 root root 76K Nov  2 07:35 pdns.sqlite3

sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 ".tables"
comments        domainmetadata  records         tsigkeys      
cryptokeys      domains         supermasters  

```

Sätt behörigheter:

```
sudo chown -R pdns:pdns /var/lib/powerdns
sudo chmod 750 /var/lib/powerdns
sudo chmod 640 /var/lib/powerdns/pdns.sqlite3
```

Öppna och konfigurera backend:

```
sudo vi /etc/pdns/pdns.conf
! Lägg till 
# Backend
launch=gsqlite3
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3

# Listen address
local-address=1.3.3.7, 127.0.0.1
local-port=53

# Allow DNS queries
allow-axfr-ips=1.3.3.8/#2
```

Om det finns någon annan launch i pdns.conf så kommer tjänsten inte starta. Sök efter launch och ta bort. Ha med 127.0.0.1 så att servern själv kan göra anrop till sig själv.

### Installation - API

```
sudo vi /etc/pdns/pdns.conf
# Enable API
api=yes

# API key
api-key=BYT_TILL_EN_LANG_SLUMPMASSIG_NYCKEL

# Enable webserver
webserver=yes

# Listen address
webserver-address=1.3.3.7

# API port
webserver-port=8081

# Allow API access from trusted network
webserver-allow-from=127.0.0.1,192.168.0.0/16
```

Starta sedan om tjänsten med sudo systemctl restart pdns.

Verifiera att den lyssnar på tcp8081:

```
sudo ss -lntp | grep 8081
LISTEN 0      10      1.3.3.7:8081      0.0.0.0:*    users:(("pdns_server",pid=115833,fd=7))
```

### Installation - sekundär server

Se till att den primära är inställd på att vara primary och inte native:

```
sudo pdnsutil zone set-kind labb.x.x.se primary
```

Konfa i /etc/pdns/pdn.conf på server1, använd IP-adressen till server2:

```
# Allow DNS queries
allow-axfr-ips=192.168.0.14

# Notify DNS2
also-notify=192.168.0.14
```

Installera den andra servern enligt guiden ovan. Se sedan till att den är sekundär och pekar på server 1:

```
sudo vim /etc/pdns/pdns.conf 
# Backend
launch=gsqlite3
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3

# Listen address
local-address=192.168.0.14, 127.0.0.1
local-port=53

# Secondary DNS
secondary=yes

# Allow notify from primary
allow-notify-from=192.168.0.10

```

Skapa samma zon som finns på server 1:

```
sudo pdnsutil zone create-secondary labb.underzon.doman.se 192.168.0.10
```

Gör en första zone transfer:

```
sudo pdns_control retrieve labb.underzon.doman.se
```

## Uppsättning

Skapa en zon med: `sudo pdnsutil create-zone example.com`. Lista sen zonen med `sudo pdnsutil list-all-zones`.

Skapa records med: `sudo pdnsutil add-record example.com dns01 A 192.168.100.10`

Lista alla records i en zon med: `sudo pdnsutil list-zone labb.jehrlander.se`

Ett SOA-record behövs. Skapa genom att redigera hela filen med sudo `EDITOR=vim pdnsutil zone edit labb.jehrlander.net`. Lägg till:

```
labb.x.x.se.  3600  IN  SOA  dns1.x.x.se. hostmaster.labb.x.x.se. (
    2026110201 ; Serial
    300        ; Refresh
    60         ; Retry
    604800     ; Expire
    300        ; Minimum
)
```

Manuell zone-transfer på server 2: `sudo pdns_control retrieve labb.x.x.se`

För att manuellt öka SOA serial: `sudo pdnsutil zone increase-serial zon.test.se`

Skicka notify från primär till sekundär manuellt: `sudo pdns_control notify-host labb.x.x.se 192.168.0.11`

Redigera DNS-fil direkt: `sudo EDITOR=vim pdnsutil zone edit labb.x.x.se`