Giải ngố Kali Linux – Phần 2: Cấu hình SSH, PostgreSQL trên Kali Linux

Kết thúc Phần 1: Kali Linux là gì?, tôi có đề cập đến vấn đề “tắt các service không cần thiết trước khi đi vào vùng chiến sự”. Tôi nói kiểu này thật sự là đang chơi khó các “gà mờ chân chính” vì mới lần đầu tiếp xúc với Kali Linux thì biết cái mịa gì đâu mà xác định service nào không cần thiết. Để chữa cháy cho lỗi lầm nghiêm trọng nói trên, kỳ này tôi sẽ giới thiệu mở màn với 2 service quen thuộc là SSHPostgreSQL.

Nội dung chém gió sẽ tập trung vào mục đích sử dụng và các khả năng tùy chỉnh cấu hình của 2 service này.

#1 Cần làm gì trước khi cấu hình một service mới

Như trình bày ở trên, bài viết này hướng đến các đối tượng “gà mờ chân chính” nên 99.99% các service đều có thể liệt vào dạng “mới” (nếu nó không phải “mới” thì bạn cũng nên xem qua để dự phòng cho một ngày xấu trời bỗng nhiên service bị lỗi còn biết đường xử lý).

Khi bạn muốn cấu hình một service mới, trình tự chuẩn bị chuẩn cmn mực như sau:

  • Đọc tâm thư của tác giả service/package. Tâm thư này thường được tìm thấy tại vị trí /usr/share/doc/package_name/README với các thông tin về chương trình, các lỗi phổ biến nhất và giải pháp nhằm giúp bạn ngăn ngừa vấn đề từ trong trứng nước;
  • Xem tài liệu chính thức của service/package. Đối với phần này bạn có thể dùng command dpkg -L package_name liệt kê danh sách các file có trong package để xác định các tài liệu liên quan và file cấu hình (thường nằm tại /etc/package_name). Hoặc bạn có thể dùng command dpkg -s package_name để xem meta-data của package cùng các đề xuất hay ho có thể có khác (ví dụ utility hỗ trợ cấu hình);
  • Và cuối cùng bạn cũng nên tia cụ thể vào file cấu hình. Thông thường file này sẽ có luôn các comment diễn giải chi tiết các giá trị có thể thiết lập cho từng thông số. Ngoài ra, một vị trí khác cũng rất quan trọng đó là các file cấu hình mẫu hay được đặt trong /usr/share/doc/package_name/examples/. Dựa vào các “bài mẫu” này bạn sẽ tha hồ tùy biến để phục vụ cho dã tâm của mình.
Nano Readme location
Nano Readme location
Nano Readme content
Nano Readme content
dpkg -L nano
dpkg -L nano
dpkg -s nano
dpkg -s nano

#2 Cấu hình SSH

Nếu bạn chưa biết thì mục tiêu cơ bản của Secure Shell – SSH (với service tương ứng là sshd) là giúp truy cập từ xa, truyền tải file hoặc chạy command trên Remote Machine. Đây là công cụ sinh tồn mà nhà nhà đều phải có, đặc biệt là các cụ hay phải làm việc từ xa với Server. Ngay cả khi con Kali Linux không phải Remote Machine mà là Virtual Machine ăn nằm ngay trên con máy thật của bạn thì SSH vẫn hữu ích cho tình huống bạn muốn tăng tốc xử lý cho các phiên làm việc “thuần command line”. Trong tình huống này, việc chạy các chương trình SSH từ máy thật để truy cập Kali Linux Terminal và xử lý sẽ nhanh gọn hơn việc thao tác chuột chuyển đổi qua lại giữa 2 thế giới thật và ảo khá nhiều. Bạn cần lưu ý, trên Kali Linux mặc định SSH service sẽ bị tắt nên khi cần sử dụng bạn có 2 phương án:

  • Chạy thủ công với systemctl start ssh
  • Cấu hình chạy khi khởi động với systemctl enable ssh.

Lưu ý: Do tôi đã chạy systemctl start ssh rồi nên để demo lại tôi cần tắt nó với systemctl stop ssh với trước. Vì chưa thay đổi Port mặc định 22 nên để kiểm tra trước và sau khi chạy SSH tôi có thể dùng command netstat -plant | grep :22.

Check SSH service
Check SSH service

