2024年12月7日 星期六

Audit time change using Wazuh

 Reference

https://documentation.wazuh.com/current/user-manual/capabilities/system-calls-monitoring/audit-configuration.html

Wazuh Agent

#yum install -y auditd

Add the rules below in the /etc/audit/audit.rules 

#vi /etc/audit/audit.rules

-a always,exit -F arch=b64 -S execve -F euid=0 -F key=audit-wazuh-c

-a always,exit -F arch=b32 -S execve -F euid=0 -F key=audit-wazuh-c

#service auditd restart

# date -s 21:00

#cat /var/log/audit/audit.log  | grep "time-change"

type=SYSCALL msg=audit(1733576563.174:2622): arch=c000003e syscall=227 success=yes exit=0 a0=0 a1=7ffd0aff8820 

a2=67544c34 a3=44b82fa09b5a53 items=0 ppid=5531 pid=6299 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 

sgid=0 fsgid=0 tty=pts0 ses=15 comm="date" exe="/usr/bin/date" key="time-change"ARCH=x86_64 SYSCALL=clock_settime 

AUID="user.name" UID="root" GID="root" EUID="root" SUID="root" FSUID="root" EGID="root" SGID="root" FSGID="root"


Demo




2024年11月30日 星期六

LINE Messaging API / Perl CGI 試作

延續前筆記 

使用 Ngrok + Perl 串接 LINE BOT Webhook

https://xrcd2.blogspot.com/2024/11/ngrok-perl-line-bot-webhook.html


參考 URL

https://github.com/line/line-bot-sdk-perl

https://github.com/line/line-bot-sdk-perl/blob/master/eg/echo.psgi

舊筆記

https://xrcd2.blogspot.com/2016/12/perl-line-api.html


Perl CGI 程式抄改參考

https://m.runoob.com/perl/perl-cgi-programming.html


[root@node1 cgi]# pwd

/var/www/html/cgi


[root@node1 cgi]# cat index.html 

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>CGI Demo</title>

</head>

<body>

<form action="/cgi/perl.cgi" method="post">

Subject: <input type="text" name="subject">  <br />

 

Body: <input type="text" name="body" />

<input type="submit" value="submit" />

</form>

</body>

</html>


[root@node1 cgi]# cat perl.cgi 

#!/usr/bin/perl

 

local ($buffer, @pairs, $pair, $name, $value, %FORM);

# 讀取 POST 資訊

$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;

if ($ENV{'REQUEST_METHOD'} eq "POST")

{

   read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

}else {

   $buffer = $ENV{'QUERY_STRING'};

}

# 讀取 POST/FORM 資訊

@pairs = split(/&/, $buffer);

foreach $pair (@pairs)

{

   ($name, $value) = split(/=/, $pair);

   $value =~ tr/+/ /;

   $value =~ s/%(..)/pack("C", hex($1))/eg;

   $FORM{$name} = $value;

}

$subject = $FORM{subject};

$body  = $FORM{body};

 

print "Content-type:text/html\r\n\r\n";

print "<html>";

print "<head>";

print '<meta charset="utf-8">';

print '<title>CGI DEMO</title>';

print "</head>";

print "<body>";

print "<h2>$subject <P> $body</h2>";

print "</body>";

print "</html>"; 


linebot();


1;



sub linebot {

use LINE::Bot::API;

use LINE::Bot::API::Builder::SendMessage;

use JSON;

use utf8;

use Encode;


$subject = Encode::decode('UTF-8', $subject);

$body = Encode::decode('UTF-8', $body);


($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

$now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min, $sec);


$bot = LINE::Bot::API->new(

   channel_secret       => '738feXXXXXXXXXXXXXXXXXXXXcf43d7',

   channel_access_token => 'dqlhcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1cDnyilFU=',

);


$ToLineUid = "U74ea4fXXXXXXXXXXXXXXXXXXX2d866b1";

#$ToLineGid = "C39bdb2XXXXXXXXXXXXXXXXXX6bb32dea";


$messages = LINE::Bot::API::Builder::SendMessage->new;

$messages->add_text( text => "$now \n $subject \n $body " );

$bot->push_message($ToLineUid, $messages->build);


}

