Pointing domain utama dengan cloudflare tunnel

Install



curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $VERSION_CODENAME main" | \
  sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update
sudo apt install -y cloudflared

Login

cloudflared tunnel login
cloudflared tunnel create namatunnel

Setelah jalankan cloudflare tunnel login akan muncul url, buka url di browser dan pilih domain yang akan dipakai

Config

buat file /etc/cloudflared/config.yml yang berisi:

tunnel: TUNNEL_ID
credentials-file: /root/.cloudflared/TUNNEL_ID.json

ingress:
  - hostname: domain.id
    service: http://localhost:8080
  - service: http_status:404

tambahkan DNS record:

cloudflared tunnel route dns domain domain.id

cek konfigurasi:

sudo cloudflared --config /etc/cloudflared/config.yml tunnel ingress validate

jalankan sebagai service systemd:

which cloudflared
sudo tee /etc/systemd/system/cloudflared.service >/dev/null <<'EOF'
[Unit]
Description=Cloudflare Tunnel
After=network-online.target
Wants=network-online.target

[Service]
User=root
ExecStart=/usr/local/bin/cloudflared --config /etc/cloudflared/config.yml --no-autoupdate tunnel run
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now cloudflared
sudo systemctl status cloudflared --no-pager

Cek konfigurasi

curl -I https://domain.id

BGP configuration on Juniper

Topologi

IP config

R-100-01
set interface em0 unit 0 family inet address 172.16.10.1/30
set interface em1 unit 0 family inet address 10.1.1.1/30
R-100-02
set interfaces em1 unit 0 family inet address 10.1.1.2/30
R-200-01
set interfaces em0 unit 0 family inet address 172.16.10.2/30
set interfaces em1 unit 0 family inet address 10.2.2.1/30
R-200-02
interfaces em1 unit 0 family inet address 10.2.2.2/30

AS Number config

R-100-01 & R-100-02
set routing-options autonomous-system 100
R-200-01 & R-200-02
set routing-options autonomous-system 200

eBGP Peers config

R-100-01
edit protocols bgp 
set group ebgp-peers 
set neighbor 172.16.10.2 peer-as 200
set type external
R-200-01
edit protocols bgp 
set group ebgp-peers 
set neighbor 172.16.10.1 peer-as 100
set type external

iBGP Peers config

R-100-01
edit protocols bgp
set group ibgp-peers
set neighbor 10.1.1.2
set type internal
R-100-02
edit protocols bgp
set group ibgp-peers
set neighbor 10.1.1.1
set type internal
R-200-01
edit protocols bgp
set group ibgp-peers
set neighbor 10.2.2.2
set type internal
R-200-02
edit protocols bgp
set group ibgp-peers
set neighbor 10.2.2.1
set type internal

Set routing policy

Create this policy on all routers

set policy-options policy-statement BGP term 1 from protocol direct
set policy-options policy-statement BGP term 1 then accept
set policy-options policy-statement BGP from protocol direct
set policy-options policy-statement BGP then accept

Assigning Routing Policy

R-100-01 & R-200-01

set protocols bgp group ebgp-peers export BGP
set protocols bgp group ibgp-peers export BGP

R-100-02 & R-200-02

set protocols bgp group ibgp-peers export BGP

Verification

root@R-100-01> show bgp summary  
Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 2 Peers: 2 Down peers: 1
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0                
                      1          0          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.1.1.2                100          0          0       0       0     1:15:32 Establ
172.16.10.2             200        172        171       0       0     1:15:29 Establ
 inet.0: 0/1/1/0

root@R-100-01>
root@R-100-01# run ping 10.2.2.2  
PING 10.2.2.2 (10.2.2.2): 56 data bytes
64 bytes from 10.2.2.2: icmp_seq=0 ttl=63 time=1.431 ms
64 bytes from 10.2.2.2: icmp_seq=1 ttl=63 time=1.352 ms
64 bytes from 10.2.2.2: icmp_seq=2 ttl=63 time=1.301 ms
64 bytes from 10.2.2.2: icmp_seq=3 ttl=63 time=1.147 ms
64 bytes from 10.2.2.2: icmp_seq=4 ttl=63 time=1.230 ms
64 bytes from 10.2.2.2: icmp_seq=5 ttl=63 time=1.363 ms
^C
--- 10.2.2.2 ping statistics ---
6 packets transmitted, 6 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.147/1.304/1.431/0.093 ms