Nhìn chung, với thằng SSH, việc cấu hình để cho nó chạy được thì khá đơn giản. Tuy nhiên, do nội lực nó rất thâm hậu (bạn gần như có thể kiểm soát tuyệt đối Remote Machine với nó) nên việc bỏ thời gian nghiên cứu kỹ cái file cấu hình tại vị trí /etc/ssh/sshd_config là một ý kiến không tồi.

Với cấu hình mặc định, khả năng login với user root theo kiểu dùng password sẽ bị tắt nên trước hết bạn sẽ cần phải thiết lập ssh key với ssh-keygen (Cái này tương ứng với tùy chọn mặc định là prohibit-password. Bạn có thể đổi cấu hình mặc định này bằng cách chỉnh tùy chọn PermitRootLogin sang Yes. Tuy nhiên, nếu định xài nghiêm chỉnh thì bạn đừng nên chơi phương án này). Nếu thích chơi gắt, bạn cũng có thể thiết lập tương tự cho các user khác bằng cách thiết lập No cho PasswordAuthentication.

Ngoài ra, SSH sẽ chạy mặc định với Port 22. Bạn cũng có thể tùy chỉnh thông số Port sang giá trị khác (trong giới hạn cho phép và không xung đột với dịch vụ khác).

SSH config
SSH config

Sau khi ưng ý với các thiết lập, bạn sẽ cần load lại service để cập nhật các thông số cấu hình với command:

systemctl reload ssh

#3 Cấu hình cơ sở dữ liệu PostgreSQL

Mục đích của dịch vụ SSH thì tôi nghĩ dễ hình dung rồi nhưng PostgreSQL thì liên quan vẹo gì đến Kali Linux mà cấu hình cho nhức óc. Xin chia buồn với bạn là một số công cụ trên Kali Linux (ví dụ Metasploit Framework) sẽ cần hỗ trợ của PostgreSQL. Vậy nên đừng né tránh vấn đề nữa mà hãy bắt tay vào việc thôi.

PostgreSQL là dạng database server được nhiều loại hình service tin dùng để lưu trữ dữ liệu. Để có thể tin cậy mần ăn với nhau, các service này phải trải qua quá trình authentication (xác thực) trước khi có thể kết nối đến dữ liệu lưu trữ trong PostgreSQL database. Sau đó, sẽ cần có bước authoriazation (phân quyền) tương ứng cho các user account với privilege (thẩm quyền) phù hợp, ví dụ user hạng ruồi, lông gà lông vịt chỉ được phép xem và xem mà không được làm gì khác trên database. Và như các thể loại khác, trước khi chiến đấu với PostgreSQL, bạn cần khởi động nó với command:

systemctl start postgresql

Mặc định, PostgreSQL lắng nghe các kết nối đến theo hai cách:

  • Port TCP 5432 của localhost interface;
  • File-based socket.

Bạn toàn quyền tùy chỉnh các cấu hình liên quan trong postgresql.conf với:

  • listen_addresses: tùy chọn địa chỉ để lắng nghe kết nối đến;
  • port: tùy chỉnh cổng kết nối đến nếu không muốn xài 5432 mặc định;
  • unix_socket_directories: xác định thư mục chứa file-based socket.
Postgresql config
Postgresql config

Tùy thuộc vào các phương án kết nối, quá trình xác thực cho client sẽ khác nhau (ví dụ file pg_hba.conf sẽ xác định con client nào được phép kết nối trên mỗi socket và phương thức xác thực ra sao). Nếu bạn không chọc ngoáy gì thì mặc định kiểu file-based socket sẽ sử dụng Unix user account làm username cho PosgreSQL luôn mà không cần xác thực thêm. Nếu chơi kiểu kết nối TCP, nó sẽ yêu cầu user xác thực với usernamepassword (trong database do PosgreSQL quản lý).

Ngoài ra, còn có một user là đặc biệt là postgres với “full administrative privileges over all databases” – nghĩa là toàn quyền sinh sát trên tất cả database. Đây sẽ là vị trí bàn đạp quan trọng để bạn sinh sôi nảy nở các user và database tùy theo nhu cầu trong các ngữ cảnh cụ thể mà tôi sẽ bàn kỹ thêm vào dịp khác.

1 thought on “Giải ngố Kali Linux – Phần 2: Cấu hình SSH, PostgreSQL trên Kali Linux”

Leave a Reply

Your email address will not be published. Required fields are marked *