2020年9月18日星期五

Ubuntu 自動下載及應用安全更新

實作環境:Ubuntu 18.04.5 LTS 


1. 安裝unattended-upgrades

apt install unattended-upgrades


2. 檢查狀態

systemctl status unattended-upgrades

unattended-upgrades.service - Unattended Upgrades Shutdown

   Loaded: loaded (/lib/systemd/system/unattended-upgrades.service; enabled; vendor preset: enabled)

   Active: active (running) since Fri 2020-09-18 19:16:16 HKT; 7min ago

     Docs: man:unattended-upgrade(8)

 Main PID: 1107 (unattended-upgr)

    Tasks: 2 (limit: 2165)

   CGroup: /system.slice/unattended-upgrades.service

           └─1107 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal


3.修改設置

nano /etc/apt/apt.conf.d/50unattended-upgrades
取消以下幾項注解

        "${distro_id}:${distro_codename}-security";

...

Unattended-Upgrade::Mail "user@example.com";

...

Unattended-Upgrade::MailOnlyOnError "true";


nano /etc/apt/apt.conf.d/20auto-upgrades

"1"表示自動更新,"0"表示不更新

APT::Periodic::Update-Package-Lists "1";

APT::Periodic::Unattended-Upgrade "1";


4. 測試

unattended-upgrades --dry-run -–debug


如無意外,便完成了。

ref:

https://phoenixnap.com/kb/automatic-security-updates-ubuntu

2020年5月8日星期五

報行dnsexit ipUpdate的setup.pl出現錯誤


報行dnsexit ipupdate的setup.pl出現錯誤

dnsexit ipUpdate 1.7.1

Can't locate Http_get.pm in @INC (you may need to install the Http_get module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.26.1 /usr/local/share/perl/5.26.1 /usr/lib/x86_64-linux-gnu/perl5/5.26 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.26 /usr/share/perl/5.26 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at ./setup.pl line 12.
BEGIN failed--compilation aborted at ./setup.pl line 12.

執行以下:
export PERL5LIB=/location_of_ipupdate/dnsexit/


之後再報行setup.pl就可以了。


參考:https://www.raspberrypi.org/forums/viewtopic.php?t=20844

2017年7月22日星期六

apache errors

在安裝Ubuntu 16.04後,當要使用https,在設置好conf檔後,在瀏灠器出現以下錯誤
ERR_CONNECTION_REFUSED

很有可能是未enable SSL。執行以下
a2enMOD SSL

重啟apache。

2017年7月2日星期日

加強ssh保安

為加強ssh的保安,我們可做以下工作:
A.不許root從ssh登入,改為增加用戶為sudoer。
B.禁止用戶用密碼遙距(ssh)登入,只可用key登入。
ssh server 限制用key登入ssh的好處就是入侵者基本上不可能暴力爆SSH server,撞中密碼。當然,也要保存好登入用的key。

以Ubuntu 16.04為例,我們可以按序做以下工作:

1. 增加一個用戶為sudoer

創建一個用戶sudoer_userabc
useradd -m sudoer_userabc

使用usermod去加用戶入"sudo"群組中
Ubuntu中,預設群組"sudo"中的用戶便可sudo (tested on Ubuntu 16.04)
usermod -aG sudo sudoer_userabc

測試
su sudoer_userabc
sudo apt-get update
如可正常update,則sudoer_userabc已是sudoer的一員了。

2. 生成一對密鑰

登入server, 執行
ssh-keygen

在過程中,會要求輸入密碼保護金鑰,作用是在每之使用金鑰時,要輸入密碼才可。注意,此密碼跟原本登入ssh server的密碼無關。建議可用一個簡單密碼來保護金鑰。有密碼保護的話,假設金鑰被人複制了一份,他也用不了。

之後會生成
目錄 ".ssh" (請確定".ssh"的權限是"700")
另外目錄下是一對金鑰,分別是
id_rsa (權限應為"600",這是key)
id_rsa.pub (權限應為"644",這是"鎖")


3.把"鎖"裝上

在目錄".ssh"中執行以下:

cat id_rsa.pub >> authorized_keys

mv id_rsa.pub authorized_keys

