J2TEAM Security: A must-have extension for Chrome users. Install now!

Tips bảo mật cho webserver apache nền linux sf

Ở bài viết hôm nay mình sẽ giới thiệu 1 vài cách bảo mật webserver chạy php cho các sysadmin.

Điều kiện : CÓ root access . và tập trung nói ở file security của apache /etc/php.d/security.ini ( file này tự tạo nhé )

Trước hết hãy đề cập đến các lỗi thường bị khai thác bây giờ để tìm ra cách chống đỡ
Phổ biến và nguy hiểm nhất là XSS,SQL injection,File upload,file includes, hàm eval(),csrf,etc nhiều lắm các bạn tự biết nhé

Mình sẽ demo config tại 1 server sạch chưa cài gì
Phần 1 :

1> Tìm cách module không cần thiết và xóa bỏ bớt đi
Code:
[root@www2047uc ~]# php -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
ereg
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
imap
json
libxml
mbstring
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
xml
zip
zlib
[Zend Modules] 
ở ví dụ này mình thấy sqlite,readline là k cần lắm nên có để disable hoặc xóa

rm /etc/php.d/sqlite3.ini
(readline)
hoặc
v /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disabl
e (readline)

Hoặc thay vì xóa thì cài bản php chỉ có những module mình cần
ví dụ

[./configure --with-libdir=lib64 --with-gd --with-mysql --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --cache-file=../config.cache --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-fastcgi --enable-force-cgi-redirect[/code]
cái này mình cài luôn fastcgi
2. Fake http banner (http://junookyo.blogspot.com/2012/03/fake-apache-banner-va-php-x-powered-by.html)

3.Log tất cả các lỗi phát sinh của PHP

Mở /etc/php.d/security.ini thêm vào
Code:

display_errors=Off
log_errors=On
error_log=/var/log/httpd/php_scripts_error.log
4. Tốt nhất là dis luôn upload :
vẫn sửa trong file kia nha file_uploads=Off hoặc nếu cho thì hoặc set max upload
file_uploads=On# user can only upload upto 1MB via php
upload_max_filesize=1M

5. bật sql safe mode
sql.safe_mode=On
Khi set cái này mysql_connect() và mysql_pconnect() sẽ không nhận bất thì đối số nào được truyền tới chúng.
cái này mà dùng wp là xịt đấy
và gợi ý nữa là thay vì dùng magic_quotes thì dùng mysql_escape_string() (các pro đã chứng minh em k dám cãi )

6. Dis các hàm nguy hiểm
disable_functions =exec,passthru,shell_exec,system,proc_open,popen,c url_exec,curl_multi_exec,parse_ini_file,show_sourc e

7.Cài fastcgi
FastCGI giảm hiệu suất của server tuy nhiên lại làm tăng tốc độ của PHP. và giúp ngăn chặn việc gọi shell trực tiếp qua cgi.force_redirect
cgi.force_redirect=On
8. Bảo vệ Apache, PHP, and, MySQL Configuration Files
thay vì dùng chmod ở đây mình dùng chattr
dùng ở các file sau

# chattr +i /etc/php.ini
# chattr +i /etc/php.d/*
# chattr +i /etc/my.ini
# chattr +i /etc/httpd/conf/httpd.conf
# chattr +i /etc/



Leader at J2TEAM. Website: https://j2team.dev/

Đăng nhận xét

Cảm ơn bạn đã đọc bài viết!

- Bạn có gợi ý hoặc bình luận xin chia sẻ bên dưới.

- Hãy viết tiếng Việt có dấu nếu có thể!