1. Trang chủ
  2. » Tất cả

Các bước thiết lập cấu hình an toàn máy chủ linux unix

17 1,3K 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 128,94 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Sử dụng các tiện ích có sẵn để liệt kê tất cả các dịch vụ đang thực thi trên hệ thống.. Kiểm tra các cổng dịch vụ port đang mở trên server Sử dụng lệnh sau để liệt kê tất cả các port đan

Trang 1

KIỂM TRA THIẾT LẬP VÀ CẤU HÌNH HỆ THỐNG MÁY CHỦ

Linux/Unix

1 Tổng quan về hệ điều hành Linux

Linux là hệ điều hành máy tính được xây dựng và phát triển trên nên tảng mã nguồn

mở Mặc dầu có rất nhiều phiên bản khác nhau, nhưng tất cả đều được xây dựng trên nhân Linux (kernel) được Linus Torvalds phát triển năm 1992

Linux có thể được cài đặt trên rất nhiều hệ thống thiết bị khác nhau (máy tính, thiết

bị di động, thiết bị mạng…) Đặc biệt Linux là lựa chọn hàng đầu cho các hệ thống máy chủ trên thế giới

Phần hạt nhân (lõi hay kernel) của Linux có thể hiểu đơn giản là một tập hợp các chương trình thường trú trong bộ nhớ Nó là phần chính của hệ điều hành, phụ trách hầu hết các chức năng chính của hệ điều hành như quản lý bộ nhớ, thực thi nhiệm vụ và truy nhập phần cứng Hệ nhân này luôn được cộng đồng nghiên cứu cải tiến liên tục nhằm nâng cao hiệu năng cũng như tính tiện lợi cho nhiều đối tượng người dùng khác nhau Bên cạnh đó kho phần mềm phong phú cùng với khả năng hỗ trợ từ các kênh phân phối khác nhau đã làm cho Linux ngày càng gần hơn với mọi đối tượng người dùng

Một số bản phân phối Linux thường gặp: Ubuntu, Debian GNU/Linux, Red Hat Enterprise Linux, CentOS, SUSE, Gentoo, Slackware, Knoppix…

2 Mã hóa dữ liệu truyền đi

Tất cả các dữ liệu gửi qua môi trường mạng đều có nguy cơ bị hacker tóm được (sniff) ngay trên đường truyền Vì vậy ta mã hóa dữ liệu được truyền đi với thuật toán mã hóa và mật khẩu đủ mạnh hay sử dụng các chứng thư số (certificate)

Sử dụng các chương trình scp, ssh, rsync hoặc sftp để truyền file qua mạng Với 2

công cụ fuse và sshfs, bạn cũng có thể mount các file system nằm trên server ở xa

(remote server file system) một cách an toàn thông qua SSH

GnuPG giúp mã hóa dữ liệu và tạo chữ ký số cho file, thêm vào đó là tính năng quản lý khóa mã hóa tiện lợi

Tránh sử dụng FTP, Telnet, và Rlogin / Rsh

Bất kỳ ai nằm trên cùng một mạng với bạn đều có thể sử dụng một trình bắt gói tin (packet sniffer) để tóm lấy các thông tin (như thông số cấu hình mạng, username,

Trang 2

password, câu lệnh, file…) chưa được mã hóa được gửi bởi các chương trình như FTP, Telnet, Rlogin/Rsh Giải pháp chung cho vấn đề này là chuyển sang sử dụng các chương trình như OpenSSH , SFTP, hoặc FTPS Đối với Fedora/CentOS/RHEL, gõ câu lệnh sau

để xóa bỏ NIS, rsh và các dịch vụ lỗi thời khác:

# yum erase inetd xinetd ypserv tftp-server telnet-server rsh-serve

3 Quản lý dịch vụ hệ thống

Dịch vụ là các chương trình mà sau khi được khởi động sẽ luôn ở trạng thái sẵn sàng để thực thi, phục vụ các yêu cầu Có nhiều dịch vụ đòi hỏi phải luôn hoạt động cùng

hệ thống Tuy nhiên có một số khác chỉ hoạt động khi thực sự cần thiết (vì lý do an toàn)

Vì vậy lựa chọn, sử dụng các dịch vụ một cách hợp lý cũng góp phần làm an toàn hơn đối với các hệ thống máy chủ

3.1 Tắt tất cả các dịch vụ không cần thiết khi khởi động

