Thursday, June 12, 2014

Linux Security Hardening - Phần 2




6.      Encrypt data communication

Tất cả dữ liệu truyền trên mạng đều có thể bị nghe lén bởi, và do vậy cần mã hóa dữ liệu khi truyền khi có thể bằng password hoặc sử dụng các kênh truyền có mã hóa.

Sử dụng scp, ssh, rsyncm hoặ sftp cho việc truyền file. Với các công cụ sshfs và fuse bạn có thể mount file system hoặc thư mục home của chính bạn từ xa (remote server file system).

GnuPG cho phép mã hóa và ký vào dữ liệu và thông điệp của bạn, thêm nữa hỗ trợ quản lý file một cách tiện lợi.

Fugu là một giao diện đồ họa frontend hỗ trợ SFTP. SFTP là một giao thức an toàn hơn FTP, vì nó mã hóa dữ liệu trên đường truyền. Hoặc có lựa chọn khác là sử dụng FileZilla.

OpenVPN là một giải pháp hiệu quả

Không sử dụng FTP, Telnet và Rlogin/Rsh 

Các dữ liệu truyền trên mạng mà sử dụng các dịch vụ trên có thể bị nghe lén bới bất cứ ai bằng cách bắt gói tin (packet sniffer). Giải pháp hiệu quả là sử dụng các giao thức an toàn hơn như OpenSSH, SFTP hoặc FTPS (FTP over SSL). Thực hiện câu lệnh dưới đây để loại bỏ các dịch vụ không an toàn:

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

7.      Không login với tài khoản root

Không bao giờ sử dụng tài khoản root. Bạn chỉ nên sử dụng sudo để thực thi với quyền của root mỗi khi cần. sudo giúp gia tăng tính bảo mật cho hệ thống khi không cần sử dụng mật khẩu của root cho tài khoản khác. Sudo còn cho phép auditing và tracking những gì đã được thực hiện.


8.      Thiết lập chính sách mật khẩu tốt

Để thiết lập một chính sách mật khẩu tốt các bạn tham khảo thêm bài viết Thiết lập chính sách mật khẩu trong Linux

Ngoài ra còn một số vấn đề cần đề cập thêm để đảm bảo tính an toàn cho hệ thống trong quá trình sử dụng đối với từng tài khoản cụ thể.
 
Số ngày được phép hoạt động của 1 password

Thực hiện câu lệnh dưới đây để kiểm tra số ngày được phép sử dụng của một tài khoản nào đó:

# chage –l userName

Hoặc có thể xem trong /etc/shadow. Cấu trúc file /etc/shadow như sau:

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

Trong đó:

Minimum_days: là số ngày tối thiểu mà 1 mật khẩu phải được sử dụng

Maximum_days: là số ngày tối đa mà 1 mật khẩu được sử dụng

Warn: số ngày hệ thống sẽ cảnh báo tài khoản cần đổi mật khẩu

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

Nếu muốn thay đổi giới hạn về số ngày thực hiện câu lệnh:

# chage -M MAX -m MIN -W WARN userName

Trong đó:
MAX là  maximum_days –  số ngày tối đa được sử dụng muốn thiết lập

MIN là Minimum_days – số ngày tối thiểu muốn thiết lập

WARN là Warn – Số ngày cảnh báo muốn thiết lập

userName là tên tài khoản muốn áp dụng

Không sử dụng các tài khoản không có password

Thực hiện câu lệnh sau để tìm các tài khoản không có password

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

Sau đó, sử dụng câu lệnh sau để khóa tài khoản

# passwd -l accountName


Chắc chắn rằng không có tài khoản nào khác root được thiết lập UID là 0

Thực hiện câu lệnh sau:

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


9.      Loại bỏ các ứng dụng không cần thiết

Cần xem xét lại các dịch vụ đang được sử dụng có thực sự cần thiết? Tránh cài đặt các phần mềm không cần thiết để tránh những lỗi từ các phần mềm này. Sử  dụng RPM quản lý các gói đã cài như yum, apt-get hoặc dpkg. Xóa bỏ các gói không cần thiết:

# yum list installed

# yum list packageName

# yum remove packageName

Hoặc

 # dpkg --list

# dpkg –info packageName

# apt-get remove packageName

10.      Loại bỏ các dịch vụ không mong muốn


Đối với các dịch vụ không sử dụng càn phải disable để tránh các nguy cơ tiềm ẩn từ các dịch vụ này. Thực hiện câu lệnh sau để kiểm tra danh sách các service được khởi động cùng hệ thống chạy với level 3

# /sbin/chkconfig --list | grep '3:on'

Mặc định để tìm các dịch vụ đang chạy với level 5 :

# /sbin/chkconfig --list

Để disable dịch vụ nào đó:

# service serviceName stop

# /sbin/chkconfig serviceName off


Nếu không có nhu cầu sử dụng, tắt các dịch vụ sau:

anacron haldaemon messagebus

apmd hidd microcode_ctl

autofs` hplip* pcscd

avahi-daemon* isdn readahead_early

bluetooth kdump readahead_later

cups* kudzu rhnsd*

firstboot mcstrans setroubleshoot

gpm mdmonitor xfs


Trong đó: * là các dịch vụ mạng. Nếu nó không thực sự cần thiết thì nên disable. Thêm nữa các dịch vụ sau cũng nên disable nếu không sử dụng NFS: netfs, nfslock, portmap, rpcgssd, and rpcidmapd. 

Các dịch vụ như haldaemon and messagebus, nên xem xét cẩn thận khi disable chúng.

Để thiết lập có hiệu lực cần reboot hệ thống.

Đóng các cổng không cần thiết


Thực hiện câu lệnh sau để liệt kê các cổng đang được mở:

# netstat –tulpn

Từ đó lọc ra các công mà không được sử dụng thì thực hiện đóng lại bằng Iptables hoặc dừng các dịch vụ chạy trên cổng đó.


(còn nữa)
-- Jukai Helios --

No comments:

Post a Comment