技術討論區 > 系統安全討論版

[整理]sshd 安全設定 ( 設定"禁止使用ssh名單" )

(1/7) > >>

日京三子:
原本的文章來自於這裡.

小弟的主機最近一直持續的遭受來自中國大陸那邊對台灣網路的攻擊, 利用ssh服務, 加上針對RedHat系系統各項服務帳號所進行的攻擊. 日前我所整理出來的攻擊IP如下:220.194.0.0
211.34.0.0
63.170.0.0
67.18.0.0
221.253.0.0
.
.
族繁不及備載
現在這種攻擊有幾種特點, 1是會利用帳號列表展開攻擊, 利用一系列的英文常用ID (別懷疑, 你看歐美影片時常出現的名字幾乎都包括在內, 像Abel, alin 等等)
2. 還有會利用系統服務程式帳號的, 例如小弟以下的secure log這種:
--- 代碼: ---Jul 29 15:18:39 alpha sshd[26431]: Failed password for bin from 220.194.55.126 port 59711 ssh2
Jul 29 15:18:43 alpha sshd[26433]: Failed password for daemon from 220.194.55.126 port 60574 ssh2
Jul 29 15:18:47 alpha sshd[26435]: Failed password for adm from 220.194.55.126 port 60979 ssh2
Jul 29 15:18:50 alpha sshd[26437]: Failed password for lp from 220.194.55.126 port 33309 ssh2
Jul 29 15:18:54 alpha sshd[26439]: Failed password for sync from 220.194.55.126 port 34090 ssh2
Jul 29 15:18:58 alpha sshd[26441]: Failed password for shutdown from 220.194.55.126 port 34899 ssh2
Jul 29 15:19:02 alpha sshd[26443]: Failed password for halt from 220.194.55.126 port 35290 ssh2
Jul 29 15:19:05 alpha sshd[26445]: Failed password for mail from 220.194.55.126 port 35795 ssh2
Jul 29 15:19:09 alpha sshd[26447]: Failed password for news from 220.194.55.126 port 36567 ssh2
Jul 29 15:19:13 alpha sshd[26449]: Failed password for uucp from 220.194.55.126 port 37375 ssh2
Jul 29 15:19:16 alpha sshd[26451]: Failed password for operator from 220.194.55.126 port 37462 ssh2
Jul 29 15:19:20 alpha sshd[26453]: Failed password for games from 220.194.55.126 port 38272 ssh2
Jul 29 15:19:24 alpha sshd[26455]: Failed password for gopher from 220.194.55.126 port 39041 ssh2
Jul 29 15:19:28 alpha sshd[26457]: Failed password for ftp from 220.194.55.126 port 39849 ssh2
Jul 29 15:19:32 alpha sshd[26459]: Failed password for nobody from 220.194.55.126 port 40237 ssh2
Jul 29 15:19:36 alpha sshd[26461]: Failed password for vcsa from 220.194.55.126 port 40747 ssh2
Jul 29 15:19:39 alpha sshd[26463]: Failed password for apache from 220.194.55.126 port 41525 ssh2
Jul 29 15:19:41 alpha sshd[26465]: Invalid user webadmin from 220.194.55.126
Jul 29 15:19:43 alpha sshd[26465]: Failed password for invalid user webadmin from 220.194.55.126 port 42377 ssh2
Jul 29 15:19:44 alpha sshd[26467]: Invalid user popa3d from 220.194.55.126
Jul 29 15:19:47 alpha sshd[26467]: Failed password for invalid user popa3d from 220.194.55.126 port 42780 ssh2
Jul 29 15:19:50 alpha sshd[26469]: Failed password for sshd from 220.194.55.126 port 43314 ssh2
Jul 29 15:19:54 alpha sshd[26471]: Failed password for mailnull from 220.194.55.126 port 44112 ssh2
Jul 29 15:19:58 alpha sshd[26473]: Failed password for smmsp from 220.194.55.126 port 44952 ssh2
Jul 29 15:20:01 alpha sshd[26475]: Failed password for named from 220.194.55.126 port 45045 ssh2
Jul 29 15:20:05 alpha sshd[26479]: Failed password for rpc from 220.194.55.126 port 45891 ssh2
Jul 29 15:20:09 alpha sshd[26481]: Failed password for rpm from 220.194.55.126 port 46692 ssh2
Jul 29 15:20:12 alpha sshd[26483]: Failed password for pcap from 220.194.55.126 port 47121 ssh2
Jul 29 15:20:16 alpha sshd[26485]: Failed password for mysql from 220.194.55.126 port 47648 ssh2
--- 程式碼結尾 ---

可以很明顯的看得出來, 這是針對大約在去年年底, RedHat公司所附加的sshd版本漏洞所展開的系統攻擊.

為了加強管制, 除了限制root帳號登入這種必備的手段之外, 還參照了前輩們的做法, 從三部分來著手:

1. sshd_config 部分
這是一個很簡單的設定手段, 除了限制root之外, 還順便限制連線數, 如下:
--- 代碼: ---#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
MaxAuthTries 2

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
PermitEmptyPasswords no
PasswordAuthentication yes

# ChallengeResponseAuthentication=no
#UsePAM no
UsePAM yes
--- 程式碼結尾 ---
這些設定所使用的英文都很簡單, 小弟就不多加介紹.
[/list]
2. 利用hosts.deny與hosts.allow 設定可以連線的ip:
先在 /etc/hosts.allow 裡面, 設定哪些ip是可以連線的, 例如前輩們所舉例的:
--- 代碼: ---sshd:140.128.1.123
--- 程式碼結尾 ---
, 接著, 再到 /etc/hosts.deny 裡面設定拒絕所有ip連線:
--- 代碼: ---sshd:all
--- 程式碼結尾 ---
於是, 就只有在 /etc/hosts.allow 列表裡面的IP, 才可以使用ssh 來主機連線, 其餘都會被拒絕掉.[/list]


3. 利用pam機制:
在最上面那文章裡面提到, 利用pam機制, 讓sshd接到連線時, 先檢查是否在黑名單之中的做法. 方法很簡單, 就是在/etc/pam.d/ssh裡面增加下面的設定:auth       required     pam_stack.so service=system-auth
auth       required     /lib/security/pam_listfile.so item=user sense=deny file=/etc/sshd_user_deny_list onerr=succeed
account    required     pam_nologin.so
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
session    required     pam_loginuid.so
[/list]
(特別注意, 上面設定都是同一行, 並無斷行)
特別新增的是紅色字的部分. 當你的名字在該檔案( /etc/sshd_user_deny_list )之中時, 就無法利用ssh來登入系統.

[/list]

利用以上三個方法, 可以讓你的主機在提供sshd連線的時候, 安全度提升不少. 但切記, 經常的檢查與更新, 減少不必要的服務, 增加許多的安全限制, 才是主機管理的最佳策略!  :wink:

twu2:
如沒特殊原因, 設定允許連線的使用者會比設定不允許的要好多了.
一般用會 sshd 的應該只有少數人.

wbyron:
請問:

我在 hosts.allow 用,

--- 代碼: ---sshd:123.45.67.0/24
--- 程式碼結尾 ---

這樣的語法好像行不通,是我錯了嗎?

leafmouse:
以下是小弟之前整理的文章,也提供大家參考,若有錯誤的話歡迎指正 ^^

以前在看Log的時侯也發現很多IP會沒事太閒嘗試ssh登入你的主機or try 帳號
便想做一點限制,通常我只有開放家裡操作那台PC的IP和公司的Proxy Server
or IP分享器的IP,其餘的IP address全都擋掉

1. 限制root不能ssh登入

預設允許root帳號登入,這裡將#號去掉並改成不允許root用ssh登入


--- 代碼: ---編輯    /etc/ssh/sshd_config
將    #PermitRootLogin Yes
改成  PermitRootLogin no
--- 程式碼結尾 ---



2. tcp_wrappers 套件限制連線的範圍

設定可以連線的IP


--- 代碼: ---編輯  /etc/hosts.allow
新增  sshd: 192.168.1.100 , 61.132.220.17 : allow
--- 程式碼結尾 ---


設定拒絕所有的連線,這樣一來便只有/etc/hosts.allow允許的IP才能連入使用


--- 代碼: ---編輯  /etc/hosts.deny
新增  sshd: ALL : Deny
--- 程式碼結尾 ---



3. Pam 認證機制只允許某些帳號使用ssh連入


--- 代碼: ---
編輯  /etc/pam.d/sshd
新增  auth   required   pam_listfile.so item=user sense=allow file=/etc/ssh/allow_list onerr=succeed
--- 程式碼結尾 ---


--- 代碼: ---
編輯  /etc/ssh/allow_list
新增您想允許使用ssh登入主機的帳號  p.s. 一行一個帳號喔

--- 程式碼結尾 ---


目前我的server在ssh的部份有做這些設定,用tcp_wrappers做IP連線的限制我覺得滿不錯用的連進我的主機時檢查為不允許的IP就直接connection refuse了,ssh只有allow_list裡的帳號才能登入,我是只設我自己在用的帳號,我想這樣應該安全性提升了一部份,也可以限制某群組才能su,架mail server的話我是沒用virutal account,所以/etc/passwd一般的帳號我也不會讓他們登入shell,如:


--- 代碼: ---account:x:501:501::/home/account:/bin/false
--- 程式碼結尾 ---

netman:
auth   required   pam_listfile.so item=user sense=allow file=/etc/ssh/allow_list onerr=succeed

一般來說, 若 sense=allow 的話, 那 onerr 就不要設 succeed , 而要設為 fail .

導覽

[0] 文章列表

[#] 下頁

前往完整版本