Trước tiên hãy cùng mình tìm hiểu qua Brute Force là gì?
Tấn công Brute Force là gì?
Brute Force là một loại tấn công mạng, khi đó bạn sử dụng phần mềm, sau đó xoay vòng các ký tự khác nhau, kết hợp chúng để tạo ra một mật khẩu đúng. Phần mềm Brute Force Attack password cracker đơn giản sẽ sử dụng tất cả các kết hợp có thể để tìm ra mật khẩu máy tính hoặc máy chủ mạng.
Phương pháp tấn công này vô cùng đơn giản mà không phải sử dụng bất kì kỹ thuật thông minh nào. Dựa trên cơ sở là toán học và xoay vòng số nên để tấn công hiệu quả sẽ cần phải tốn một khoảng thời gian để mở mật khẩu. Số thời gian chỉ cần tính bằng giây và nhanh hơn rất rất nhiều lần so với bộ óc của con người.
Phương pháp tấn công Brute Force tốt hay xấu còn phụ thuộc vào mục đích mà người tấn công muốn hướng tới là gì. Trong trường hợp sử dụng vào mục đích xấu thì tất nhiên rồi, chúng sẽ cố hack vào sâu bên trong máy chru của bạn, chiếm quyền quản trị viên.
Còn trong trường hợp nó được sử dụng vào mục đích tốt thì người thực hiện có thể đang muốn kiểm tra hệ thống bảo mật SSL có được tốt hay không, hoặc cũng có trường hợp là người dùng quên mật khẩu đăng nhập nên họ đã thông qua Brute Force để lấy lại được mật khẩu.
3 bước hạn chế Brute Force
1. Thay đổi Port SSH
Việc đổi Port SSH là việc hết sức cần thiết, mặc định Port SSH sẽ là 22. Với port này rất dễ scan và mình khuyên các bạn sau khi thiết lập máy chủ hãy lập tức đổi Port ngay.
Cách thức đổi Port rất đơn giản bạn hãy thực hiện như sau
Bước 1: Đổi port SSH
Bạn mở file sshd_config
sau đó tìm đến dòng #Port 22, bỏ comment và sửa lại Port mà bạn mong muốn
vi /etc/ssh/sshd_config
Bước 2: Mở port trên Firewall
Tiếp theo bạn cần mở Port trên Firewall để hoạt động. Vì nếu bạn không mở port thì bạn sẽ không thể SSH vào được nữa.
- Đối với Firewalld
firewall-cmd --permanent --add-port=2022/tcp
firewall-cmd --reload
- Đối với UFW
ufw allow 2022/tcp
- Đối với iptables
iptables -I INPUT -p tcp --dport 2022 -j ACCEPT
- Đối với CSF
Đối với CSF bạn mở file csf.conf
tìm đến dòng TCP_IN và nhập port cần mở.
vi /etc/csf/csf.conf
Sau đó thực hiện khởi động lại CSF với lệnh sau
csf -r
Bước 2: Khởi động dịch vụ SSH
systemctl restart sshd
2. Sử dụng SSH Key, tắt SSH Password Root
Bước 1: Tạo SSH Key
SSH Key bạn có thể hiểu đơn giản là một kiểu chứng thực đối chiếu giữa người dùng (Private key) và máy chủ server/vps (Public key). Public key và Private key có mối quan hệ chặt chẽ với nhau để nhận diện mở khóa. Khi bạn tạo SSH Key sẽ có 2 file bao gồm là Public Key, file này bạn sẽ đưa lên máy chủ server/vps còn Private key bạn sẽ để ở máy tính cá nhân. Nói một cách dễ hiểu hơn Public key chính là ổ khóa còn Private key chính là chìa khóa và để mở được ổ khóa thì phải đúng chìa khóa thì mới mở được.
2.1 Sử dụng Putty trên Windows
Với hệ điều hành Windows mình giới thiệu đến bạn một phần mềm SSH mạnh mẽ nhất là PuTTY, một phần mềm đông đảo ngưởi dùng sử dụng để SSH và tạo SSH KEY, mình để link bên dưới để bạn tải về nhé.
Sau khi tải xong và cài đặt bạn mở PuTTY Gen lên để tạo SSH key nhé. Tại đây bạn chọn Generate để tạo.
Tiếp đến bạn hãy Di chuyển con chuột vào khung trống này cho đến khi tạo xong ssh key.
Khi xuất hiện như ảnh bên dưới là đã thành công. Nhưng bạn hãy thực hiện một bước nữa là đặt passphrase để mở private key nhé. Bạn nhập vào passwd tự chọn vào khung Key passphase và Confirm passphase. Sau khi nhập hoàn tất bạn click vào Save private key và save public key để lưu lại ở máy cá nhân.
2.2 Sử dụng Linux/MacOS
Với Linux hoặc MacOS đều thuộc nhóm Hệ điều hành Unix do đó cách thức và lệnh tạo cũng sẽ tương đương giống nhau. Và để thực hiện được bạn hãy mở cửa sổ Terminal lên sau đó thực hiện nhập vào lệnh sau ssh-keygen -t rsa để tạo chuổi Public key và Private key.
cd ~/.ssh
ssh-keygen -t rsa
Chú thích trong ảnh
- ssh-keygen -t rsa: Lệnh để tạo
- Enter file in which to save the key: Đặt tên cho file ssh key
- Enter passphrase (empty for no passphrase): Đặt mật khẩu để mở khóa cho ssh key
- Enter same passphrase again: Nhập lại mật khẩu để xác nhận.
Sau khi đã có Key bạn hãy upload PublicKey lên Server
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Khi tạo xong file authorized_keys
bạn hãy mở file này lên với lệnh sau vi ~/.ssh/authorized_keys
và copy toàn bộ chuổi ký tự public key đã tạo vào nhé.
Lưu ý: Để ssh key hoạt động bạn cần phải tắt SElinux. Nếu SElinux đang bật thì ssh key sẽ không hoạt động được.
Bước 2: Hướng dẫn sử dụng SSH Key
- Sử dụng SSH Key với PuTTY
Bạn mở PuTTY lên sau đó click vào SSH => Auth. Tiếp đến bạn clck vào Browse để tìm đến file Private key đã tạo và lưu ở bước hướng dẫn trên. Khi đã trỏ được đến file Private và bạn thực hiện SSH thì bạn sẽ nhận được yêu cầu nhập vào Passphrase, bạn hãy nhập Passphrase để hoàn tất bước SSH nhé.
- Sử dụng SSH Key với Linux/MacOS
Với Linux/MacOS để sử dụng SSH key bạn mở Terminal lên và sử dụng lệnh sau để SSH.
ssh -i duong_dan_file_private_key root@ip_may_chu -p nhap_vao_port_ssh
Bước 3: Tắt Login Password
Sau khi đã hoàn tất việc SSH với SSH Key thì bạn thực hiện tắt Login Password. Sở dĩ mình không tắt ngay từ đầu vì sẽ có trường hợp bạn cấu hình chưa đúng và sẽ không SSH vào được nữa.
vi /etc/ssh/sshd_config
Sau đó thực hiện khởi động lại sshd
systemctl restart sshd
3. Cài đặt CSF
CSF (ConfigServer Security & Firewall) là tường lửa Stateful Packet Inspection (SPI) mã nguồn mở phổ biến, giúp bảo vệ hệ thống sử dụng hệ điều hành Linux. Ngoài các tính năng cơ bản của Firewall là filter packet in/out thì CSF còn hỗ trợ ngăn chặn các cuộc tấn công như Brute Force, DDoS Attack.
CSF có thể cấu hình block/restrict port để giới hạn port truy cập. Đồng thời, CSF duy trì danh sách whitelist và blacklist để kiểm soát truy cập. CSF cũng cung cấp Connection Limiting để giới hạn số lượng kết nối, Rate Limitng để giới hạn tần số truy cập, Real Time Block Liste và Port Scan Tracking (chống Scan Port).
Cài đặt Dependencies
- Đối với CentOS 7
yum -y install wget perl unzip net-tools perl-libwww-perl perl-LWP-Protocol-https perl-GDGraph -y
- CENTOS, RHEL 8
dnf -y install @perl
- UBUNTU & DEBIAN
apt-get install perl wget unzip
Cài đặt CSF Firewall
Download CSF vào thư mục /tmp
của server bằng lệnh wget, giải nén file bằng lệnh tar và cuối cùng install CSF bằng cách chạy script ./install.sh
.
cd /tmp
wget https://download.configserver.com/csf.tgz
tar -zxvf csf.tgz
cd csf
./install.sh
Để cài đặt CSF cho cPanel hoặc cài đặt CSF cho Directadmin, các bạn cũng chỉ cần thực hiện các bước tương tự như trên. Việc chạy file ./install.sh
sẽ tự động nhận biết server có đang sử dụng cPanel hoặc Directadmin hay không và sử dụng tiến trình cài đặt tương ứng.
- Xem thêm các bước cấu hinh CSF tại đây
Qua các bước trên hy vọng sẽ giúp bạn hạn chế Brute Force SSH hiệu quả và an toàn.