當建立了一個新的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
Leave A Comment