黒猫すいせ~☆の理系な日常
ページ内検索
カテゴリー別
コンタクト
メール
suisei@kuronekodoh.dip.jp

WEBメッセージ
名前
本文

- 広告 -

2013年10月16日
最近、遊び過ぎのせいで更新内容が釣りばっかりですYo
もはや、釣りブログといっても過言ではないんですよ。

なので、ここは一つ、無理にでもサーバーの事を書くんです。

自宅サーバー構築からすぐに、ブルートフォースアタックされているのが気になっていたので、対策しますYo

[環境]
OS : ubuntu 12.04

まずは、ログの確認からです。
$ cat /var/log/auth.log

Oct 15 05:43:56 kuronekodoh sshd[3495]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=222.187.126.134 user=root
Oct 15 05:43:58 kuronekodoh sshd[3495]: Failed password for root from 222.187.126.134 port 48539 ssh2
Oct 15 05:43:58 kuronekodoh sshd[3495]: Received disconnect from 222.187.126.134: 11: Bye Bye [preauth]
Oct 15 05:44:00 kuronekodoh sshd[3499]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=222.187.126.134 user=root
Oct 15 05:44:02 kuronekodoh sshd[3499]: Failed password for root from 222.187.126.134 port 49803 ssh2
Oct 15 05:44:02 kuronekodoh sshd[3499]: Received disconnect from 222.187.126.134: 11: Bye Bye [preauth]


はい、ブルートフォースアタックのログがあります。
ssh で root でログインに失敗し続けているログが、大量です。
おそらく、パスワードが偶然ヒットするまで続けるんでしょうね~
(ubuntu は root でログイン出来ないので、一生一致することは無いのですけれど、、、)

auth.log が上記のログでいっぱいで他のログが見辛くなりますので ssh のアクセスに制限を設けます。

使用するのは iptables です。
まずは、バージョン確認です。

$ sudo iptables -V
iptables v1.4.12

うん。
現在の iptables 設定状況を確認します。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

はい、何も設定されていないですね。
では、SSH の接続を制限します。

$ sudo iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m hashlimit --hashlimit-name t_sshd --hashlimit 12/h --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-htable-expire 301000 -j ACCEPT

これは 22port へのアクセスが5分に一回しか行えないように制限しています。
詳しい設定は、下記の参考HPを参照して下さい。

そして、上記の制限以外の 22port へのアクセスを閉じます。

$ sudo iptables -A INPUT -p tcp --syn -m state --state NEW --dport 22 -j DROP

はい、これで SSH での接続した後は、5分間 SSH での応答はしなくなります。

もう一度、設定を確認です。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:sshflags: FIN,SYN,RST,ACK/SYN limit: up to 12/hour burst 2 mode srcip htable-expire 301000
DROP tcp -- anywhere anywhere tcp dpt:sshflags: FIN,SYN,RST,ACK/SYN state NEW

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

はい、何かしら設定が書かれています。
余談ですが、設定を間違えた消したい等の場合は、下記のコマンドで全部クリアすることができます。

$ sudo iptables --flush

設定完了と思いきや、この設定、サーバーを再起動すると忘れてしまいます。
再起動のたびに、iptables のコマンドを入力するのは面倒ですので、起動時に設定を読み込むように対応します。

/etc/network/if-pre-up.d ディレクトリにあるファイルは NIC 起動時に実行されます。
そこに iptables というスクリプトファイルを新規作成し読み込みの処理を書きます。

$ sudo vi /etc/network/if-pre-up.d/iptables

ファイルの中身は、下記です。

#! /bin/sh
iptables-restore < /etc/iptables_rule.save

作成したファイルに、実行権限を与えます。

$ sudo chmod 755 /etc/iptables_rule.save

そして iptables の現在の設定を iptables_rule.save に吐き出しますYo
$ sudo iptables-save > /etc/iptables_rule.save

はい、完成。
サーバーを再起動して SSH で接続確認です。

$ ssh username@localhost -p 22
username@localhost's password:

応答しますね。では、わざとパスワードを間違えて再度接続。

$ ssh username@localhost -p 22

はい、応答がないです。成功です。
5分後に再度実行すると
$ ssh username@localhost -p 22
username@localhost's password:

はい、応答してくれます。
出来上がりです。

[参考HP]
iptablesでできるDoS/DDoS対策 (2/3)




コメント(0) トラックバック(0)

/ Linux / サーバー


名前
コメント

- PR -



プロフィール
すいせ~☆
名前:すいせ~☆

アプリケーションやなんやらを好奇心が赴くまま作成、発信して行くサイトです。 その他は、未定です。知りたい人は、いないと思うしぃ。。。
アクセスカウンタ
今日 30 昨日 39 総合 46213
カレンダー
前月 2018年08月
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
Twitter

- 広告 -