將key下載回來。
如是Linux或MacOS,直接用sftp登入下載便可。
如用Windows,可用以下工具

WinSCP (一個sftp工具)

http://winscp.net/

在Windows下,仍需下載puttygen及putty。


http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
用puttygen把id_rsa轉為putty格式,再用putty登入。

4. 修改sshd_config,改為只可用key登入

修改以下

============================================================
#修改port為XXXX
Port XXXX


#禁止root登入
PermitRootLogin no 

#允許用key登入,設定key的路徑 
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys
============================================================

保存修改,重啟sshd,如可正常用key登入,再修改以下

============================================================
#禁止用密碼登入
PasswordAuthentication no 
============================================================

保存修改,重啟sshd。

5. 登入ssh

在Linux及macOS中,可用以下指令登入ssh
ssh -p port_of_sshd -i name_of_key user@sshd_server_ip

Windows中可用 putty.


完成!

ref:
https://blog.gtwang.org/linux/linux-ssh-public-key-authentication/
https://www.digitalocean.com/community/tutorials/how-to-create-a-sudo-user-on-ubuntu-quickstart

2017年5月12日星期五

Raspberry Pi 更改timezone

在Raspbian中更改time zone

root的身份鍵入以下command

sudo dpkg-reconfigure tzdata

接著便進入互動介面,選擇合適的地區。
保存後,重啟。

完成!

更新:
在Ubuntu 16.04上測試,也是一樣可用。
應該在Ubuntu系列的各版本都適用。
2017/7/2

ref http://aryo.lecture.ub.ac.id/configure-timezone-settings-on-raspberry-pi-raspbian-wheezy/comment-page-1/

2016年6月6日星期一

Yii2 i18n Basic Template 設置

在使用Yii2 的i18n做多語言設置時,主要有2個地方要設置的。

1. 設置檔案 web.php
 假設根目錄是/var/www/basic

編輯 /var/www/basic/config/web.php
加入藍色的設置。
預設的language是en-US。
翻譯的檔案分別是app.php 及error.php,在'/var/www/basic/messages/[language]'中。

<?php

$params = require(__DIR__ . '/params.php');

$config = [
... ...
  'language' => 'zh-TW',
  
  'components' => [
... ...        
        'i18n' => [
            'translations' => [
            'app*' => [
                'class' => 'yii\i18n\PhpMessageSource',
                'fileMap' => [
                    'app' => 'app.php',
                    'app/error' => 'error.php',
                ],
            ],
        ],

... ...
];


2. 建立目錄及檔案
在/var/www/basic/vendor/yiisoft/yii2/messages中已有部分翻譯,只是檔案名不同,直接 copy便可。
如zh-TW,

cp -r /var/www/basic/vendor/yiisoft/yii2/messages/zh-TW /var/www/basic/messages
cd  /var/www/basic/messages
mv yii.php app.php

DONE

2016年3月23日星期三

Vtiger CRM 中文亂碼

在試用VtigerCRM時發現中文亂碼。分別在顯示時及轉PDF時出現。
實現環境:
Centos 7 + Vtiger6.4

解決辦法:
1. 顯示時的中文亂碼
是由於Database 的Charset不正確造成的,只要更改為UTF8便可。
但如Database已生成,建議重新安裝Vtiger比較節省時間。google了,似乎沒有辦法直接轉換。曾經試過把Database匯出SQL,更改SQL中chatset為UTF8,再匯入。但加index時出現了一些錯誤信息。未知是否有影響。

比較簡單的方法是在安裝Vtiger時,只要把Database的Charset改成UTF8便可。在安裝完成後,所有tables及fields的charset都是UTF8,問題便解決了。

方法如下:
mysql -u root -p
CREATE DATABASE vtiger CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE USER 'vtiger'@'localhost' IDENTIFIED BY 'testing';
grant all privileges on `vtiger`.* to 'vtiger'@'localhost';
FLUSH PRIVILEGES;


2. 轉PDF時出現中文亂碼
TCPDF及字型的問題。
已放棄Vtiger,具體解決方法參考以下
http://www.ossez.com/forum.php?mod=viewthread&tid=761
http://wiki.debian.org.hk/w/Where_can_I_find_fonts_for_GNU/Linux