20 cách giúp tăng cường bảo mật cho linux server

15 619 0
20 cách giúp tăng cường bảo mật cho linux server

Đ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

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. Người quản trị hệ thống chịu trách nhiệm chính cho việc bảo mật trên máy chủ Linux. Trong phần đầu tiên của loạt bài viết về bảo mật Linux server, tôi sẽ cung cấp cho các bạn 20 thủ thuật giúp tăng cường an ninh cho Linux server.

20 cách giúp tăng cường bảo mật cho Linux server – Phần 1 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. Người quản trị hệ thống chịu trách nhiệm chính cho việc bảo mật trên máy chủ Linux. Trong phần đầu tiên của loạt bài viết về bảo mật Linux server, tôi sẽ cung cấp cho 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). 1. 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. 2. 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. 3. 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 cường bảo mật cho máy chủ Linux Page 1 tảng như Linux, Windows… (cross-platform), hỗ trợ các giao thức như FTP, FTPS (FTP over SSL/TSL), SFTP (SSH FTP)… 4. OpenVPN chương trình SSL/VPN nhẹ nhàng, hiệu quả. 5. Lighttpd SSL (Secure Server Layer) Https <= xem thêm cách cài đặt và cấu hình 6. Apache SSL (Secure Server Layer) Https (mod_ssl) <= xem thêm cách cài đặt và cấu hình. #1.1: 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, 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 #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. Đối với Redhat-based Distro # yum list installed # yum list packageName # yum remove packageName Hoặc với Debian-based Distro Tăng cường bảo mật cho máy chủ Linux Page 2 # dpkg –list # dpkg –info packageName # apt-get remove packageName #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 Tăng cường bảo mật cho máy chủ Linux Page 3 Á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. Còn theo cơ chế 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. Xem thêm: 20 cách giúp tăng cường bảo mật cho Linux server – Phần 1 Tăng cường bảo mật cho máy chủ Linux Page 4 20 cách giúp tăng cường bảo mật cho Linux server – Phần 2 20 cách giúp tăng cường bảo mật cho Linux server – Phần 3 20 cách giúp tăng cường bảo mật cho Linux server – Phần 2 • 2 Comments Tiếp theo phần 1 của loạt bài viết về bảo mật cho Linux server. Ở phần 2 này, tôi xin giới thiệu tới các bạn 5 cách nữa để tăng cường an ninh cho máy chủ chạy Linux. Xem thêm: 20 cách giúp tăng cường bảo mật cho Linux server – Phần 1 20 cách giúp tăng cường bảo mật cho Linux server – Phần 2 20 cách giúp tăng cường bảo mật cho Linux server – Phần 3 #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. Tăng cường bảo mật cho máy chủ Linux Page 5 #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. Tăng cường bảo mật cho máy chủ Linux Page 6 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_unixcho 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 Tăng cường bảo mật cho máy chủ Linux Page 7 # 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 Tăng cường bảo mật cho máy chủ Linux Page 8 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 Tăng cường bảo mật cho máy chủ Linux Page 9 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 # yum groupremove “X Window System” 20 cách giúp tăng cường bảo mật cho Linux server – Phần 3 Tăng cường bảo mật cho máy chủ Linux Page 10 [...]... tìm hiểu thêm 5 cách trong phẩn 3 này để bảo mật cho Linux server Xem thêm: 20 cách giúp tăng cường bảo mật cho Linux server – Phần 1 20 cách giúp tăng cường bảo mật cho Linux server – Phần 2 20 cách giúp tăng cường bảo mật cho Linux server – Phần 3 #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... chối dịch vụ 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 Tăng cường bảo mật cho máy chủ Linux Page 11 File /etc/sysctl.conf được sử dụng để cấu hình các tham số cho kernel tại thời... 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ăng cường bảo mật cho máy chủ Linux Page 12 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... 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ăng cường bảo mật cho máy chủ Linux Page 14 # Tìm tất cả các file có bật bit SGID find / -perm +200 0 # 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 -200 0 \) –print find / -path -prune... đượ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 đó Tăng cường bảo mật cho máy chủ Linux Page 13 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... 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 Tăng cường bảo mật cho máy chủ Linux Page 15 ... 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 (hostbased networking ACL system) cho phép bạn lọc các yêu... 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... 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ị... 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 . giúp tăng cường bảo mật cho Linux server – Phần 1 Tăng cường bảo mật cho máy chủ Linux Page 4 20 cách giúp tăng cường bảo mật cho Linux server – Phần 2 20 cách giúp tăng cường bảo mật cho Linux server. để tăng cường an ninh cho máy chủ chạy Linux. Xem thêm: 20 cách giúp tăng cường bảo mật cho Linux server – Phần 1 20 cách giúp tăng cường bảo mật cho Linux server – Phần 2 20 cách giúp tăng cường. chủ Linux Page 10 Chúng ta sẽ tiếp tục cùng tìm hiểu thêm 5 cách trong phẩn 3 này để bảo mật cho Linux server Xem thêm: 20 cách giúp tăng cường bảo mật cho Linux server – Phần 1 20 cách giúp tăng

Ngày đăng: 30/06/2014, 15:10

Từ khóa liên quan

Mục lục

  • 20 cách giúp tăng cường bảo mật cho Linux server – Phần 1

  • 20 cách giúp tăng cường bảo mật cho Linux server – Phần 2

  • 20 cách giúp tăng cường bảo mật cho Linux server – Phần 3

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan