20 minutes
Jun 21st, 2023 - 01:09 am
Setting up a new Discord server can be an exciting endeavor, but it can also be quite overwhelming, especially for those new to server administration. With numerous hacks, scams, and threats to consider in web3, ensuring the security and safety of your server becomes crucial. In this article, we will guide you through securely setting up a new Discord server while explaining the underlying principles along the way.
The first guiding principle to keep in mind is the Principle of Least Privilege. This principle emphasizes that all accounts, whether they belong to humans or bots, should have only the permissions they require to function, and no more. For example, unless they are moderators or admins, accounts on your server do not need the ability to ban other accounts. By strictly adhering to this principle, you can minimize the potential for abuse and unauthorized actions by bad actors.
The level of strictness in permissions can vary depending on the nature of your server. If your entire server is invite-only, you can afford to be less strict with permissions because new entrants are already somewhat socially vetted. However, for public-access servers in the web3 space, where scams are prevalent, you should have everything locked down tight. In this article, we’ll walk through the general process of joining discord servers and how we can add security features to that process, how to empower your mods with automatic monitoring and moderation, and, finally, how to protect your community from dangerous permissions using the Principle of Least Privilege.
Now, let’s delve into how people join servers so we understand where we might put restrictions in place. Server join flow involves a new member getting a Discord invite from somewhere and joining the server. This invite might be from the project website or Twitter; it can come from an individual for invite-only servers.
To maintain the security of the whole server, we can put some restrictions on the join process.
Our first line of defense against spam accounts, scammers, and phishing is a Join Gate. A join gate is a bot with name filters to prevent accounts with inappropriate, suspicious, or impersonator names from entering the server. Use bots like Hashbot and Wick to prevent accounts with names like Server Support
, Team Admin
, and Support Bot
from joining your server.
The second barrier is human verification, which helps ensure that only legitimate human users gain access to the server. Similar to captchas on websites, captcha bots such as Pandez Guard, Captcha Bot, and Wick put a “proof of humanity” test in place.
Whatever bot you choose to use, do not use QR code verification and do not require DMs or redirects to external websites. All interactions should happen in the public channel; an inline captcha is the best method for secure web3 servers.
While you should prevent new joiners from posting until after they pass the join gate and human verification, be careful not to restrict access to read-only channels that prove your server is legitimate. Have some public, read-only channels that newcomers can read to distinguish your server from fake impersonation servers. #announcements, #about-the-project, and #safety-guide, for example.
Once users have joined the server, they can gain more access gradually. Users can choose specific roles for themselves via self-select reaction roles
. Use moderation bots like Carl, Dyno, and YAGPDB to create reaction roles and automate role assignments. However, it’s crucial to be cautious when using mod bots, as they can be abused if attackers gain access and change the role configurations.
To ensure the safety of your Discord server, it is important to implement Discord’s Safety Setup measures. You should:
Refer to the Discord support article for details on how to set these three features up. If you want to be extra safe from raids, Beemo is a great low-setup solution for raid protection as well.
Automod is when you set bots to automatically assign punishments for breaking your server’s rules. You can use native Discord Automod or customizable mod bots like Carl, Wick, Dyno, or YAGPDB to set up spam filters, link blocking, and other features.
The easiest to set up is Discord Automod. Refer to the Automod FAQ for tutorials.
Beware that you will have to comprehend lots of bot documentation if you decide to use bots for Automod.
Here are the documentation links for the bots referenced above:
I prefer Carl, but all the bots mentioned above are good choices. However, avoid MEE6 due to its team’s history of hacked accounts and failure to deliver promised web3 features.
For emergencies or immediate security threats, shut down all server activity using lockdown mode from Carl or Wick. These modes restrict posting and give your mods time to remove dangerous posts, administer punishments, and mitigate the risk to your server community.
Finally, you can implement automated mute punishments using native Automod Timeout or mod bots’ Muterole features.
While utilizing mod bots can enhance server management, it’s important to remember that the more bots you have, the higher the risk of any single bot getting compromised and used against you. Therefore, it is crucial to follow the principle of Least Privilege and grant only the necessary permissions to each bot. For example, Collab.Land only requires these permissions:
Understanding role permissions within Discord is essential for effective moderation. Discord servers utilize a role hierarchy system to assign permissions effectively.
Role Hierarchy: The order in which roles exist. The closer to the top the higher the role. Discord permissions and actions rely on role hierarchy to determine if an action can be done. For example, you cannot kick someone from the server who has a higher role than you in the hierarchy. Conversely, if a role has Manage Roles
permission, it can change the settings for any role below it in the hierarchy and assign those lower roles to any account.
Overrides are permission changes at the category and channel levels. WARNING: these overrides will change your default role permissions.
In addition to the hierarchy, what order permissions and overrides are applied in matter too. The order of role permissions is as follows: server
> category
> channel
. This means that server-level permissions are applied by default, followed by any overrides at the category level, then finally overrides at the channel level.
We recommend not using channel-specific permission overrides and instead relying on category overrides as much as possible. Excessive overrides can complicate moderation and make it challenging to keep track of who has what permissions for which channels. The “view as role” feature, or even reviewing the server with an alt account, can be a valuable ally for administrators to monitor and manage role permissions effectively.
Here is a view of the initial onboarding flow as members gain more access through human verification in a server.
Scammers aim to spread phishing links quickly, often by compromising user accounts within your server. To protect against such threats, again, it is crucial to implement the principle of least privilege. This approach involves removing “dangerous” permissions from all users.
Some of the “dangerous” permissions that should be carefully controlled and restricted include:
Administrator
– unlocks all permissions, including access to bot dashboards allowing attackers to weaponize your installed botsMention @everyone, @here, and All Roles
– allows attackers to quickly direct attention to their scam links when they do attackManage Webhooks
– exposed webhook endpoints allow attackers to post anything (including @everyone mentions) directly into your server, even if you manage to ban all of themManage Server
– allows attackers to invite or remove bots, change vanity URL to redirect new joiners to a fake server, change server name/iconManage Roles
– can grant roles lower on the role hierarchy to other users and even yourself, allowing for an attacker to escalate their permissions and access other dangerous permissionsManage Channels
– can be used to create fake announcement channelsBy limiting these permissions, you reduce the impact scammers can have within your community. Taking such precautions helps ensure that scammers have minimal opportunities to exploit compromised member accounts and spread malicious links.
Think of the following Member/Admin/Owner sections as increasing permissions from 0, rather than the reverse. Additive, not subtractive permissions.
When setting permissions for member accounts, it is crucial to apply the principle of least privilege. Instead of using subtractive permissions, where lower-tier roles have limitations, utilize additive permissions. This means that higher-tier roles gain additional access and permissions at the server level. Additive permissions are easier to moderate and simpler when dealing with category and channel overrides; click through the possible role combinations using the “View as role” feature to confirm permission settings.
To apply the Least Privilege Principle, you can establish a tiered system for additive member permissions as follows, starting from the least access and increasing permissions:
Everyone
: Lowest permissions, almost nothing. Has no permissions at the server level, has category override for view-only access in read-only channels like #announcements and #about-the-project, and can view the human verification channel.Verified Human
: Server-level view channels, read/write access to public community spaces, enable members to post and engage in voice channels.Full Community Member
: Server-level perms to post links, embed content, share images, and more.By implementing this tiered approach, you ensure that each member has access to the appropriate features while minimizing the potential for abuse by attackers and confusion for moderators. Additionally, web3 communities might use token-gating bots like Collab.Land to grant Full Community Member roles based on wallet holdings.
Administrator and moderator accounts are valuable targets for scammers. These accounts have high-level permissions and often have access to the “dangerous permissions” described above. Compromising these accounts can give attackers access to scam the entire server if the server is not following Least Privilege principles. To protect these high-value accounts, several security measures should be in place:
Enforce two-factor authentication (2FA) for all moderator accounts. This is a setting in Discord’s Safety Setup.
Assume that any account can become compromised at any time. Applying Least Privilege principles to restrict even moderator permissions protects everyone in your community from the actions of compromised accounts.
Consider utilizing automated security solutions like Wick or Good Knight.
Assigning the server owner role to a “cold” account, separate from the day-to-day accounts for admins, is a wise practice. This setup ensures that the server owner always maintains the highest level of access on a secure account, even if other administrators’ accounts are compromised. Use this precautionary measure to safeguard your server and maintain control of critical settings and permissions. Follow Discord’s instructional article to transfer server ownership.
To bolster the security of your Discord server, consider implementing the following advanced security measures:
https://discord.gg/{fancy_name}
. Keep your server boosts topped up and restrict the Manage Server
permission to prevent compromised accounts from swapping your vanity URL to a fake phishing URL.gm
s to a #gm channel only.To empower your community and enhance their ability to protect themselves, add the following features:
@Mod
on the Boring Security discord!By arming your community with the necessary tools and knowledge, you create a culture of security and safety and reduce the risk of falling victim to scams or security breaches!
For further information and resources related to Discord server security, consider exploring the following:
By implementing these restricted role permissions and advanced security measures, you can create a more secure and enjoyable environment for your Discord server community.
Have any questions or want to learn more about web3 security and stay up to date on the most current security information, scams, and tactics? Join Boring Security in our discord at https://discord.gg/boringsecurity