MẠNG NÂNG CAO
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Tăng Cường Bảo Mật Cho Linux Server

3 posters

Go down

Tăng Cường Bảo Mật Cho Linux Server  Empty Tăng Cường Bảo Mật Cho Linux Server

Bài gửi  TruongLeNgocThao Tue Dec 18, 2012 9:29 am

Bảo mật cho máy chủ Linux của bạn là điều hết sức quan trọng để bảo vệ dữ liệu, các sở hữu trí tuệ, và cả thời gian, tiền bạc khỏi “bàn tay đen” của các hacker. Trong phần đầu tiên của loạt bài viết về bảo mật Linux server, tôi sẽ giới thiệu tới các bạn 20 thủ thuật giúp tăng cường an ninh cho Linux server.


#1: Mã hóa dữ liệu được 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, bất cứ khi nào có thể bạn nên 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.

- Fugu là một frontend có giao diện đồ họa cho SFTP. SFTP cũng giống với FTP, chỉ khác là SFTP sẽ mã hóa toàn bộ phiên làm việc, có nghĩa rằng cả mật khẩu và các dữ liệu khác sẽ được mã hóa trước khi gửi đi. Và như vậy dù cho hacker có tóm được dữ liệu đó cũng không thể nào đọc được thông tin đã được mã hóa bởi SFTP. Một tùy chọn khác là FileZilla – chương trình client chạy trên nhiều nền tảng như Linux, Windows… (cross-platform), hỗ trợ các giao thức như FTP, FTPS (FTP over SSL/TSL), SFTP (SSH FTP)…

- OpenVPN chương trình SSL/VPN nhẹ nhàng, hiệu quả.

- Lighttpd SSL (Secure Server Layer) Https <= xem thêm cách cài đặt và cấu hình

- Apache SSL (Secure Server Layer) Https (mod_ssl) <= xem thêm cách cài đặt và cấu hình.
#2: Giảm tối thiểu các gói phần mềm được cài đặt

Bạn có thật sự cần cài đặt hết tất cả các loại web service (Apache, IIS…) không? 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.
#3: Mỗi dịch vụ mạng chạy trên một hệ thống thực (hoặc máy ảo) riêng biệt

Nếu có thể, bạn nên chạy các dịch vụ mạng khác nhau trên các server tách biệt nhau. Điều này giúp giảm thiểu rủi ro các dịch vụ sẽ bị “chết chùm” khi chúng nằm trên cùng một server. Ví dụ, nếu một hacker có thể khai thác thành công một lỗ hổng của phần mềm như Apache, hắn sẽ có toàn quyền truy cập vào server và gây ảnh hưởng cho các dịch vụ khác như MySQL, e-mail nằm trên cùng server với Apache. Xem thêm cách cài đặt và cấu hình môi trường ảo hóa trên Linux:


Install and Setup XEN Virtualization Software on CentOS Linux 5

How To Setup OpenVZ under RHEL / CentOS Linux


#4: Cập nhật đầy đủ và thường xuyên cho Linux kernel và các phần mềm khác

áp dụng 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. Bạn nên kiểm duyệt và áp dụng tất cả các bản cập nhật ngay khi có thể. Một lần nữa, sử dụng yum, apt-get… để thực hiện việc cập nhật này.
# yum update
hoặc
# apt-get update && apt-get upgrade
Bạn có thể cấu hình cho Red hat / CentOS / Fedora để nhận thông báo về các bản cập nhật mới qua email (xem thêm update notification via email), dưới Debian / Ubuntu có thể sử dụng apticron. Một tùy chọn khác để cài đặt tất cả các bản cập nhật là sử dụng cron (xem thêm all security updates ).


#5: Sử dụng Linux Security Extensions

Có nhiều công cụ giúp bảo vệ Linux trước các lỗi bảo mật như cấu hình hệ thống lỏng lẻo, tạo kẽ hở cho kẻ xâm nhập, các chương trình bị tấn công… Nếu có thể, bạn nên sử dụng SELinux và các security extension khác để quản lý chặt chẽ các chương trình và mạng (xem thêm SELinux and other Linux security). Ví dụ, SELinux cung cấp khá nhiều các chính sách bảo mật khác nhau dành cho Linux kernel.


#5.1: SELinux

Khuyến khích các bạn sử dụng cơ chế Mandatory Access Control (MAC) mà SELinux cung cấp. Theo chuẩn DAC (Discretionary Access Control), một ứng dụng (hoặc tiến trình) được khởi chạy bởi người dùng nào đó thì ứng dụng này có các quyền hạn trên các đối tượng (file, socket,…) giống với quyền hạn của người dùng đã khởi chạy nó. Việc chạy MAC giúp bảo vệ hệ thống khỏi bị phá hoại bởi các chương trình độc hại (hoặc chứa lỗi). Giải thích chi tiết cấu hình cho SELinux có trong kho tài liệu chính thức của Redhat.


TruongLeNgocThao

Tổng số bài gửi : 61
Join date : 20/09/2012
Đến từ : Bình Thuận

Về Đầu Trang Go down

Tăng Cường Bảo Mật Cho Linux Server  Empty ăng Cường Bảo Mật Cho Linux Server

Bài gửi  TruongLeNgocThao Tue Dec 18, 2012 9:30 am

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

Sử dụng lệnh useradd/usermod để tạo và quản lý các tài khoản người dùng. Hãy đảm bảo rằng bạn áp dụng chính sách mật khẩu mạnh. Ví dụ, một mật khẩu mạnh bao gồm ít nhất 8 ký tự và kết hợp cả chữ cái, chữ số, ký tự đặc biệt, chữ hoa, chữ thường…

Nhưng hầu hết mọi người đều chọn một mật khẩu dễ ghi nhớ. Điều này tạo cơ hội để hacker sử dụng các công cụ như John the ripper để dò tìm các mật khẩu yếu trên server của bạn. Cấu hình file pam_cracklib.so để thực thi chính sách mật khẩu mà bạn mong muốn.

#6.1: Thời gian tồn tại của mật khẩu (password aging)

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 này, hệ thống sẽ xác định xem khi xem nào người dùng cần thay đổi mật khẩu của họ. File /etc/login.defs cũng bao gồm cấu hình password aging.

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

# chage -M 99999 userName
Để xem thông tin về thời gian mãn hạn của mật khẩu, gõ:

# chage -l userName
Cuối cùng, bạn 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}:
1. 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.

2. 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ọ.

3. 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.

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

Khuyên cáo bạn nên sử dụng lệnh chage thay vì tự tay chỉnh sửa file /etc/shadow.

Xem thêm

• Linux: Force Users To Change Their Passwords Upon First Login
• Linux turn On / Off password expiration / aging
• Lock the user password
• Search for all account without password and lock them
• Use Linux groups to enhance security

#6.2: Hạn chế sử dụng lại các mật khẩu trước đó

Trong Linux, bạn có thể ngăn chặn tất cả các người dùng sử dụng lại các mật khẩu cũ, đã từng sử dụng trước đó. Tham số remember của module pam_unix cho biết số lượng các mật khẩu trước đó sẽ không được sử dụng lại.

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

