# Moro Security Scripts

Bộ script bảo mật cho Laravel project, được tạo từ Security Audit 2025-12-08.

## Cài đặt nhanh

```bash
# Triển khai toàn bộ bảo mật
cd /var/www/html/moro
sudo bash scripts/security/deploy_security.sh .
```

## Các Script

### 1. `deploy_security.sh` - Script chính

Chạy tất cả các script bảo mật theo thứ tự hợp lý.

```bash
sudo bash deploy_security.sh [project_path]
```

**Chức năng:**
- Quét mã độc
- Thiết lập quyền an toàn
- Thêm .htaccess bảo vệ
- Thiết lập giám sát tự động (cronjob)

---

### 2. `secure_permissions.sh` - Thiết lập quyền

Thiết lập quyền truy cập an toàn cho Laravel project.

```bash
sudo bash secure_permissions.sh [project_path]
```

**Quyền được thiết lập:**
| Đối tượng | Quyền | Mô tả |
|-----------|-------|-------|
| Thư mục | 755 | rwxr-xr-x |
| File | 644 | rw-r--r-- |
| .env | 600 | rw------- (chỉ owner) |
| storage/ | 775 | rwxrwxr-x |
| bootstrap/cache/ | 775 | rwxrwxr-x |
| artisan | 755 | rwxr-xr-x |

---

### 3. `add_htaccess_protection.sh` - Bảo vệ upload

Tạo file .htaccess chặn PHP execution trong các thư mục upload.

```bash
sudo bash add_htaccess_protection.sh [project_path]
```

**Thư mục được bảo vệ:**
- `public/uploads/`
- `public/images/`
- `public/img/`
- `public/files/`
- `public/media/`
- `public/attachments/`
- `public/vendor/`
- `storage/app/public/`

**Nội dung .htaccess:**
```apache
# Tắt PHP engine
php_flag engine off

# Chặn file PHP
<FilesMatch "\.(php|phtml|php3|php4|php5|php7|phps|phar)$">
    Require all denied
</FilesMatch>

# Chặn file ẩn
<FilesMatch "^\.">
    Require all denied
</FilesMatch>

# Chặn script khác
<FilesMatch "\.(cgi|pl|py|sh|bash|exe|dll)$">
    Require all denied
</FilesMatch>
```

---

### 4. `scan_malware.sh` - Quét mã độc

Quét và báo cáo các file nghi ngờ chứa mã độc.

```bash
sudo bash scan_malware.sh [project_path]
```

**Các mẫu được quét:**
- Webshell phổ biến: FilesMan, WSO, c99, r57, b374k, antsword, behinder...
- Backdoor đã biết: plugin_binalar_eski, ppdd
- Code nguy hiểm: eval + base64_decode
- Hàm shell: system, shell_exec, passthru, exec, popen
- File PHP ẩn
- PHP trong thư mục upload
- Code obfuscated: gzinflate, str_rot13

---

### 5. `security_monitor.sh` - Giám sát tự động

Chạy kiểm tra bảo mật định kỳ (được thiết lập bởi deploy_security.sh).

```bash
# Chạy thủ công
sudo bash security_monitor.sh [project_path]

# Xem log
tail -f /var/log/security_monitor.log
```

**Cronjob (tự động):**
```
0 6 * * * /usr/local/bin/security_monitor.sh /var/www/html
```

---

## Sử dụng khi Deploy

### Deploy lên server mới

```bash
# 1. Upload code lên server

# 2. Chạy script bảo mật
cd /path/to/project
sudo bash scripts/security/deploy_security.sh .

# 3. Kiểm tra log
cat /var/log/security_monitor.log
```

### Sau sự cố bảo mật

```bash
# 1. Quét mã độc
sudo bash scripts/security/scan_malware.sh /var/www/html

# 2. Xem báo cáo
cat /tmp/malware_scan_*.txt

# 3. Xóa file độc hại (sau khi xác nhận)
rm -f /path/to/malware.php

# 4. Thiết lập lại quyền
sudo bash scripts/security/secure_permissions.sh /var/www/html
```

---

## Lịch sử bảo mật

### Sự cố 2025-12-05/08

**Backdoor phát hiện:**
- Loại: Chinese webshell `plugin_binalar_eski`
- Password: `ppdd`
- Số file: 32+

**Đã xử lý:**
- ✅ Xóa tất cả backdoor
- ✅ Thiết lập quyền an toàn
- ✅ Thêm .htaccess bảo vệ
- ✅ Thiết lập giám sát

---

## Khuyến nghị bổ sung

1. **Đổi mật khẩu** - Database, SSH, admin panel
2. **Cập nhật hệ thống** - PHP, Laravel, các package
3. **Firewall** - Chặn các port không cần thiết
4. **Backup định kỳ** - Lưu backup ở nơi an toàn
5. **WAF** - Cân nhắc sử dụng Web Application Firewall
6. **Review code** - Kiểm tra code upload từ vendor/third-party

---

## Liên hệ

Nếu phát hiện vấn đề bảo mật, liên hệ ngay team IT.