[root@node1 cgi]# 


Demo









Synology NAS [  DSM Alert Demo ]







2024年11月24日 星期日

使用 Ngrok + Perl 串接 LINE BOT Webhook

 使用 Ngrok + Perl 串接  LINE BOT Webhook


復習一下舊筆記 [使用 Perl 建立 Line API 運用環境]

https://xrcd2.blogspot.com/2016/12/perl-line-api.html

一樣是用 Linux + Ngrok + Perl 組合而來,

只是將 CentOS Linux 6.8 + Perl 5.25 (2016年)

改成 Oracle Linux 9.5 + Perl 5.32 (2024年)   

參考 URL

https://github.com/line/line-bot-sdk-perl

https://github.com/line/line-bot-sdk-perl/blob/master/eg/echo.psgi


筆記如下:


dnf install perl-App-cpanminus.noarch

cpanm install  Plack

cpanm install LINE::Bot::API


修改 echo.psgi  這一支程式,

在 62 行處    $messages->add_text( text => $event->text );

下方插入這行  $messages->add_text( text => $from_id); 


讓 Line BOT Webhook 回傳 User_ID / Group_IP 資訊,可供程式傳送訊息使用.

其 User_ID 在 登入 https://developers.line.biz 後應該也是可以找到它的.

但 Group_ID 應該是僅能透過 Webhook 取出.(印象中)

所以才會有這個筆記的,而這個筆記取得的Group_ID,以後是用來發 Alert 用的.


另外也是要透過 https://ngrok.com 取得 ngrok 這支程式,

用它來將內部主機執行 echo.psgi 產出的  LINE BOT Webhook 服務

轉成一個在 Internet 上的 LINE BOT Webhook 服務.


如果不修改程式,也是可以在  plackup echo.psgi  後看到它. 

看到的資訊如下所示:



[root@node1 tmp]# plackup --host 127.0.0.1 --port 9090  echo.psgi


HTTP::Server::PSGI: Accepting connections at http://127.0.0.1:9090/

message_id=536187989014348097, type=message(U74ea4XXXXXXXXXXXXXXXXXXXXXX866b1), 

reply_token=774fa992d5bb449da5e829402b5b101e, timestamp=1732424250192 at /tmp/line-bot.pl line 50.

127.0.0.1 - - [24/Nov/2024:12:57:31 +0800] "POST /perl/callback HTTP/1.1" 200 2 "-" "LineBotWebhook/2.0"


message_id=536188075936579603, type=message(C39bdbXXXXXXXXXXXXXXXXXXXXXX32dea), 

reply_token=bce83ae760d8480f8823d47c0a2ab5b4, timestamp=1732424302131 at /tmp/line-bot.pl line 50.

127.0.0.1 - - [24/Nov/2024:12:58:22 +0800] "POST /perl/callback HTTP/1.1" 200 2 "-" "LineBotWebhook/2.0"



開二個 SSH Session (1) / (2) 


(1) 執行  echo.psgi

 plackup --host 127.0.0.1 --port 9090  echo.psgi 


(2) 執行 ngrok 

ngrok config add-authtoken 2pHSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1EU7g

ngrok http 9090 


================================================


ngrok                                                                                                                                                                                                                                                         (Ctrl+C to quit)

                                                                                                                                                                                                                                                                              

Sign up to try new private endpoints https://ngrok.com/new-features-update?ref=private                                                                                                                                                                                        

                                                                                                                                                                                                                                                                              

Session Status                online                                                                                                                                                                                                                                        

Account                       XXXXXXXXXXX@gmail.com (Plan: Free)                                                                                                                                                                                                             

Version                       3.18.4                                                                                                                                                                                                                                          

Region                        Japan (jp)                                                                                                                                                                                                                                      

Latency                       39ms                                                                                                                                                                                                                                            

Web Interface                 http://127.0.0.1:4040                                                                                                                                                                                                                           

Forwarding                    https://992c-XXX-XXX-XXX-XXX.ngrok-free.app -> http://localhost:9090                                                                                                                                                                             

                                                                                                                                                                                                                                                                              