Dưới Linux, bạn có thể sử dụng lệnh faillog để hiển thị các bản ghi hoặc để thiết lập giới hạn số lần đă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, gõ:

# faillog -r -u userName //--reset = -r
Lưu ý: bạn 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
#6.4: Xác định các tài khoản sử dụng mật khẩu rỗng

Bạn gõ lệnh sau:

# awk -F: '($2 == "") {print}' /etc/shadow
Khóa tài khoản có mật khẩu rỗng

# passwd -l accountName
#6.5: Đả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 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
#7: Đừng bao giờ đăng nhập với root

Hạn chế tối đa đăng nhập với tài khoản root! Thay vào đó, bạn nên sử dụng sudo để thực thi các lệnh với quyền root khi cần thiết mà không cần phải cung cấp mật khẩu của root. Ngoài ra, sudo cũng cung cấp các tính năng auditing và tracking giúp bạn biết được người dùng đã chạy những lệnh sudo nào.

#8: Bảo mật vật lý cho server

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. Bạn cũng nên đặt mật khẩu bảo vệ cho GRUB. 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 của bạn.

Xem thêm:

• 9 Tips To Protect Linux Servers Physical Console Access.

#9: Tắt hết các dịch vụ không cần thiết

Bạn cần loại bỏ tất cả các dịch vụ (service hoặc daemon) không cần thiết khỏi quá trình khởi động của hệ thống. Điều này giúp gia tăng tốc độ hoạt động cũng như sự ổn định của hệ thống và quan trọng hơn là giúp server giảm thiểu được nguy cơ bị tấn công bề mặt (surface attack) vào các dịch vụ ẩn chứa lỗ hổng.

Sử dụng lệnh chkconfig để liệt kê tất cả các dịch vụ được khởi chạy cùng hệ thống ở runlevel 3

# chkconfig --list | grep '3:on'
Để tắt một dịch vụ nào đó, gõ:

# service serviceName stop
Hoặc

# chkconfig serviceName off
#9.1: Tìm 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.

#9.2: Xem thêm

• update-rc.d like command on Redhat Enterprise / CentOS Linux.

• Ubuntu / Debian Linux: Services Configuration Tool to Start / Stop System Services.

• Get Detailed Information About Particular IP

#10: Gỡ bỏ X Windows

Thành phần đồ họa X Windows thật không cần thiết chạy trên Linux server! Không có lý do nào lại chạy X Windows trên Mail server hoặc Apache web server của bạn. Bạn có thể loại bỏ hoàn toàn X Windows để nâng cao hiệu suất hoạt động và bảo mật cho server theo các bước sau:

- Chỉnh sửa file /etc/inittab để thiết lập cho Linux khởi chạy ở runlevel 3.

- Xóa X Windows system bằng lệnh yum

TruongLeNgocThao

Tổng số bài gửi : 61
Join date : 20/09/2012
Đến từ : Bình Thuận

Về Đầu Trang Go down

Tăng Cường Bảo Mật Cho Linux Server  Empty Tăng Cường Bảo Mật Cho Linux Server

Bài gửi  TruongLeNgocThao Tue Dec 18, 2012 9:31 am

#11: Cấu hình cho Iptables và TCPWrappers

Iptables là một chương trình hoạt động ở user space (hay userland, user mode – vùng bộ nhớ dành cho các chương trình người dùng, trái với kernel space – vùng bộ nhớ dành riêng cho các chương trình hệ thống như hệ điều hành, driver,…). Iptables cho phép bạn cấu hình tính năng firewall (Netfilter) được cung cấp bởi Linux kernel. Bạn sử dụng firewall để cản lọc các gói tin đi vào và đi ra từ máy tính hoặc hệ thống mạng của bạn.

Bên cạnh đó, TCPWrappers – một hệ thống kiểm soát truy cập mạng cho host (host-based networking ACL system) cho phép bạn lọc các yêu cầu kết nối ra mạng ngoài (ví dụ, Internet). Bạn có thể ngăn chặn nhiều cuộc tấn công từ chối dịch vụ (DoS) với sự trợ giúp của Iptables.

Xem thêm:

• Lighttpd Traffic Shaping: Throttle Connections Per Single IP (Rate Limit).
• How to: Linux Iptables block common attack.
• psad: Linux Detect And Block Port Scan Attacks In Real Time.

#12: Bảo vệ Linux Kernel với /etc/sysctl.conf

File /etc/sysctl.conf được sử dụng để cấu hình các tham số cho kernel tại thời điểm kernel được thực thi. Linux đọc và áp dụng các thiết lập trong file này tại quá trình khởi động. Dưới đây là nội dung mẫu của file /etc/sysctl.conf

# Turn on execshield
kernel.exec-shield=1
kernel.randomize_va_space=1

# Enable IP spoofing protection
net.ipv4.conf.all.rp_filter=1

# Disable IP source routing
net.ipv4.conf.all.accept_source_route=0

# Ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1

# Make sure spoofed packets get logged
net.ipv4.conf.all.log_martians = 1
#13: Chia tách các phân vùng ổ cứng

Tách biệt các file của hệ điều hành khỏi các chương trình, dữ liệu cá nhân của người dùng. Hay nói cách khác, đặt các loại dữ liệu này trên các phân vùng khác nhau, sẽ giúp hệ thống chạy ổn định và an toàn hơn. Đảm bảo rằng các hệ thống file (filesystem) dưới đây được gắn (mount) trên các phân vùng riêng rẽ:

• /usr
• /home
• /var và /var/tmp
• /tmp

Tạo thêm các phân vùng tách biệt cho Apache và FTP server. Chỉnh sửa file /etc/fstab và chắc rằng bạn đã thêm vào các tùy chọn cấu hình sau:

1. noexec – Không gán quyền thực thi (execute) cho các file nhị phân (binary) trên phân vùng này. Điều này sẽ ngăn cản việc thực thi file binary nhưng cho phép chạy các script.

2. nodev – Không cho phép (hoặc diễn dịch) các thiết bị kiểu character hoặc thiết bị kiểu block trên phân vùng này.

3. nosuid – Các SUID/SGID sẽ mất hiệu lực trên phân vùng này.

Chú thích:

- character device: thiết bị cho phép đọc/ghi 0 hoặc nhiều byte thành từng luồng (stream) có kích thước không cố định. Ví dụ; TTY, bàn phím…

- block device: thiết bị cho phép đọc/ghi lên nó một khối các byte có kích thước cố định. Ví dụ: ổ cứng, ổ flash…

Ví dụ, một dòng mẫu trong file /etc/fstab dưới đây sẽ giới hạn việc truy cập của người dùng trên phân vùng /dev/sda5 (thư mục gốc trên FPT server):

/dev/sda5 /ftpdata ext3 defaults,nosuid,nodev,noexec 1 2
#13.1: Hạn ngạch ổ đĩa (Disk Quotas)

