2012年2月2日 星期四

SSH 安全設制

大部份的 ssh daemon 設定檔都是放在 /etc/ssh/sshd_config, 於 ssh 本身來說, 它自己就是一個安裝的遠端登入機制, 在您傳送的任何一筆資料都給予加密, 讓資料傳送之間更為安全. 但是政策上的考量, 安全的規劃上, 有些原本的條件可能太過於開放, 所以在此提供一些小技巧, 來達到更符合客制化的 ssh 環境.
以下的修改檔都是在 /etc/ssh/sshd_config, 而在修改完之後請重新啟動 sshd:
[root@rhel ssh]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@rhel ssh]#
修改 ssh 聆聽埠
預設 sshd 是聆聽 port 22 的連接埠, 如果要更改請使用 Port 參數, Port 語法後面接著要讓 sshd 聆聽的連接埠口, 如果要一次聆聽多個, 那麼就再使用 Port 指定其它的連接埠, 以下會讓 sshd 重新聆聽 22 和 1234 的 Port.
Port 22
Port 1234
重新啟動 sshd 之後, 再使用 netstat 看看 22 和 1234 是否有被 listen.
[root@rhel ssh]# netstat -ntulp | egrep  '(sshd)|(PID)'
Proto  Recv-Q  Send-Q  Local Address  Foreign Address  State   PID/Program name
tcp         0       0  0.0.0.0:1234   0.0.0.0:*        LISTEN  9769/sshd
tcp         0       0  0.0.0.0:22     0.0.0.0:*        LISTEN  9769/sshd
[root@rhel ssh]#
限制以 root 以 ssh 方式登入
root 是個強而有力的帳號, 管理習慣上, 應該要避免使用 root 直接登入, 這樣可以養成使用一般權限登入的習慣, 另一個好處也是可以避免被使用字典攻擊 (即使用 root 帳號為主, 不斷猜測密碼). 下面的方法會讓 root 無法使用 ssh 登入.
PermitRootLogin no
設定 ssh 所聆聽的連線 IP
預設 sshd 是聆聽所有的 IP 位置 (0.0.0.0), 也包含 127.0.0.1 的本機 loop back IP, 如果要指定 sshd 只聆聽某個特定的 IP 時, 使用 ListenAddress 就可以達成, 大部份會這麼做的原因可能是在一台 Linux Getway 的主機上限制只有某些網段的 IP 才可以使用 sshd 登入. 下面的示範會讓主機聆聽 11.22.33.44 和 192.168.1.1 的介面 (不包含 127.0.0.1)
ListenAddress 11.22.33.44
ListenAddress 192.168.1.1
重新啟動之後看看 sshd 有沒有只 listen 指定的 IP Address.
[root@siva ssh]# netstat -ntulp | egrep '(sshd)|(PID)'
Proto  Recv-Q  Send-Q  Local Address      Foreign Address  State   PID/Program name
tcp         0       0  11.22.33.44:6211   0.0.0.0:*        LISTEN  9839/sshd
tcp         0       0  192.168.1.1:6211   0.0.0.0:*        LISTEN  9839/sshd
tcp         0       0  11.22.33.44:22     0.0.0.0:*        LISTEN  9839/sshd
tcp         0       0  192.168.1.1:22     0.0.0.0:*        LISTEN  9839/sshd
[root@siva ssh]#

沒有留言:

張貼留言