Connections                   ttl     opn     rt1     rt5     p50     p90                                                                                                                                                                                                     

                              0       0       0.00    0.00    0.00    0.00                                                                                                                                                                                                    

                                                                                                                                                                                                                                                                              

==============================================


將 Forwarding   https://992c-XXX-XXX-XXX-XXX.ngrok-free.app 資訊填入   https://developers.line.biz  內.

即可完成   使用 Ngrok + Perl 串接  LINE BOT Webhook                                                                                                                                                                          

Demo                                                                                           









2024年11月23日 星期六

Try Ansible & AWX with Oracle Linux 9.5

dnf install oracle-epel-release-el9.x86_64 -y 

dnf install ansible.noarch  ansible-core.x86_64  -y 

dnf install dnf-utils zip unzip git gcc gcc-c++ nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip wget  -y 


[root@ol95 ansible]# ansible --version 

ansible [core 2.14.17]

  config file = /etc/ansible/ansible.cfg

  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']

  ansible python module location = /usr/lib/python3.9/site-packages/ansible

  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections

  executable location = /usr/bin/ansible

  python version = 3.9.19 (main, Sep 11 2024, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-2.0.1)] (/usr/bin/python3)

  jinja version = 3.1.2

  libyaml = True

[root@ol95 ansible]# 



[root@ol95 ansible]# pwd

/etc/ansible

[root@ol95 ansible]# ll

total 8

-rw-r--r--. 1 root root  614 Oct 26 08:56 ansible.cfg

-rw-r--r--. 1 root root 1175 Oct 26 08:56 hosts

drwxr-xr-x. 2 root root    6 Oct 26 08:56 roles

[root@ol95 ansible]# 


Server + Node 

useradd devops 

su - devops 

ssh-keygen -t rsa  

cd ~

cd .ssh

cat id_rsa

cat id_rsa.pub


[devops@node1 ~]$ cd .ssh/

[devops@node1 .ssh]$ ll

total 8

-rw------- 1 devops devops 2602 Nov 23 12:09 id_rsa

-rw-r--r-- 1 devops devops  566 Nov 23 12:09 id_rsa.pub

[devops@node1 .ssh]$ vi authorized_keys

[devops@node1 .ssh]$ 


Server

vi /etc/ansible/ansible.cfg 

[defaults]

interpreter_python = auto_silent


vi /etc/ansible/hosts

[node]

node1  ansible_ssh_user=devops ansible_ssh_private_key_file=/home/devops/.ssh/id_rsa ansible_ssh_host=192.168.100.20


test

[root@ol95 installer]#   ansible node --list-host

  hosts (1):

    node1

[root@ol95 installer]# 


 ansible node1 -m ping

 ansible node1 -m shell -a "ip add | grep 192---


vi /etc/ansible/roles/playbook.yml 


- hosts: all

  become: yes


  tasks:


    - name: Install system updates for linux systems

      yum:

        name: '*'

        state: latest

        update_cache: yes.168.100"



[root@ol95 ansible]# ansible-playbook /etc/ansible/roles/playbook.yml 


PLAY [all] *************************************************************************************************************************************************************************************************************


TASK [Gathering Facts] *************************************************************************************************************************************************************************************************

ok: [node1]


TASK [Install system updates for linux systems] ************************************************************************************************************************************************************************

ok: [node1]


PLAY RECAP *************************************************************************************************************************************************************************************************************

node1                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   


[root@ol95 ansible]# 


===> Ansible CLI Demo End 

===========================

 ===> Ansible WEB UI Start 


 dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

 dnf remove -y runc

dnf install -y docker-ce --nobest

systemctl enable docker.service

 systemctl start docker.service

systemctl status docker.service

docker info


[root@ol95 installer]# pwgen -N 1 -s 40

lRE99RGu6rHwjKW7n3gyFHFCLERXc46EFG7ZKPjR

pip install docker

pip install docker-compose

pip install docker==6.1.3

pip install requests==2.31.0



cd /opt

wget https://github.com/ansible/awx/archive/refs/tags/17.1.0.zip

unzip 17.1.0.zip

cd /opt/awx-17.1.0/installer

[root@ol95 installer]# pwd