Hãy chắc rằng Disk Quota được kích hoạt cho tất cả người dùng. Để triển khai Disk quotas, bạn làm theo các bước sau:

1. Kích hoạt quotas trên các filesytem bằng cách chỉnh sửa file /etc/fstab.

2. Mount lại các filesystem đó.

3. Tạo các file cơ sở dữ liệu cho quota và khởi tạo bảng sử dụng ổ cứng.

4. Gán các chính sách hạn ngạch (quota policy).

5. Xem chi tiết các bước làm tại đây.

#14: 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ó 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.

Xem thêm:

• RedHat / Centos Disable IPv6 Networking.

• Debian / Ubuntu And Other Linux Distros Disable IPv6 Networking.

• Linux IPv6 Howto - Chapter 19. Security.

• Linux IPv6 Firewall configuration and scripts are available here.

#15: Loại bỏ các bit SUID/SGID khỏi các file không cần thiết phải bật các bit này

Tất cả các file có các bit SUID/SGID được bật có thể bị lạm dụng khi các file này có lỗi hoặc chứa lỗ hổng bảo mật. Các người dùng cục bộ hoặc ở xa đều có thể chạy các file như vậy. Việc tìm ra các file có bật các bit SUID/SGID một cách không cần thiết là một ý tưởng tốt. Sau đây là cách hiện thực ý tưởng này với lệnh find

#Tìm tất cả các file có bật bit SUID

find / -perm +4000
# Tìm tất cả các file có bật bit SGID

find / -perm +2000
# Hoặc kết hợp cả 2 thao tác trên với một lệnh duy nhất

find / \( -perm -4000 -o -perm -2000 \) –print

find / -path -prune -o -type f -perm +6000 –ls
Tiếp đến, bạn cần xem manpage của từng file để tìm hiểu về chức năng của nó. Nếu file nào không cần thiết phải có bit SUID/SGID được bật, bạn gõ lệnh sau để loại bỏ các bit này khỏi file:

# chmod u-s filename
# chmod g-s filename
#15.1: Các file có thể được ghi bởi bất kỳ ai (world-writable file)

Bất kỳ ai có thể chỉnh sửa các world-writable file sẽ dẫn tới rủi ro về bảo mật. Sử dụng lệnh sau để tìm tất cả các thư mục con dạng world-writable trong thư mục /dir và các thư mục này có sticky bit được bật.

find /dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
Sau đó, bạn cũng cần tìm hiểu kỹ về từng file và thư mục trong kết quả đầu ra của lệnh để cấp phát quyền hạn truy cập phù hợp cho chúng.

#15.2: Các file không thuộc quyền sở hữu của bất kỳ ai (noowner file)

Tìm các file như vậy với lệnh sau:

find /dir -xdev \( -nouser -o -nogroup \) –print
Sau đó, bạn cũng cần tìm hiểu kỹ về từng file và thư mục trong kết quả đầu ra của lệnh để cấp phát quyền hạn truy cập phù hợp hoặc xóa chúng.

TruongLeNgocThao

Tổng số bài gửi : 61
Join date : 20/09/2012
Đến từ : Bình Thuận

Về Đầu Trang Go down

Tăng Cường Bảo Mật Cho Linux Server  Empty Bảo mật trong linux

Bài gửi  NguyenThiTuyetMai Tue Dec 18, 2012 11:02 am

Trong bài viết này, chúng tôi xin giới thiệu một số kinh nghiệm nhằm nâng cao tính an toàn cho một hệ thống Linux (để dễ theo dõi cho bạn đọc, chúng tôi sẽ minh hoạ bằng RedHat, một phiên bản Linux rất phổ biến ở Việt Nam và trên thế giới).


Hiện nay, trên môi trường máy chủ, Linux ngày càng chiếm một vị trí quan trọng. Nguyên nhân khiến Linux dần trở thành một đối thủ tiềm nǎng của hệ điều hành Microsoft Windows là do tính ổn định, độ linh hoạt và khả nǎng chịu tải lớn: đây là những đặc điểm quan trọng hàng đầu của một hệ thống máy phục vụ.

Tính bảo mật tốt cũng là một trong những điểm nổi bật của Linux. Tuy nhiên, để một hệ thống Linux có khả nǎng chống lại các cuộc tấn công, người quản trị cũng cần phải nắm được một số kỹ nǎng nhất định. Trong bài viết này, chúng tôi xin giới thiệu một số kinh nghiệm nhằm nâng cao tính an toàn cho một hệ thống Linux (để dễ theo dõi cho bạn đọc, chúng tôi sẽ minh hoạ bằng RedHat, một phiên bản Linux rất phổ biến ở Việt Nam và trên thế giới).

1. Loại bỏ tất cả các account và nhóm đặc biệt

Ngay sau khi cài đặt Linux, người quản trị nên xoá bỏ tất cả các account và nhóm (group) đã được tạo sẵn trong hệ thống nhưng không có nhu cầu sử dụng, ví dụ như lp, sync, shutdown, halt, news, uucp, operator, games, gopher, v.v... (Tuy nhiên bạn đọc cần biết rõ những account và nhóm nào không cần cho hệ thống của mình rồi hãy xoá)

Thực hiện việc xoá bỏ account với lệnh :

# userdel

Ví dụ, nếu không có nhu cầu về in ấn trên hệ thống, có thể xoá account lp như sau:

# userdel lp

Tương tự như vậy, có thể thực hiện việc xoá bỏ các nhóm không cần thiết với lệnh

# groupdel

2. Che giấu file chứa mật khẩu

Từ lịch sử xa xưa của Unix và cả Linux, mật khẩu của toàn bộ các account đã từng được lưu ngay trong file /etc/password, file có quyền đọc bởi tất cả các account trong hệ thống! Đây là một kẽ hở lớn cho các kẻ phá hoại: Mặc dù các mật khẩu đều được mã hoá, nhưng việc giải mã ngược là có thể thực hiện được (và có thể thực hiện khá dễ dàng, đặc biệt vì cơ chế mã hoã mật khẩu không phải là khó phá và ngày nay khả nǎng tính toán và xử lý của máy tính rất mạnh). Vì lí do trên, gần đây các nhà phát triển Unix và Linux đã phải đặt riêng mật khẩu mã hoá vào một file mà chỉ có account root mới đọc được: file /etc/shadow. (Khi sử dụng phương pháp này, để đảm bảo tính tương thích, nơi vốn đặt mật khẩu trong file /etc/password người ta đánh dấu "x")

Nếu bạn đọc đang sử dụng các phiên bản RedHat gần đây (ví dụ RedHat 6.x hay 7.x) thì nhớ chọn lựa Enable the shadow password khi cài đặt RedHat để sử dụng tính nǎng che giấu mật khẩu này (Cũng thật may vì chọn lựa này là mặc định trong hầu hết các phiên bản Linux đang sử dụng rộng rãi hiện nay)

3. Tự động thoát khỏi shell

