ufw
Firewall

ufwで簡単firewall(ブルートフォース対策)

More than 3 years have passed since last update.

某VPSでDebian8を動かしているがiptablesの設定が面倒くさい(勉強不足)ので

Ubuntuに標準で入っているufw(Uncomplicated FireWall)をDebianに入れた。


ちなみに、以前はiptables-persistentを使い普通に記述していた。

以前の設定はこんな感じ

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)

-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# Allows SSH connections
# The --dport number is the same as in /etc/ssh/sshd_config
-A INPUT -p tcp -m state --state NEW --dport 10022 -j ACCEPT

この程度ならば直接記述した方が早い。

でも、DoS回避のために試行回数制限(hashlimit)を使おうとすると面倒。

# 1分間に3回アクセスor全体で6回アクセスしてきたipアドレスからの接続を60000ms(1m)拒否

$ iptables -A INPUT -p tcp -m state --syn --state NEW --dport 1022
-m hashlimit --hashlimit-name limit_sshd --hashlimit 3/m --hashlimit-burst 6
--hashlimit-mode srcip --hashlimit-htable-expire 60000 -j ACCEPT

「この程度理解できなければサーバ管理なんてできない」と思われる方もいますが、できれば面倒は避けたい。





なのでufwを使う。

#30秒間に6回アクセスしてきた IP の接続を一定時間拒否する。

$sudo ufw limit 10022
$sudo ufw status
To Action From
-- ------ ----
10022 LIMIT Anywhere
10022 LIMIT Anywhere (v6)

はい、簡単にできました。(IPv6も自動的にやってくれてる。)


これで「IPV6はとりあえず全部拒否しとけ」とかやらずに済みます。





※何か間違いがあったら指摘お願いします。(特にiptablesのルール)








ufw limit の回数制限が"30秒間に6回アクセス"の根拠(一定時間は不明)

[http://manpages.ubuntu.com/manpages/raring/man8/ufw.8.html:title]


ufw will deny connections if an IP address has attempted to initiate 6 or more connections in the last 30seconds.





参考:iptablesの設定例


[http://www.atmarkit.co.jp/ait/articles/1007/14/news102_2.html:title]

[http://qiita.com/homihomu/items/778770a1c1b3b2371fe0:title]