HƯỚNG DẪN THỰC
HIỆN
1.
Cài đặt hệ điều hành và cập nhật
bản vá
-
Nguy cơ: Việc
cài 1 bản phân phối Linux với kernel còn chứa các lỗ hổng an toàn an ninh sẽ gây
ra nguy cơ giúp Hacker có thể tấn công trực tiếp hệ điều hành và chiếm quyền kiểm
soát hệ thống.
-
Yêu cầu khắc phục: Kiểm tra phiên bản kernel của hệ thống đang chạy bằng lệnh
”uname –r”. Với mỗi dòng major version, phiên bản của kernel phải lớn hơn các
phiên bản tương ứng sau: 2.6.18.8,
2.6.32.27, 2.6.34.7, 3.0.44, 3.2.30.
-
Version
của kernel có format như sau:
Linux-major.minor.patchlevel
Ví dụ: linux-3.10.5
Trong
đó: - Major: Version chính của kernel.(ví dụ: Linux-3).
- Minor: Những thay đổi quan
trọng của version. (Ví dụ: 10).
+ Số chẵn: version này đã
được kiểm tra và công bố sử dụng. 2.6, 3.10...
+ Số lẻ: Version này dùng
cho mục đích thử nghiệm. Các kernel develop
thường sử dụng.
- Patchlevel: Dùng để chỉ
phiên bản vá lỗi.(Ví dụ: 5).
|
-
Với
các hệ thống CÓ kết nối internet thực
hiện nâng cấp kernel theo cách sau:
+
Redhat/Fedora/CentOS:
#yum upgrade kernel
+
Debian/Ubuntu:
# apt-get dist-upgrade
|
-
Nâng
cấp kernel từ gói .rpm có sẵn do distro đó cung cấp. Ưu điểm là kernel có tính ổn
định và an toàn cao khi nâng cấp. Các bước thực hiện như sau:
o
Bước
1: Cài đặt 1 máy ảo với hệ điều hành tương ứng với hệ điều hành máy chủ cần
nâng cấp kernel. Chú ý máy ảo này phải có
Internet.
o
Bước
2: Download toàn bộ các gói cần cài đặt nâng cấp kernel mà distro cung cấp về
máy ảo.
§
Với
dòng Redhat dùng lệnh sau:
#mkdir
/opt/upgrade
#yum
install yum-downloadonly –y
#yum
install kernel -y --downloadonly --downloaddir=/opt/upgrade
|
-
Tải toàn bộ gói .rpm trong thư mục /opt/upgrade của
máy tính lên máy chủ và thực hiện cài như cài gói .rpm như thông thường.
Lưu ý: Dùng lệnh rpm –ivh thay
cho sử dụng câu lệnh rpm –Uvh và khởi động lại máy chủ khi cài đặt xong để hệ
điều hành nhận kernel mới.
§
Với
dòng Debian/Ubuntu dùng lệnh sau:
#mkdir
/opt/upgrade
#apt-get
clean
#apt-get
–d dist-upgrade
# cp
/var/cache/apt/archives/*.deb dir/
|
-
Tải toàn bộ gói .deb trong thư mục /opt/upgrade của
máy tính lên máy chủ và thực hiện cài như cài gói .deb như thông thường. Lưu ý:
Dùng lệnh dbpg –i [packagename] và khởi động lại máy chủ khi cài đặt xong để hệ
điều hành nhận kernel mới.
2.
Thiết lập chính sách tài khoản
1.
1.
2.
2.1.
Xóa tất cả các tài khoản không sử
dụng trên hệ thống
-
Nguy cơ: Kẻ
tấn công có thể tấn công vào các tài khoản không sử dụng để tấn công vào hệ thống.
-
Yêu cầu khắc phục: Rà soát hệ thống, liệt kê những tài khoản đang hoạt động
trên hệ thống rồi tìm và xóa những tài khoản không sử dụng ra khỏi hệ thống.
Bước
1: Để tìm những tài khoản đang hoạt động trên hệ thống, ta sử dụng lệnh sau:
# cat /etc/passwd | grep
/*sh$ | awk -F: '{print $1}'
Bước
2: Kiểm tra xem các tài khoản này tài khoản nào không sử dụng. Thực hiện xóa
các tài khoản đó bằng lệnh sau:
#userdel
-r username
Ví
dụ: Trong danh sách có tài khoản game không sử dụng
#userdel
–r game
|
2.2. Yêu cầu tất cả tài khoản đăng nhập phải có mật khẩu
-
Nguy cơ: Kẻ
tấn công dễ dàng đăng nhập vào hệ thống mà không phải nhập mật khẩu.
-
Yêu cầu khắc phục: Kiểm tra đảm bảo tất cả các tài khoản người dùng đều có mật
khẩu. Nếu tài khoản nào có mật khẩu trống thì phải yêu cầu đặt mật khẩu cho tài
khoản đó.
Để tìm tài khoản
có mật khẩu trống, ta thực thi lệnh sau :
# awk -F: '($2 == "")
{print $1}' /etc/shadow
|
2.3. Yêu cầu chỉ duy nhất tài khoản root có UID = 0
-
Nguy cơ:
Trong Linux, mặc định chỉ có duy nhất tài khoản root có UID=0, nếu tồn tài một
tài khoản khác có UID = 0 thì hệ thống có thể đã bị tấn công.
-
Yêu cầu khắc phục: Kiểm tra đảm bảo chỉ tồn tại duy nhất tài khoản root có
UID = 0 trên hệ thống.
Để tìm tất cả các tài khoản có UID = 0, ta thực thi lệnh
sau:
# awk -F: '( $3 == "0") {print}'
/etc/passwd
|
2.4. Mật khẩu phải có độ dài tối thiểu 8 ký tự, bao gồm cả chữ, số, ký tự
thường, ký tự hoa và ký tự đặc biệt
-
Nguy cơ: Nếu
người dùng sử dụng mật khẩu đơn giản, kẻ tấn công có thể dễ dàng đoán được.
-
Yêu cầu khắc phục: Áp dụng chính sách mật khẩu mạnh trên tất cả các tài khoản
người dùng trên hệ thống. Mật khẩu có độ dài tối thiểu 8 ký tự, bao gồm chữ thường,
chữ hoa, số và ký tự đặc biệt.
Trên
Linux, ta có thể sử dụng module pam_cracklib, hoặc module pam_passwdqc của PAM
để thiết lập chính sách mật khẩu mạnh.
Trên Redhat/Fedora/CentOS, quản trị
viên mở file cấu hình cấu hình /etc/pam.d/system-auth
Trên Debian/Ubuntu/OpenSuse quản trị
viên mở file cấu hình /etc/pam.d/common-password
Trong các file cấu hình của PAM, thêm hoặc
cập nhật cấu hình sau:
·
Nếu sử dụng module pam_cracklib:
password
required pam_cracklib.so
try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1
·
Nếu sử dụng module pam_passwdqc:
password requisite pam_passwdqc.so
min=disabled,disabled,disable,disable,8
Để sử dụng module pam_cracklib và
pam_passwdqc, tùy hệ điều hành có thể phải cài đặt thêm gói
Đối với Debian/Ubuntu ta sử dụng lệnh
sau:
# apt-get install libpam-cracklib
libpam-passwdqc
Đối với OpenSuse:
# yum install pam-passwdqc
Đối với Fedora/Redhat:
# yum install pam-passwdqc
|
2.5.
Mật khẩu phải được lưu dưới dạng
mã hóa sử dụng thuật toán băm SHA-512
-
Nguy cơ: Mật
khẩu tài khoản thường được lưu trữ dưới dạng mã hóa và lưu trữ trong file
/etc/shadow. Đối với các hệ điều hành phiên bản cũ, mật khẩu thường được mã hóa
với thuật toán md5, sha-128, sha-256. Tuy nhiên các thuật toán mã hóa đó không
còn mạnh trong thời điểm hiện nay. Do vậy hacker có thể phá mã và tìm lại được
mật khẩu gốc của người dùng.
-
Phòng chống: Kiểm tra và nâng cấp phương thức mã hóa mật khẩu, sử dụng thuật toán băm
SHA-512.
Trong
các phiên bản mới bản phân phối Linux, password mặc định đã được lưu trữ dưới dạng
mã hóa sử dụng thuật toán băm SHA-512.
Với các phiên bản cũ và
các phiên bản phân phối khác nhau, việc nâng cấp thuật toán băm lưu trữ
password có thể khác nhau. Ví dụ trong hệ điều hành Linux cũ, ta cấu hình như
sau:
Bước 1: Mở file
/etc/pam.d/system-auth (Với Redhat/Fedora/CentOS)
hoặc/etc/pam.d/common-password (Với Debian/Ubuntu/OpenSuse), trong phần
password, ta thay thế thuật toán băm khác bằng thuật toán sha-512. Ví dụ như
sau:
password sufficient pam_unix sha512
shadow [existing options]
Bước 2: Mở file /etc/login.defs,
thêm hoặc sửa lại 2 lựa chọn sau:
MD5_CRYPT_ENAB
no
ENCRYPT_METHOD SHA512
Bước 3: Mở file /etc/libuser.conf, thêm hoặc sửa lựa
chọn sau:
crypt_style = sha512
Bước 4: Yêu cầu người sử dụng thay đổi lại mật khẩu
để có hiệu lực.
|
2.6.
Đối với tài khoản người dùng, thiết
lập thời gian tối đa bắt buộc phải đổi mật khẩu là 90 ngày
-
Nguy cơ: Một mật khẩu được sử dụng trong thời gian quá
lâu gây ra những rủi ro có thể bị hacker tìm ra mật khẩu.
-
Yêu cầu khắc phục: Đối với mật khẩu người dùng, thiết lập thời gian tối đa bắt
buộc phải đổi mật khẩu là 90 ngày.
Quản trị viên có
thể thiết lập thời gian hết hạn mật khẩu bằng cách như sau:
Mở file /etc/login.defs, thay đổi tuy chọn PASS_MAX_DAYS, ví dụ:
PASS_MAX_DAYS 90
Với tài khoản đã tồn tại, có
thể thay đổi thời gian hết hạn mật khẩu bằng lệnh sau:
# chage -M
90 username
Với các mật khẩu dịch vụ, trong trường hợp chưa
triển khai được chính sách thay đổi mật khẩu tự động, quản trị viên có thể
dùng lệnh trên để thiết lập bằng tay thời hạn mật khẩu của tài khoản đó.
|
2.7.
Thiết lập giới hạn người dùng sử dụng
lại mật khẩu cũ, mật khẩu mới không được trùng với 05 mật khẩu gần nhất
-
Nguy cơ: Dùng lại mật khẩu nhiều lần gây ra rủi ro bị
mất mật khẩu.
-
Yêu cầu khắc phục: Đối với mật khẩu người dùng, thiết lập bắt buộc mật khẩu
mới phải không trùng với 5 mật khẩu gần nhất.
Quản trị viên có
thể sử dụng module pam_unix.so của PAM để thiết lập số lần mật khẩu không được
trùng lặp. Ví dụ trong Redhat, ta cấu hình như sau:
Mở file /etc/pam.d/system-auth
(Với Redhat/Fedora/CentOS) hoặc/etc/pam.d/common-password (Với
Debian/Ubuntu/OpenSuse), cấu hình thuộc tính remember của tùy chọn password
như sau:
password
sufficient pam_unix.so [các
option trước đó] remember=5
|
3.
Thiết lập cấu hình log cho hệ điều
hành
2.
3.
3.1. Yêu cầu thiết lập log cho hệ điều hành
-
Nguy cơ: Ghi log
đầy đủ, chính xác cung cấp thông tin cho việc tra cứu, truy vết các vi phạm, lỗi
xảy trong hệ thống. Do vậy nếu hệ thống không ghi log, ghi log không đầy đủ, dữ
liệu log không được đảm bảo tính toàn vẹn (bị sửa, xóa) làm mất tính chính xác
của thông tin log.
-
Yêu cầu khắc phục:
o Yêu cầu thiết lập cấu hình ghi log tối thiểu các loại
sau: message log, dmesg log, secure log.
o Thiết lập cấu hình thời gian lưu log tối thiểu 03 tháng.
§
Bước
1: Cấu hình nội dung file /etc/rsyslog.conf với nội dung sau:
$ModLoad
imuxsock # provides support for local system logging (e.g. via logger
command)
$ModLoad
imklog # provides kernel logging
support (previously done by rklogd)
$ActionFileDefaultTemplate
RSYSLOG_TraditionalFileFormat
$IncludeConfig
/etc/rsyslog.d/*.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.*
/var/log/secure
mail.* -/var/log/maillog
cron.*
/var/log/cron
*.emerg
*
uucp,news.crit /var/log/spooler
local7.*
/var/log/boot.log
|
§
Bước
2: Cấu hình rotation log với nội dung sau:
Weekly
rotate
12
create
dateext
include
/etc/logrotate.d
/var/log/wtmp
{
create 0664 root utmp
}
/var/log/btmp
{
create 0600 root utmp
}
|
§
Bước
3: Cấu hình log cho các file messagelog, syslog, kernel.log... như sau:
-
Trên
Ubuntu/Debian
Chạy
lệnh sau:
#vi
/etc/logrotate.d/rsyslog
Và sửa
nội dung file thành:
/var/log/syslog
{
compress
postrotate
reload rsyslog >/dev/null
2>&1 || true
endscript
}
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
compress
delaycompress
postrotate
reload rsyslog >/dev/null
2>&1 || true
endscript
}
|
-
Trên
CentOS/Redhat
- Chạy
lệnh:
#vi /etc/logrotate.d/syslog
Sửa
nội dung file thành:
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
compress
sharedscripts
postrotate
/bin/kill -HUP `cat
/var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
|
§
Bước
4: Restart lại ứng dịch vụ logs
#/etc/init.d/rsyslog
restart
Shutting
down system logger: [ OK ]
Starting
system logger: [ OK ]
|
-
Kiểm
tra đảm bảo tất cả các sự kiện quan trọng đều được ghi lại log. Quản trị viên
có thể phân nhóm các sự kiện và ghi ra thành các file riêng biệt để thuận tiện
trong việc theo dõi, giám sát.
-
Trong
các bản phân phối linux, có 2 dịch vụ quản lý log được sử dụng, đó là syslog và
rsyslog. Các phiên bản hệ điều hành cũ hầu hết sử dụng syslog. Tuy nhiên syslog
có nhiều hạn chế trong việc lưu trữ từ xa an toàn, do vậy trong các phiên bản mới
của hệ điều hành, rsyslog được khuyến nghị sử dụng.
-
Cấu
hình các sự kiện ghi log được lưu trong file /etc/syslog.conf đối với syslog và
/etc/rsyslog.conf đối với rsyslog.
-
Syslog
và rsyslog hỗ trợ nhiều loại log hệ thống với nhiều mức log, cụ thể như sau:
· kern – kernel
· user – Log các ứng dụng của người dùng
· mail/news/UUCP/cron – Email/NNTP/UUCP/cron
· daemon – system daemons
· auth – Log liên qua với xác thực người dùng.
· lpr – Log liên quan tới dịch vụ in.
· mark – inserts timestamp into log data at regular
intervals
· local0-local7 – 8 Log cho các tùy chọn kiểm tra đối
soát (audit)
· syslog – Các log khác của dịch vụ syslog
· authpriv – Các log xác thực không thuộc hệ thống
Log hệ điều hành có các mức: emerg, alert, crit, warning, notice, info,
debug
Ví dụ: Có thể cấu hình log hệ thống trong file /etc/rsyslog.conf như sau:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
kern.*
/var/kernel
authpriv.* /var/log/secure
mail.*
/var/log/maillog
cron.*
/var/log/cron
uucp,news.crit /var/log/spooler
local7.*
/var/log/boot.log
|
Để quá trình
log ra file được tự động chia thành nhiều file nhỏ, quản trị viên phải cấu hình
chính sách chia nhỏ trong file cấu hình /etc/logrotate.d/syslog hoặc
/etc/logrotate.d/rsyslog (tương ứng với dịch vụ syslog hoặc rsyslog được sử dụng).
Ví dụ ta cấu hình file log /var/log/message như sau:
/var/log/messages {
rotate
3
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
invoke-rc.d rsyslog reload
>/dev/null 2>&1 || true
#Giả sử hệ thống sử dụng rsyslog
endscript
}
|
3.2.
Các file log chỉ được phép đọc ghi
bởi quyền root.
-
Nguy cơ: Khi thực hiện các cuộc tấn công, hacker thường
tìm cách thay đổi, xóa log trong hệ thống nhằm che giấu dấu vết. Do vậy, nếu cấu
hình phân quyền việc đọc ghi các file log không tốt, thì thông tin trong dữ liệu
log không đảm bảo tính tin cậy.
-
Yêu cầu khắc phục: Kiểm tra đảm bảo
các file log của hệ thống chỉ được đọc ghi bởi quyền root.
Bước 1: Giả sử toàn bộ file log của hệ thống được
lưu trong thư mục /var/log. Ta thiết lập như sau:
# chown root:root /var/log/[file log của hệ thống]
Bước 2: # chmod
600 /var/log/[file log của hệ thống]
|
4.
Cấu hình tường lửa mềm
4.
4.1. Yêu cầu sử dụng tường lửa mềm trên hệ thống
-
Nguy cơ:
Ngăn chặn các tấn công từ máy chủ lân cận trong cùng một hệ thống hoặc các tấn
công từ ngoài Internet vào hệ thống.
-
Yêu cầu khắc phục: Kiểm tra đảm bảo tường lửa mềm được bật.
Để kiểm tra firewall có được
bật hay không, ta sử dụng lệnh sau:
·
Trên hệ điều hành Redhat/Fedora/CentOS:
# /sbin/chkconfig iptables on
·
Trên
Debian/Ubuntu:
# service ufw status
·
Trên
OpenSuse:
# systemctl status
SuSEfirewall2.service
Để firewall được tự động bật trong quá trình khởi
động của server, ta cấu hình như sau:
·
Trên
Redhat/Fedora/CentOS:
#/sbin/chkconfig --level 345 iptables
on
·
Trên
Debian/Ubuntu:
#ufw enable
·
Trên
OpenSuse:
#systemctl enable
SuSEfirewall2.service
|
4.2. Cấu hình tường lửa mềm chỉ mở vừa đủ các kết nối vào/ra trên hệ thống
-
Nguy cơ: Trên
một server, có rất nhiều dịch vụ được chạy trên đó. Nếu quản trị viên không kiểm
soát các truy cập vào ra, hệ thống có thể bị kẻ tấn công khai thác và tấn công
các dịch vụ đó.
-
Yêu cầu khắc phục: Sử dụng tường lửa để chặn hết tất cả các kết nối mạng
theo cả hai chiều vào ra, chỉ mở các kết nối mạng cần thiết cho hệ thống.
Chú ý: Template các kết nối
khác để có thể truy cập các dịch vụ theo cả hai chiều vào ra xem phụ lục 02 đi
kèm.
4.3.
Ghi log toàn bộ những bản tin vào
ra không hợp lệ
-
Nguy cơ: Việc
ghi lại log những bản tin tấn công sẽ giúp quản trị viên phát hiện sự tấn công
và đưa ra các biện pháp ngăn chặn kịp thời.
-
Yêu cầu khắc phục: Trong các luật của tường lửa, đối với những luật quan trọng,
cần ghi lại log với đầy đủ thông tin giúp quản trị viên có thể nhận biết, truy
vết nguồn gốc và phương thức tấn công.
Chú
ý:
o
Cách
ghi log các bản tin không hợp lệ được hướng dẫn trong phụ lục 02 đính kèm.
o
Các
log của iptables sẽ được lưu theo loại log kernel.warning được cấu hình trong dịch
vụ syslog của hệ thống.
5.
Hệ thống chỉ chạy các phần mềm tối
thiểu đúng với chức năng được thiết kế
3.
5.
-
Nguy cơ: Kẻ tấn
công có nhiều lựa chọn tấn công thông qua khai thác các lỗ hổng của các dịch vụ
đang chạy trên hệ thống. Mức độ nguy hiểm càng tăng nếu các dịch vụ không sử dụng
mà vẫn được bật.
-
Yêu cầu khắc phục:
o
Cài
đặt tối thiểu các phần mềm, dịch vụ theo đúng chức năng được thiết kế của
server.
o
Yêu
cầu khi cài đặt mới hệ điều hành phải cài ở chế độ minimum.
o
Gỡ bỏ
hoặc vô hiệu hóa các gói dịch vụ không cần thiết, các gói dịch vụ lỗi thời có
nguy cơ bị mất an toàn thông tin.
Để tìm các gói phần mềm đã cài
đặt trên hệ thống, ta thực thi lênh sau:
Trên Debian/Ubuntu: dpkg --get-selections
Trên
Redhat/Fedora/CentOS/OpenSuse:
rpm --qa
Các dịch vụ không an toàn: telnet, rlogin, rsh, rcp, nis, tftp
|
6.
Quản trị từ xa qua kênh truyền đã
được mã hóa
4.
6.
-
Nguy cơ: Nếu
quản trị sử dụng công cụ quản trị từ xa không an toàn và không được mã hóa đường
truyền. Kẻ tấn công có thể chặn bắt gói tin trên đường truyền giữa quản trị và
máy chủ để lấy được username và password đăng nhập.
-
Yêu cầu khắc phục: Để đảm bảo an toàn yêu cầu chỉ sử dụng công cụ quản trị từ
xa có mã hóa đường truyền. Cụ thể nếu sử dụng SSH thì thực hiện các thiết lập
sau:
§ Chỉ cho phép sử dụng giao thức SSH version 2
Mở file cấu hình
/etc/ssh/sshd_config, sửa lại tùy chọn:
Protocol 2
|
§ Cấu hình chỉ những tài khoản được cho phép sử dụng SSH
Mở file cấu hình
/etc/ssh/sshd_config, thêm tùy chọn
sau:
AllowUsers user1 user2
|
§ Thiết lập thời gian tự động ngắt phiên nếu phiên không có hoạt động
trong 3 phút
Mở file cấu hình
/etc/ssh/sshd_config, thêm cấu hình
sau:
ClientAliveInterval 180
|
§ Không cho phép tài khoản root đăng nhập trực tiếp từ xa
Mở file cấu hình
/etc/ssh/sshd_config, sửa hoặc thêm
tùy chọn sau:
PermitRootLogin no
|
7.
Phân quyền tệp tin và thư mục
5.
7.
7.1. Yêu cầu biến môi trường PATH không chứa các đường dẫn tương đối, không
chứa đường dẫn trống, không bao gồm các thư mục không rõ nguồn gốc.
-
Nguy cơ: Nếu
biến môi trường PATH của tài khoản người dùng có chứa đường dẫn tương đối, đường
dẫn trống, hoặc đường dẫn của thư mục không rõ, khi đó các lệnh thực thi của
người dùng có nguy cơ bị giả mạo, thay vì thực thi các file nằm trong đường dẫn
chuẩn của hệ điều hành, hệ điều hành sẽ thực thi file có cùng tên nằm trong 1
thư mục giả mạo xuất hiện trong biến môi trường PATH.
-
Yêu cầu khắc phục: Kiểm tra biến môi trường PATH không chứa các đường dẫn
tương đối, không chứa đường dẫn trống, không bao gồm các thư mục không rõ.
Để kiểm tra đường dẫn PATH, ta dùng
lệnh sau:
# echo $PATH
Ví dụ:
PATH có chứa đường dẫn trống:
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin::
PATH có chứa đường tương đối:
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:./src/bin
PATH có chứa đường nguy hiểm:
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/tmp
|
7.2. Thiết lập giá trị UMASK = 022 cho các tài khoản người dùng, UMASK = 077
cho tài khoản root.
-
Nguy cơ: Giá
trị UMASK của hệ thống cho phép thiết lập quyền mặc định đối với file, thư mục
mà tài khoản đó tạo ra. Nếu quyền đó không chặt chẽ, các file, thư mục đó có thể
bị sử dụng trái phép, gây ra nguy cơ mất an toàn an ninh.
-
Yêu cầu khắc phục: Thiết lập giá trị UMASK = 022 với tài khoản người dùng,
077 với tài khoản root.
Bước 1: Mở các file cấu hình
/etc/profile, /etc/bashrc, /etc/csh.cshrc, thêm hoặc cập nhật tùy chọn :
UMASK 022
Bước 2: Mở các file
/etc/login.defs, thêm hoặc cập nhật tùy chọn :
UMASK 077
Bước 3: Kiểm tra cac file
/etc/csh.login và các file /etc/profile.d/*, đảm bảo giá trị umask có giá trị
bằng 022
Bước 4: Mở các file
/root/.bashrc, /root/.bash_profile, /root/.cshrcvà /root/.tcshrc, cập nhật
hoặc thêm tùy chọn:
UMASK 077
Chú ý: Nếu tùy chọn chưa có thì sẽ tiến hành thêm
vào cuối file cấu hình.
|
7.3.
Không cho phép các file thực thi lạ
được bật cờ SUID và SGID
-
Nguy cơ: Nếu
có một file thực thi không rõ nguồn gốc được thực thi với cờ SUID hoặc SGID,
file đó sẽ được phép thực thi như với quyền của owner hoặc group.
-
Yêu cầu khắc phục: Kiểm soát các file thực thi được thiết lập cờ SUID và
SGID. Loại bỏ những file được thiết lập sai phép.
Thực thi lệnh sau để tìm các
file có cờ SUID và SGID :
#find <Đường dẫn thư mục cần kiểm tra> \(
-perm -4000 -o -perm -2000 \) -type f -print
Để tắt cờ SUID và GUID của 1 file thực thi không hợp
lệ, ta dùng lệnh sau:
# chmod u-s [tên file]
# chmod g-s [tên file]
|
Danh sách các file thực thi cơ bản
của hệ thống được mặc định thiết lập cờ SUID và SGID:
File
|
Set-ID
|
/bin/mount
|
Uid
|
/bin/ping
|
uid
|
/bin/ping6
|
uid
|
/bin/su
|
uid
|
/bin/umount
|
uid
|
/sbin/mount.nfs
|
uid
|
/sbin/mount.nfs4
|
uid
|
/sbin/netreport
|
gid root
|
/sbin/pam
timestamp check
|
uid
|
/sbin/umount.nfs
|
uid
|
/sbin/umount.nfs4
|
uid
|
/sbin/unix
chkpwd
|
uid
|
/usr/bin/at
|
uid
|
/usr/bin/chage
|
uid
|
/usr/bin/chfn
|
uid
|
/usr/bin/chsh
|
uid
|
/usr/bin/crontab
|
uid/gid root
|
/usr/bin/gpasswd
|
uid
|
/usr/bin/locate
|
gid slocate
|
/usr/bin/newgrp
|
uid
|
/usr/bin/passwd
|
uid
|
/usr/bin/ssh-agent
|
gid nobody
|
/usr/bin/sudo
|
uid
|
/usr/bin/sudoedit
|
uid
|
/usr/bin/wall
|
gid tty
|
/usr/bin/write
|
gid tty
|
/usr/bin/Xorg
|
uid
|
/usr/kerberos/bin/ksu
|
uid
|
/usr/libexec/openssh/ssh-keysign
|
uid
|
/usr/libexec/utempter/utemper
|
gid utmp
|
/usr/lib/vte/gnome-pty-he
|
gid utmp
|
/usr/sbin/ccreds_validate
|
uid
|
/usr/sbin/lockdev
|
gid lock
|
/usr/sbin/sendmail.sendmail
|
gid smmsp
|
/usr/sbin/suexec
|
uid
|
/usr/sbin/userhelper
|
uid
|
Khi cài đặt mới hệ điều hành với các gói phần mềm
tối thiểu, quản trị viên có thể tìm và lưu lại danh sách các file thực thi
SUID/SGID. Từ danh sách này, quản trị viên có thể kiểm soát được các file
SUID/SGID trong hệ thống. Với 1 file được bật cờ SUID/GUID không hợp lệ, quản
trị viên sẽ tìm hiểu nguyên nhân, từ đó có thể thiết lập lại cờ hợp lệ, hoặc xóa
file đó đi.
7.4.
Không cho phép hệ thống có file
unowner
-
Nguy cơ: Các
file unowner cho biết hệ thống có vấn đề bất thường trong quá trình hoạt động.
Có thể hệ thống đã bị tấn công, hoặc có thể do hệ thống bỏ sót trong quá trình
gỡ gói phần mềm.
-
Yêu cầu khắc phục: Đảm bảo hệ thống không tồn tại các file unowner. Trong
trường hợp phát hiện ra các file như trên, quản trị viên cần xem lại log và tìm
hiểu nguyên nhân. Nếu không phát hiện hệ thống bị tấn công, quản trị viên có thể
xóa những file đó.
Thực thi lệnh sau để tìm các
file unowner:
#find <Đường dẫn thư mục cần kiểm tra> -xdev
\( -nouser -o -nogroup \) -print
Xem xét các file đó và xóa bỏ nếu không cần sử dụng.
|
8.
Thiết lập đồng bộ thời gian cho hệ
điều hành
-
Nguy cơ: Các
hệ thống không được cấu hình đồng bộ thời gian có thể bị sai lệnh về thời gian.
Các thông tin như log, file cước, dữ liệu trong cơ sở dữ liệu... từ đó bị sai lệch.
-
Yêu cầu khắc phục: Bật dịch vụ NTP để đồng bộ thời gian từ máy chủ thời gian
chuẩn.
Bước 1: Chuẩn
bị
-
Download
gói ntp dạng rpm tương ứng với hệ điều hành cài đặt. (Ví dụ 4.2.6p5-1.el5.pp
cho RHEL6.3 64bit).
Bước 2: Cài đặt
dịch vụ NTP
-
Copy
file cài đặt lên máy chủ, chuyển tới thư mục chứa file và chạy lệnh.
-
Cấu hình
để dịch vụ ntpd luôn chạy khi khởi động máy chủ.
-
Sửa
file cấu hình /etc/ntp.conf như sau:
restrict default ignore
restrict {Time server} mask
{subnet-mask} nomodify notrap noquery
# định nghĩa các time server
server 192.168.181.50
server time.nist.gov
server time.windows.com
# Hạn chế các NTP client theo IP, ví
dụ 192.168.100.0/24
restrict 192.168.100.0 mask
255.2055.255.0 nomodify notrap noquery
|
-
Cập
nhật luật iptables để cho phép các NTP client truy cập
# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -s
192.168.100.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT
|
-
Chạy
dịch vụ ntpd và khởi động lại dịch vụ iptables bằng lệnh:
# service ntpd start
# service iptables restart
|
-
Kiểm
tra lại dịch vụ bằng lệnh:
9.
Chỉ tài khoản Root có quyền sửa
các file cấu hình của dịch vụ CRON.
8.
-
Nguy cơ: Dịch
vụ CRON cho phép quản trị viện có thể lập lịch tác vụ định kỳ, là một tiện ích
được sử dụng phổ biến trong quá trình vận hành hệ thống. Tuy nhiên tất cả các
tài khoản đều sử dụng được dịch vụ CRON sẽ gây ra những nguy cơ về an toàn bảo
mật, ví dụ như sau khi tấn công thành công tài khoản một người dùng, kẻ tấn
công có thể lập lịch định kỳ mở backdoor để tránh sự phát hiện của quản trị
viên ...
-
Yêu cầu khắc phục:
o
Hạn chế tài khoản được phép sử dụng dịch vụ
CRON.
o
Chỉ tài khoản root mới được phép sửa trực
tiếp các file cấu hình của dịch vụ cron.
Bước 1: Thực thi lệnh xóa file cron.dey:
# rm
/etc/cron.deny
Bước 2: Thêm file cron.allow nếu hệ thống chưa có:
#touch
/etc/cron.allow
Bước 3: Sửa file /etc/cron.allow, cập nhật hoặc thêm
các tài khoản được phép sử dụng dịch vụ CRON:
User1
User2
…
Bước 4:Hạn chế quyền sửa các file cấu hình của CRON:
#chown root:root /etc/crontab
#chmod 600 /etc/crontab
# chown -R
root:root /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
/etc/cron.d
# chmod -R
go-rwx /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
/etc/cron.d
|
Riêng đối với các dòng Redhat như Centos, Redhat, Fedora,
Oracle enterprise Linux … thì có init script và file config riêng cho việc chạy
iptables. Khi đấy không cần dùng lệnh iptables-save, iptables-restore như trên.