Người quản trị hệ thống rất hay quên thoát ra khỏi dấu nhắc shell khi kết thúc công việc. Bản thân tôi cũng đã từng nhiều lần khi đang thực hiện việc quản trị với account root thì bỏ đi vì một số công việc khác. Thật nguy hiểm nếu lúc đó có một kẻ phá hoại ở đó: Kẻ này có thể dễ dàng có quyền truy xuất hệ thống ở mức cao nhất mà chẳng cần tốn một chút công sức nào cả.

Để giảm nguy cơ này, người quản trị nên cài đặt tính nǎng tự động thoát ra khỏi shell khi không có sự truy xuất nào trong một khoảng thời gian định trước bằng cách đặt một tham số quy định khoảng thời gian hệ thống vẫn duy trì dấu nhắc shell.

Muốn cài đặt tham số này, người sử dụng biến môi trường TMOUT và gán cho nó một giá trị số thể hiện khoảng thời gian tính bằng giây hệ thống vẫn duy trì dấu nhắc. Để thực hiện điều này cho tất cả các account trong hệ thống, cách đơn giản nhất là đặt nó vào file /etc/profile dòng lệnh sau: (giả sử ta đặt khoảng thời gian là 600 giây)

TMOUT=600

Như vậy là nếu trong khoảng 10 phút người sử dụng không truy xuất shell, shell sẽ tự động thoát ra. Tuy nhiên cần chú ý: Mẹo này sẽ không "ǎn" nếu lúc đó người dùng đang chạy một chương trình nào đó như vi hay mc,... Có nghĩa là người dùng phải đang làm việc trực tiếp với shell chứ không phải với bất kỳ một chương trình nào khác.

4. Loại bỏ các dịch vụ không sử dụng

Một điều khá nguy hiểm là sau khi cài đặt, hệ thống tự động bật chạy khá nhiều dịch vụ (và đa số là các dịch vụ không mong muốn), dẫn tới tốn tài nguyên và gây nên nhiều nguy cơ về bảo mật. Người quản trị nên loại bỏ ngay lập tức các dịch vụ không dùng tới ngay sau khi cài máy. Hoặc đơn giản bằng cách xoá bỏ các gói phần mềm/dịch vụ không sử dụng (qua công cụ quản trị gói phần mềm rpm của RedHat) hoặc sử dụng công cụ ntsysv để duyệt xem tất cả các dịch vụ đang cài đặt rồi vô hiệu hoá những dịch vụ không cần thiết (bằng cách bỏ đánh dấu các dịch vụ không sử dụng với phím Space). Sau khi thoát ra khỏi ntsysv thì khởi động lại máy: các dịch vụ không mong muốn sẽ không chạy nữa.

5. Không tiết lộ thông tin về hệ thống qua telnet

Dịch vụ cho phép truy xuất hệ thống từ xa telnet có khả nǎng tiết lộ thông tin về hệ thống, dễ tạo điều kiện cho những kẻ phá hoại tấn công dựa vào những điểm yếu đã biết. Điều này rất dễ nhận thấy: Mọi người dùng kết nối từ xa vào dịch vụ telnet đều nhận được thông tin về tên máy, phiên bản Linux và phiên bản của nhân (kernel) của máy chủ.

Để tránh điều này, ta cần thực hiện việc kích hoạt telnetd (telnet server) với tham số -h. (Tham số -h sẽ ngǎn telnet tiết lộ các thông tin và chỉ in ra dấu nhắc "Login:" cho những người kết nối từ xa).

Do các phiên bản RedHat 7.x khi chạy telnetd không còn sử dụng inetd nữa (mà sử dụng xinetd - một phiên bản nâng cấp và có nhiều cải tiến so với inetd) nên cách cấu hình lại telnetd sẽ khác nhau tuỳ theo phiên bản RedHat đang sử dụng.

+ Với các phiên bản RedHat 6.x và trước đó, thực hiện các bước sau:

Trong file /etc/inetd.conf, thay đổi dòng

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

chuyển thành :

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

Tiếp theo, khởi động lại inetd bằng câu lệnh:

# /etc/rc.d/init.d/inetd restart

+ Với các phiên bản RedHat 7.x, thực hiện bước sau:

Trong file /etc/xinetd.d/telnet , thêm chọn lựa:

server_args = -h

File trên sẽ có dạng như sau;

service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
server_args = -h
}

Tiếp theo, khởi động lại xinetd bằng câu lệnh:

# /etc/rc.d/init.d/xinetd restart

6. Tránh sử dụng các dịch vụ không mã hoá thông tin trên đường truyền

Mặc dù ở trên chúng tôi đã trình bày cách ngǎn dịch vụ telnet tiết lộ thông tin, nhưng chúng tôi xin có lời khuyên: Tuyệt đối tránh sử dụng những dịch vụ kiểu như telnet, ftp (ngoại trừ ftp anonymous) vì những dịch vụ này hoàn toàn không hề mã hoá mật khẩu khi truyền qua mạng. Bất kỳ một kẻ phá hoại nào cũng có thể dễ dàng "tóm" được mật khẩu của bạn bằng những công cụ nghe lén kiểu như sniffer.

Ơ' những trường hợp có thể, nên sử dụng dịch vụ ssh thay thế cho cả ftp và telnet: dịch vụ SSH (Secure Shell) dùng cơ chế mã hoá công khai để bảo mật thông tin, thực hiện mã hoá cả mật khẩu lẫn thông tin chuyển trên đường truyền. Hiện đang được sử dụng khá rộng rãi, gói phần mềm của SSH cũng được đóng kèm trong hầu hết các phiên bản gần đây của Linux. Chẳng hạn, các phiên bản RedHat từ 7.0 trở lên mặc định đều cài OpenSSH, một sản phẩm mã nguồn mở có thể sử dụng hoàn toàn miễn phí. (Bạn đọc có thể tham khảo website www.openssh.org về sản phẩm này).

Ngoài ra, những dịch vụ "r" kiểu như rsh, rcp hay rlogin chúng tôi cũng khuyên nên tuyệt đối tránh sử dụng. Lý do là các dịch vụ này ngoài việc truyền mật khẩu không mã hoá còn thực hiện việc kiểm tra quyền truy xuất dựa trên địa chỉ máy kết nối, là một điều cực kỳ nguy hiểm. Các kẻ phá hoại sử dụng kỹ thuật spoofing đều có thể dễ dàng đánh lừa được cách kiểm tra này khi "làm giả" được địa chỉ của máy truy xuất dịch vụ hợp lệ.

7. Cấm sử dụng account root từ consoles

Có thể bạn đọc đều nhận thấy, ngay sau khi cài đặt RedHat, account root sẽ không có quyền kết nối telnet vào dịch vụ telnet trên hệ thống (chỉ những account thường mới có thể kết nối). Nguyên nhân là do file /etc/securetty quy định những console được phép truy nhập bởi root chỉ liệt kê những console "vật lý" (tức là chỉ truy xuất được khi ngồi trực tiếp tại máy chủ) mà bỏ qua những kết nối qua mạng. Dịch vụ ftp cũng sẽ bị hạn chế này: account root không được phép truy xuất ftp qua mạng.