[edit]
root@R-100-01#
root@R-100-01# run traceroute 10.2.2.2  
traceroute to 10.2.2.2 (10.2.2.2), 30 hops max, 52 byte packets
1  172.16.10.2 (172.16.10.2)  2.083 ms  0.604 ms  0.403 ms
2  10.2.2.2 (10.2.2.2)  1.330 ms  1.004 ms  1.096 ms

[edit]
root@R-100-01#

Cisco Packet Tracer Opensuse

Karena di web netacad Cisco Packet Tracer hanya tersedia untuk Ubuntu/Debian dengan format .deb, jadi secara default tidak tersedia di distro rpm based. Untuk itu perlu memasang secara manual.

Download

Download file installasi untuk Ubuntu/Debian dari web netacad

Unpack

mkdir /tmp/cpt
cp CiscoPacketTracer_820_Ubuntu_64bit.deb /tmp/cpt 
ar -xv CiscoPacketTracer_820_Ubuntu_64bit.deb 
mkdir control
tar -C control -Jxf control.tar.xz 
mkdir data
tar -C control -Jxf data.tar.xz 
cd data

Install

cp -r usr /
cp -r opt /

untuk Tumbleweed jalankan ini:

ln -s /usr/lib64/libdouble-conversion.so.3.1.5 /usr/lib64/libdouble-conversion.so.1

Update icon

xdg-desktop-menu install /usr/share/applications/cisco-pt.desktop
xdg-desktop-menu install /usr/share/applications/cisco-ptsa.desktop
update-mime-database /usr/share/mime
gtk-update-icon-cache --force --ignore-theme-index /usr/share/icons/gnome
xdg-mime default cisco-ptsa.desktop x-scheme-handler/pttp

Buat symlink

ln -sf /opt/pt/packettracer /usr/local/bin/packettracer

~~~

Setup fail2ban zimbra

Before start

sudo -u zimbra -
zmprov mcf +zimbraMailTrustedIP 127.0.0.1 +zimbraMailTrustedIP {IP of Server}
zmcontrol restart

Install fail2ban

yum install epel-release -y
yum install fail2ban -y

Buat jail.conf

nano /etc/fail2ban/jail.local

[DEFAULT]
    # "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts.
    # Fail2ban will not ban a host which matches an address in this list.
    # Several addresses can be defined using space (and/or comma) separator.
    #ignoreip = 127.0.0.1/8 ::1 10.137.26.29/32
    ignoreip = 127.0.0.1/8 IP-ADDRESS-OF-ZIMBRA-SERVER/32 WHITELIST-IP

    banaction = route

Buat file jail untuk Zimbra

nano /etc/fail2ban/jail.d/zimbra.local

[zimbra-smtp]
    enabled = true
    filter = zimbra-smtp
    port = 25,465,587
    logpath = /var/log/zimbra.log
    maxretry = 3
    findtime = 86400
    bantime = 86400
    action = route

    [zimbra-web]
    enabled = true
    filter = zimbra-web
    port = 80,443,7071,9071
    logpath = /opt/zimbra/log/mailbox.log
    maxretry = 5
    findtime = 86400
    bantime = 86400
    action = route

Buat file jail untuk SSH

nano /etc/fail2ban/jail.d/sshd.local

 [sshd]
    enabled = true
    port = 22
    maxretry = 3
    findtime = 600
    bantime = 3600

Buat filter untuk Zimbra

nano /etc/fail2ban/filter.d/zimbra-web.conf

[Definition]
    failregex = .*ip=<HOST>;.*authentication failed for .*$
    ignoreregex =

nano /etc/fail2ban/filter.d/zimbra-smtp.conf

[Definition]
failregex = postfix\/submission\/smtpd\[\d+\]: warning: .*\[<HOST>\]: SASL \w+ authentication failed: authentication failure$
    
postfix\/smtps\/smtpd\[\d+\]: warning: .*\[<HOST>\]: SASL \w+ authentication failed: authentication failure$

ignoreregex =

Enable service

systemctl restart fail2ban
systemctl status fail2ban
systemctl enable fail2ban

Cek statu

fail2ban-client status

Ban & unban

fail2ban-client set sshd banip 10.137.26.29
fail2ban-client set sshd unbanip 10.137.26.29

Sekian

~~~

Manually Build Vyos

Kenapa kita perlu build Vyos manual? karena di website Vyos hanya tersedia versi Rolling Release untuk versi gratis.

Berikut langkah untuk build vyos

