UFW 的手册页提到它可以为我设置 iptables 速率限制:
ufw 支持连接速率限制,这对于防止暴力登录攻击很有用。如果 IP 地址在过去 30 秒内尝试启动 6 个或更多连接,则 ufw 将拒绝连接。有关 详细信息,请参阅 http://www.debian-administration.org/articles/187。典型用法是:
Run Code Online (Sandbox Code Playgroud)ufw limit ssh/tcp
不幸的是,这是我能找到的所有文档。我想坚持使用 UFW,而不是使用更复杂的 iptables 命令(以保持“简单”)。
我将如何使用 ufw 将端口 80 上的所有传入(因此不是传出)流量限制为每 30 秒 20 个连接?如何禁用端口 30000 到 30005 的速率限制?是否默认为所有端口启用速率限制?
我已经使用 upstart 在启动时启动了我的网络服务器应用程序。这是新贵脚本:
# web app node upstart file at /etc/init/webapp.conf
description "web application"
start on started mongodb
stop on runlevel [06]
respawn
respawn limit 10 100
env NODE_ENV=production
pre-start script
ulimit -n 2048
end script
exec start-stop-daemon --start -c mainuser --exec /usr/bin/make -- -C /home/mainuser/app start-prod
Run Code Online (Sandbox Code Playgroud)
这在 Ubuntu 服务器 10.04 LTS 上完美运行,我对此感到非常高兴。
但是,我有一个部署 shell 脚本,它使用 SSH 登录mainuser
(这不是 sudoer),然后将工作目录更新为最新的部署版本。
这里的问题是需要重新启动服务,以便应用程序加载新的源文件。然而,mainuser
得到一个...
mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found
Run Code Online (Sandbox Code Playgroud)
...当试图阻止它时。我必须运行sudo stop webapp
,但该用户不能这样做,因为他不是 sudoer。出于安全原因,我也不希望他成为 sudoer,而且我不想插入 sudo …
使用 UFW,我默认禁用所有传出和传入流量。但是,我确实允许端口 80 进出:
sudo ufw default deny incoming
(拒绝所有传入)sudo ufw default deny outgoing
(拒绝一切外向)sudo ufw allow in 80/tcp
(接受来自端口 80 的所有传入 tcp)sudo ufw allow out 80/tcp
(接受所有传出的 tcp 到端口 80)但是,以下命令似乎不起作用。谁能告诉我为什么?
mainuser@saturn101:~/apps/mongodb$ curl http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.0.4-rc1.tgz > mongodb-2.0.4-rc1.tgz
curl: (6) Couldn't resolve host 'fastdl.mongodb.org'
Run Code Online (Sandbox Code Playgroud)
和,
ping google.com
ping: unknown host google.com
Run Code Online (Sandbox Code Playgroud)
和,
sudo apt-get update
Run Code Online (Sandbox Code Playgroud) firewall ×2
ufw ×2
deployment ×1
iptables ×1
networking ×1
permissions ×1
security ×1
upstart ×1