2011年8月24日 星期三

OpenSSH的安全策略


http://blog.xuite.net/pippeng/blog/22469482



目前大家遠端連Linux主機應該都使用ssh做連線
早期時都是使用telnet但後來因為他沒有加密會被竊聽取得帳號密碼
所以在1999年10月問世了OpenSSH網路加密通訊.
http://www.openssh.com/
http://zh.wikipedia.org/w/index.php?title=OpenSSH&variant=zh-tw

但是有了ssh並不代表你就不會被入侵
只要機器有接網路線就有機會被入侵
但也不要因噎廢食

這裡介紹一下簡單對於ssh的安全策略
主要是拒絕一些網路小白到處亂try密碼
這個你只要平常有在看主機log你就一定會發現.

1.ssh限制登入帳號,尤其是root絕對禁止使用ssh登入
(使用一般帳戶登入,如需root權限再使用#su -)
2.修改ssh的port;這樣可以擋掉80%的小白

記住所有的安全策略都不能保證100%不被入侵
但絕對能延長被入侵的時間
就像一般現實世界的鎖一樣,無法保證不被小偷入侵
但卻能延長入侵時間,讓管理者能在被入侵前發現,
或是讓入侵者知難而退.

1.限制使用root登入帳號與設定允許登入的帳號
sshd的設定檔路徑是/etc/ssh/sshd_config
#vi /etc/ssh/sshd_config

#PermitRootLogin yes
改成
PermitRootLogin no
這樣就不能使用root從ssh登入了
再來是做登入帳號控管
如果我們只允許jack跟michael與pippeng這3帳號使用ssh登入

我們可以在sshd_config裡面新增一行(注意要空格喔)
AllowUsers jack michael pippeng

這樣第一個步驟就完成了
再來就是第2個步驟

2.修改ssh的port
預設的sshd port是TCP 22
這也是try密碼專用port
只要你是Linux主機就不停有人會來try
所以最好的方式就把port改掉,
一樣修改sshd_config
本例我們把sshd的port改成2341

#vi /etc/ssh/sshd_config
新增一行
Port 2341
這樣就好了
另外記得修改一下iptables上開放的port
如果能再iptables限制連入的來源IP那更好.

但其實如果真的要入侵的人
他可能會使用port scan把你的port找出來
所以最好在你主機外加一台硬體防火牆而且要有防止port scan功能的
不然就是參考網路上利用log分析port scan的一些做法.


---------------------------------
複習一下
#vi /etc/ssh/sshd_config

AllowUsers jack michael pippeng
#只允許 jack,michael,pippeng使用ssh
Port 2341
#sshd使用port2341
PermitRootLogin no
#不允許root使用ssh登入


最後記得要把sshd重新啟動
#service sshd restart


3.ssh client使用非預設的22 port登入
我們上面將sshd改成為2341 port了
但是Linux上的ssh client預設是使用22 port
如果你要使用linux的ssh client登入的話要加一個參數
-p 2341
以下範例為使用pippeng這帳號使用tcp 2341 port登入到192.168.12.10
#ssh -p 2341 pippeng@192.168.12.10
或是直接修改ssh client設定值
1.修改主機ssh client預設值
vi /etc/ssh/ssh_config
新增
Port 2341 (或是Port=2341)

或是
2.修改使用者ssh client預設值
vi ~/.ssh/config   (這檔案預設是沒有的)
Port 2341 (或是Port=2341)

建議還是使用直接使用-p 2341這參數
不然如果要連其他主機時造成無法連接
如果你是使用windows的ssh client的話,一般都是可以自由設定port的.


後記:
以上方法單單只是針對sshd的安全設定
一台主機的安全策略是要全面性的配合
要定時做update
各種開放的服務都要做好安全控管
要常看主機的logs
檔案權限不要亂設
iptables要設定周全
密碼設定要複雜不要是有意義的詞
要好好學習Linux基礎知識,延續Linux的安全性優點

沒有留言:

張貼留言