Hướng dẫn tăng cường bảo mật hệ thống máy chủ Linux

Hệ điều hành Linux được biết đến là hệ điều hành có tính bảo mật cao tuy nhiên cần có thêm một số cấu hình nhằm tăng độ an toàn cho hệ thống. Dưới đây là một số lời khuyên hữu ích dành cho hệ thống của bạn:

1. Bảo vệ an toàn từ phần cứng (BIOS)

Khi khởi động hệ thống máy tính thành phần đầu tiên được chạy chính là BIOS. Để đảm bảo an toàn cho hệ thống, người quản trị nên tắt chế độ boot từ các thiết bị như ổ đĩa CD/DVD, các thiết bị ngoại vi, đĩa mềm.. trong cấu hình BIOS. Sau đó cần tạo mật khẩu cho BIOS và  GRUB nhằm hạn chế các truy cập trái phép từ chính hệ thống của bạn

2. Phân vùng ổ cứng

Một cách thức để đảm bảo an toàn dữ liệu trước rủi ro là nên phân vùng ổ cứng cho hệ thống của mình. Bằng cách tạo ra các phân vùng khác nhau, dữ liệu được chia nhỏ và nhóm lại. Khi có sự cố xảy ra tại một phân vùng nào đó, chỉ có những dữ liệu ở cùng phân vùng đó bị hỏng còn tại các phân vùng khác dữ liệu an toàn. Hệ thống của bạn cần có các phân vùng như sau và chắc chắn các ứng dụng của bên thứ 3 cần được cài đặt tại phân vùng /opt

  • /
  • /boot
  • /usr
  • /var
  • /home
  • /tmp
  • /opt

 

3. Hạn chế các dịch vụ không cần thiết

Một hệ thống máy tính khi cài đặt quá nhiều các gói không cần thiết, không những làm giảm hiệu năng của hệ thống khi tranh giành tài nguyên với các dịch vụ khác mà còn làm cho hệ thống xuất hiện các lỗ hổng từ chính các gói không cần thiết đó. Một cách giảm thiểu rủi ro là xoá hay tắt các dịch vụ khi không cần thiết. Ví dụ trên hệ điều hành CentOS bạn có thể thực hiện như sau:

  • Kiểm tra các dịch vụ trong hệ thống đang chạy ở mức độ 3
# /sbin/chkconfig –list | grep ‘3:on’
  • Khi tìm thấy các dịch vụ không cần thiết đang chạy bạn thực hiện lệnh sau để tắt dịch vụ này:
# chkconfig ten_dich_vu off
  • Và có thể xoá dịch vụ khỏi hệ thống của bạn sử dụng lệnh:
# yum -y remove ten_goi

 

4. Kiểm tra các cổng dịch vụ đang chờ kết nối

Cũng như khi hạn chế các dịch vụ không cần thiết, bạn cũng nên tối thiểu các cổng dịch vụ không cần thiết để tăng hiệu năng cũng như giảm thiểu các lỗ hổng trong hệ thống của bạn. Bạn có thể sử dụng câu lệnh ‘netstat’ để xem tất cả các cổng được mở và các chương trình sử dụng kết nối mạng. Khi kiểm tra và phát hiện các dịch vụ mạng không cần thiết bạn có thể sử dụng ‘chkconfig’ để tắt các dịch vụ đó.

Sử dụng lệnh sau để xem thông tin tất cả các cổng:

# netstat –tulpn

 

5. Đảm bảo an toàn dịch vụ SSH

Trở về trước, khi kết nối điều khiển máy chủ từ xa sử dụng các giao thức telnet rlogin, đây là các giao thức kết nối không an toàn khi chỉ kết nối sử dụng bản rõ mà không được mã hoá khi gửi dữ liệu. Tuy nhiên hiện Secure Shell (SSH) là giao thức được sử dụng rộng rãi bởi nó sử dụng công nghệ mã hoá khi giao tiếp với máy chủ. Tuy nhiên để đảm bảo an toàn cần cấu hình cho dịch vụ này như sau :

  • Mở file cấu hình dịch vụ SSH và thay đổi một số cấu hình:
# vi /etc/ssh/sshd_config
  • Tìm tới dòng cấu hình cổng và thay đổi cổng mặc định từ cổng 22 sang cổng khác ví dụ chuyển sang cổng 22000
Port 22000
  • Không cho phép đăng nhập bằng tài khoản root:
PermitRootLogin no
  • Chỉ cho phép đăng nhập mởi một số người dùng:
AllowUsers tennguoidung
  • Sử dụng giao thức SSH phiên bản 2:
Protocol 2

 

6. Thường xuyên cập nhật các bản vá lỗi của nhà phát hành

Luôn luôn để hệ thống của bạn được cập nhật bản mới nhất và các bản vá bảo mật. Ví dụ trên hệ điều hành CentOS:

# yum updates
# yum check-update

 

7. Vô hiệu hoá các Cronjob