Requirements

  • Debian Jessie untuk VyOS 1.2 (crux)
  • Debian Buster untuk VyOS 1.3 (equuleus)
  • Debian Bookworm untuk VyOS 1.4 (sagitta)
  • Debian Bookworm untuk VyOS 1.5 & rolling release

Clone repository


# VyOS 1.2 (crux)
$ git clone -b crux --single-branch https://github.com/vyos/vyos-build

# VyOS 1.3 (equuleus)
$ git clone -b equuleus --single-branch https://github.com/vyos/vyos-build

# VyOS 1.4 (sagitta)
$ git clone -b sagitta --single-branch https://github.com/vyos/vyos-build

# VyOS 1.5 (circinus,current)
$ git clone -b current --single-branch https://github.com/vyos/vyos-build

Proses Build

$ cd vyos-build

# VyOS 1.2 (crux) and VyOS 1.3 (equuleus)
$ ./configure --architecture amd64 --build-by "[email protected]"
$ sudo make iso


# VyOS 1.4 (sagitta)
$ sudo make clean
$ sudo ./build-vyos-image iso --architecture amd64 --build-by "[email protected]"

# VyOS 1.5 (circinus,current)
$ sudo make clean
$ sudo ./build-vyos-image generic --architecture amd64 --build-by "[email protected]"

Setelah selesai maka hasil build ada di folder build

~~~

Build Kernel openSUSE 15.4

Karena openSUSE Leap mengutamakan kestabilan maka untuk dapat mencoba kernel 6.* saya harus menunggu cukup lama, pada tulisan kali ini saya akan coba build kernel 6.* di openSUSE Leap 15.4

Persiapan

Install Requirements dan buat folder yang diperlukan

sudo zypper ref && sudo zypper update 
sudo zypper in -t pattern devel_basis bc openssl openssl-devel dwarves rpm-build libelf-devel elfutils-libelf-devel
sudo mkdir ~/kernel

Download Kernel

Download kernel dari https://kernel.org/, saat blog ini dibuat kernel terbaru yaitu 6.0.9

cd ~/kernel
sudo mv ~/Download/linux*.tar.xz .
tar -xafv linux*.tar.xz

Konfigurasi

cd linux*
sudo find /boot/ \( -iname "*config*" -a -iname "*`uname -r`*" \) -exec cp -i -t ./ {} \;
mv *`uname -r`* .config

Berikan comment pada CONFIG_MODULE_SIG_KEY di file *.config*

ls /boot | konfigurasi grep
sudo nano .config
sudo make menuconfig

Build Kernel

sudo make clean

Selanjutnya adalah proses yang paling lama, saya sendiri memakan waktu sekitar 4 jam. Pada langkah ini silahkan sesuaikan dengan spesifikasi hardware,

sudo make rpm-pkg

Setelah selesai silahkan cek dengan perintah

sudo ls /usr/src/packages/RPMS/x86_64/ | grep kernel

Install Kernel

Setelah semua selesai saatnya install kernel yang sudah saya build

sudo su -c "zypper in /usr/src/packages/RPMS/x86_64/kernel*.rpm"

Setelah berhasil install saatnya saya update bootloader dan reboot

grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot


Cek apakah sudah berhasil terpasang dengan perintah

uname -r

Do it at your own risk

~~~

Allow Winbox Discovery

Secara default winbox di openSUSE tidak menampilkan Neighbors karena terblokir oleh firewall. Kita harus allow manual.

sudo firewall-cmd --permanent --service=winbox-discover --add-port=5678/udp
sudo firewall-cmd --zone=public --add-service=winbox-discover --permanent 
sudo firewall-cmd --reload

Akses SSH Dengan Google Authenticator

Ada banyak cara yang dapat dilakukan untuk mengamankan akses SSH ke server, salah satunya dengan Google Authenticator.

Installasi

sudo apt install libpam-google-authenticator -y

Tambahkan Google Authenticator ke HP

google-authenticator -s ~/.ssh/google_auth

Setelah muncul QR code scan dengan Google Authenticator pada HP, Kemudian masukan kode yang muncul ke terminal, dan ikuti panduannya hingga selesai.

Konfigurasi 2FA SSH
Tambahkan baris berikut pada file /etc/pam.d/sshd

auth required pam_google_authenticator.so secret=/home/${USER}/.ssh/google_auth nullok

Edit baris berikut pada file /etc/ssh/sshd_config

ChallengeResponseAuthentication no

menjadi

ChallengeResponseAuthentication yes

Restart SSH

sudo systemctl restart sshd

~~~