Cách tốt nhất để hệ thống an toàn là thực thi ít nhất các dịch vụ trên hệ thống Sử dụng các tiện ích có sẵn để liệt kê tất cả các dịch vụ đang thực thi trên hệ thống Tiếp đó xác định các dịch vụ nào là thực sự cần thiết, các dịch vụ còn lại nên tắt đi hoặc gỡ bỏ

Ví dụ: Liệt kê tất cả các dịch vụ đang thực thi

Trên Ubuntu (Debian): # service status-all Trên CentOS (Redhat): # chkconfig list | grep :on

Để tắt một dịch vụ nào đó trên server , ta gõ lệnh sau: # service serviceName stop Hoặc gõ lệnh: # chkconfig serviceName off

3.2 Kiểm tra các cổng dịch vụ (port) đang mở trên server

Sử dụng lệnh sau để liệt kê tất cả các port đang mở và các chương trình sử dụng các port đó:

netstat -tulpn

Hoặc: nmap -sT -O localhost

nmap -sT -O server.example.com

Sử dụng iptables để đóng các port đang mở hoặc sử dụng 2 lệnh service và chkconfig ở trên để tắt các dịch vụ mạng không cần thiết.

Trang 3

3.3 Một số dịch vụ cơ bản

Dịch vụ SSH:

SSH là dịch vụ khuyến nghị sử dụng trong các kết nối từ xa trong các hệ thống Linux/Unix, SSH cung cấp một phương thức an toàn trong quá trình trao đổi dữ liệu giữa hai hệ thống Các hướng dẫn chi tiết về dịch vụ này được giới thiệu tại website

http://www.openssh.org

Một số giải pháp an toàn cho dịch vụ SSH: Thay đổi cổng hoạt động mặc định của dịch vụ SSH nếu có thể (mặc định là cổng 22)

Để tránh nguy cơ tấn công Bruteforce trên SSH, bạn nên thay đổi port mặc định

SSH bằng lệnh sau: vi /etc/ssh/sshd_config Sau đó thay đổi port 22 bằng port tuỳ ý VD:

123 và chạy lại dịch vụ bằng lệnh: service sshd restart.

Giới hạn các địa chỉ IP được kết nối và đăng nhập vào dịch vụ SSH

Dịch vụ DNS:

DNS là dịch vụ phân giải tên miền, có nhiệm vụ phân giải tên miền sang địa chỉ ip

và ngược lại Dịch vụ này giúp người sử dụng không cần phải nhớ chính xác địa chỉ ip của các server ở xa, thay vào đó người dùng chỉ cần nhớ tên miền của các server này Tuy nhiên, nếu cấu hình không an toàn không đúng phương pháp có thể dẫn tới các lỗi cho server cũng như cho chính dịch vụ này Một trong những lỗi nguy hiểm nhất cho dịch vụ này là lỗi Zone Transfers

Khi hệ thống bị lỗi này tin tặc có khả năng: Thu thập thông tin về các subdomain bên trong, lợi dụng để tấn công các máy chủ DNS liên quan

Một số giải pháp an toàn cho dịch vụ DNS: Sử dụng các phiên bản mới nhất cho DNS server, thiết lập các tập tin cấu hình một cách hợp lý

Hệ thống X-windows:

Trong khoa học máy tính, Hệ thống X-Window (còn được gọi tắt là X11 hay X) là một hệ thống cửa sổ dùng để hiển thị đồ họa bitmap Nó cung ứng một bộ các công cụ và giao thức cho phép người dùng xây dựng các giao diện đồ họa (GUI) trong hệ điều hành Unix, tựa Unix, và OpenVMS X còn được hỗ trợ hầu hết trong các hệ điều hành hiện đại

Trang 4

Số lượng chương trình quản lý cho X có rất nhiều hầu hết đều là miễn phí hay tự

do Trong số đó hai chương trình được nhiều người yêu thích và sử dụng nhất (chiếm trên 90% thị phần của các trình quản lý cho X) đó là GNOME và KDE

Việc sử dụng hệ thống X-windows trên các hệ thống gần như không cần thiết khi nguời quản trị có các kênh đăng nhập từ xa an toàn qua SSH Nếu không thực sự cần thiết thì nên gỡ bỏ hệ thống này để hạn chế thấp nhất các nguy cơ có thể có đối với hệ thống

Ta có thể xóa bỏ X Windows system bằng lệnh:

# yum groupremove "X Window System"

4 Gỡ bỏ các gói phần mềm không cần thiết

Hãy tránh cài đặt các gói phần mềm không cần thiết để tránh nguy cơ lỗ hổng ẩn

