hoctinhoc |
02-02-2010 11:12 AM |
Cấu hình bảo mật cho mysql
Cấu hình bảo mật cho mysql
1. Yêu cầu bảo mật
Để mysql được bảo mật hơn các bạn cần cấu hình theo các yêu cầu sau:
- Cơ sở dữ liệu MySQL phải được chạy trong môi trường Chrooted ;
- Tiến trình(processes) MySQL phải chạy bằng một tài khoản riêng, chuyên dụng (tạo một tải khoản chỉ dùng để chạy mysql)
- Chỉ cho phép truy cập từ localhost (Disabled tính năng cho phép truy cập cơ sở dữ liệu từ xa)
- Đặt password phức tạp cho tài khoản quản trị cao nhất của MySQL (Root)
- Đổi tên tài khoản quản trị Mysql (root)
- Cấm truy cập Nạt danh (Anonymous access) đến cơ sở dữ liệu (tài khoản nobody) phải bị disabled
- Xóa tất cả các cơ sở dữ liệu và tables mẩu được tạo bởi Mysql (như test...)
2. Cài đặt MySQL
2.0 Tạo tài khoản để chạy mysql
Mã:
pw groupadd mysql
pw useradd mysql -c "MySQL Server" -d /dev/null -g mysql -s /sbin/nologin
2.1 Cài đặt mysql
Mã:
#cd /usr/local/mysql
#./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql --with-unix-socket-path=/tmp/mysql.sock --with-mysqld-ldflags=-all-static
#make
#su
#make install
#strip /usr/local/mysql/libexec/mysqld
#scripts/mysql_install_db
#chown -R root /usr/local/mysql
#chown -R mysql /usr/local/mysql/var
#chgrp -R mysql /usr/local/mysql
2.2 Copy tập tin cấu hình
Mã:
#cp support-files/my-medium.cnf /etc/my.cnf
#chown root:sys /etc/my.cnf
#chmod 644 /etc/my.cnf
2.3 Start Mysql
Mã:
/usr/local/mysql/bin/mysqld_safe &
2.4 Kiểm tra kết nối đến Mysql
Mã:
#/usr/local/mysql/bin/mysql -u root mysql -> Enter
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)
mysql> quit;
2.4 Stop Mysql
Mã:
/usr/local/mysql/bin/mysqladmin -u root shutdown
3. Chrooting the server
Áp dụng cho hầu hết hệ nên tảng linux, unix..
3.2 Chuẩn bị môi trường chrooted
Mã:
mkdir -p /chroot/mysql/dev
mkdir -p /chroot/mysql/etc
mkdir -p /chroot/mysql/tmp
mkdir -p /chroot/mysql/var/tmp
mkdir -p /chroot/mysql/usr/local/mysql/libexec
mkdir -p /chroot/mysql/usr/local/mysql/share/mysql/english
3.3 Set quyền
Mã:
chown -R root:sys /chroot/mysql
chmod -R 755 /chroot/mysql
chmod 1777 /chroot/mysql/tmp
3.4 Tạo cấu trúc thư mục
Mã:
cp /usr/local/mysql/libexec/mysqld /chroot/mysql/usr/local/mysql/libexec/
cp /usr/local/mysql/share/mysql/english/errmsg.sys /chroot/mysql/usr/local/mysql/share/mysql/english/
cp /etc/hosts /chroot/mysql/etc/
cp /etc/host.conf /chroot/mysql/etc/
cp /etc/resolv.conf /chroot/mysql/etc/
cp /etc/group /chroot/mysql/etc/
cp /etc/master.passwd /chroot/mysql/etc/passwords
cp /etc/my.cnf /chroot/mysql/etc/
3.5 Xóa mật khẩu và nhóm không cần thiết
Mã:
cd /chroot/mysql/etc
pwd_mkdb -d /chroot/mysql/etc passwords
rm -rf /chroot/mysql/etc/master.passwd
3.6 Special considerations
Mã:
/dev/null:
ls -al /dev/null
crw-rw-rw- 1 root sys 2, 2 Jun 21 18:31 /dev/null
mknod /chroot/mysql/dev/null c 2 2
chown root:sys /chroot/mysql/dev/null
chmod 666 /chroot/mysql/dev/null
cp -R /usr/local/mysql/var/ /chroot/mysql/usr/local/mysql/var
chown -R mysql:mysql /chroot/mysql/usr/local/mysql/var
3.7 Cấu hình Charset ngôn ngữ
nếu muốn sử dụng thêm một ngôn ngữ khác ngoài tiếng anh thì chúng ta có thể copy charsets thích hợp vào
Mã:
/usr/local/mysql/share/mysql/charsets .
3.8 Kiểm tra sau khi cấu hình
Mã:
/chroot/mysql mysql /usr/local/mysql/libexec/mysqld &
4 Disable truy cập từ xa (không cho kết nối từ xa vào mysql)
thêm dòng: skip-networking vào trong thẻ [mysqld]
Mã:
vi /chroot/mysql/etc/my.cnf
skip-networking
4.2 Cải thiện bảo mật Local
thêm dòng: set-variable=local-infile=0 vào trong thẻ [mysqld]
Mã:
/chroot/mysql/etc/my.cnf:
set-variable=local-infile=0
Không cho phép sử dụng: mysqladmin, mysqldump..
Mã:
[client] section of /etc/my.cnf:
socket = /chroot/mysql/tmp/mysql.sock
Khi nào cần sử dụng mysqladmin, mysqldump thì sử dụng lênh sau:
Mã:
--socket=/chroot/mysql/tmp/mysql.sock
4.3 Thay đổi mật khẩu root
Mã:
chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld &
/usr/local/mysql/bin/mysql -u root
mysql> SET PASSWORD FOR root@localhost=PASSWORD('new_password');
4.4 Xóa người dùng và cở sở dữ liệu mặc đinh
Mã:
mysql> drop database test;
mysql> use mysql;
mysql> delete from db;
mysql> delete from user where not (host="localhost" and user="root");
mysql> flush privileges;
4.5 Đổi tên tài khoản root
Mã:
mysql> update user set user="mydbadmin" where user="root";
mysql> flush privileges;
4.6 Xóa history
Cuối cùng chúng ta nên xóa nội dung file: history của mysql ( ~/.mysql_history), tập tin này chủa tất cả các lệnh mà mysql đã thực thi (Đặt biệt mật khẩu được lưu trữ theo dạng Plain Test trong tập tin này :no:
Mã:
cat /dev/null > ~/.mysql_history
Vậy là chúng ta đã cấu hình bảo mật cở bản cho Mysql rồi đó,
chúc các bạn năm mới vui vẽ và thành công
Tham khảo:
Securing MySQL: step-by-step
Securing Apache: Step-by-Step
.......................
:battay:
|