2024年10月5日 星期六

MySQL Workbench 管理資料庫

 MySQL Workbench 管理資料庫

  1. 說明

使用 MySQL Workbench 工具,透過 SSH 通道來連接遠端 MySQL 伺服器的安全方式管理遠端資料庫。

  1. 環境

遠端伺服器

  • Ubuntu 22.04

  • MySQL 8.0.38

    • /etc/mysql/mysql.conf.d/mysqld.cnf,bind-address = 127.0.0.1, 此設定為限本機連線。

  • SSH

Local 機器

  • Windows 11

  • MySQL Workbench


  1. 設定

  • SSH 伺服器設定「AllowTCPForwarding yes」

AllowTCPForwarding 是 SSH 伺服器的一個設定項目,用來控制是否允許客戶端透過 SSH 連線建立 TCP 轉發。

當此設定為 yes 時,SSH 客戶端可以建立 SSH 隧道,將本地端口轉發到遠端伺服器的其他端口。這意味著,你可以透過 SSH 連線,將本地應用程式(例如 MySQL Workbench)連接到遠端伺服器的 MySQL 資料庫。


安全性考量

風險: 允許 TCP 轉發可能會帶來一些安全風險,例如,惡意使用者可能利用 SSH 隧道進行端口掃描或其他攻擊。

建議:

  • 限制訪問: 只允許特定的用戶或 IP 地址進行 SSH 連接。

  • 使用 SSH 密鑰: 避免使用密碼,使用 SSH 密鑰進行身份驗證。

  • 定期更新 SSH 服務器: 及時修復安全漏洞。

  • 監控 SSH 日誌: 定期檢查 SSH 日誌,發現異常活動。



$ sudo vim /etc/ssh/sshd_config 

AllowTCPForwarding yes  #將此行之註解符號刪除,如未使用在註解。

$ sudo sshd -t

$ sudo systemctl restart sshd


  •  MySQL Workbench 中設定 SSH 連線

建立新連線:

開啟 MySQL Workbench,點擊「+」按鈕建立新的連線。

選擇「Standard TCP/IP over SSH」作為連線類型。


填寫連線資訊:

  • SSH 主機名: 輸入 SSH 伺服器的 IP 地址或域名,以及端口號(通常為 22)。

  • SSH 用戶名: 輸入用於 SSH 連線的用戶名。

  • SSH 密碼: 輸入 SSH 密碼。建議使用 SSH 密鑰來增強安全性。

  • SSH 密鑰文件: 如果使用 SSH 密鑰,指定密鑰文件的路徑。

  • MySQL 主機名: 通常為 127.0.0.1,表示連接本地 MySQL 伺服器。

  • MySQL 伺服器端口: 通常為 3306。


測試連線:

點擊「Test Connection」按鈕測試連線是否成功。


2022年8月5日 星期五

Windows Server 2022 、 IIS 10、遠端桌面,停用TLS 1.0、TLS 1.1協定、停用3DES加密套件、停用Diffie Hellman KeyExchangeAlgorithms。

停用TLS 1.0、TLS 1.1協定、停用3DES加密套件、停用Diffie Hellman KeyExchangeAlgorithms。

環境:
Windows Server 2022

IIS 10
已啟用HTTPS或主機有啟用遠端桌面

修改方式:
透過修改機碼的方式,先執行regedit.exe,並至路徑[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL]。

停用TLS 1.0
1.在Protocols目錄下新增機碼,名稱輸入「TLS 1.0」。
2.在TLS 1.0目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
5.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用TLS 1.1
1.在Protocols目錄下新增機碼,名稱輸入「TLS 1.1」。
2.在TLS 1.1目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
5.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用3DES加密套件
1.在Ciphers目錄下新增機碼,名稱輸入「Triple DES 168」。
2.於Triple DES 168目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用 Diffie Hellman KeyExchangeAlgorithms
1.在KeyExchangeAlgorithms目錄下新增機碼,名稱輸入「Diffie-Hellman」。
2.於Diffie-Hellman目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

