Tăng cường bảo mật SSH trên Ubuntu sử dụng port knock

30/12/2020

Thông thường chúng ta vẫn sử dụng giao thức SSH để kết nối giữa client và server. Để thực hiện được việc này chúng ta cần mở một port trên server để cho phép kết nối này. Như vậy hacker có thể sử dụng các kỹ thuật để biết port này và sử dụng các phương pháp tấn công để SSH vào server. Trong bài viết này tôi sẽ giới thiệu một kỹ thuật được sử dụng để ẩn port có tên là port knock.

Cách thức hoạt động của port knock

Port knocking hoạt động bằng cách xem log lưu lượng các gói tin vào ra trên filewall hoặc lưu lượng gói tin trên một interface. Dựa vào đây chúng ta sẽ cấu hình chuỗi các sự kiện theo quy tắc. Nếu chuối sự kiện này đúng thì sẽ thực hiện thay đổi rule của firewall.

Ví dụ cấu hình port knock cho port 22. Mặc định firewall sẽ không mở port 22 để cho phép kết nối SSH. Khi cấu hình port knock ta để sự kiện là khi nhận được lần lượt 3 gói tin SYN gửi đến các port 7000, 8000 và 9000 thì firewall sẽ được thay đổi để mở port 22. Và khi nhận lần lượt 3 gói tin SYN đến các port 9000, 8000, 7000 thì firewall sẽ xóa rule cho phép SSH.

Cài đặt

Cài đặt iptables

Port knock hoạt động dựa trên iptables nên ta cần cài iptables trên server.

Trên Ubuntu sử dụng ufw làm firewall nên để cài iptables ta cần disable ufw trước

ufw disable

Cài đặt iptables

apt-get install iptables iptables-persistent

Cho phép giữ các phiên đang kết nối để việc thực hiện không bị gián đoạn (trong trường hợp bạn đang SSH vào server)

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Đổi policy mặc định của iptables thành DROP

iptables --policy INPUT DROP

Lưu lại cấu hình

netfilter-persistent save  netfilter-persistent reload

Cài đặt knockd

Install knockd

apt-get install knockd -y

Enable knockd để start knockd mỗi lần reboot.

vi /etc/default/knockd

Trong file này ta sửa lại 2 dòng

START_KNOCKD=1
KNOCKD_OPTS="-i ens3"

Trong đó ens3 là tên của interface lắng nghe kết nối trên server

Tiếp tục sửa file /etc/knockd.conf

vi /etc/knockd.conf

Sửa file này lại như sau

[options]         logfile = /var/log/knockd.log  [openSSH]         sequence    = 7000,8000,9000         seq_timeout = 15         command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT         tcpflags    = syn  [closeSSH]         sequence    = 9000,8000,7000         seq_timeout = 15         command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT         tcpflags    = syn

Trong đó:

  • logfile: là file log của dịch vụ knockd
  • sequence: Thứ tự các port nhận kết nối trước khi mở port SSH
  • seq_timeout: thời gian đợi để nhận đủ các gói tin đến các port liệt kê ở sequence
  • command: command sẽ được thực hiện khi nhận đủ gói tin đến các port liệt kê ở sequence trước khoảng thời gian seq_timeout
  • tcpflags: cờ của mỗi gói tin gửi đến các port trên

Như vậy khi client gửi liên tiếp 3 gói tin với cờ SYN được bật đến các port 7000, 8000 và 9000 của server thì câu lệnh mở port SSH sẽ được thực hiện. Và khi ta thực hiện liên gửi 3 gói tin SYN đến lần lượt 3 port 9000, 8000, 7000 thì port SSH này sẽ được đóng lại.

Test lại

Để đảm bảo rằng cấu hình đã thành công chúng ta thực hiện kiểm tra lại

SSH đến server

ssh [email protected] ssh: connect to host 10.10.1.10 port 22: Connection refused

Không thể SSH đến server

Sử dụng nmap để kiểm tra xem port SSH có mở

nmap 10.10.1.10  Starting Nmap 7.60 ( https://nmap.org ) at 2019-10-11 16:21 +07 Nmap scan report for 10.10.1.10 Host is up (0.00011s latency). All 1000 scanned ports on 10.10.1.10 are filtered MAC Address: 52:54:00:AB:22:F8 (QEMU virtual NIC)  Nmap done: 1 IP address (1 host up) scanned in 11.38 seconds

Ta không thấy port SSH đâu

Thực hiện telnet lần lượt đến 3 port 7000, 8000 và 9000

telnet 10.10.1.10 7000 telnet 10.10.1.10 8000 telnet 10.10.1.10 9000

Sử dụng nmap để kiểm tra lại

nmap 10.10.1.10  Starting Nmap 7.60 ( https://nmap.org ) at 2019-10-11 16:22 +07 Nmap scan report for 10.10.1.10 Host is up (0.00040s latency). Not shown: 999 filtered ports PORT   STATE SERVICE 22/tcp open  ssh MAC Address: 52:54:00:AB:22:F8 (QEMU virtual NIC)  Nmap done: 1 IP address (1 host up) scanned in 18.30 seconds

Ta thấy port SSH lúc này đã là open

SSH lại vào server

ssh [email protected] [email protected]'s password:  Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_64)   * Documentation:  https://help.ubuntu.com  * Management:     https://landscape.canonical.com  * Support:        https://ubuntu.com/advantage  131 packages can be updated. 84 updates are security updates.  New release '18.04.2 LTS' available. Run 'do-release-upgrade' to upgrade to it.   Last login: Tue Oct  8 00:13:34 2019 from 10.10.1.1 root@ubuntu:~# 

Tôi đã thực hiện login thành công.

Đến đây việc cấu hình đã thành công. Hy vọng đây sẽ là kỹ thuật nhỏ giúp server của bạn an toàn hơn.

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Install and Get Started with PowerShell on CentOS

PowerShell is powerful configuration tool used by system administrators for automation and configuration of Windows operating...
29/12/2020

[Zabbix] Giám sát Windows Server sử dụng SMNP

SNMP (Simple Network Manager Protocol) là giao thức rất phổ biến trong môi trường network hiện nay, hầu...
30/12/2020

Hướng dẫn cài đặt LAMP trên CentOS 7

LAMP là một hệ thống các phần mềm để tạo dựng môi trường máy chủ web được viết bằng...
30/12/2020
Bài Viết

Bài Viết Mới Cập Nhật

Mua Proxy V6 Nuôi Facebook Spam Hiệu Quả Tại Onetcomvn
03/06/2024

Hướng dẫn cách sử dụng ProxyDroid để duyệt web ẩn danh
03/06/2024

Mua proxy Onet uy tín tại Onet.com.vn
03/06/2024

Thuê mua IPv4 giá rẻ, tốc độ nhanh, uy tín #1
28/05/2024

Thuê địa chỉ IPv4 IPv6 trọn gói ở đâu chất lượng, giá RẺ nhất?
27/05/2024