Để tǎng tính bảo mật hơn nữa, soạn thảo file /etc/securetty và bỏ đi những console bạn không muốn root truy nhập từ đó.

8. Cấm "su" lên root

Trong Linux, lệnh su (Substitute User) cho phép người dùng chuyển sang một account khác. Nếu không muốn một người bất kỳ "su" thành root, thêm hai dòng sau vào nội dung file /etc/pam.d/su

auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/Pam_wheel.so group=wheel

Như vậy, chỉ có những người có đǎng ký là thành viên của nhóm wheel mới có quyền "su" thành root. Để cho phép một người dùng có quyền này, người quản trị chỉ việc gán account của người này vào nhóm wheel (qua file /etc/group)

9. Hạn chế các thông tin ghi bởi bash shell

Thông thường, tất cả các lệnh được thực hiện tại dấu nhắc shell của các account đều được ghi vào file ".bash_history" nằm trong thư mục cá nhân của các account. Điều này cũng gây nên những nguy hiểm tiềm ẩn, đặc biệt với những ứng dụng đòi hỏi phải gõ các thông mật như mật khẩu trên dòng lệnh. Người quản trị nên hạn chế nguy cơ này dựa trên 2 biến môi trường HISTFILESIZE và HISTSIZE: Biến môi trường HISTFILESIZE xác định số lệnh (gõ tại dấu nhắc shell) sẽ được lưu lại cho lần truy nhập sau, còn biến môi trường HISTSIZE xác định số lệnh sẽ được ghi nhớ trong phiên làm việc hiện thời. Ta có thể giảm giá trị của HISTSIZE và đặt bằng 0 giá trị HISTFILESIZE để giảm tối đa những nguy hiểm đã nêu trên.

Để thực hiện việc này, chỉ cần đơn giản thay đổi giá trị hai biến này trong file /etc/profile như sau:

HISTFILESIZE=0
HISTSIZE=20

Như vậy, tại phiên làm việc hiện thời, shell chỉ ghi nhớ 20 lệnh gần nhất, đồng thời không ghi lại các lệnh người dùng đã gõ khi người dùng thoát ra khỏi shell.

10. Cấm nhòm ngó tới những file script khởi động Linux

Khi khởi động Linux, các file script được đặt tại thư mục /etc/rc.d/init.d sẽ được thực hiện. Để tránh những sự tò mò không cần thiết, người quản trị nên hạn chế quyền truy xuất tới những file này chỉ cho account root bằng lệnh sau:

# chmod -R 700 /etc/rc.d/init.d/*

11. Xoá bỏ những chương trình SUID/SGID không sử dụng

Thông thường, những ứng dụng được thực hiện dưới quyền của account gọi thực hiện ứng dụng. Tuy nhiên, Unix và Linux sử dụng một kỹ thuật đặc biệt cho phép một số chương trình thực hiện dưới quyền của người quản lý chương trình (chứ không phải người thực hiện). Đây chính là lý do tại sao tất cả mọi user trong hệ thống đều có thể đổi mật khẩu của mình trong khi không hề có quyền truy xuất lên file /etc/shadow: Nguyên nhân vì lệnh passwd có gán thuộc tính SUID và được quản lý bởi root, mà chỉ có root mới có quyền truy xuất /etc/shadow.

Tuy nhiên, khả nǎng này có thể gây nên những nguy cơ tiềm tàng: Nếu một chương trình có tính nǎng thực thi được quản lý bởi root, do thiết kế tồi hoặc do được cài đặt cố tình bởi những kẻ phá hoại mà lại có thuộc tính SUID thì mọi điều tồi tệ đều có thể xảy ra. Thực tế cho thấy, khá nhiều kỹ thuật xâm nhập hệ thống mà không có quyền root được thực hiện nhờ kỹ thuật này: kẻ phá hoại bằng cách nào đó tạo được một shell (ví dụ bash) được quản lý bởi root, có thuộc tính SUID. Sau đó mọi truy xuất phá hoạt sẽ được thực hiện qua shell này vì mọi lệnh thực hiện trong shell sẽ được thực hiện dưới quyền của root.

Thuộc tính SGID cũng tương tự như thuộc tính SUID: các chương trình được thực hiện với quyền nhóm là nhóm quản lý chương trình chứ không phải nhóm của người chạy chương trình.

Như vậy, người quản trị sẽ phải thường xuyên kiểm tra xem trong hệ thống có những ứng dụng nào có thuộc tính SUID hoặc SGID mà không được phép không?

Để tìm tất cả các file có thuộc tính SUID/SGID, sử dụng lệnh find như sau:

# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls ưlg {} \;

Nếu phát hiện được một file có thuộc tính SUID/SGID một cách không cần thiết, có thể loại bỏ các thuộc tính này bằng lệnh:

# chmod a-s

12. Tǎng tính bảo mật cho nhân (kernel) của Linux

Thực tế cho thấy, Linux không hẳn được thiết kế với các tính nǎng bảo mật thật chặt chẽ: khá nhiều lỗ hổng có thể bị lợi dụng bởi những tin tặc thông thạo về hệ thống. Do đó, việc sử dụng một hệ điều hành với nhân được củng cố là rất quan trọng: Một khi nhân - phần cốt lõi nhất của hệ điều hành - được thiết kế tốt thì nguy cơ bị phá hoại sẽ giảm đi rất nhiều.

Bạn đọc có thể xem xét việc củng cố nhân Linux thông qua các miếng vá (patch). Tôi xin giới thiệu một trong những website tốt nhất chuyên cung cấp các miếng vá bổ sung cho nhân Linux về bảo mật tại địa chỉ www.grsecurity.net. Tại đây bạn đọc có thể tìm hiểu thông tin hữu ích và tải xuống các miếng vá bổ sung cho hệ thống Linux của mình.

Nguồn:forum.webchuyennghiep.net

NguyenThiTuyetMai

Tổng số bài gửi : 68
Join date : 20/09/2012

Về Đầu Trang Go down

Tăng Cường Bảo Mật Cho Linux Server  Empty Phát hiện lỗ hổng Wi-Fi trong Linux

Bài gửi  Lethithuyanh Wed Dec 19, 2012 8:31 am

Các chuyên gia bảo mật vừa phát hiện một lỗ hổng Wi-Fi nghiêm trọng trong hệ điều hành nguồn mở Linux, có thể cho phép kẻ tấn công kiểm soát một chiếc laptop ngay cả khi nó không hiện hữu trên mạng Wi-Fi.

Lỗ hổng trên nằm trong driver Wi-Fi của Linux, và được cho là khá hiếm bởi vào thời điểm hiện tại không có nhiều driver không dây dành cho hệ điều hành này. Các chuyên gia cho rằng đây là lỗ hổng Wi-Fi đầu tiên trong Linux mà tin tặc có thể khai thác từ xa.