chứa trong các phần mềm đó bị khai thác Sử dụng các trình quản lý gói như yum, rpm,

apt-get, dpkg… để xem tất cả các gói đã cài trên hệ thống Sau đó, xóa bỏ các gói không

cần thiết

Đối với Redhat-based Distro:

# yum list installed

# yum list packageName

# yum remove packageName

Hoặc với Debian-based Distro:

# dpkg list

# dpkg info packageName

# apt-get remove packageName

5 Cập nhật đầy đủ, thường xuyên các bản vá lỗi cho Linux kernel và các phần mềm khác

Cập nhật các bản vá bảo mật là một công việc quan trọng trong kế hoạch bảo trì Linux sever Linux cung cấp tất cả các công cụ cần thiết để đảm bảo hệ thống của bạn luôn được cập nhật, đồng thời giúp nâng cấp dễ dàng giữa các phiên bản Quản trị hệ thống nên thường xuyên kiểm tra và áp dụng tất cả các bản cập nhật ngay khi có thể

Lệnh thực hiện:

Trang 5

# yum update

# apt-get update && apt-get upgrade

6 Quản lý tài khoản người dùng và chính sách mật khẩu mạnh

6.1 Bảo vệ đăng nhập mức hệ thống

Thông thường, quá tình đăng nhập hệ thống Linux được điều khiển bởi chương trình đăng nhập Chương trình này sẽ đọc thông tin từ hai tập tin /etc/passwd và

/etc/shadow Nếu thông tin đăng nhập phù hợp thì người dùng sẽ được cung cấp shell để truy cập vào hệ thống Cơ chế đăng nhập bằng tài khoản và mật khẩu thường đối mặt với một số nguy cơ như: tấn công đoán tài khoản, mật khẩu, nghe lén (sniffing), tấn công đứng giữa (man-in-the-middle)

Vì vậy cần phải đảm bảo một số yêu cầu sau:

6.1.1 Kiểm tra thời gian tồn tại của mật khẩu (password aging)

Sử dụng lệnh chage cho phép thay đổi số ngày giữa các lần thay đổi mật khẩu và ngày thay đổi mật khẩu lần cuối Dựa vào 2 thông tin ngày, hệ thống sẽ xác định xem khi nào người dùng cần thay đổi mật khẩu của họ

Để vô hiệu hóa password aging, tức là mật khẩu sẽ không bao giờ hết hạn, ta gõ lệnh sau:

# chage -M 99999 userName

Để kiểm tra thông tin về thời gian mãn hạn của mật khẩu của một tài khoản, gõ:

# chage -l userName

Cuối cùng, ta cũng có thể chỉnh sửa file /etc/shadow file theo sự giải thích về các trường dưới đây:

{userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}: {Warn}:{Inactive}:{Expire}:

Minimum_days: Số ngày tối thiểu để thay đổi mật khẩu Tức là, trước khi người

dùng được phép thay đổi mật khẩu của họ thì mật khẩu phải tồn tại ít nhất trong

Mininum_days ngày.

Trang 6

Maximum_days: Số ngày tối đa mà mật khẩu còn hiệu lực Tức là, sau khi mật

khẩu đã tồn tại trong Maximum_days ngày, người dùng bắt buộc phải thay đổi mật khẩu

của họ

Warn : Số ngày trước khi mật khẩu hết hạn mà người dùng sẽ nhận được cảnh báo

rằng mật khẩu của họ cần phải được thay đổi

Expire : Số ngày kể từ ngày 01/01/1970 tài khoản sẽ bị khóa.

6.1.2 Kiểm tra xem các tài khoản có sử dụng lại các mật khẩu trước đó không

PAM là một cơ chế linh hoạt cho việc chứng thực người dùng Ví dụ, bạn có thể ngăn cấm người dùng sử dụng lại các mật khẩu đã từng sử dụng gần đây Điều này được

hiện thực bằng cách sử dụng tùy chọn ghi nhớ (remember option) cho pam_unix – một

module của PAM

Module này cung cấp cho các module PAM khác các tính năng như authentication (chứng thực), account management (quản lý tài khoản)… Ngoài ra, pam_unix còn lưu giữ một danh sách các mật khẩu cũ của mọi người dùng Điều này thực sự hữu ích nếu bạn muốn cấm cản ai đó muốn sử dụng lại các mật khẩu cũ này Danh sách các mật khẩu

cũ nằm trong file /etc/security/opasswd Lưu ý, chỉ khi nào bạn kích hoạt tính năng ghi

