當建立了一個新的Server後,首要考慮的是Security的問題,從Rackspace的網站中發現了很好的基本建議,而且有很清晰的步驟。詳情可參看這裡

以下是參考Rackspace的建議後所作的Summary︰

1. 用root account SSH

[user@pc ~]$ ssh root@your_server_ip

2. 修改root密碼

[root@server ~]$ passwd

3. 新增Super User,避免用root account

新增一個Super User,用戶名稱是super_user_name

[root@server ~]$ useradd super_user_name

允許這個Super User 透過 sudo command 進行 administrative 的操作,Run以下command

[root@server ~]$ visudo

這會開啟了一個file,加這句到file的末端,然後儲存

super_user_name   ALL=(ALL) ALL

修改Super User的密碼

[root@server ~]$ su super_user_name

[super_user_name@server ~]$ passwd

不要關閉現在的SSH視窗,用新視窗測試可否用Super User SSH

[user@pc ~]$ ssh super_user_account@your_server_ip

即使登入成功,還不要關閉root的SSH視窗,可以先關閉Super User的SSH視窗

 

4. 更改SSH的Port Number

Default SSH用Port 22的,在root的SSH視窗裡修改這個Port Number

[root@server ~]$ vi /etc/ssh/sshd_config

修改以下資料,然後儲存

Port 1234 # 改用你想的數字,留意Port Number不會霸佔了其他service的用途 (例如mysql用3306)
Protocol 2
PermitRootLogin no # 這不允許用root account SSH
UseDNS no
AllowUsers super_user_account # 用你的Super User用戶名稱

 

5. 限制可進入的Port

允許SSH的新Port Number 而不允許 Default的22,在root的SSH視窗裡進行

[root@server ~]$ vi /etc/sysconfig/iptables

以下是這個file的Example

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1234 -j ACCEPT # 這是新的SSH Port Number
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # 這是Apache的Port Number
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

儲存後,可以Restart iptables 及 SSH

[root@server ~]$ service iptables restart

[root@server ~]$ service sshd restart

 

6. 測試SSH

測試可否用Port 22 SSH

[user@pc ~]$ ssh root@your_server_ip

[user@pc ~]$ ssh super_user_account@your_server_ip

測試可否用root SSH (以下例子用1234作SSH的Port Number)

[user@pc ~]$ ssh root@your_server_ip -p 1234

測試可否用Super User SSH

[user@pc ~]$ ssh root@your_server_ip -p 1234

測試可否用sudo command

[super_user_name@server ~]$ sudo service sshd status