Theo nhà nghiên cứu bảo mật Laurent Butti của France Telecom Orange, lỗ hổng được xác định ảnh hưởng phần lớn tới các driver thiết bị của kernel MadWi-Fi Linux dành cho các chipset dựa trên nền tảng Atheros. Laurent Butti chính là người phát hiện ra lỗ hổng này và đã trình diễn những thông tin liên quan tại hội nghị Black Hat tháng trước ở Amsterdam.

Lỗ hổng tràn bộ đệm trong nhân (kernel) có thể cho phép kẻ tấn công chạy mã độc ngay cả khi hệ thống không hiện hữu trên mạng Wi-Fi. Butti đã sử dụng những kỹ thuật "fuzzing", từng được David Maynor và Jon Ellch ("Johnny Cache") trình diễn tại hội nghị Black Hat USA năm ngoái. Kỹ thuật này cũng từng được dùng để khai thác các lỗ hổng trong Windows và Macintosh.

Trước đây Butti từng phát triển một loạt các công cụ theo dạng hack "proof-of-concept". Ông cũng là người tìm ra lỗ hổng Wi-Fi trong Windows bằng kỹ thuật "fuzzing" vào dịp "Tháng lỗi bảo mật nhân Windows" (Month of Kernel Bugs) năm ngoái.

VH - (PCWORLD)

