為了系統安全,所以取消讓 root 可以遠端登入
# sed -i ‘s/^(DROPBEAR_EXTRA_ARGS=).*$/1”-g/’ /etc/default/dropbear
重新啟動 SSH Server
# /etc/init.d/dropbear restart

全新的繁體中文 WordPress 網站《宜蘭部落格教育平台 網站》
為了系統安全,所以取消讓 root 可以遠端登入
# sed -i ‘s/^(DROPBEAR_EXTRA_ARGS=).*$/1”-g/’ /etc/default/dropbear
重新啟動 SSH Server
# /etc/init.d/dropbear restart
參考網站:
Ubuntu Linux 安裝 LDAP Server – G. T. Wang
Ubuntu 設定 LDAP + PAM + NFS 實現多台電腦單一帳號驗證 | Mowd Blog
你的程式我的Code: Ubuntu 15.04 – LDAP 架設
使用Linux建置企業虛擬私有網路SSL VPN(下) – 技術專欄 – 網管人NetAdmin
LDAP Server IP:192.168.1.20
1. 更新套件庫
# apt-get update
2. 安裝 OpenLDAP Server
# apt-get install slapd ldap-utils
設定 LDAP 管理密碼
密碼確認
[@more@]3. 進行詳細的設定
# dpkg-reconfigure slapd
Omit OpenLDAP server configuration? No
DNS domain name:
Organization name?
Administrator password: Admin Password
Confirm password: Admin Password
Do you want the database to be removed when slapd is purged? No
4. 修改 /etc/ldap/ldap.conf 設定檔
# vim /etc/ldap/ldap.conf
BASE dc=bpim3,dc=test,dc=org
URI ldap://192.168.1.20/
5. 建立兩個群組:People 與 Group
# cat /root/ou.ldif
dn: ou=People,dc=bpim3,dc=test,dc=org
ou: People
objectClass: organizationalUnit
dn: ou=Group,dc=bpim3,dc=test,dc=org
ou: Group
objectClass: organizationalUnit
6. 將群組資料加入 LDAP 之中
# systemctl stop slapd
# /usr/sbin/slapadd -c -v -l /root/ou.ldif
# systemctl start slapd
7. 查詢剛建立的群組
# /usr/bin/ldapsearch -x ou=people
# extended LDIF
#
# LDAPv3
# base <dc=bpim3,dc=test,dc=org> (default) with scope subtree
# filter: ou=people
# requesting: ALL
#
# People, example.com
dn: ou=People,dc=bpim3,dc=test,dc=org
ou: People
objectClass: organizationalUnit
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
8. 建立使用者資料 user.ldif
# cat /root/user.ldif
dn: cn=test001,ou=group,dc=bpim3,dc=test,dc=org
cn: test001
gidNumber: 1002
objectClass: top
objectClass: posixGroup
dn: uid=test001,ou=people,dc=bpim3,dc=test,dc=org
uid: test001
uidNumber: 1002
gidNumber: 1002
cn: test001
sn: LDAP
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/false
homeDirectory: /home/test001
dn: cn=test002,ou=group,dc=bpim3,dc=test,dc=org
cn: test002
gidNumber: 1003
objectClass: top
objectClass: posixGroup
dn: uid=test002,ou=people,dc=bpim3,dc=test,dc=org
uid: test002
uidNumber: 1003
gidNumber: 1003
cn: test002
sn: LDAP
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/false
homeDirectory: /home/test002
9. 匯入使用者資料
# /usr/bin/ldapadd -c -x -D cn=admin,dc=bpim3,dc=test,dc=org -W -f user.ldif
Enter LDAP Password: Admin Password
adding new entry “cn=test001,ou=group,dc=bpim3,dc=test,dc=org”
adding new entry “uid=test001,ou=people,dc=bpim3,dc=test,dc=org”
10. 設定使用者密碼
# /usr/bin/ldappasswd -x -D cn=admin,dc=bpim3,dc=test,dc=org -W -S uid=test001,ou=people,dc=bpim3,dc=test,dc=org
New password: New User Password
Re-enter new password: New User Password
Enter LDAP Password: Admin Password
Result: Success (0)
# /usr/bin/ldappasswd -x -D cn=admin,dc=bpim3,dc=test,dc=org -W -S uid=test002,ou=people,dc=bpim3,dc=test,dc=org
11. 查詢新增的使用者
# /usr/bin/ldapsearch -x uid=test001
# extended LDIF
#
# LDAPv3
# base <dc=bpim3,dc=test,dc=org> (default) with scope subtree
# filter: uid=test001
# requesting: ALL
#
# test001, People, example.com
dn: uid=test001,ou=People,dc=bpim3,dc=test,dc=org
uid: test001
uidNumber: 1002
gidNumber: 1002
cn: test001
sn: LDAP
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/false
homeDirectory: /home/test001
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
系統似乎預設沒有安裝工作排程的程式
# apt-get install cron
自訂工作排程
# crontab -e
# 格式
# 分 時 日 月 星期幾 執行命令
* */3 * * /usr/local/bin/checkip > /dev/null 2>&1
列出目前系統的工作排程
# crontab -l
# 格式
# 分 時 日 月 星期幾 執行命令
* */3 * * /usr/local/bin/checkip > /dev/null 2>&1
刪除工作排程
# crontab -r
安裝 fail2ban 套件
# apt-get install fail2ban
備份設定檔
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.$(date +%F)
修改設定(封鎖時間及嘗試錯誤次數)
# sed -i ‘s/^bantime = 600/bantime = 86400/’ /etc/fail2ban/jail.conf
# sed -i ’66s/^maxretry = 5/maxretry = 3/’ /etc/fail2ban/jail.conf[@more@]重新啟動 fail2ban
# systemctl restart fail2ban
檢查 fail2ban 的狀態
# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
以 Client IP 192.168.1.17 嘗試對 Server IP 192.168.1.16 嘗試連線錯誤幾次之後
列出 fail2ban 偵測到的 SSH 攻擊
# fail2ban-client status sshd
Status for the jail: ssh
|- Filter
| |- File list: /var/log/auth.log
| |- Currently failed: 0
| `- Total failed: 7
`- Action
|- Currently banned: 2
| `- IP list: 192.168.1.17 123.31.34.182
`- Total banned: 2
列出 f2b-sshd 的規則
# iptables -t filter -L f2b-sshd -n
Chain f2b-sshd (1 references)
target prot opt source destination
REJECT all — 192.168.1.17 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all — 123.31.34.182 0.0.0.0/0 reject-with icmp-port-unreachable
RETURN all — 0.0.0.0/0 0.0.0.0/0
解除方式:
# iptables -D f2b-sshd -s 192.168.1.17 -j REJECT
參考網頁:
凍仁的筆記: Ubuntu 網路設定 – PPPoE (ADSL) 指令
1. 安裝 pppoeconf 套件
# apt-get install pppoeconf
2. 進行設定
# /usr/sbin/pppoeconf[@more@]3. 設定畫面
搜尋網路介面
4. 查詢連線狀態
# ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:36.230.2.191 P-t-P:168.95.98.254 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:1687 errors:0 dropped:0 overruns:0 frame:0
TX packets:1570 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:182742 (182.7 KB) TX bytes:187860 (187.8 KB)
# ip addr show ppp0
5: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN group default qlen 3
link/ppp
inet 36.230.2.191 peer 168.95.98.254/32 scope global ppp0
重新進行連線
# /usr/bin/pon dsl-provider
Plugin rp-pppoe.so loaded.
切斷連線
# /usr/bin/poff
為了管理方便,所以在家裡的 Banana Pi M3 上加裝 no-ip2
因為套件庫中沒有 noip 套件,所以要自行編譯安裝
參考網站:
How To Install No-ip2 On Ubuntu 12.04 LTS In Order To Host Servers On A Dynamic IP Address
How to Install the Linux Dynamic Update Client on Ubuntu
1. 安裝編譯相關套件
# apt-get install build-essential checkinstall[@more@]2. 下載 no-ip2 官網程式
# cd /usr/local/src/
# wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
3. 解壓縮
# tar xf noip-duc-linux.tar.gz
4. 切換目錄
# cd noip-2.1.9-1
5. 進行安裝
# make install
Please enter the login/email string for no-ip.com abc@ilc.edu.tw
Please enter the password for user ‘abc@ilc.edu.tw’ ***********
Only one host [bplinux.sytes.net] is registered to this account.
It will be used.
Please enter an update interval:[30]
Do you wish to run something at successful update?[N] (y/N) N
New configuration file ‘/tmp/no-ip2.conf’ created.
mv /tmp/no-ip2.conf /usr/local/etc/no-ip2.conf
設定檔位置:/usr/local/etc/no-ip2.conf
6. 建立開機啟動檔
# vim /etc/init.d/noip2
#! /bin/sh
### BEGIN INIT INFO
# Provides: no-ip2
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop no-ip2
### END INIT INFO
case “$1” in
start)
echo “Starting no-ip2”
/usr/local/bin/noip2
;;
stop)
echo -n “Shutting down no-ip2”
for i in `noip2 -S 2>&1 | grep Process | awk ‘{print $2}’ | tr -d ‘,’`
do
noip2 -K $i
done
;;
*)
echo “Usage: $0 {start|stop}”
exit 1
esac
exit 0
7. 更改檔案執行權限
# chmod 755 /etc/init.d/noip2
8. 執行 no-ip2
# /etc/init.d/noip2 start
Starting no-ip2
# ps aux | grep noip2 | grep -v grep
nobody 1605 0.0 0.0 2036 628 ? Ss 05:12 0:00 /usr/local/bin/noip2
9. 設定開機時執行
# sed -i ‘/export/ an#Starting no-ip2…n/etc/init.d/noip2 start’ /etc/rc.local
或
# update-rc.d noip2 defaults
10. 如果不需要編譯套件也可以移除
# apt-get remove –purge binutils build-essential checkinstall cpp cpp-5 dpkg-dev fakeroot file g++ g++-5 gcc gcc-5 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev libcc1-0 libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-5-dev libgomp1 libisl15 libmagic1 libmpc3 libstdc++-5-dev libubsan0 linux-libc-dev make manpages manpages-dev patch
因為有的系統本身並沒有提供擴展 /root 分割區的的工具,所以改使用 GParted 來進行處理。
MicroSD 卡有 8G,但主要的 /root 分割區只用到 1.1G
# fdisk -l /dev/sdb
[@more@]執行 偏好設定 / GParted
後面有 5.89G 仍未使用,有的系統可能要先 umount 原本的分割區才能 ReSize
重新開機後,/root 分割區已經擴展到 7G
# fdisk -l /dev/sdb
原本的磁碟空間使用狀況
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 1.1G 997M 72M 94% /
devtmpfs 750M 0 750M 0% /dev
tmpfs 1006M 0 1006M 0% /dev/shm
tmpfs 1006M 18M 989M 2% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1006M 0 1006M 0% /sys/fs/cgroup
tmpfs 1006M 8.0K 1006M 1% /tmp
用製作好的 MicroSD 開機後 執行 resize2fs
# /sbin/resize2fs /dev/mmcblk0p2
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p2 is now 1814784 (4k) blocks long.
處理完後磁碟空間的使用狀況
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 6.9G 1.2G 5.5G 17% /
devtmpfs 750M 0 750M 0% /dev
tmpfs 1006M 0 1006M 0% /dev/shm
tmpfs 1006M 18M 989M 2% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1006M 0 1006M 0% /sys/fs/cgroup
tmpfs 1006M 8.0K 1006M 1% /tmp
因為 Banana Pi 的 USB 只有二個,通常一個用來接滑鼠,另一個用來接鍵盤,如果要備份時,就要另外用 SATA 排線接 SATA 的硬碟,或者直接改用無線的鍵鼠組,就可以多一個 USB 來外接備份的設備(USB 隨身碟或硬碟),有些不太方便,所以直接透過區域網路上的其他 Sever,會方便許多。
一、.使用 Samba
1. 安裝 cifs-utils 套件
# apt-get install cifs-utils
2. 建立掛載目錄
# mkdir /mnt/bpi-samba
3. 進行掛載(使用者 abc,密碼 123456,Samba Server 192.168.1.13)
# mount.cifs -o username=”abc”,password=”123456″ //192.168.1.13/abc /mnt/bpi-samba[@more@]二、使用 SSH
1. 安裝 sshfs 套件
# apt-get install sshfs
2. 建立掛載目錄
# mkdir /mnt/bpi-sshfs
3. 進行掛載(使用者 abc,SSH Server 192.168.1.13)
# sshfs abc@192.168.1.13:/home/abc /mnt/bpi-sshfs
abc@192.168.1.13’s password:
如果要不用輸入密碼,可以參考:
[超易] 兩行指令搞定 Linux SSH登入免密碼 – LinXblog
三、使用 FTP
1. 安裝 curlftpfs
# apt-get install curlftpfs
2. 建立掛載目錄
# mkdir /mnt/bpi-ftp
3. 進行掛載(使用者 abc,密碼 123456,FTP Server 192.168.1.13)
# curlftpfs ftp://abc:123456@192.168.1.13 /mnt/bpi-ftp
卸載目錄
# umount /mnt/bpi-ftp
參考網站:
夢幻天地blog: zip dd做映像檔pv秀進度
[@more@]img 檔的部份 解開後可以在 Windows 系統中使用 Win32 Disk Imager 來進行燒錄
至於 CentOS Lite 可能要到 Linux 中來進行燒錄 of= 後面接的是要燒錄的 MicroSD 卡的設備名稱
# unzip -p 2016-05-12-centos-lite-preview-bpi-m3.img.zip | pv | dd of=/dev/sdb bs=10M status=noxfer
或是直接使用 Banana Pi 中的 bpi-copy 指令來進行燒錄
# bpi-copy 2016-05-12-centos-lite-preview-bpi-m3.img.zip /dev/sdb
備份的方式,在 Windows 系統上也是使用 Win32 Disk Imager 來進行備份
在 Linux 或 Banana Pi 下
# dd if=/dev/sdb of=/mnt/bpi/2016-12-12-centos-lite-preview-bpi-m3.img bs=1M
不過使用 Win32 Disk Imager 及 dd 製作出來的 Image 都會有些大,因為它的大小就是使用的 MicroSD 卡的大小,比如用 16G 的 MicroSD 卡,製作出來的 Image 就會是 16G,哪怕系統只用到 2G,所以要進行 Image 的壓縮。
壓縮 Image
# dd if=/dev/sdb bs=1M | pv | zip 2016-12-12-centos-lite-preview-bpi-m3.img.zip –
不過使用這種方式來壓縮,就會無法使用 Windows 系統中的 Win32 Disk Imager 來進行還原燒錄,對於剛使用 Banana Pi 的使用者會有些困擾!
下載網站:ftp://163.20.108.15/ftp/bpim3/bpi-m3-mate1604-0709.zip

感謝新北團隊的製作,這一個版本是我使用過 Ubuntu Mate 最沒有問題的版本,官網上下載下來的版本,最後在做 apt-get upgrade 通通都陣亡了![@more@]
順手修改了一下,移除一些自己不用的軟體
# apt-get update
移除 fcitx
# apt-get remove –purge fcitx
移除 cheese 攝影機及 brasero 燒錄程式
# apt-get remove –purge cheese brasero
移除 hexchat 網路清談、pidgin 聊天、thunderbird 信件軟體
# apt-get remove –purge hexchat pidgin thunderbird
移除 Apache、PHP、MySQL
# apt-get remove –purge apache2 php mysql
移除多餘語言套件
# apt-get remove –purge $(dpkg -l | grep language | awk ‘{print $2}’ | grep ^language | egrep -v ‘zh-hant|en|selector’)
更新到最新版本
# apt-get upgrade
不過不知道為什麼,這一個版本好像有點大,我試過用三片的 16G MicroSD(ADATA/TOSHIBA/Transcend),都一直無法燒錄 Image 成功,後來直接改用 32G 的才沒有問題。