2022年5月10日 星期二

Ubuntu SFTP設定

環境:
OS:Ubuntu 22.04 Server

目的:
  • 使用加密連線
  • 使用 SFTP 協定登入 OpenSSH 伺服器時,預設使用者可以任意的在檔案系統間遊走,因安全的理由透過 chroot() 的方法將使用者限制在(chroot) 特定目錄下,讓他不能跑到其他目錄瀏覽資料。
  • 設定完成之帳號,僅可使用SFTP 協定登入,無法使用ssh登入。

步驟:
1.確認openssh版本>4.8
$ ssh -V

2.建立SFTP用群組
$ sudo groupadd sftp_group

3.將使用者加入SFTP用群組
$ sudo usermod -G sftp_group <使用者帳號>

4.查帳號是否正確加入群組
$ grep sftp_group /etc/group

5.確認home目錄與有者權限為root:root,755。
$ ls -ld /home
drwxr-xr-x   8 root root  4096 May 10 01:08 home

6.確認使用者home目錄與有者權限為root,755。
$ ls -ld /home/<使用者帳號>
drwxr-xr-x 6 root <使用者帳號> 4096 Apr 10 03:47 <使用者帳號>

$ sudo chown root /home/<使用者帳號>

7.禁止使用者以ssh登入shell
$ sudo vim /etc/shells
加入/bin/false

$ sudo usermod -s /bin/false <使用者帳號>

8.設定SSH Config檔案
$ sudo vim /etc/ssh/sshd_config

#Subsystem       sftp    /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       PermitTTY no
#       ForceCommand cvs server

Match Group sftp_group
        ChrootDirectory %h
        X11Forwarding no
        AllowTcpForwarding no
        PermitTTY no
        ForceCommand internal-sftp

9.測試config後重啟sshd
$ sudo sshd -t
$ sudo systemctl restart sshd


10使用FileZilla以22port連線測試

2021年5月25日 星期二

Ubuntu Apache 2.4 設定X-Frame-Options,避免點選劫持 (clickjacking) 的攻擊。

環境:
OS:Ubuntu 20.04 Server
Apache:2.4


設置此標頭將防止其他站點將來自該站點的頁面嵌入為框架。 這可以防禦點擊劫持攻擊,避免點選劫持 (clickjacking) 的攻擊。(防止釣魚網站透過iframe來籤入自己的網站。)


X-Frame-Options回應標頭可用值有:
DENY:瀏覽器拒絕當前頁面載入任何Frame頁面
SAMEORIGIN:frame頁面的地址只能為同源域名下的頁面
ALLOW-FROM:origin為允許frame載入的頁面地址


設定方式:
(1)啟用mod_headers
sudo a2enmod headers
sudo systemctl restart apache2

(2)設定
sudo vim /etc/apache2/conf-enabled/security.conf (預設已啟用此modules)

#將下列一行註解移除
Header set X-Frame-Options: "sameorigin"

(3)重啟服務
sudo systemctl restart apache2

2020年6月17日 星期三

Apache 2.4 新增HTTP VirtualHost

環境:
OS:Ubuntu 18.04 Server
Apache2.4
網站目錄:/www/example1
domain name:www.example1.com

1.增加網站目錄之權限設定
cd /etc/apache2/conf-available/
sudo vim example1.conf

#於example1.conf中加入下列設定,可參考apache2.conf中之<Directory /var/www/>之設定。
<Directory /www/example1>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

2.啟用設定
sudo a2enconf example1
sudo systemctl reload apache2

3.新增HTTP之VirtualHost
cd /etc/apache2/sites-available
sudo cp 000-default.conf example1.conf
sudo vim example1.conf

#內容設定如下
<VirtualHost *:80>
    ServerName www.example1.com
    ServerAdmin admin@www.example1.com
    DocumentRoot /www/example1

    ErrorLog ${APACHE_LOG_DIR}/error_example1.log
    CustomLog ${APACHE_LOG_DIR}/access_example1.log combined