nhớ các mật khẩu cũ như hướng dẫn dưới đây thì file opasswd này mới chứa các mật khẩu cũ của tất cả người dùng

Cách giới hạn việc sử dụng lại các mật khẩu cũ :

Trong Debian/Ubuntu, mở file /etc/pam.d/common-password sử dụng lệnh:

# vi /etc/pam.d/common-password

Trong CentOS/RHEL/Fedora, chỉnh sửa file /etc/pam.d/system-auth lệnh:

# vi /etc/pam.d/system-auth

Bây giờ, bạn tìm tới dòng bắt đầu bằng password sufficient và thêm vào cuối dòng này tùy chọn remember=10 Thay số 10 bằng số lượng mật khẩu gần đây nhất mà

sẽ không được phép sử dụng lại

Trang 7

Lưu và đóng file này.

Kể từ lúc này, Linux sẽ ghi nhận lại 10 mật khẩu gần đây nhất Nếu người dùng thử sử dụng lại bất kỳ mật khẩu nào trong số 10 mật khẩu cũ này thì sẽ nhận được thông báo lỗi sau:

6.1.3 Khóa tài khoản sau một số lần đăng nhập thất bại

Người quản trị cần phải cấu hình để khóa một tài khoản sau số lần đăng nhập thất

bại để bảo vệ khỏi bị tấn công Brute-force Lệnh # vi /etc/pam.d/system-auth

Sau đó sửa dòng: account required pam_tally.so deny=3 no_magic_root

lock_time=180

deny=3: giới hạn số lần truy cập thất bại

lock_time=180: thời gian khóa tài khoản sau khi đăng nhập thất bại.

Để mở khóa cho tài khoản sau khi tài khoản này bị khóa sau 1 số lần đăng nhập

thất bại ta gõ lệnh: # faillog -r -u userName

Ta cũng có thể sử dụng lệnh passwd để khóa hoặc mở khóa tài khoản:

# passwd -l userName // khóa tài khoản

# passwd -u userName // mở khóa tài khoản

Để kiểm tra xem danh sách những tài khoản đang bị khóa ta sử dụng lệnh:

# faillog

Trang 8

6.1.4 Xác định các tài khoản sử dụng mật khẩu rỗng

Để kiểm tra xem hệ thống có tài khoản sử dụng mật khẩu rỗng không sử dụng

lệnh: # awk -F: '($2 == "") {print}' /etc/shadow

Để khóa một tài khoản sử dụng mật khẩu rỗng ta sử dụng lệnh: # passwd -l

accountName

6.1.5 Kiểm tra hệ thống đảm bảo rằng không có người dùng thông thường nào có UID = 0

Chỉ có tài khoản root mới có UID =0 với quyền hạn cao nhất để truy cập vào hệ thống Gõ lệnh sau để hiển thị tất cả các tài khoản với UID = 0

# awk -F: '($3 == "0") {print}' /etc/passwd

Bạn sẽ thấy ít nhất 1 dòng tương ứng với tài khoản root như sau:

root:x:0:0:root:/root:/bin/bash

Trường thứ 3 cho biết giá trị UID Nếu có thêm các tài khoản khác có UID =0, hãy đổi lại UID cho những tài khoản này sử dụng lệnh sau:

# usermod –u new_UID userName

6.2 Bảo vệ các truy cập vật lý

Thiết lập mật khẩu BIOS: nhằm ngăn chặn, không cho phép sửa thông tin cấu hình trong BIOS

Thiết lập mật khẩu cho trình khởi động (boot loader): ngăn chặn việc thay đổi thông tin trong trình khởi động

Tắt tất cả các cổng không sử dụng (iLo - Integrity Integrated Lights-Out, USB, NIC)

Cấu hình lại BIOS và vô hiệu hóa việc khởi động từ các thiết bị ngoại vi như DVD/ CD/USB

Những máy chủ quan trọng cần được khóa cẩn thận trong các IDC (Internet Data Center) và tất cả mọi người phải trải qua các bước kiểm tra an ninh trước khi truy cập vào server

Trang 9

7 Sử dụng chế độ bảo mật mặc định của Kernel

Trong Kernel của một số hệ thống Linux mới hiện giờ có cấu hình sẵn một vài Rules chuẩn với mục đích cung cấp những thông số căn bản nhất để cấu hình tăng thêm

