Mẹovà thủ thuậtbảomật SSH nângcao
Ngu
ồ
n:quantrimang.com
Trong bài này, chúng tôi giới thiệu một số thủthuật đơn giản giúp bạn
nâng cao tính năngbảomật cho dịch vụ Secure Shell (SSH).
File cấu hình server SSH được đặt trong thư mục /etc/ssh/sshd_conf. Bạn cần
khởi động lại dịch vụ SSH sau mỗi lần thay đổi để các thay đổi đó được thực thi.
Thay đổi cổng SSH
Mặc định, SSH tuân theo các kết nối đến trên cổng 22. K
ẻ tấn công thường sử
dụng phần mềm quét cổng xem liệu các host (máy trạm) có sử dụng dịch vụ
SSH không. Thay đổi cổng SSH lên cao hơn 1024 là một lựa chọn khôn ngoan,
vì hầu hết mọi chương trình quét cổng (gồm cả nmap) mặc định đều rà soát
được các cổng cao.
Mở file /etc/ssh/sshd_config và tìm dòng có ghi:
Port 22
Thay đổi số cổng và khởi động lại dịch vụ SSH:
/etc/init.d/ssh restart
Chỉ cho phép sử d
ụng giao thức SSH 2
Có hai loại giao thức SSH. Nếu chỉ dùng giao thức SSH 2 thì sẽ an toàn hơn
nhiều vì SSH 1 thường gặp phải vấn đề bảomật với kiểu tấn công man-in-the-
middle và insertion. Mở file /etc/ssh/sshd_config và tìm dòng sau:
Protocol 2,1
Thay đổi dòng thành protocol 2.
Chỉ cho phép một số đối tượng người dùng đăng nhập qua SSH
Bạn không nên cho phép người dùng root đăng nhập qua SSH, vì điều này gây
nên mối đe doạ bảomật lớn mà không cầ
n thiết. Nếu một kẻ tấn công nào đó
thu được đặc quyền root khi đăng nhập vào máy, khả năng phá hoại có thể gấp
mấy lần người dùng thông thường. Bạn nên cấu hình server SSH không cho
phép người dùng root đăng nhập. Đầu tiên, tìm dòng ghi:
PermitRootLogin yes
Thay đổi yes thành no và khởi động lại dịch vụ. Sau đó bạn có thể đăng nhập lại
hệ thống với bất kỳ vai trò người dùng xác định nào đó và chuyển sang người
dùng root nếu muốn trở thành siêu người dùng.
Sẽ khôn ngoan hơn khi tạo một user cục bộ giả hoàn toàn không có đặc quyền
gì trên hệ thống và dùng tên user đó để đăng nhậ
p SSH. Sử dụng cách thức này
sẽ giúp máy tính không bị hại dù tài khoản người dùng có bị xâm phạm. Khi tạo
người dùng này, hãy chắc chắn nó phải nằm trong nhóm wheel để bạn có thể
chuyển sang nhóm superuser (siêu người dùng) nếu cần.
Nếu muốn tạo danh sách một số đối tượng người dùng được phép đăng nhập
vào SSH, bạn có thể mô tả chúng trong file sshd_config. Ví dụ, nếu muốn cho
phép người dùng anze, dasa, kimy đă
ng nhập qua SSH, ở cuối file sshd_config,
thêm vào một dòng như sau:
AllowUsers anze dasa kimy
Tạo banner SSH tuỳ biến
Nếu muốn mời một người dùng kết nối tới dịch vụ SSH để xem một thư nào đó,
bạn có thể tạo banner SSH tuỳ biến. Thực hiện đơn giản bằng cách tạo một file
text (trong ví dụ là file etc/ssh-banner.txt) và đặt bất kỳ kiểu thư text nào bạn có
vào trong đó. Ví dụ:
***********************************************************
******
*This is a private SSH service. You are not supposed to be
here.*
*Please leave immediately. *
***********************************************************
******
Khi muốn chỉnh sửa hoặc ghi file, trong sshd_conf, tìm dòng ghi:
#Banner /etc/issue.net
Không cần bình luận về dòng trên mà hãy thay đổi đường dẫn tới file text banner
SSH tuỳ biến của bạn.
Sử dụng cơ chế thẩm định khoá công cộng DSA
Thay vì sử dụng tên vàmật khẩu khi đăng nhập vào SSH, bạn có thể dùng cơ
chế thẩm định khoá công cộng DSA. Chú ý rằng bạn có thể sử dụng username,
password và khoá DSA cùng một lúc. Sử dụng cơ chế thẩm định khoá công
cộng DSA cho phép hệ thống ngăn chặn được kiểu tấn công theo sách vở, vì
bạn có thể đăng nhập vào dịch vụ SSH mà không cần dùng đến tên vàmật
khẩu. Thay vào đó, bạn cần m
ột cặp khoá DSA: một khoá chung (public) và một
khoá riêng (private). Khoá riêng được giữ trên máy của bạn, còn khoá chung
được đưa lên server. Khi muốn đăng nhập vào một phiên SSH, server sẽ kiểm
tra khoá. Nếu tất cả thông số đều khớp, bạn được đưa vào hệ thống. Nếu khoá
không khớp, kết nối bị ngắt.
Ở ví dụ dưới đây, máy riêng sẽ kết nối tới máy chủ được đặt tên là station1 và
máy chủ là server1. Trên cả hai máy
đều có cùng một thư mục chủ (home
folder). Chú ý là kết nối sẽ không hoạt động nếu thư mục chủ trên client và
server khác nhau. Đầu tiên, tạo một cặp khoá trên máy riêng với lệnh ~$ ssh-
keygen -t dsa. Bạn sẽ được nhắc cụm mật khẩu cho khoá riêng, nhưng hãy
để trống, chúng ta chưa quan tâm đến phương thức này vội. Một cặp khoá được
tạo: khoá riêng nằm trong ~/.ssh/id_dsa và khoá chung được đặt tại
.ssh/id_dsa.pub.
Tiếp theo, copy n
ội dung ~/.ssh/id_dsa.pub to server1 vào file
~/.ssh/authorized_keys. Nội dung trong ~/.ssh/id_dsa.pub có dạng:
~$ cat .ssh/id_dsa.pub
ssh-dss
AAAAB3NzaC1kc3MAAACBAM7K7vkK5C90RsvOhiHDUROvYbNgr7YEqtrdfFC
UVwMWcJYDusNG
AIC0oZkBWLnmDu+y6ZOjNPOTtPnpEX0kRoH79maX8NZbBD4aUV91lbG7z60
4ZTdrLZVSFhCI/Fm4yROH
Ge0FO7FV4lGCUIlqa55+QP9Vvco7qyBdIpDuNV0LAAAAFQC/9ILjqII7nM7
aKxIBPDrQwKNyPQAAAIEA
q+OJC8+OYIOeXcW8qcB6LDIBXJV0UT0rrUtFVo1BN39cAWz5puFe7eplmr6
t7Ljl7JdkfEA5De0k3WDs
9/rD1tJ6UfqSRc2qPzbn0p0j89LPIjdMMSISQqaKO4m2fO2VJcgCWvsghIo
D0AMRC7ngIe6btaNIhBbq
ri10RGL5gh4AAACAJj1/rV7iktOYuVyqV3BAz3JHoaf+H/dUDtX+wuTuJpl
+tfDf61rbWOqrARuHFRF0
Tu/Rx4oOZzadLQovafqrDnU/No0Zge+WVXdd4ol1YmUlRkqp8vc20ws5mLV
P34fST1amc0YNeBp28EQi
0xPEFUD0IXzZtXtHVLziA1/NuzY= anze@station1.example.com
Nếu file ~/.ssh/authorized_keys đã tồn tại, gắn thêm nội dung trong
~/.ssh/id_dsa.pub vào file ~/.ssh/authorized_keys trên server1. Bạn chỉ cần thực
hiện một việc là thiết lập chính xác đặc quyền trong file ~/.ssh/authorized_keys
trên server1:
~$ chmod 600 ~/.ssh/authorized_keys
Bây giờ cấu hình file sshd_conf để sử dụng cơ chế thẩm định khoá DSA. Hãy
chắc chắn rằng bạn có ba dòng không chú thích sau:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
Khởi động lại dịch vụ. Nếu mọi thứ đã được cấu hình chính xác, bạn đã có thể
sử d
ụng SSH cho server và đặt trực tiếp nó vào thư mục chủ mà không cần bất
kỳ tương tác nào khác.
Nếu muốn chỉ sử dụng duy nhất một cơ chế thẩm định DSA, không cần chú
thích hay thay đổi dòng PasswordAuthentication trong file sshd_config từ yes
thành no:
PasswordAuthentication no
Nếu ai đó cố gắng kết nối tới dịch vụ SSH mà không có khoá chung trên server,
anh ta sẽ bị từ chối và thậm chí không được đưa nền
đăng nhập ra với thông
báo lỗi:
Permission denied (publickey).
Sử dụng các hàm bao TCP để cho phép chỉ một số host được kết nối
Phương thức trên sẽ rất hữu ích nều bạn muốn giới hạn số host trên mạng có
thể kết nối tới dịch vụ SSH. Nhưng nó không thể sử dụng hoặc kết hợp được với
cấu hình các bảng IP (iptable). Thay vào đó, bạn có thể dùng các hàm bao TCP,
cụ thể là sshd TCP. Bạn có thể đưa ra quy tắc chỉ cho phép một số host nhất
định trên mạng con cục bộ (local subnet) 192.168.1.0/24 và host từ xa
193.180.177.13 kết nối tới dịch vụ SSH.
Các hàm bao TCP mặc định đầu tiên sẽ xem trong file /etc/hosts.deny danh sách
các host bị từ chối kết nối tới dịch vụ. Tiếp theo là file /etc/hosts để xem liệu có
quy tắc nào cho phép một số host kết nối tới một dịch vụ đặc bi
ệt nào đó không.
Ví dụ, tôi sẽ tạo một quy tắc như vậy trong tư mục /etc/hosts.deny:
sshd: ALL
Quy tắc trên có nghĩa là, mặc định tất cả các host đều bị cấm truy cập dịch vụ
SSH. Điều này là cần thiết, vì nếu không tất cả các host ở đây đều có quyền truy
cập dịch vụ SSH. Do hàm bao TCP đầu tiên sẽ xem xét trong file hosts.deny,
nếu không có quy tắc nào liên quan đến ngăn chặn sử dụng dịch vụ SSH, bất kỳ
host nào cũng có thể đến nôi đến nó. Tiếp theo, tạo một quy tắc trong
/etc/hosts
để cho phép chỉ một số host cụ thể (như được định nghĩa ở trên) sử dụng dịch
vụ SSH:
sshd: 192.168.1 193.180.177.13
Bây giờ, chỉ có các host trên mạng 192.168.1.0/24 và host 193.180.177.13 mới
có quyền truy cập dịch vụ SSH. Tất cả host khác đều bị ngắt kết nối trước khi
được đăng nhập và nhận một thông báo lỗi như sau:
ssh_exchange_identification: Connection closed by remote
host
Sử dụng iptables để giới h
ạn số lượng host được kết nối
Một lựa chọn khác ngoài các hàm bao TCP là giới hạn truy cập SSH với iptables
(các bảng địa chỉ IP). Song, bạn có thể sử dụng kết hợp cả hai phương thức này
cùng một lúc. Dưới đây là một ví dụ đơn giản về cách cho phép một số host nhất
định kết nối tới SSH:
~# iptables -A INPUT -p tcp -m state state NEW source
193.180.177.13 dport 22 -j ACCEPT
Và để chắc chắn rằng không có host nào khác được truy cậ
p dịch vụ SSH:
~# iptables -A INPUT -p tcp dport 22 -j DROP
Ghi lại một số quy tắc mới và hoàn chỉnh công việc.
Một số mẹo thời gian SSH
Bạn có thể dùng các tham số iptables khác để giới hạn kết nối tới dịch vụ SSH
trong một khoảng thời gian nhất định. Kiểu thời gian có thể là giây, phút, giờ,
hoặc ngày (/second, /minute, /hour, /day ), như ví dụ dưới đây.
Ở ví dụ đầu, n
ếu người dùng nhập mật khẩu sai, truy cập vào dịch vụ SSH sẽ bị
khoá trong một phút. Và sau đó người dùng chỉ được phép gõ thông tin đăng
nhập vào sau từng phút:
~# 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
Trong ví dụ thứ hai, iptables được thiết lập chỉ cho phép host 193.180.177.13 kết
nối tới dịch vụ SSH. Sau ba lần đăng nhập thất bại, iptables chỉ cho phép host
đăng nhập lại sau từng phút:
~# 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
Kết luận
Các thành phần này không khó cầu hình, nhưng chúng là những kỹ thuật rất
mạnh trong chế độ bảomật dịch vụ
SSH. Bỏ ra chút thời gian đầu tư, bạn sẽ có
được giấc ngủ ngon.
. Mẹo và thủ thuật bảo mật SSH nâng cao
Ngu
ồ
n:quantrimang.com
Trong bài này, chúng tôi giới thiệu một số thủ thuật đơn giản giúp bạn
nâng cao. năng bảo mật cho dịch vụ Secure Shell (SSH) .
File cấu hình server SSH được đặt trong thư mục /etc /ssh/ sshd_conf. Bạn cần
khởi động lại dịch vụ SSH sau