</VirtualHost>

4.啟用網站
sudo a2ensite example1.conf
sudo systemctl reload apache2

5.試試瀏覽網頁 http://www.example1.com

2019年9月11日 星期三

於windows 10 中讀取副檔名為HLP的說明檔(以Powerbuilder 10.5之說明檔為例)

環境:windows 10 64bit


1. 先取得XP作業系統內之winhlp32.exe,我使用的版本為5.1.2600.5512。(我於windows 7 中取得的winhlp32.exe檔案是無法成功使用,會出現錯誤訊息「(9009)」。)




















2. 取得PowerBuilder 10.5的說明檔,預設路徑如下:
C:\Program Files (x86)\Sybase\PowerBuilder 10.5\Help\PBHLP105.HLP


3. 將PBHLP105.HLP按滑鼠左鍵拖曳到winhlp32.exe上後放開滑鼠左鍵,即會以winhlp32.exe開啟PBHLP105.HLP檔案。









4. 成功於windows 10 中開啟HLP檔。

2018年10月27日 星期六

中油國光牌環保去漬油

在中油直營站購買環保去漬油0.5L只要35元,適用電子、鐘錶、懷爐、家電產品清洗用,其他管道如網購、大賣場、五金行等售價皆高於此價格,中油直營站滿多的,所以有需要的朋友直接去中油直營站購買即可,還會開發票。





2018年5月9日 星期三

php7.2連Sybase資料庫

環境:
OS:Ubuntu 18.04 Server
Apache2.4
PHP7.2

因PHP7.0以後無sybase相關function,需透過freetds為連線介接,再使用PDO相關function進行連線。
1. 安裝相關套件
sudo apt install php7.2-sybase
2.設定freetds
sudo vim /etc/freetds/freetds.conf [global]
        client charset = UTF-8
        charset = utf8

[sybase_db]
        host = db.com.tw
        port = 5000
        tds version = 5.0

3. 使用PDO function測試是否連線成功。
<?php
$db_host = "sybase_db";
$db_user = "帳號";
$db_pass = "密碼";
$db_select = "dbname";

$dbconnect = "dblib:host=".$db_host.";dbname=".$db_select;
$pdo_sybase = new PDO($dbconnect, $db_user, $db_pass);

$sql = "select * from sybase_table where 1=1";
$res = pdo_sybase->query($sql);
        while ($row = $res->fetch()){
                print_r($row);
        }
?>

Ubuntu 停用IPv6或以IPv4連線優先

環境:
OS:Ubuntu 18.04 Server

在預設狀況下,ipv4、ipv6是同時啟用的,但常發現會優先使用ipv6連線時連線很慢,等到ipv6無法連線時,才會改為ipv4連線,在這過程中已經浪費一些時間。改善此狀況有下列兩種方式。

方式一:停用ipv6,此方法網路上很多說明,但個人並不建議用此方法。
1. 編輯 sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX="ipv6.disable=1"     #修改此行
2. 執行 sudo update-grub2
3. 重開機後以ifconfig 檢查是否關閉ipv6

方式二:以ipv4優先,此方法較理想,不需停用ipv6。
1. 編輯 sudo vim /etc/gai.conf
#For sites which prefer IPv4 connections change the last line to
precedence ::ffff:0:0/96  100      #移除此行註解

2. ping google.com.tw 檢查是否以ipv4連線

2018年4月18日 星期三

Ubuntu Apache 2.4 正確使用conf、mods、sites等設定檔。

環境: 
OS:Ubuntu 14.04 Server 
Apache:2.4

一、目錄結構
/etc/apache2/
|-- apache2.conf
|-- conf-available
|       |-- *.conf
|-- conf-enabled
|-- mods-available
|       |-- *.conf
|-- mods-enabled
|-- sites-available
|       |-- *.conf
|-- sites-enabled