tính bảo mật cho hệ thống Các File và thông số đó thường được chứa ở /proc/sys Về căn bản giao thức IPV4, chứa bên trong /proc/sys/net/ipv4 cung cấp các tính năng căn

bản:

icmp_echo_ignore_all: Vô hiệu hoá tất cả các yêu phản hồi ICMP ECHO Sử dụng

tuỳ chọn này nếu như bạn không muốn hệ thống của mình trả lời các yêu cầu Ping

icmp_echo_ignore_broadcasts: Vô hiệu hoá tất cả các yêu cầu phản hồi ICMP

ECHO trên Broadcast và Multicast Tùy chọn này được sử dụng để ngăn chặn nguy cơ hệ thống của bạn có thể bị lợi dụng khai thác cho những cuộc tấn công DDOS

ip_forward: Cho phép hay không cho phép sự chuyển tiếp IP giữa các giao diện

mạng trong hệ thống của bạn Tuỳ chọn này được sử dụng khi bạn muốn Server của mình hoạt động như Router

ip_masq_debug: Kích hoạt hay vô hiệu hoá quá trình gỡ lỗi cho IP Masquerading tcp_syncookies: Tuỳ chọn này được sử dụng để bảo vệ hệ thống của bạn chống các

cuộc tấn công sử dụng kỹ thuật ngập SYN

rp_filter: Chứng thực và xác định địa chỉ IP nguồn hợp lệ Tuỳ chọn này được sử

dụng để bảo vệ hệ thống của bạn chống lại các cuộc tấn công giả mạo địa chỉ IP "IP Spoof"

secure_redirects: Chỉ chấp nhận chuyển tiếp những thông điệp ICMP cho những

Gateway tin tưởng trong danh sách

log_martians: Ghi lại những Packet không được xử lý bởi Kernel.

Nếu bạn muốn vô hiệu hoá tính năng "ip_foward" đơn giản bạn chỉ việc sử dụng

lệnh: root@localhost# echo "0" > /proc/sys/net/ipv4/ip_forward

Tương tự để kích hoạt tính năng nào bạn chỉ việc thay giá trị "0" bằng "1"

8 Tạm thời tắt Ipv6

Internet Protocol version 6 (IPv6) là một giao thức mới hoạt động ở tầng Internet

của bộ giao thức mạng TCP/IP IPv6 đang dần thay thế cho IPv4 do những lợi ích mà nó

Trang 10

mang lại Hiện tại, vẫn chưa có công cụ tốt nào có thể kiểm tra các vấn đề bảo mật trên hệ thống hỗ trợ IPv6 Hầu hết các Distro Linux đã bắt đầu hỗ trợ giao thức IPv6 Các

cracker có thể gửi các lưu lượng độc hại thông qua IPv6 vì hầu hết các quản trị viên chưa giám sát các lưu lượng IPv6 này Vì thế, trừ khi hệ thống mạng yêu cầu sử dụng IPv6, tốt nhất bạn nên tạm thời vô hiệu hóa IPv6 hoặc cấu hình trên Firewall để cản lọc các gói tin IPv6

Mở file aliases: # vi /etc/modprobe.d/aliases.conf

Tìm đến dòng : alias net-pf-10 ipv6

Thay thế bằng dòng : alias net-pf-10 off

alias ipv6 off

9 Cơ chế ghi nhật ký

Quá trình ghi lại các hoạt động của hệ thống cần thiết trong nhiều trường hợp khác nhau: kiểm tra, đánh giá hệ thống cũng như ứng dụng, lưu giữ các bằng chứng về các hoạt động bất hợp pháp xảy ra đối với hệ thống…

Hoạt động ghi lại các thông báo của hệ thống một cách tập trung, nhất quán sẽ gia tăng độ bảo mật cũng như thuận lợi hơn trong việc kiểm soát lỗi Hạn chế tối đa hành động xóa tập tin nhật ký của tin tặc

Linux sử dụng hệ thống syslogd để hiển thị và lưu thông tin miêu tả về các sự kiện

Hệ thống này cho phép kiểm soát chặt chẽ logging của các messages từ kernel, từ các tiến trình đang chạy trên hệ thống, hoặc các hệ thống từ xa Thông báo có thể hiển thị trên console, trong tập tin log và trên màn hình text của người dùng trong hệ thống Nội dung

cấu hình chứa trong tập tin /etc/syslog.conf

auth,user.* /var/log/messages

lpr,news,uucp,local0,local1,local2,local3,local4,local5,local6.*

/var/log/unused.log

Ngày đăng: 14/12/2021, 16:36

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w