diff --git a/auth.go b/auth.go
index 66ee275..9172f21 100644
--- a/auth.go
+++ b/auth.go
@@ -142,6 +142,17 @@ func (a *Auth) BanFingerprint(authkey string, d time.Duration) {
 	logger.Debugf("Added to banned: %q (for %s)", authItem.Key(), d)
 }
 
+func (a *Auth) Banned() []string {
+	r := []string{}
+	iterGet := func(key string, _ set.Item) error {
+		r = append(r, key)
+		return nil
+	}
+	a.banned.Each(iterGet)
+	a.bannedAddr.Each(iterGet)
+	return r
+}
+
 // Ban will set an IP address as banned.
 func (a *Auth) BanAddr(addr net.Addr, d time.Duration) {
 	authItem := set.StringItem(newAuthAddr(addr))
diff --git a/host.go b/host.go
index 34a19df..9912fa7 100644
--- a/host.go
+++ b/host.go
@@ -1,6 +1,7 @@
 package sshchat
 
 import (
+	"bytes"
 	"errors"
 	"fmt"
 	"io"
@@ -454,6 +455,29 @@ func (h *Host) InitCommands(c *chat.Commands) {
 		},
 	})
 
+	c.Add(chat.Command{
+		Op:     true,
+		Prefix: "/banned",
+		Help:   "List the current ban conditions.",
+		Handler: func(room *chat.Room, msg message.CommandMsg) error {
+			if !room.IsOp(msg.From()) {
+				return errors.New("must be op")
+			}
+
+			banned := h.auth.Banned()
+
+			buf := bytes.Buffer{}
+			fmt.Fprintf(&buf, "Banned:\n")
+			for _, key := range banned {
+				fmt.Fprintf(&buf, "   %s\n", key)
+			}
+
+			room.Send(message.NewSystemMsg(buf.String(), msg.From()))
+
+			return nil
+		},
+	})
+
 	c.Add(chat.Command{
 		Op:         true,
 		Prefix:     "/motd",