IT_man 發表於 2015-12-28 10:28:36

修改 sshd 的設定 ,設定檔 /etc/ssh/sshd_config

vi /etc/ssh/sshd_config

1.修改預設 port (可用多行開啟多個 port)
Port <port>

2.僅監聽特定 ip (適用於多網卡/多 IP 的情形)
ListenAddress 192.168.1.10

3.禁止 root 登入
PermitRootLogin no
管理者必須先以個人帳號登入,再 su 成 root,或利用 sudo 工作。

4.禁止使用空密碼登入
PermitEmptyPasswords no

5.僅允許或拒絕特定帳號或群組登入
AllowUsers <user1> <user2> <user3>
AllowGroups <group>
DenyUsers *
DenyGroups no-ssh
根據實驗,對於同一帳號而言,如果同時 Allow 跟 Deny 的話,結果會是 Deny 的。

6.廢除密碼登錄,強迫使用 RSA/DSA 驗證
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
PasswordAuthentication no
並確保 user 的 ~/.ssh 權限為 700,同時將該 user 的 public key 加入其 ~/.ssh/authorized_keys 中。Public key 的產生方式可搜尋 ssh-keygen。

7.僅允許 SSHv2
Protocol 2

8.限制特定使用者、群組、主機或位址的登入行為,這裡以限制 somebody 與 handsomebody 不可使用密碼登入為例
Match User somebody,handsomebody
PasswordAuthentication no使用 TCP wrappers 限制來源 IP
# vim /etc/hosts.deny
sshd: ALL
# vim /etc/hosts.allow
sshd: 192.168.1 1.2.3.4 # 僅允許 192.168.1.* 與 1.2.3.4 連線

9.使用 iptables 限制來源 IP
# iptables -A INPUT -p tcp -m state --state NEW --source 1.2.3.4 --dport 22 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP
設定會立即生效,若希望重開機後還能保存,需要手動儲存 iptables 的設定。

10.時間鎖定
你可以使用不同的iptables參數來限制到SSH服務的連接,讓其在一個特定的時間範圍內可以連接,其他時間不能連接。你可以在下面的任何例子中使用 /second、/minute、/hour 或 /day 開關。
第一個例子,如果一個用戶輸入了錯誤的密碼,鎖定一分鐘內不允許在訪問SSH服務,這樣每個用戶在一分鐘內只能嘗試一次登陸
# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP
第二個例子,設置iptables只允許主機193.180.177.13連接到SSH服務,在嘗試三次失敗登陸後,iptables允許該主機每分鐘嘗試一次登陸
# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -j DROP

11.檢查相關檔案權限,不安全則不允許登入
StrictModes yes
某些相關檔案權限設定若有錯誤時,可能造成安全性風險。如使用者的 ~/.ssh/authorized_keys 權限若為 666,可能造成其他人可以盜用帳號。

12.自訂使用者登入時顯示的 banner (話說這跟安全性有什麼關係...? 大概可以用社交方式嚇跑壞人吧...= =a)
Banner /etc/ssh/banner # 任意文字檔

13.限制 su/sudo 名單
# vi /etc/pam.d/su
    auth       required   /lib/security/$ISA/pam_wheel.so use_uid
# visudo
    %wheelALL = (ALL) ALL
# gpasswd -a user1 wheel

14.限制 ssh 使用者名單
# vi /etc/pam.d/sshd
    auth required pam_listfile.so item=user sense=allow file=/etc/ssh_users onerr=fail
# echo <username> >> /etc/ssh_users
15.防止SSH連線逾時(timeout),讓PuTTY 與 SSH 一直保持連線
    修改/etc/ssh/sshd_config
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
   將#拿掉==>存檔
#service ssd restart ==>重啟sshd
    接下來修改 Pietty 的參數,進入”PuTTY 連線設定”:
    選擇「Connection」項目,將「Seconds between keepalives 」右邊的欄位輸入每隔幾秒,傳送一個null封包以保持連線。

頁: [1]
查看完整版本: 修改 sshd 的設定 ,設定檔 /etc/ssh/sshd_config