Việt Báo (Theo_VnMedia
Lethithuyanh
Lethithuyanh

Tổng số bài gửi : 72
Join date : 21/09/2012

Về Đầu Trang Go down

Tăng Cường Bảo Mật Cho Linux Server  Empty Hạn chế việc sử dụng CPU đối với các Process trong Linux

Bài gửi  Lethithuyanh Thu Dec 20, 2012 2:11 pm

Quản trị mạng – Bạn đã từng trải nghiệm tình huống khi mở một ứng dụng (chẳng hạn như Firefox) và toàn hệ thống sau đó bị ngừng lại? Nếu đang điều hành một máy chủ web, thứ cuối cùng mà bạn thấy sẽ là có một ứng dụng làm đổ vỡ toàn bộ hệ thống và tất cả các website bị sập.

Cpulimit là một ứng dụng cho Linux, nó có thể hạn chế việc sử dụng CPU của một quá trình nào đó. Đây là một công cụ hết sức hữu dụng nếu bạn muốn hạn chế một ứng dụng nào đó đang ngốn quá nhiều tài nguyên CPU và là nguyên nhân gây ra đổ vỡ toàn bộ hệ thống. Ứng dụng cũng hết sức hữu dụng khi bạn cần chạy đồng thời một vài chương trình quan trọng.

Lưu ý: Cpulimit có thể làm việc với tất cả các phân phối Linux. Trong hướng dẫn này chúng tôi sẽ sử dụng Ubuntu làm ví dụ điển hình.

Cài đặt

Trong Ubuntu, bạn có thể cài đặt cpulimit thông qua Ubuntu Software Center hoặc đánh vào lệnh dưới đây trong terminal:

sudo apt-get install cpulimit

Sử dụng
Để hạn chế một quá trình, hãy sử dụng lệnh dưới đây

sudo cpulimit -p PID -l CPU%

PID là process ID của một ứng dụng đang chạy, còn CPU% là phần trăm (0-100) tài nguyên CPU được cấp phép cho ứng dụng. Bạn có thể lấy PID từ System -> Administration -> System Monitor .

Tăng Cường Bảo Mật Cho Linux Server  Cpulimit2

Từ hình trên, bạn có thể thấy rằng ứng dụng Swiftfox (một biến thể của Firefox) ngốn mất 68% tài nguyên CPU trước khi thiết lập hạn chế. Hãy xem điều gì sẽ xảy ra khi chúng ta hạn chế hiệu suất sử dụng của nó xuống còn 20%.

Tăng Cường Bảo Mật Cho Linux Server  Cpulimit3

Tăng Cường Bảo Mật Cho Linux Server  Cpulimit4

% CPU lúc này được hạ thấp xuống 20% và không bao giờ vượt qua ngưỡng 20% này.

Mở rộng cpulimit – Tự động hóa toàn bộ quá trình

Cpulimit rất hữu dụng khi bạn bắt gặp một ứng dụng nào đó ngốn nhiều tài nguyên CPU hoặc cần phải thực hiện một cụm công việc. Ngoài ra, bạn cũng có thể sử dụng chương trình trong việc tìm ra ứng dụng bị lỗi trong toàn bộ hệ thống. Đây là một ứng dụng đặc biệt hữu dụng trong thiết lập máy chủ.

abcuser từ Ubuntu Forum có đi kèm với một kịch bản tự động hóa việc kiểm tra hệ thống và hạn chế bất cứ quá trình nào vượt quá giới hạn CPU đặt trước. Kịch bản này cũng cho phép bạn thiết lập danh sách đen hoặc danh sách trắng cho các ứn dụng cụ thể.

Trước khi bắt đầu, cần bảo đảm bạn đã cài đặt cpulimit và gawk.

sudo apt-get install cpulimit gawk

Download các kịch bản tại đây. Sau đó tiến hành bung file tar vào thư mục Home của bạn. Bạn sẽ có hai file bên trong thư mục cpulimit đó là: cpulimit_daemon.sh và cpulimit.
Mở file cpulimit_daemon.sh trong bộ soạn thảo văn bản của bạn (gEdit) và thay đổi như dưới đây:

Tăng Cường Bảo Mật Cho Linux Server  Cpulimit5
CPU_LIMIT: Đây là tài nguyên CPU tối đa có sẵn cho mỗi ứng dụng. Giá trị mặc định là 20%.

DAEMON_INTERVAL: Đây là khoảng thời gian để kịch bản kiểm tra hệ thống. Mặc định được thiết lập là 3 giây.

BLACK_PROCESS_LIST: Danh sách này gồm có các mục muốn kiểm tra. Bạn có thể sử dụng dấu “|” để nhóm thêm các quá trình. Cho ví dụ như, “mysql|firefox|gedit”.

WHITE_PROCESSES_LIST: Danh sách gồm có các mục mà bạn không muốn kiểm tra. Bạn có thể sử dụng dấu “|” để nhóm thêm các quá trình. Ví dụ như, “mysql|firefox|gedit”.

Lưu ý: Một hoặc cả hai biến BLACK_PROCESSES_LIST và WHITE_PROCESSES_LIST phải trống rỗng. Bạn không thể có một danh sách đen và một danh sách trắng tại cùng thời điểm.

Thiết lập

Copy file cpulimit_daemon.sh vào thư mục /usr/bin/

sudo cp ~/cpulimit/cpulimit_daemon.sh /usr/bin

sudo chmod 700 /usr/bin/cpulimit_daemon.sh

Copy file cpulimit vào thư mục /etc/init.d/, thiết lập điều khoản cần thiết và thiết lập chạy trong quá trình khởi động.

sudo cp ~/cpulimit/cpulimit /etc/init.d/

sudo chown root:root /etc/init.d/cpulimit

sudo chmod +x /etc/init.d/cpulimit

sudo update-rc.d cpulimit defaults

Khởi động lại hệ thống. Cpulimit sẽ khởi chạy hoàn toàn tự động.

Bạn có thể mở một terminal và đánh:

sudo service cpulimit status

để kiểm tra xem cpulimit hiện có hoạt động hay không. Nếu không chạy, hãy thực hiện chạy bằng dòng lệnh

sudo service cpulimit start

Và có thể stop nó bằng:

sudo service cpulimit stop

Hủy bỏ cài đặt

Để hủy bỏ cài đặt, đây là những gì bạn cần thực hiện:

1. Stop chương trình.

sudo service cpulimit stop # Stop cpulimit daemon and all cpulimited processes

2. Remove chương trình khỏi thủ tục khởi động

sudo update-rc.d -f cpulimit remove # Remove symbolic links

3. Xóa thủ tục khởi động

sudo rm /etc/init.d/cpulimit # Delete cpulimit boot-up script

4. Xóa cpulimit

sudo rm /usr/bin/cpulimit_daemon.sh # Delete cpulimit daemon script

5. Hủy cài đặt chương trình cpulimit

sudo apt-get remove cpulimit

Có thể hủy cài đặt chương trình gawk

sudo apt-get remove gawk
Lethithuyanh
Lethithuyanh

Tổng số bài gửi : 72
Join date : 21/09/2012

Về Đầu Trang Go down

Tăng Cường Bảo Mật Cho Linux Server  Empty Kiểm soát nhóm công cụ quản lý dịch vụ bảo mật

Bài gửi  Lethithuyanh Thu Dec 20, 2012 2:41 pm

Một phần quan trọng của quá trình bảo mật PC là duy trì quyền kiểm soát liên tục đối với những dịch vụ đang chạy. Việc chạy những dịch vụ mạng không cần thiết có thể gây ra lỗ hổng bảo mật cho hệ thống. Thậm chí với những dịch vụ rất cần thiết cho server cũng cần được quản lý và cấu hình cẩn trọng để giảm thiểu nguy cơ bị tấn công.

Khi cấu hình để thực hiện bảo mật một hệ thống Linux thì những dịch vụ được quản lý trực tiếp qua file /etc/inittab, runlevels và một trong số 2 công cụ quản lý dịch vụ đặc biệt hiệu quả là inetd và xinetd.

File inittab

File /etc/inittab được tiến trình init của hệ thống sử dụng để khởi động dịch vụ. Trong một hệ thống được cấu hình tốt, file này thường không chứa quá 24 mục, và chúng được một số phân bổ của Linux mặc định tải lên cùng với những dịch vụ bổ sung. Nội dung file /etc/inittab có thể khó hiểu, nhưng quan trọng quản lý dịch vụ với nó lại rất đơn giản.
Thứ nhất, không nên bổ sung những dịch vụ vào hệ thống khởi động bằng file /etc/inittab. Trường hợp này cũng có nhiều ngoại lệ, tuy nhiên theo quy định chung thì những dịch vụ bổ sung cần được quản lý bởi các công cụ khác.
Thứ hai, không được xóa bỏ trong file /etc/inittab những mục có trường đầu tiên (trước dấu hai chấm đầu tiên) là một ký tự số duy nhất, hay bất kì ký tự gì trước những mục này. Những lệnh bắt đầu với một ký tự số duy nhất sẽ mở bàn giao tiếp TTY, và những mục được liệt kê trước chúng sẽ mở những lệnh khác, thậm chí là chức năng. Dù cũng có nhiều ngoại lệ cho những nguyên tắc này, nhưng tốt nhất bạn cũng không nên xóa bỏ chúng.
Thứ ba, /etc/inittab giúp quản lý dịch vụ khi khởi động và lựa chọn runlevel. Nó không được sử dụng khi hệ thống hoạt động bình thường.
Cuối cùng, nếu sử dụng hệ thống rc, bạn cần khởi động những dịch vụ bổ sung khi khởi động hệ thống, nhưng không nên thực hiện như vậy với hệ thống init. Khi xem xét nội dung của file /etc/inittab bạn sẽ thấy những mục kết thúc với rc 0 đến rc 6. Đây là những mục chỉ dẫn cho hệ thống init điều khiển runlevel.
Công cụ runlevels

Hoạt động của hệ điều hành nền tảng Linux có thể được quản lý thông qua runlevel. Runlevel khác nhau sẽ tạo ra những xử lý khác nhau, tương tự như chế độ vận hành của hệ điều hành Windows, gồm chế độ Safe Mode, chế độ DOS Mode, …

Runlevel 0: được sử dụng để tắt mọi thứ trong hệ thống, và nếu những cài đăt nguồn được cài đặt chính xác có thể tắt cả nguồn của hệ thống.

Runlevel 1: được sử dụng như một người dùng đơn lẻ, chế độ ngoại tuyến có thể được sử dụng để quản lý và gỡ rối mức độ thấp.

Runlevel 2 đến Runlevel 5: là chế độ đa người dùng cho hệ thống bình thường. Chế độ này thường được dùng cho những giao diện dòng lệnh của runlevel 2 và runlevel 3. Runlevel 3 có kết nối mạng còn runlevel 2 thì không. Ngoài ra nó cũng thường được dùng cho runlevel 5 để tự động khởi động hệ thống cửa sổ X để cung cấp một GUI. Tuy nhiên, từ runlevel 2 đến runlevel 5 phải được cấu hình bởi root user.

Runlevel 6: được sử dụng để khởi động lại hệ thống, khi toàn bộ hệ thống init, và thậm chí cả trình khởi động, cần khởi động lại.

Những runlevel bổ sung (từ 7 trở lên) có thể được tạo bởi admin, nhưng những hệ thống UNIX truyền thống không cần đến chúng.

Tăng Cường Bảo Mật Cho Linux Server  Inittab

Tại tiện ích shell, bạn có thể tìm thấy runlevel trước đó và runlevel hiện tại bằng cách nhập lệnh runlevel. Nếu runlevel của hệ thống vẫn không thay đổi, đầu ra của lệnh đó sẽ là một chữ cái N sau đó là số của runlevel hiện tại, trong đó, giá trị N cho biết không có runlevel trước đó.

Để thay đổi runlevel, bạn có thể sử dụng lệnh init, tiếp theo là số của runlevel cần sử dụng. Ví dụ, lệnh init 6 để khởi động lại hệ thống, hay init 1 để vào chế độ người dùng đơn lẻ.

Thủ tục cấu hình runlevel cũng rất khác nhau. Ví dụ, trong Debian GNU/Linux, gói dịch vụ được đặt trong /etc/init.d có nhiều liên kết tới chúng từ thư mục /etc/rcN.d, trong đó N là số của runlevel cần cấu hình. Những symlink có tên bắt đầu bằng chữ cái K chỉ những dịch vụ sẽ bị tắt, và S chỉ những dịch vụ được khởi động khi vào runlevel đó. Số theo sau chữ cái đó càng cao, từ 1 tới 99, thì những dịch vụ bị đóng hay được khởi động càng chậm.

Hầu hết những phân bổ nền tảng RPM đều sử dụng hệ thống rc dựa trên những phân bổ được phát triển bởi RedHat. Hệ thống này sử dụng một cấu trúc thư mục phức tạp hơn so với những hệ thống phân bổ nền tảng Debian, và khác hoàn toàn hệ thống phân bổ nền tảng RPM. Tài liệu phân bổ sẽ cung cấp nhiều thông tin tin giúp bạn quản lý runlevel tốt hơn.

Công cụ inetd

Đây là một công cụ thường dùng để quản lý nhóm dich vụ xấu cho Linux vì inetd là một công cụ quản lý dịch vụ thông thường. Việc hủy bỏ sự quản lý dịch vụ của inetd rất đơn giản. Trước tiên, mở file /etc/inetd.conf trong một trình soạn thảo văn bản. Sau đó, tìm những dịch vụ muốn hủy bỏ. Cuối cùng, thêm một dấu # vào trước dòng lệnh khởi động dịch vụ. Thao tác này sẽ hủy dòng lệnh, vì vậy inetd sẽ không khởi động dịch vụ nữa. Trước khi hiệu chỉnh, một mục của dịch vụ ident có dạng:

ident stream tcp wait identd /usr/sbin/identd identd

Sau khi xóa bỏ ident trở thành:

# ident stream tcp wait identd /usr/sbin/identd identd

Nếu muốn gỡ bỏ dịch vụ xấu bằng mục đó, bạn chỉ cần xóa bỏ nó khỏi file, hoặc gỡ bỏ bằng cách sử dụng trình quản lý gói phân bổ và xóa file thực thi /usr/sbin/ident (theo ví dụ trên). Sau khi hiệu chỉnh file /etc/inetd.conf, lưu lại để inetd thực hiện những hiệu chỉnh này. Khi hoàn thành những bước này, bạn có thể áp dụng những thay đổi này ngay lập tức bằng cách nhập lệnh dưới đây:

kill -HUP `pidof inetd`

Lệnh này làm inetd khởi động lại, sau đó sẽ áp dụng cấu hình file vừa được hiệu chỉnh.
Tăng Cường Bảo Mật Cho Linux Server  Inetd

Công cụ xinetd

Đây là một công cụ quản lý mới hơn nhưng phức tạp hơn inetd. Nó có thể thực hiện nhiều chức năng hơn, thường được sử dụng để hủy bỏ dịch vụ và thao tác cũng khá đơn giản.

Sử dụng xinetd, để hủy dịch vụ bạn phải bổ sung một lệnh vào file /etc/xinets.conf. Nếu chỉ muốn xóa một mục cho một dịch vụ, bạn phải xóa nhiều lệnh thay vì một lệnh duy nhất. Tìm nhóm lệnh với tên chứa tên dịch vụ cần hủy hay xóa, và bổ dung lệnh disable = yes vào nhóm lệnh đó, hay xóa toàn bộ nhóm. Ví dụ, để huy telnet, bạn sử dụng lệnh sau:

service telnet { . . . disable = yes }

Trong một số hệ thống, và với một số dịch vụ, việc cấu hình dịch vụ có thể không thực hiện trong fiel /etc/xinetd.conf. Thay vào đó, với những dich vụ như telnet, cấu hình có thể đặt trong file /etc/xinetd.d/telnet. Thực hiện thay đổi cấu hình cho dịch vụ đó tương tự như trong file /etc/xinetd.conf.

Sau khi hiệu chỉnh và lưu file /etc/xinetd.conf hay hiệu chỉnh file của dịch vụ, bạn cần phải lưu lại những hiệu chỉnh đó bằng cách sử dụng lệnh sau:

kill -USR2 `pidof xinetd`

Lệnh này sẽ thông báo yêu cầu áp dụng những hiệu chỉnh. Ngoài việc hủy và gỡ bỏ cấu hình dịch vụ cho xinetd, bạn cũng có thể dùng tiện ích này để kiểm soát máy chủ từ xa truy cập cào những dịch vụ nó kiểm soát.
Tăng Cường Bảo Mật Cho Linux Server  Xinetd

Một máy chủ được cho phép có thể được chỉ định cấu hình dịch vụ. Ví dụ, bạn có thể giới hạn truy cập từ xa vào dịch vụ telnet bằng cách thêm lệnh only_from = 192.168.0.101 vào cấu hình của dịch vụ đó. Lệnh này có thể được sử dụng nhiều lần để giới hạn cho vài máy chủ thay vì chỉ giới hạn cho một máy. Bạn cũng có thể sử dụng những địa chỉ cục bộ để chỉ định cả hệ thống mạng. Ví dụ, dùng lệnh only_from = 192.168.0. để chỉ ra những dịch vụ trong mạng cục bộ nhóm C cần được cho phép truy cập.

Ngược lại, một máy chủ bị chặn cũng có thể được dùng để chỉ định cấu hình cho dịch vụ. Ví dụ, bạn có thể chặn truy cập từ xa vào dịch vụ telnet từ một máy chủ cho trước bằng cách bổ sung lệnh no_access = 192.168.0.102 vào cấu hình của dịch vụ đó. Bạn cũng có thể sử dụng lệnh này nhiều lần với những địa chỉ cục bộ để chặn nhiều máy chủ. Trong trường hợp một máy chủ bị giới hạn bởi 2 lệnh only_from và no_access , thì quyền truy cập sẽ được xác định dựa trên điều kiện phù hợp nhất với máy chủ đó. Nếu xinetd không thể xác định lệnh nào phù hợp nhất, hệ thống sẽ mặc định lựa chọn tùy chọn bảo mật hơn và dịch vụ sẽ không được khởi chạy.

Tóm lại, có nhiều cách để bảo mật truy cập dịch vụ từ xa, tuy nhiên bạn phải đảm bảo rằng hệ thống tường lửa luôn được cấu hình để chống lại tấn công từ chối dịch vụ và những nguy hiểm từ việc chạy những dịch vụ không cần thiết. Proxying, Port Forwarding thông qua cổng máy chủ và thay đổi địa chỉ mạng cũng là những biện pháp hiệu quả làm giảm lỗ hổng của những dịch vụ chạy trên hệ thống. Những công cụ sử dụng truy cập vào những dịch vụ đang chạy cần được cấu hình đảm bảo bảo mật, như tắt X Forwarding trong SSH nếu hiện không sử dụng Server X khi dùng tiện ích bảo mật để kết nối từ xa. Việc quản lý trực tiếp những dịch vụ là công việc rất quan trọng trong việc bảo mật hệ thống Linux, tuy nhiên đây không phải là một phần trong kế hoạch bảo mật tổng thể.
Lethithuyanh
Lethithuyanh

Tổng số bài gửi : 72
Join date : 21/09/2012

Về Đầu Trang Go down

Tăng Cường Bảo Mật Cho Linux Server  Empty Re: Tăng Cường Bảo Mật Cho Linux Server

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết