2013年5月23日

ubuntu server (10.04) 伺服器安全考量

*連接到您的FTP伺服器上後,發現您的FTP伺服器會回覆伺服器的版本及名稱等資訊,...

這個可更改
sudo vim /etc/vsftpd.conf

改其中的這一行如下, 就不會出現版本資訊

#login時的歡迎信息
ftpd_banner=Welcome to ... FTP service.


記得重啟 ftp service
sudo /etc/init.d/vsftpd restart


see http://blog.udn.com/nigerchen/2261345


*避免 apache 伺服器資訊被探測

Apache:
開啟 httpd.conf,

sudo vim /etc/apache2/apache2.conf

加入以下兩行:
 
    ServerTokens ProductOnly
    ServerSignature Off
 

不過我測試的結果,好像還是看的到??

PHP:
隱藏 PHP 版本就是隱藏 "X-Powered-By: PHP/5.1.2-1+b1" 這個,開啟 php.ini,加入:

    expose_php = Off

完成以上兩個設定後,重新啟動 Apache 即可, 指令:


    sudo /etc/init.d/apache2 restart

*目錄瀏覽禁止

打開 (httpd.conf) 找到, ubuntu 10.04 的新位置應該是

sudo vim /etc/apache2/sites-available/default

...(...略過)
Options Indexes FollowSymLinks MultiViews
...

將以上行中間的 Indexes 刪除掉,儲存之後再重新啟動Apache即可。

 

其它參考資訊:

1. 如何知道 ubuntu 套件安裝資訊
    aptitude show 套件名稱

例如:
    aptitude show gedit

Apache 調校參考

see http://fecbob.pixnet.net/blog/post/38248419

待查 Apache的 MaxClients,ThreadsPerChild,MaxThreadsPerChild等參數,基於你的HTTPd.conf中的MPM模組選擇 (ubuntu 10.04 的位置是在 /etc/apache2/apache2.conf)。

=========
Apache伺服器自帶有一個叫AB(ApacheBench)的工具,在bin目錄下。ApacheBench 可以針對某個特定的 URL 模擬出連續的連線請求,同時還可以模擬出同時間點數個相同的連線請求,因此利用 ApacheBench 可説明我們在網站開發期間模擬實際上線可能的情況。

  在命令列下輸出:
  ./ab -n number_of_total_requests -c number_of_simultaneous_requests http:www.../php_app.php

  例如:
  ./ab -n 1000 -c 50 www.com/app.php

  AB將同時向 www.com/app.php發出50個併發請求,共發出1000次。測試結果將可能是這樣的:

  Server Software: Apache/2.0.16
  Server Hostname: localhost
  Server Port: 80
  Document Path: /myapp.php
  Document Length: 1311 bytes
  Concurrency Level: 50
  Time taken for tests: 8.794 seconds
  Complete requests: 1000
  Failed requests: 0
  Total transferred: 1754000 bytes
  HTML transferred: 1311000 bytes
  Requests per second: 113.71
  Transfer rate: 199.45 kb/s received
  Connection Times (ms)
  min avg max
  Connect: 0 0 5
  Processing: 111 427 550
  Total: 111 427 555

app.php每秒鐘可以處理的請求數為113.71個。將請求數增加,看看伺服器能否處理更大的壓力。你也需要調節Apache的 MaxClients,ThreadsPerChild,MaxThreadsPerChild等參數,基於你的HTTPd.conf中的MPM模組選擇 (ubuntu 10.04 的位置是在 /etc/apache2/apache2.conf)。

修改HTTPd.conf後,要重啟Apache伺服器,然後再用AB測試。

2013年5月21日

遠端管理 VirtualBox-RemoteBox

RemoteBox 是用來遠端管理 VirtualBox,參見 openfoundry 所介紹之文章。看起來還不錯用!

我在 ubuntu 10.04 試的結果無法執行,因為它要求 gtk+ 2.2 以上,但我的只有 2.20....

換了 Mint 14 來試,先依官方 說明 PDF 安裝了這些

sudo apt-get install libgtk2-perl libsoap-lite-perl rdesktop

才發現還要做一些設定才能用, 有空再試吧!

RemoteBox 官網: http://remotebox.knobgoblin.org.uk/

RemoteBox 1.5 on UbuntuRemoteBox 1.5 on Mint

2013年5月17日

有趣的 route 指令

當網路不通時, 大概都是 route 出現問題, google 後發現有趣的 route 指令, 紀錄下來備忘

 
要加入 gateway ip 指令
sudo route add -net default gw GATEWAY_IP dev wlan0
sudo route add default gw 192.168.1.1 eth0
 
使用以下兩行其中一行就可以:
sudo route add default gw 192.168.1.1
或是
sudo route add default gw dev eth0
 
要永久改變的話, 
編輯 sudo vi /etc/rc.local
找到 exit
在 exit 前面加以上的指令

想要新增一個路由至 10.0.0.0 的網段,所有 10 開頭的封包將透過 eth0 的網卡送出

#route add -net 10.0.0.0 netmask 255.0.0.0 dev eth0

刪除透過 eth0 的網卡至 10.0.0.0 的網段的路由

#route del -net 10.0.0.0 netmask 255.0.0.0 dev eth0

新增一個路由至 10.0.0.0 的網段,所有 10 開頭的封包將透過下個設備的 ip 192.168.1.1 送出

#route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1

參考:
https://sites.google.com/site/hcsvieken/fedora-xue-xi/route-lu-you-zhi-ling
route 指令參考: http://people.ofset.org/~ckhung/b/gnu/network.php

2013年5月16日

無線分享器當成 bridge 和 repeater 的規畫佈置

我在家中裝了一個有點複雜的網路

(a) Cable model 從家外面拉進來,有固定位置,裝了一台無線分享器 A (dlink DI-624S)
      192.168.0.1
      DHCP   192.168.0.50~90
(b) 我的書房有一堆電腦, 都需要網路連外, 所以也裝了一台無線分享器 B (Edimax BR-6228NC), IP 設成
     192.168.0.10 LAN
     192.168.0.99 Wlan (固定IP)
     DHCP  關閉 (因為它經由 無線分享器 C 取得 ip 和上網)

無線分享器 A 是 dlink DI-624S, 這台可以讓我的電腦 (XP 和 ubuntu), 都用 VPN 的方式連到工作地方的 vpn server (其它兩台都不行, 不知原因...), 但它似乎又不能讓無線分享器 B 當成 Universal Repeater 來連, 所以只好再拿另一台 AbCom WR254G 來中繼連接

(c) AbCom WR254G (無線分享器 C)
     AboCom    當橋接主 AP1    192.168.0.3 WAN
                                               192.168.0.2 LAN
                              DHCP        192.168.0.91~200
     將無線分享器 C 的一般孔 (不是WAN 孔) 連上無線分享器 A 的一般孔,
     這樣的好處是, 可以用任一台電腦, 連接上以管理這 3 個無線分享器:
     192.168.0.1
     192.168.0.2
     192.168.0.10

可是發現房間中的電腦 (連上無線分享器 B) 無法上網, google 了以後, 應該是 gateway 有問題, 將無線分享器 C 的 gateway 也設成 192.168.0.1 即可

ubuntu 架設 LVS/DR in virtualbox 實作成功紀錄

LVS (linux virtual server) 是用來做 server 負載平衡的軟件。它有三種模式, 我挑了一種比較簡單的 Direct Routing (DR) 來試做, 需要同一網段的 IP, 利用 virtualbox 先裝了 3 台 ubuntu server 12.04

(A) 當入口的 VIP server: 192.168.0.64
    對外的 IP:  192.168.0.90


(B) Real server 1: 192.168.0.65
(C) Real server 1: 192.168.0.66

步驟:
1.安裝 ipvsadm
    apt-get install ipvsadm

2. 在 VIP server 新增一個虛擬網卡, 設成對外的 IP:  192.168.0.90
    修改 VIP server 的 ip 見以下內容
    我是用 dhcp 的方式取得 ip (在分享器設定分享固定 ip)
    下指令然後編輯 interfaces 檔:

sudo vi /etc/network/interfaces


# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth1
iface eth1 inet dhcp

auto eth1:0
iface eth1:0 inet static
address 192.168.0.90
netmask 255.255.255.255
broadcast 192.168.0.90

3. 在 VIP server 建立一個 sh 指令檔, 以執行 ipvsadm 指令 
(目前重開機以後要再執行一次,還沒弄清楚如何解決)
vi lvs.sh

sudo ipvsadm -C
route add -host 192.168.0.90 dev eth1:0
sudo ipvsadm -A -t 192.168.0.90:80 -s rr
sudo ipvsadm -a -t 192.168.0.90:80 -r 192.168.0.65:80 -g
sudo ipvsadm -a -t 192.168.0.90:80 -r 192.168.0.66:80 -g
sudo ipvsadm -S


4. 編輯 /etc/sysctl.conf, 在檔案最下方加入以下內容
sudo vi /etc/sysctl.conf

net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=1
net.ipv4.conf.default.send_redirects=1
net.ipv4.conf.eth1.send_redirects=1


5. 在 real server1 上 (已裝好 apache), 新增一個虛擬網卡 lo:0
可以下指令然後編輯 interfaces 檔:

sudo vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth1
iface eth1 inet dhcp

auto lo:0
iface lo:0 inet static
address 192.168.0.90
netmask 255.255.255.255
broadcast 192.168.0.90

改完重啟網卡 (我是重開機), 有網頁說還要加上這一行的指令, 但我發覺重開機後好像不用再下這個指令一次:


sudo route add -host 192.168.0.90 dev lo:0

最後,在 real server2 也做同樣的事。

6. VIP server 重開機後,要執行剛剛建的 lvs.sh 指令檔, 再下指令看看有沒有成功:
~$ ./lvs.sh
~$ sudo ipvsadm

看到以下結果,大致上應該成功了

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port       Forward Weight ActiveConn InActConn
TCP  192.168.0.90:http rr
  -> 192.168.0.65:http        Route   1      0          0
  -> 192.168.0.66:http        Route   1      0          0 



But ...

我卻發現從同網段的其它機器連不進來,ping 192.168.0.90 的結果,說是有重覆 ip, 不知問題何在?

~$ ping 192.168.0.90
PING 192.168.0.90 (192.168.0.90) 56(84) bytes of data.
64 bytes from 192.168.0.90: icmp_seq=1 ttl=64 time=67.9 ms
64 bytes from 192.168.0.90: icmp_seq=2 ttl=64 time=2.38 ms
64 bytes from 192.168.0.90: icmp_seq=1 ttl=64 time=1090 ms (DUP!)
64 bytes from 192.168.0.90: icmp_seq=2 ttl=64 time=88.7 ms (DUP!)
...


好像在 /etc/rc.local 中加入原來在 lvs.sh 中的指令就可以在開機後自動執行。

參考

2013年5月15日

mySQL 相關指令

在 ubuntu 12.04 之下

停止 mysql
sudo stop mysql

啟動
sudo start mysql

進入 mySQL 指令列
mysql -u username -p

 看 set varaibles (記得要在最後加上分號 ;)
 show status;

 看佔用 CPU  資源
 show processlist;