Memcached là ứng dụng sử dụng RAM để làm cache cho các ứng dụng. Thời gian gần đây một số server memcached trên khắp thế giới bị hacker lợi dụng để tấn công DDOS, đã tạo 1 vụ DDOS lớn nhất lịch sử Internet nhằm vào Github với lưu lượng lên tới 1.35 Tbs
Dạng tấn công này được đặt tên là Memcrashed, hoạt động bằng cách gửi một yêu cầu giả mạo đến máy chủ bị memcached trên cổng 11211 với IP giả mạo IP của nạn nhân. Kết quả là dù chỉ gửi đi vài chục Kb nhưng memcached trả về gấp hàng chục nghìn lần. Nguyên nhân chủ yếu là do người quản trị đã sơ hở khi cho phép memcached lắng nghe trên cổng WAN của server. Hacker sẽ scan ra server có mở port 11211 và lợi dụng tấn công DDOS như trên.
Vậy cần phải cài đặt và cấu hình như thế nào để tránh bị lợi dụng như trên? Vì khi đó không chỉ máy chủ nạn nhân mà chính máy chủ memcached đó cũng phải chịu 1 lưu lượng lớn network.
1. Cài đặt mới
Cách 1: Cài từ repository epel
1
|
sudo yum install memcached
|
Cấu hình memcached:
Sửa file:
1
|
sudo nano /etc/sysconfig/memcached
|
1
2
3
4
5
|
PORT=“11211”
USER=“memcached”
MAXCONN=“10240”
CACHESIZE=“256”
OPTIONS=“-P -l 127.0.0.1”
|
Giải thích: Cấu hình này sẽ chạy memcached ở port 11211, với user là memcached, max connection cho phép là 10240, số RAM dùng cho cached là 256MB, -P là chỉ sử dụng giao thức TCP, và chỉ cho phép lắng nghe trên localhost. Trường hợp bạn cài memcached ở server khác với server của ứng dụng thì để IP là IP LAN của server memcached.
Nếu không có OPTIONS= như trên thì mặc định memcached sẽ lắng nghe ở tất cả IP WAN, LAN. Đây chính là lỗ hổng mà hacker đã lợi dụng.
Restart memcached:
1
|
sudo service memcached restart
|
Cách 2: Cài từ source
Cách này có thể giúp bạn chạy nhiều thể hiện của memcached ở các port khác nhau, nhưng không start/stop = service được.
Cài gói phụ thuộc trước:
1
|
sudo yum install libevent libevent2 libenvent–devel
|
1
2
3
4
|
wget http://memcached.org/latest
tar –zxvf memcached–1.x.x.tar.gz
cd memcached–1.x.x
./configure && make && make test && sudo make install
|
Start memcached:
1
|
/usr/bin/memcached –d –p 11211 –u memcached –m 256 –c 10240 –P /var/run/memcached/memcached.pid –l 127.0.0.1
|
Chạy thể hiện khác thì chỉ cần thay port là xong.
2. Một số lưu ý tránh bị lợi dụng memcached
– Server memcached không nên có card WAN, IP Public vì nó chỉ là cache của ứng dụng thôi. Trường hợp bắt buộc phải có thì chỉ bind IP LAN hoặc localhost
– Check từ bên ngoài mạng xem server có mở port memcached ra ngoài hay không
– Sử dụng 1 port khác port mặc định 11211
– Chỉ sử dụng giao thức TCP (thêm -P vào cấu hình)