/opt/awx-17.1.0/installer

[root@ol95 installer]# ll

total 20

-rw-r--r-- 1 root root  172 Mar 10  2021 build.yml

-rw-r--r-- 1 root root  437 Mar 10  2021 install.yml

-rw-r--r-- 1 root root  518 Nov 23 15:30 inventory

drwxr-xr-x 7 root root   99 Mar 10  2021 roles

[root@ol95 installer]# 


vi  inventory

================================

localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python3"


[all:vars]

dockerhub_base=ansible

awx_task_hostname=awx

awx_web_hostname=awxweb

postgres_data_dir="/opt/myawx/pgdocker"

host_port=80

host_port_ssl=443

docker_compose_dir="/opt/myawx/awxcompose"

pg_username=awx

pg_password=awxpass

pg_database=awx

pg_port=5432

admin_user=admin

admin_password=password

create_preload_data=True

secret_key=lRE99RGu6rHwjKW7n3gyFHFCLERXc46EFG7ZKPjR

awx_official=true

project_data_dir=/opt/myawx/projects


====================

ansible-playbook -i inventory install.yml



docker ps



[root@ol95 ~]#    docker ps

CONTAINER ID   IMAGE                COMMAND                  CREATED       STATUS       PORTS                                     NAMES

6b8175957a67   ansible/awx:17.1.0   "/usr/bin/tini -- /u…"   4 hours ago   Up 2 hours   8052/tcp                                  awx_task

31b242c48f79   ansible/awx:17.1.0   "/usr/bin/tini -- /b…"   4 hours ago   Up 2 hours   0.0.0.0:80->8052/tcp, [::]:80->8052/tcp   awx_web

2b996f3365cf   redis                "docker-entrypoint.s…"   4 hours ago   Up 2 hours   6379/tcp                                  awx_redis

bf8e0975fa68   postgres:12          "docker-entrypoint.s…"   4 hours ago   Up 2 hours   5432/tcp                                  awx_postgres

[root@ol95 ~]# 



docker exec -it awx_task bash


useradd awx 


usermod -aG wheel awx


docker exec -it awx_web bash


useradd awx 


usermod -aG wheel awx



bash-4.4# pwd

/var/lib/awx/projects/update

bash-4.4# ls -la

total 8

drwxr-xr-x 2 awx awx  44 Nov 23 10:29 .

drwxrwxrwx 3 awx awx  20 Nov 23 10:29 ..

-rwxrwxrwx 1 awx awx 172 Nov 23 08:33 playbook.yml

-rwxrwxrwx 1 awx awx 172 Nov 23 09:28 update.yml

bash-4.4# 

bash-4.4# exit
exit
[root@ol95 installer]# netstat -antlp | grep LISTEN
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      5645/sshd: tony.che 
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      868/cupsd           
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2335/docker-proxy   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      869/sshd: /usr/sbin 
tcp        0      0 127.0.0.1:4330          0.0.0.0:*               LISTEN      2010/pmlogger       
tcp        0      0 127.0.0.1:44321         0.0.0.0:*               LISTEN      1277/pmcd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      868/cupsd           
tcp6       0      0 ::1:4330                :::*                    LISTEN      2010/pmlogger       
tcp6       0      0 ::1:6010                :::*                    LISTEN      5645/sshd: tony.che 
tcp6       0      0 :::80                   :::*                    LISTEN      2351/docker-proxy   
tcp6       0      0 :::22                   :::*                    LISTEN      869/sshd: /usr/sbin 
tcp6       0      0 ::1:44321               :::*                    LISTEN      1277/pmcd           
[root@ol95 installer]# 





 














2024年10月25日 星期五

Execute Perl WEB CGI in Oracle Linux 9


dnf install oracle-epel-release-el9.x86_64

dnf install  mod_perl

dnf install  perl-CGI perl-CPAN perl-HTTP-Tiny.noarch perl-JSON perl-Encode.x86_64 


vi /etc/httd/conf.d/perl.conf


#PerlModule ModPerl::Registry

##PerlModule ModPerl::PerlRun


Alias /cgi /var/www/html/cgi