apache2.conf 是主要的設定檔。
conf-available/*.conf 是「可用的」config檔。
conf-enabled/*.conf 是「已啟用的」的config檔(皆為超連結)。
mods-available/*.conf 是「可用的」config檔。
mods-enabled/*.conf 是「已啟用的」的config檔(皆為超連結)。
sites-available/*.conf 是「可用的」站台設定檔。
sites-enabled/*.conf 是「已啟用的」的台設定檔(皆為超連結)。

注意!conf-enabled、mods-enabled、sites-enabled內的檔案只是連結至所對應「*-available」目錄中的設定檔,所以要設定檔案請在「*-available」目錄中設定,最後再用啟用設定檔的指令,在「*-enabled」目錄中建立連結。

二、啟用及關閉設定
1. conf啟用及關閉範例
啟用 sudo a2enconf charset
關閉 sudo a2disconf charset

2. mod啟用及關閉範例

啟用 sudo a2enmod userdir
關閉 sudo a2dismod userdir

3. site啟用及關閉範例


啟用 sudo a2ensite ssl

關閉 sudo a2dissite ssl

三、重啟Apache
1. 測試 Apache 設定檔有沒有錯誤,看到 Syntax OK, 就可以啟動apache2。
apache2ctl configtest

2. 重新啟動。
sudo service apache2 restart



2017年3月12日 星期日

Android如何正確處理 WebView SSL 錯誤處理

●官方說明:
自 2016 年 11 月 25 日起,只要新的應用程式或更新內容含有這個SSL Error Handler安全性漏洞,一律禁止在 Google Play 發佈。

如要解決這個問題,請更新應用程式的程式碼,在伺服器提供的憑證符合預期時叫用 SslErrorHandler.proceed(),不符合預期時則叫用 SslErrorHandler.cancel()。


●以往大家都在WebView的onReceivedSslError事件中直接忽略檢查,使應用程式含有SSL Error Handler安全性漏洞。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    handler.proceed();
}


●現在應該要正確的處理onReceivedSslError事件,才可在 Google Play 發佈。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    SslCertificate sslCertificate = error.getCertificate();

    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("SSL 憑證錯誤");
    builder.setMessage ("無法驗證伺服器SSL憑證。\n仍要繼續嗎?");
    builder.setPositiveButton("繼續", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.proceed();
        }
    });
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.cancel();
        }
    });

    final AlertDialog dialog = builder.create();
    dialog.show();
}

2016年9月20日 星期二

Windows Server 2012 R2、 IIS 8.5、遠端桌面,停用SSL 3.0、TLS 1.0、TLS 1.1協定、停用RC4、3DES加密套件、停用Diffie Hellman KeyExchangeAlgorithms

SSL 3.0、TLS 1.0、TLS 1.1 加密協定存在中間人攻擊弱點,RC4、3DES加密套件有漏洞、停用Diffie Hellman KeyExchangeAlgorithms,如果網站有使用HTTPS、主機有啟用遠端桌面者,強烈建議關閉。

環境:
Windows Server 2012 R2
IIS 8.5
已啟用HTTPS或主機有啟用遠端桌面

修改方式:
透過修改機碼的方式,先執行regedit.exe,並至路徑[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL]。

停用SSL 3.0
1.在Protocols目錄下新增機碼,名稱輸入「SSL 3.0」。
2.在SSL 3.0目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用TLS 1.0
1.在Protocols目錄下新增機碼,名稱輸入「TLS 1.0」。
2.在TLS 1.0目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用TLS 1.1
1.在Protocols目錄下新增機碼,名稱輸入「TLS 1.1」。
2.在TLS 1.1目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用RC4加密套件
1.在Ciphers目錄下新增機碼,名稱輸入「RC4 128/128」。
2.於RC4 128/128目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用3DES加密套件
1.在Ciphers目錄下新增機碼,名稱輸入「Triple DES 168」。
2.於Triple DES 168目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用 Diffie Hellman KeyExchangeAlgorithms
1.在KeyExchangeAlgorithms目錄下新增機碼,名稱輸入「Diffie-Hellman」。
2.於Diffie-Hellman目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

2016年7月21日 星期四

CentOS禁止從遠端以root帳號登入

說明:root帳號可以從遠端登入是危險的,在管理上也會有問題,所以應該限制root帳號從遠端登入。


系統版本:CentOS 5.11

1.修改/etc/ssh/sshd_config
PermitRootLogin no (預設為yes)

2.重新啟動 sshd
/etc/init.d/sshd restart

2016年4月16日 星期六

Redmine加入Gitolite的 Git Repository

環境:
Ubuntu + Redmine + Gitolite3
Gitolite所管理的目錄為/home/git

說明:
git repository在Gitolite的管理下,預設只有git帳號才可存取,Redmine並無權限存取Gitolite控制的repository,所以需調整權限使Redmine可以存取。

Redmine是由Apache執行,所以是由www-data帳號在執行,為了使www-data帳號可存取git目錄,需將www-data帳號加入至git群組中,並修改Gitolite預設的上傳權限使git群組可存取。

步驟:
1. 將用戶www-data加入至git群組中。
sudo usermod -a -G git www-data

2. 修改Gitolite預設上傳時的權限,修改/home/git/.gitolite.rc檔案。
UMASK => 0077,
改為
UMASK => 0027,


3. 允許git群組存取repositories資料夾。(群組權限增加R、X)
sudo chmod g+rx /home/git
sudo chmod g+rx /home/git/repositories

4.如有已上傳之repository,請變更權限。(群組權限增加R、X)
sudo chmod g+rx -R /home/git/repositories/YourRepo

5.於Redmine中設定repository的位置即可。

2015年9月28日 星期一

PowerBuilder使用saveas()函數列印成PDF

1. 先下載及安裝Ghostscript。(如PowerBuilder是32位元者,必須安裝32位元版本。)
2. Windows 10 作業系統,先自HP官網下載及解壓縮HP Postscript印表機驅動程式。

3. 新增一部名稱為「Sybase DataWindow PS」的印表機。
  • 開啟控制台->裝置和印表機->新增印表機->新增本機印表機。
  • 印表機連接埠,請選擇「使用現有的連接埠」,並且選擇「FILE:(列印至檔案)」。
  • 印表機的驅動程式可以選擇任一款機型的印表機,只要印表機名稱最後是「PS」結尾即可。(製造商HP,印表機名稱中最後是「PS」者)  (windows 10 作業系統者,請選「從磁片安裝(H)...」,選擇HP Postscript印表機驅動程式目錄進行安裝。
  • 最後將此印表機命名為「Sybase DataWindow PS」。切記,大小寫及空格都要一致,也不可打錯字。 
  • 如果提示「Windows無法驗證此驅動程式的發行者」,請點「仍然安裝此驅動程式」繼續執行。
  • 成功後會出現一台名為「Sybase DataWindow PS」的印表機。
4. PowerBuilder已可使用saveas()函數列印成PDF類型檔案了。

2015年9月4日 星期五

phpmailer Fatal error: Class 'SMTP' not found

使用phpmailer寄送SMTP信件時,發生Fatal error: Class 'SMTP' not found錯誤。

原因:程式執行時找不到class.smtp.php檔案,故顯示無法找到'SMTP' Class。

解決方式:phpmailer 5.2.8開始,需使用「require 'PHPMailerAutoload.php';」的方式,次檔案將會自動引入「class.phpmailer.php」、「class.smtp.php」檔案。

無法使用Gmail的SMTP服務寄送郵件

程式開發時,常常會有使用Gmail的SMTP服務寄信的需求,當程式設定都是正確的時候,但是執行時總是出現SMTP connect failed的問題,可以檢查Gmail的下列設定,此設定是必需經過google允許,才能使用Gmail的SMTP服務寄信。

1.Gmail-> 設定->設定->帳戶和匯入->變更帳戶設定->其他 Google 帳戶設定。

 

 2.登入和安全性->已連結的網站與應用程式。



 3. [允許安全性較低的應用程式] 設定處於啟用狀態->設定為開啟。