Cron là một tiện ích mà người dùng có thể cho phép hoặc không cho phép các tác vụ (tasks) tự động chạy nền trên hệ thống theo định kỳ bằng cách sử dụng các cron daemon. Nó được điều khiển bởi các file/etc/cron.allow /etc/cron.deny. Để khoá người dùng sử dụng cron, thêm tên người dùng đó vàocron.deny ; cho phép người dùng sử dụng cron, thêm tên người dùng vào file cron.allow. Để vô hiệu hoá tất người dùng sử dụng cron, thêm từ khoá ‘ALL’ vào dòng cuối cùng của file cron.deny. Sử dụng câu lệnh:

# echo ALL >> /etc/cron.deny

 

8. Tắt chức năng tự động phát hiện các thiết bị cắm vào cổng USB

Các thiết bị USB trở nên rất nguy hiểm đối với hệ thống khi tin tặc có thể thêm chương trình chạy tự động vào thiết bị. Khi chúng được cắm vào hệ thống sẽ có khả năng đánh cắp dữ liệu. Vì vậy cần tắt các chức năng tự động phát hiện USB đảm bảo hệ thống thoát khỏi nguy cơ trên. Tạo tệp tin /etc/modprobe.d/no-usb và thêm dòng dưới đây:

install usb-storage /bin/true

 

9. Luôn luôn bật cơ chế SELinux

Security-Enhanced Linux (SELinux) là một cơ chế bảo mật điều khiển truy cập bắt buộc quy định trong nhân. Nhiều hệ thống vì ưu tiên hiệu năng hệ thống nên đã tắt cơ chế này. Vô hiệu hoá SELinux có nghĩa là tự loại bỏ cơ chế bảo mật của hệ thống. Vì vậy cần suy nghĩ khi lựa chọn hiện năng và mức độ bảo mật của hệ thông khi đưa vào hoạt động

SELinux cung cấp 3 chế độ cơ bản:

  • Enforcing: Đây là chế độ mặc định cho phép thực hiện tất cả các chính sách bảo mật trên hệ thống
  • Permissive : Ở chế độ này SELinux không thực thi các chính sách bảo mật mà nó cung cấp các cảnh báo về các hoạt động. Chế độ này rất hưu ích để hạn chế các vấn đề của SELinux
  • Disable : Tắt cơ chế SELinux

Để xem trạng thái hiện tại của cơ chế này sử dụng câu lệnh :

# sestatus

Nếu nó đang tắt cần bật bởi câu lệnh:

# setenforce enforcing

Trong hệ điều hành CentOS các cấu hình của SELinux được quản lý bởi file ‘/etc/selinux/config’

10. Loại bỏ giao diện KDE/GNOME

Khi hệ thống có mục đích sử dụng chính là hệ thống web (LAMP server) không cần sử dụng tới các giao diện X Window như KDE hay GNOME. Vì vậy nên tắt hoặc loại bỏ chúng để cải thiện an toàn cũng như hiệu năng của hệ thống. Một cách đơn giản tắt chúng là mở tệp tin ‘/etc/inittab’ và đặt chúng chạy ở mức độ 3. Xoá chúng khỏi hệ thống sử dụng câu lệnh”

# yum groupremove "X Window System"

 

11. Tắt giao thức Ipv6

Giao thức IPv6 là giao thực ưu việt để thay thế IPv4 khi giao thức đang dần cạn kiện IP, tuy nhiên hiện nay hầu hết các hệ thống đều sử dụng IPv4 nên giao thức IPv6 là không cần thiết và nên tắt giao thực này. Mở tập tin cấu hình mạng và thêm các dòng cấu hình sau để tắt.

Mở file:

# vi /etc/sysconfig/network

Thêm các dòng cấu hình:

NETWORKING_IPV6=no
IPV6INIT=no

 

12. Hạn chế người dùng sử dụng các mật khẩu cũ

Trong hệ thống sẽ là rất hữu ích nếu không cho phép các người dùng sử dụng các mật khẩu cũ giống nhau để hạn chế các nguy cơ mất an toàn cho hệ thống. Trong các hệ điều hành RHEL / CentOS / Fedora passwork cũ được lưu lại trong tệp tin “/etc/security/opasswd” và được quản lý bởi module PAM. Để cấu hình người dùng không được dùng một mật khẩu cũ quá 5 lần bạn làm theo hướng dẫn sau :

  • Mở tệp tin /etc/pam.d/system-auth
# vi /etc/pam.d/system-auth
  • Thêm dòng sau vào dòng có từ khoá “auth”
 auth        sufficient    pam_unix.so likeauth nullok
  • Sửa dòng có từ khoá “password” để không cho phép người dùng sử dụng lại mật khẩu quá 5 lần:
password   sufficient    pam_unix.so nullok use_authtok md5 shadow remember=5

 

13. Cấu hình sử dụng mật khẩu mạnh.