<Directory /var/www/html/cgi>

    #SetHandler perl-script

    AddHandler perl-script .pl

    AddHandler perl-script .cgi

    PerlResponseHandler ModPerl::Registry

    ## PerlResponseHandler ModPerl::PerlRun

    PerlOptions +ParseHeaders

    Options +ExecCGI

    Order allow,deny

    Allow from all

</Directory>


systemctl restart httpd 


Test reference


https://hostingultraso.com/help/centos/implementing-cgi-perl-ruby-centos

Creating your first Perl CGI script

Now create the following Perl CGI script file by opening the new file vi /var/www/cgi-bin/perl-test.cgi and putting in the following content:
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard);
print header;
my $now = localtime;
print start_html(-title=>'Server time via Perl CGI'),
h1('Time'), p("The time is $now"),
end_html;



https://www.geeksforgeeks.org/perl-get-vs-post-in-cgi/


Example:

<html> 
<head></head> 
<body> 
<b> Search Your Query:</b><br> 
<FORM action="Gfg_get.pl" method = "GET"> 
<input type="text" name="q" size="20" maxlength="120"> 
<input type="submit" value="Search"><br> 
<input type="radio" name="l" value="Web" checked>Web 
<input type="radio" name="l" value="India">IND 
</FORM> 
</body> 
</html> 




Perl-CGI script for the above GET method form:


#!"c:\xampp\perl\bin\perl.exe" 
    
$buffer = $ENV{'QUERY_STRING'}; 
#split information into key/value pairs 
@pairs = split(/&/, $buffer); 
foreach $pair (@pairs)  
    ($name, $value) = split(/=/, $pair); 
    $value =~ tr/+/ /; 
    $value =~ s/%([a-fA-F0-9] [a-fA-F0-9])/pack("C", hex($1))/eg; 
    $value =~ s/~!/ ~!/g; 
    $FORM{$name} = $value; 
  
$SearchTerm = $FORM{'q'}; 
$Location = $FORM{'l'}; 
  
print "Content-type:text/html\r\n\r\n"; 
print "<html>"; 
print "<head>"; 
print "<title>GeeksForGeeks - Get Method</title>"; 
print "</head>"; 
print "<body>"; 
print "<h3>Hello You searched '$Location' for '$SearchTerm'<br> 
Few Matches Found!<br> 
<br> 
Match 1<br> 
Match 2<br> 
Match 3<br> 
Match 4<br> 
etc.....</h3>"; 
print "</body>"; 
print "</html>"; 
  
1; 



My LAB Test Demo








2024年10月13日 星期日

DIY 即時通訊系統(IM)以Openfire(XMPP)為例

Instant Messaging (IM)

Extensible Messaging and Presence Protocol (XMPP)

wiki 上的說明

https://zh.wikipedia.org/zh-tw/XMPP

url 在這裡可以看到一些關於 xmpp 的資訊與相關軟體

https://xmpp.org/

家中測試環境

Server Linux 安裝 openfire (openfire-4.9.0-1.noarch.rpm)

https://www.igniterealtime.org/projects/openfire/

Java 

openjdk version "11.0.24" 

Client Windows 安裝 spark (spark_3_0_2-with-jre.msi)

https://igniterealtime.org/projects/spark/

Clinet Linux 使用程式語言 Perl

參考 URL



Demo







MySQL

[root@WAZUH init.d]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 152
Server version: 10.5.22-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE xmpp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> CREATE USER 'xmpp'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON xmpp.* TO 'xmpp'@'localhost';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> 


Java

[root@WAZUH src]#  dnf install java-11-openjdk.x86_64


[root@WAZUH src]# cat /etc/environment
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.24.0.8-2.0.1.el9.x86_64/"



[root@WAZUH src]# echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-11.0.24.0.8-2.0.1.el9.x86_64/

[root@WAZUH src]# java -version 
openjdk version "11.0.24" 2024-07-16 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.24.0.8-2.0.1) (build 11.0.24+8-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.24.0.8-2.0.1) (build 11.0.24+8-LTS, mixed mode, sharing)
[root@WAZUH src]# 


Openfire

[root@WAZUH bin]# rpm -ql openfire-4.9.0-1.noarch
/etc/init.d/openfire
/etc/sysconfig/openfire
/opt/openfire
/opt/openfire/LICENSE.html
/opt/openfire/README.html
/opt/openfire/bin
/opt/openfire/bin/embedded-db-viewer.sh
/opt/openfire/bin/embedded-db.rc
/opt/openfire/bin/openfire.sh
/opt/openfire/bin/openfirectl
/opt/openfire/changelog.html
/opt/openfire/conf
......


Perl


[root@WAZUH src]# dnf search net-xmpp
Last metadata expiration check: 2:22:11 ago on Sun 13 Oct 2024 10:25:38 AM CST.
================================================================================================ Name Matched: net-xmpp ================================================================================================
perl-Net-XMPP.noarch : Net::XMPP - perl XMPP library
perl-Net-XMPP.src : Net::XMPP - perl XMPP library


[root@WAZUH src]# dnf install perl-Net-XMPP
Last metadata expiration check: 2:22:28 ago on Sun 13 Oct 2024 10:25:38 AM CST.
Dependencies resolved.
========================================================================================================================================================================================================================
 Package                                                       Architecture                               Version                                          Repository                                              Size
========================================================================================================================================================================================================================
Installing:
 perl-Net-XMPP                                                 noarch                                     1.05-20.el9                                      ol9_developer_EPEL                                     154 k
Installing dependencies:
 perl-Authen-SASL                                              noarch                                     2.16-25.el9                                      ol9_appstream                                           78 k
 perl-GSSAPI                                                   x86_64                                     0.28-37.el9                                      ol9_appstream                                           74 k
 perl-HTTP-ProxyAutoConfig                                     noarch                                     0.3-27.el9                                       ol9_developer_EPEL                                      27 k
 perl-Net-DNS                                                  noarch                                     1.29-6.el9                                       ol9_appstream                                          542 k
 perl-Tie                                                      noarch                                     4.6-481.el9                                      ol9_appstream                                           41 k
 perl-XML-Stream                                               noarch                                     1.24-20.el9                                      ol9_developer_EPEL                                     108 k

Transaction Summary
========================================================================================================================================================================================================================
Install  7 Packages

Total download size: 1.0 M
Installed size: 1.8 M
Is this ok [y/N]: y

.....


Windows Client GUI




Linux Perl



Perl 程式參考




2024年8月18日 星期日

Synology SFTP + WinScp login with ssh key

使用情境描述: 

(1) 在 Synology  NAS 中,建立一個 ID: backup 的一般使用者,僅可以透過 SFTP 方式,上傳備份資料至 內網的 Synology  NAS 上.

(2) 在內網的各 Windows 主機皆透過 ID: backup 及 ssh key 檔,以 SFTP方式登入 NAS, 上傳備份檔.

(3) 以下測試以 WinSCP UI 方式,進行功能驗證,上線再改用 WinSCP CLI + Batch 進行自動備份.


Synology  NAS/DSM 預設是不能用一般使用者帳號,透過以 SSH 方式登入,所以必需先以管理者ID方式登入,透過 vi 的設定方式,將 ID: backup 暫時可以使用 bash shell login .

(這不是官方正式的作法,而是用一般Linux的操作行為,這裡只是便宜行事)

比較正常的做法-->可能是先將 ID: backup 變成 admin 的群組,在 ID: backup ssh 登入後,生出相關的ssh key 後,再切回一般的使用者群組.


操作記錄如下:



root@DSM:~# su - backup

su: failed to execute /sbin/nologin: No such file or directory


root@DSM:~# vi /etc/passwd


#預設這個帳號是不能登入 ssh 的

backup:x:1027:100::/var/services/homes/backup:/sbin/nologin

#設定成暫時可以 ssh ,在建出 ssh 相關 key 檔後,記得要改回原設定. 

backup:x:1027:100::/var/services/homes/backup:/bin/sh


root@DSM:~# su - backup

backup@DSM:~$ id 

uid=1027(backup) gid=100(users) groups=100(users)


backup@DSM:~$ pwd

/var/services/homes/backup


backup@DSM:~$ ssh-keygen -t rsa 

Generating public/private rsa key pair.

