Why reHLDS Over Vanilla HLDS
Vanilla HLDS hasn't had official updates in years. It has known security vulnerabilities, crashes on certain inputs, and lacks configuration options that modern server operators need. reHLDS is a community-maintained reverse-engineered replacement that fixes these issues while remaining fully compatible with CS 1.6 clients and plugins.
If you're running vanilla HLDS, swap it out. The install guide covers how.
Server Framerate
CS 1.6's target server tick rate is 100 Hz. Default installs sometimes run at a lower rate. Set this in server.cfg:
sys_ticrate 100
At 100 Hz, the server processes 100 game ticks per second — hit registration and movement are more accurate at this rate. Running lower causes subtly wrong hitboxes and movement feel. This is the first thing competitive server operators check.
reHLDS Security Settings
Add these to cstrike/server.cfg:
sv_rehlds_force_dlmax 1
sv_rehlds_send_mapcycles 1
sv_rehlds_maxclients_flush 1
sv_rehlds_userinfo_transmitted_fields "name model rate topcolor bottomcolor cl_lw cl_lc cl_updaterate"
rcon_minfail 5
rcon_maxfail 20
rcon_banpenalty 60
sv_rehlds_userinfo_transmitted_fields
This is worth understanding. When a player connects, their client sends a block of info about themselves — name, model, rate settings, but also things like their CS 1.6 client version and operating system type.
By default, all of this gets broadcast to every other player on the server. That gives opponents information they don't need and arguably shouldn't have (knowing someone is running a specific client version can be useful for targeting exploits).
The setting above whitelists only the fields that other players actually need:
name— player namemodel— player modelrate— network rate (used for interpolation)topcolor,bottomcolor— model colorscl_lw,cl_lc,cl_updaterate— client-side prediction settings
Everything else (client version, OS, etc.) stays private.
RCON Brute-Force Protection
These three cvars work together:
rcon_minfail 5— don't start counting failures until at least 5 bad attemptsrcon_maxfail 20— block the IP after 20 total failuresrcon_banpenalty 60— block for 60 seconds
Increase rcon_banpenalty to 3600 (one hour) for harder lockouts against persistent attackers.
ReGameDLL_CS
ReGameDLL is an optional community replacement for cstrike/dlls/cs.so — the Counter-Strike game logic DLL. It fixes numerous CS-specific bugs and exploits that exist in the original game DLL that Valve never patched.
Download from github.com/rehlds/ReGameDLL_CS/releases.
Install:
# Back up the original
cp /home/gameserver/hlds/cstrike/dlls/cs.so /home/gameserver/hlds/cstrike/dlls/cs.so.bak
# Replace with ReGameDLL
cp cs.so /home/gameserver/hlds/cstrike/dlls/cs.so
You don't need to change liblist.gam — it still points to dlls/cs.so, which is now the ReGameDLL version. Metamod loads on top of it normally.
ReGameDLL is compatible with AMX Mod X and virtually all plugins. Some plugins built specifically for ReGameDLL add features not possible with the original DLL (advanced player stats, more precise game event hooks).
Crash Handler: Always Use hlds_run
hlds_run is a shell wrapper that monitors the server process and automatically restarts it if it crashes:
./hlds_run -game cstrike -console -port 27015 +maxplayers 20 +map de_dust2
If you launch hlds_linux directly instead, a crash kills the server permanently until someone manually restarts it. Always use hlds_run in production.
To verify your running server is using hlds_run:
ps aux | grep hlds
You should see both hlds_run and hlds_linux processes — hlds_run is the monitor, hlds_linux is the game server it's watching.
Full Hardened server.cfg Block
sys_ticrate 100
sv_rehlds_force_dlmax 1
sv_rehlds_send_mapcycles 1
sv_rehlds_maxclients_flush 1
sv_rehlds_userinfo_transmitted_fields "name model rate topcolor bottomcolor cl_lw cl_lc cl_updaterate"
rcon_minfail 5
rcon_maxfail 20
rcon_banpenalty 60