Có rất nhiều người thường sử dụng các mật khẩu yếu và các mật khẩu của họ thường bị các tin tặc dễ dàng lấy đi thông tin từ các phương thức tấn công băng các phương pháp tấn công từ điển hoặc tấn công dò quét mật khẩu. Vì vậy cần có một cơ chế ép các ngươi dùng sử dụng các mật khẩu mạnh. Để thực hiến điều này cần thêm cấu hình trong modun ‘pam_cracklib’ như sau:

  • Mở tập tin cấu hình
# vi /etc/pam.d/system-auth
  • Và thêm dòng có cấu hình yêu cầu các thông số độ dài tối thiểu của mật khẩu, sử dụng cả chữ in thường, chữ in hoa, chữ số, kí hiệu đặc biệt có trong mật khẩu như sau :
/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

 

14. Bật chế độ tường lửa

Sẽ là rất tốt khi bật chế độ tường lửa trong hệ thống, đảm bảo an toàn trước các truy cập trái phép đối với hệ thống. Hệ thống cần được thêm các luật trong iptables để lọc các gói tin đến, gói tin đi và gói tin chuyển tiếp tới hệ thống. Và có thể chỉ định rõ các địa chỉ đích, địa chỉ nguồn cho phép hoặc không cho phép sử dụng các cổng và giao thức được chỉ định.

Đề xem các luật có trong hệ thống sử dụng lệnh sau:

# iptables -L -n -v 

 

15. Kiểm tra các tài khoản không có mật khẩu

Trong hệ thốn mỗi tài khoản có mật khẩu rỗng có nghĩa là đã để lộ các phương thức xác thực trái phép mà tất cả mọi người có thể thực hiện, đó là một mối nguy hiểm lớn đối với hệ thống. Vì vậy cần chắc chắn rằng tất cả các tài khoản cần có mật khẩu mạnh và không ai khác được cho phép truy cập. Vì vây cần kiểm tra các tài khoản không có mật khẩu như câu lệnh dưới đây và cần xem xet khoá các tài khoản này lại.

# cat /etc/shadow | awk -F: '($2==""){print $1}'

 

16. Tập trung log của các máy chủ về máy chủ chuyên dụng

Di chuyển các log ghi lại hoạt động của hệ thống về các máy chủ chuyên dụng là cách để phòng ngừa các tin tặc thay đổi dữ liệu khi chúng có quyền tryu cập trái phép vào hệ thống. Vì vậy có thể chắc chắn hệ thống đang an toàn. Dưới đây là hông tin về các tập tin log mặc định và cách sử dụng của chúng.

  • /var/log/message– Ghi lại các hoạt động của toàn hệ thống
  • /var/log/auth.log– Log xác thực hệ thống
  • /var/log/kern.log– Log của nhân
  • /var/log/cron.log– Log các tiến trình được tự động chạy
  • /var/log/maillog– Log dịch vụ mail
  • /var/log/mysqld.log– Log dịch vụ hệ quản trị dữ liệu mysql
  • /var/log/utmpor /var/log/wtmp : Lịch sử đăng nhập
  • /var/log/yum.log: Log dịch vụ YUM

 

17. Sao lưu dữ liệu quan trọng

Trong một hệ thống sản xuất, thực sự cần thiết khi sao lưu và giữ các giữ liệu quan trọng một cách cẩn thận. Khi có rủi ro trong hệ thống có thể dễ dàng phục hồi bởi các dữ liệu đã được sao lưu.

18. Không cho phép thay đổi thư mục /boot

Nhân hệ thống và các tập tin liên quan được đặt ở thư mục /boot, nó được đặt mặc địch cho phép đọc và sửa. Cần thay đổi để chỉ cho phép đọc thư mục này là thực sự cần thiết để đảm bảo cho hệ thống được hoạt động ổn định. Để thực hiện điều này cần thực hiện theo các bước sau:

  • Mở tệp tin “/etc/fstab”:
# vi /etc/fstab
  • Và cần thêm dòng sau vào cuối của tệp tin:
LABEL=/boot     /boot     ext2     defaults,ro     1 2

Cần ghi lại điều này mà thay đổi quyền của thư mục khi cập nhật nhân trong tương lai.

19. Chặn các gói tin ICPM và các yêu cầu Broadcast

Nhiều tin tặc sử dụng các gói tin ICMP để xác định các địa chỉ IP và tấn công các máy chủ có IP này. Để ngăn chặn điều này cần ngăn chặn các gói tin theo cách thay đổi tập tin “/etc/sysctl.conf” để chặn pinghoặc các yêu cầu broadcast.

  • Chặn các gói tin ICMP:
net.ipv4.icmp_echo_ignore_all = 1
  • Chặn các yêu cầu broadcast:
net.ipv4.icmp_echo_ignore_broadcasts = 1

Để cập nhật các thay đổi cần chạy câu lệnh :

# sysctl –p

Trên đây là một số mẹo để cải thiện an toàn cho hệ thống Linux hãy kiểm tra và bổ sung để hệ thống trách gặp các rủi do đáng tiếc