Enter file in which to save the key (/var/services/homes/backup/.ssh/id_rsa): 

Created directory '/var/services/homes/backup/.ssh'.

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /var/services/homes/backup/.ssh/id_rsa

Your public key has been saved in /var/services/homes/backup/.ssh/id_rsa.pub

The key fingerprint is:

SHA256:oCUaIsXjhksKqB2Xcr5ifUhDbsxaCRaTghTuUP5wqlM backup@DSM

The key's randomart image is:

+---[RSA 3072]----+

|o++.             |

|++*              |

|==++o.o          |

|BoBB=+ .         |

|=*E%o.  S        |

|+o. @            |

|o  * +           |

| .+ + .          |

| . . .           |

+----[SHA256]-----+

backup@DSM:~$ pwd

/var/services/homes/backup

backup@DSM:~$ cd .ssh

backup@DSM:~/.ssh$ ll

total 8

drwxrwxrwx+ 1 backup users   32 Aug 18 12:41 .

drwxrwxrwx+ 1 backup users    8 Aug 18 12:41 ..

-rwxrwxrwx+ 1 backup users 2590 Aug 18 12:41 id_rsa

-rwxrwxrwx+ 1 backup users  564 Aug 18 12:41 id_rsa.pub

backup@DSM:~/.ssh$ cat id_rsa.pub > authorized_keys

backup@DSM:~/.ssh$ chmod 700 authorized_keys 

backup@DSM:~/.ssh$ ls -la

total 12

drwxrwxrwx+ 1 backup users   62 Aug 18 12:43 .

drwxrwxrwx+ 1 backup users    8 Aug 18 12:41 ..

-rwx------  1 backup users  564 Aug 18 12:43 authorized_keys

-rwxrwxrwx+ 1 backup users 2590 Aug 18 12:41 id_rsa

-rwxrwxrwx+ 1 backup users  564 Aug 18 12:41 id_rsa.pub

backup@DSM:~/.ssh$ 


backup@DSM:~/.ssh$ cat id_rsa

-----BEGIN OPENSSH PRIVATE KEY-----

..........

KEY......

..............

-----END OPENSSH PRIVATE KEY-----


將上述檔案內容貼回 Windows 內,並存檔預備供 puttygen.exe 轉成 DSM-Backup.ppk 使用.
當然可以用任何習慣的操作行為,將該檔傳回 Windows 也可.不限任何方式.

接下來的操作如下方所示:

https://www.puttygen.com/download-putty

==> puttygen.exe



Import Key ( id_rsa )



==> Save Private Key






   宣告使用 DSM-Backup.ppk 方式 登入 Synology SFTP 服務.




    驗証








2024年8月9日 星期五

ThinkStation P3 Tower + NVIDIA RTX A5000 + Rocky Linux 9.X

 

==> BIOS 

Secure Boot [Disabled]

==> Linux 

dnf install libglvnd-*


Download & Install 

(1) Driver

https://www.nvidia.com/Download/driverResults.aspx/230357/en-us/

==> NVIDIA-Linux-x86_64-550.107.02.run

(2) CUDA Toolkit

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Rocky&target_version=9&target_type=rpm_local

==> cuda-repo-rhel9-12-6-local-12.6.0_560.28.03-1.x86_64.rpm


==> Check 


[root@localhost ~]#  nvidia-smi






2024年6月21日 星期五

How to use OTP Login Windows (VyOS + freeradius + Google Authenticator + pGina)

 安裝及設定參考 URL 如下:

https://hackmd.io/@farmer87/enable_2fa

關於這個主題我之前寫的筆記

https://xrcd2.blogspot.com/2015/03/vyos-openvpn-plugin-otp-sop.html

https://xrcd2.blogspot.com/2016/01/cisco-radius-otp.html

https://xrcd2.blogspot.com/2016/09/vyosopenvpnmfa.html

軟體安裝來源

https://vyos.io

http://pgina.org

手動修改重點:

==> SourceList

deb http://ftp.tw.debian.org/debian bookworm main non-free-firmware

==> freeradius.service

/lib/systemd/system/freeradius.service 執行身份改為 => root


DEMO