52AV手機A片王|52AV.ONE
標題:
修改 sshd 的設定 ,設定檔 /etc/ssh/sshd_config
[打印本頁]
作者:
IT_man
時間:
2015-12-28 10:28
標題:
修改 sshd 的設定 ,設定檔 /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
) K7 V" e g+ [) x W
% O5 G g0 u& Z/ o8 x8 R# h' Q
1.修改預設 port (可用多行開啟多個 port)
E& g, e# z8 I
Port <port>
' s% ?& d8 p9 j+ Y# ^& s
5 U% M+ |! c, B" p; `
2.僅監聽特定 ip (適用於多網卡/多 IP 的情形)
% q$ e% W" p; Q% A) D# |
ListenAddress 192.168.1.10
! I7 N0 |. y- |! }4 h
0 g8 f: ~1 K% b4 U ~
3.禁止 root 登入
" I u1 ]3 X# [4 l- ]3 I+ H" x! ]0 d s
PermitRootLogin no
6 @1 \9 Z) g$ r1 p4 \/ T2 r3 ~. H
管理者必須先以個人帳號登入,再 su 成 root,或利用 sudo 工作。
% w& U0 D* r1 D4 P( {) N1 m" B, H
1 A& N* z B! v# W5 T: m) k7 m
4.禁止使用空密碼登入
; S6 x) t+ z$ @/ U$ b4 |
PermitEmptyPasswords no
+ z" g3 I3 V! ^1 f
. _1 j# ]* G9 @* a/ p! r# d/ ~
5.僅允許或拒絕特定帳號或群組登入
* m$ P4 H9 l) |- V6 N0 p
AllowUsers <user1> <user2> <user3>
! W" y) z+ I& g8 K L
AllowGroups <group>
+ f% }' G" D" |. i% ?3 a& {4 ~2 A
DenyUsers *
6 L1 y: J0 K& m& J# Z% w3 R# L
DenyGroups no-ssh
3 E6 ~6 w* w. {+ R% ?( T% V& R
根據實驗,對於同一帳號而言,如果同時 Allow 跟 Deny 的話,結果會是 Deny 的。
) ]5 | U3 t& g- b% I
% r9 Q# ], p) i- s6 q" u- }
6.廢除密碼登錄,強迫使用 RSA/DSA 驗證
$ i6 S' L9 h$ q: | r) N1 a6 b
RSAAuthentication yes
# v& o; v! E" Q8 _7 v* g- W
PubkeyAuthentication yes
& ^, R1 v9 z) w' P/ L- b
AuthorizedKeysFile %h/.ssh/authorized_keys
e! N; i" ?6 |9 {8 M ^* H) x
PasswordAuthentication no
$ {) g$ F/ N6 `
並確保 user 的 ~/.ssh 權限為 700,同時將該 user 的 public key 加入其 ~/.ssh/authorized_keys 中。Public key 的產生方式可搜尋 ssh-keygen。
+ J% \. o6 A2 h; a3 v$ B! e
' v; J2 Z( A; h/ e7 q) J
7.僅允許 SSHv2
- Z2 Z3 j0 j4 Y2 O8 h7 `( }
Protocol 2
# n8 w! X+ X! F' I' p9 Q; j
t, C) p2 q: c; k* b
8.限制特定使用者、群組、主機或位址的登入行為,這裡以限制 somebody 與 handsomebody 不可使用密碼登入為例
4 K. ^6 k. E1 K+ L, A* b% O! k
Match User somebody,handsomebody
! J6 ?7 J: c& b, y$ S3 @. s' k
PasswordAuthentication no使用 TCP wrappers 限制來源 IP
3 i2 W" ]$ T- T
# vim /etc/hosts.deny
; l- Q5 X0 b% E- T2 y# l
sshd: ALL
/ Z( c9 l) L+ y. L
# vim /etc/hosts.allow
9 {9 \- i: f2 O0 o2 j
sshd: 192.168.1 1.2.3.4 # 僅允許 192.168.1.* 與 1.2.3.4 連線
5 s. m. G# u9 J4 ^: W
u6 V& a# p; T4 b- k# H3 ?7 d
9.使用 iptables 限制來源 IP
: w9 D5 i$ k/ } G
# iptables -A INPUT -p tcp -m state --state NEW --source 1.2.3.4 --dport 22 -j ACCEPT
) ^9 {- |5 d2 x7 ^6 q
# iptables -A INPUT -p tcp --dport 22 -j DROP
% c9 x' n( _7 L3 l
設定會立即生效,若希望重開機後還能保存,需要手動儲存 iptables 的設定。
n# I9 X+ k3 a4 J# b
8 i- u* O- _8 s7 s
10.時間鎖定
6 n( }. W _$ A4 _
你可以使用不同的iptables參數來限制到SSH服務的連接,讓其在一個特定的時間範圍內可以連接,其他時間不能連接。你可以在下面的任何例子中使用 /second、/minute、/hour 或 /day 開關。
) F, }) P7 H+ r4 ^
第一個例子,如果一個用戶輸入了錯誤的密碼,鎖定一分鐘內不允許在訪問SSH服務,這樣每個用戶在一分鐘內只能嘗試一次登陸
* z( q L' m0 N% T5 a
# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
. T+ D& ~2 u( W* G! p, M# t
# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP
( G$ U9 K4 d9 F( u+ l1 v
第二個例子,設置iptables只允許主機193.180.177.13連接到SSH服務,在嘗試三次失敗登陸後,iptables允許該主機每分鐘嘗試一次登陸
' f0 F9 }, m# |- c
# 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
; }' `1 V/ [% ?% j" w- |9 E
# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -j DROP
3 O0 b0 U$ h2 E4 |- `8 ~! l
( ^8 q! J% q$ R' g4 Q
11.檢查相關檔案權限,不安全則不允許登入
* H1 D; _1 f. s: `& h7 u
StrictModes yes
! o1 `+ X7 S7 f( }
某些相關檔案權限設定若有錯誤時,可能造成安全性風險。如使用者的 ~/.ssh/authorized_keys 權限若為 666,可能造成其他人可以盜用帳號。
, D" C% _4 x! l" q0 j$ z9 y4 p2 v
5 H) N% u" T- _
12.自訂使用者登入時顯示的 banner (話說這跟安全性有什麼關係...? 大概可以用社交方式嚇跑壞人吧...= =a)
. C' c/ X( a/ Q% _5 z
Banner /etc/ssh/banner # 任意文字檔
* e3 w1 n6 `0 M) L" W. F- W8 {2 z9 d
4 x' v; n% T7 {$ t" c3 Q; D& ]
13.限制 su/sudo 名單
( `' n1 g0 B! h0 |6 A; @0 e
# vi /etc/pam.d/su
/ j/ X, {2 `, P% @8 M5 ~2 ~
auth required /lib/security/$ISA/pam_wheel.so use_uid
! q- T" z/ f/ I* R
# visudo
0 J+ j/ l3 Q7 e2 q, r3 Z/ N
%wheel ALL = (ALL) ALL
# R `0 g8 z) ?9 Y* ], v
# gpasswd -a user1 wheel
/ f& [# ?5 Q4 `, O' P; l0 S6 ]
; A" Y! u4 u( K1 Q
14.限制 ssh 使用者名單
; w0 P' \1 n" |! D" g" r$ n- O' a* d
# vi /etc/pam.d/sshd
% j. k& X) n" r; M# l/ ^
auth required pam_listfile.so item=user sense=allow file=/etc/ssh_users onerr=fail
/ j0 W/ S1 u/ y, l; L9 y# g
# echo <username> >> /etc/ssh_users
$ ^2 \8 m: ^2 s9 _' [! F
15.
防止SSH連線逾時(timeout)
,讓PuTTY 與 SSH 一直保持連線
4 m2 U6 W* x b0 O- y
修改/etc/ssh/sshd_config
4 z0 `9 M+ }; F/ Y' q* x; w
#TCPKeepAlive yes
& a( h1 |( T( P4 } S9 a
#ClientAliveInterval 0
5 c" r$ Y. i/ L: `
#ClientAliveCountMax 3
% q$ x/ U( n! y5 u; s2 H, b
將#拿掉==>存檔
& `2 I% A% M8 }/ Q0 u$ ]& z
#service ssd restart ==>重啟sshd
7 P9 E3 B2 ?7 ~! @' ^
接下來修改 Pietty 的參數,進入
”PuTTY 連線設定”
:
" f% L! f; j3 H
選擇
「Connection」
項目,將
「Seconds between keepalives [0 to turn off]」右邊的欄位
輸入每隔幾秒,傳送一個null封包以保持連線。
$ I+ Z! M0 P ?4 a: J$ `; q! P
. }6 X& c4 h( B% w2 o2 D
歡迎光臨 52AV手機A片王|52AV.ONE (https://www.itech.casa/)
Powered by Discuz! X3.2