Panel web en PHP + Bootstrap 5 + PowerShell para administrar el puerto de Escritorio Remoto de Windows / RDP desde una interfaz empresarial con login, dashboard, auditoría y acciones administrativas.
Créditos: ChatGPT OpenAI y Azzlaer para LatinBattle.com
- 🔐 Login protegido por sesión PHP.
- 🧭 Dashboard empresarial con tarjetas de estado.
- 🖥️ Lectura del puerto actual de RDP desde el registro de Windows.
- 🔥 Comprobación de regla entrante en Firewall de Windows.
- ⚙️ Comprobación del servicio
TermService. - 🚪 Prueba TCP de puerto remoto/local usando
Test-NetConnection. - ✏️ Cambio del puerto RDP en el registro de Windows.
- 🔓 Creación/actualización automática de regla firewall para el puerto elegido.
▶️ Habilitar e iniciar el servicio de Escritorio Remoto.- 🔄 Reiniciar servicio RDP.
⚠️ Botón para reiniciar Windows si el cambio lo requiere.- 📜 Log de auditoría para acciones del panel.
- 🧩 Interfaz AJAX por secciones: Dashboard, Puerto RDP, Firewall & Servicio, Auditoría.
- 🧱 Separación limpia entre PHP y PowerShell.
rdp_port_admin/
├─ index.php # Login
├─ dashboard.php # Layout principal
├─ api.php # API AJAX protegida
├─ logout.php # Cerrar sesión
├─ config.php # Configuración principal
├─ assets/
│ ├─ css/style.css # Estilo empresarial oscuro
│ └─ js/app.js # Navegación AJAX y llamadas API
├─ includes/
│ ├─ bootstrap.php # Inicialización global
│ ├─ functions.php # Seguridad, CSRF, PowerShell, logs
│ └─ header.php # Layout visual del panel
├─ pages/
│ ├─ dashboard.php # Estado general
│ ├─ settings.php # Cambio de puerto / reinicio Windows
│ ├─ security.php # Firewall / servicio
│ └─ logs.php # Auditoría
├─ scripts/
│ ├─ rdp_tools.ps1 # Administración real de Windows
│ ├─ start_xampp_as_admin.bat # Abrir XAMPP como administrador
│ └─ test_powershell_status.bat # Prueba directa del script PowerShell
└─ logs/
├─ audit.log # Se crea automáticamente
└─ error.log # Se crea automáticamente
Usuario: admin
Password: admin123
Cambia la contraseña antes de usarlo en producción.
Para crear un hash nuevo ejecuta en consola:
php -r "echo password_hash('TU_PASSWORD_NUEVO', PASSWORD_DEFAULT);"Luego reemplaza el valor de ADMIN_PASS_HASH en config.php.
- Windows Server o Windows 10/11.
- PHP 8.x recomendado.
- Apache/XAMPP o IIS con PHP.
- PowerShell 5+.
- Permisos de administrador para cambiar:
- Registro de Windows.
- Firewall.
- Servicio
TermService. - Reinicio del sistema.
- Copia la carpeta
rdp_port_admindentro de:
C:\xampp\htdocs\
- Abre XAMPP como administrador usando:
scripts\start_xampp_as_admin.bat
-
Inicia Apache desde XAMPP Control Panel.
-
Abre en el navegador:
http://127.0.0.1/rdp_port_admin/
Antes de usar el panel, puedes probar si el script responde bien:
scripts\test_powershell_status.bat
También puedes ejecutar:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File scripts\rdp_tools.ps1 -Action statusEl orden recomendado para cambiar el puerto RDP es:
- Entra al panel desde el mismo servidor.
- Ve a Firewall & Servicio.
- Permite el nuevo puerto en Firewall.
- Ve a Puerto RDP.
- Cambia el puerto.
- Reinicia el servicio RDP o Windows.
- Prueba conexión con el nuevo puerto.
- Solo después, cierra la conexión antigua.
LOCAL_ONLY = truepor defecto.- Login por sesión.
- Token CSRF en acciones POST.
- Auditoría en
logs/audit.log. - Separación de acciones administrativas en PowerShell.
En config.php puedes cambiar:
define('LOCAL_ONLY', true);
define('ALLOWED_IPS', []);Para permitir acceso desde otra IP, usa con cuidado:
define('LOCAL_ONLY', false);
define('ALLOWED_IPS', ['192.168.1.50']);-Action status
-Action check-remote -HostName 127.0.0.1 -Port 3389
-Action set-port -Port 3390
-Action enable-firewall -Port 3390
-Action enable-service
-Action restart-service
-Action reboot -Minutes 1El puerto RDP se lee/escribe en:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber
El servicio revisado es:
TermService
La regla firewall creada por el panel se llama:
RDP Port Admin - TCP
Este panel está pensado para administradores que quieren una interfaz visual simple pero potente para revisar el estado de RDP en Windows, abrir firewall, cambiar puerto y reiniciar servicios sin entrar manualmente al registro o consola.
No publiques este panel directamente en internet sin VPN, HTTPS, IP allowlist, password fuerte y reglas de acceso. Es una herramienta administrativa poderosa y debe usarse solo en entornos controlados.
ChatGPT OpenAI y Azzlaer para LatinBattle.com


