プラグイン集

無料ブログはココログ
2021年10月
          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            

サンプルJS

  • ユーロバカ一代の締切
    ・・・初期化中・・・

« 第6回マインクラフトサーバーを構築する(セキュアシェル(SSH)編) | トップページ | 第8回マインクラフトサーバーを構築する(マインクラフトサーバー編) »

2014年3月14日 (金)

第7回マインクラフトサーバーを構築する(ファイアウォール(暫定)編)

注意事項は第1回へ。
前回は第6回へ。

すいません、iptablesは、私自身最低ラインの最低。ギリギリいや、スレスレだ。
(ギリギリは空間が有るが、スレスレは衣服や髪が擦れてる状態らしい。)

ーーーーーーやること一覧ーーーーーー

  • セキュリティで最低限やること一覧

1.Yumは確実にアップデートする
2.iptablesで確実に不要なポートをふさぐ
3.SSHのパスワード認証を切る→RSA認証
3.1.rootログインさせない
3.2.ポートを変える
3.3.しつこい奴はDenyHost
3.4.そもそも、SSH可能なユーザーを絞る
3.5.同時SSH可能な数を絞る
4.rootになれるユーザーを絞る
5.ウイルス対策ソフト
6.ファイル改ざん検知
7.rootkit検知
8.不要なサービス停止

9.攻撃検知・防御・排除(バッファーオーバーフローとかDOSとか)
10.ログ監視と調査
11.鯖情報の非表示(Apachやphpのレスポンスを返さないように設定)
12.ApachのSSL化
13.ポートスキャンを遮断
14.DDNSサーバーへの変更通知
15.バックアップ

  • サーバーの設定と起動

1.NTPサーバー
2.マインクラフトサーバー
3.(SQLサーバー)
4.webサーバー
5.webサーバーのSSL化
6.SNMP+MRTG
7.(アクセス解析サーバー)
8.メールサーバー(送信)
9.メールサーバー(受信)
10.メーリングリストサーバー

赤字は作業終了を示す。

ーーーーーーここからが作業ーーーーーー

最低限のセキュリティ設定、あと1項目になりましたね。あとはファイアウォールことiptablesです。

最初の状態だと、SSH、HTTP、HTTPSぐらいが有効で、NTPの作業をした人は、NTPも開いているでしょう。ここからはツールでポートを開けずに、シェルスクリプトでポート開放を行い、設定が良さそうならセーブして反映するという、繰り返し作業になります。

第1回の参考サイト見つつ、某所で鯖缶してたときの、秘伝のiptablesスクリプトを書き換えつつ作成。

とりあえず、現状のルール /etc/sysconfig/iptables をバックアップ。
カーネルへの指示は、先行して設定しておく。

ここにスクリプト晒そうかと思ったが、せっかくポート変えた意味がなくなるので止める。

#!/bin/bash
##########
#ICMP
##########
/sbin/iptables -A INPUT -p icmp --icmp-type echo-request -m hashlimit --hashlimit-name t_icmp --hashlimit 3/m --hashlimit-burst 15 --hashlimit-mode srcip --hashlimit-htable-expire 300000 -j ACCEPT #pingの要請
/sbin/iptables -A INPUT -p icmp --icmp-type echo-reply -m hashlimit --hashlimit-name t_icmp --hashlimit 3/m --hashlimit-burst 15 --hashlimit-mode srcip --hashlimit-htable-expire 300000 -j ACCEPT #着信は答える
/sbin/iptables -A INPUT -p icmp --icmp-type any -j DROP #それ以外通さない
#特定のICMPパケットは送れる
/sbin/iptables -A OUTPUT -p icmp -j ACCEPT

#---------------Communication rules---------------#
##########
#HTTP(80,tcp-udp)
##########
/sbin/iptables -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p udp -m state --state NEW --dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp -m state --state NEW --dport 80 -j ACCEPT
##########
#FTP(20-21&other,tcp-upd)
##########
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
#/sbin/iptables -A INPUT -p tcp -m state --state NEW --dport 20:21 -j ACCEPT
#/sbin/iptables -A INPUT -p udp -m state --state NEW --dport 20:21 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m state --state NEW --dport 20:21 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp -m state --state NEW --dport 20:21 -j ACCEPT

#########
#Minecraft(25565,tcp,udp)
#########
/sbin/iptables -A INPUT -p udp -m state --state NEW --dport 25565 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m state --state NEW --dport 25565 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp -m state --state NEW --dport 28265 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m state --state NEW --dport 28265 -j ACCEPT

#########
#Minecraft rcon(25575,tcp,udp)
#########
/sbin/iptables -A INPUT -p udp -m state --state NEW --dport 25575 -m hashlimit --hashlimit-name t_mc --hashlimit 3/m --hashlimit-burst 15 --hashlimit-mode srcip --hashlimit-htable-expire 300000 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m state --state NEW --dport 25575 -m hashlimit --hashlimit-name t_mc --hashlimit 3/m --hashlimit-burst 15 --hashlimit-mode srcip --hashlimit-htable-expire 300000 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp -m state --state NEW --dport 28275 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m state --state NEW --dport 28275 -j ACCEPT

ICMPは、無いと困るし、多いとゴミなので制限をつける。毎分3パケット、1接続15回までのトライアル可。制限を越えた場合300秒(5分)の接続拒否。
普通のlimitだと、攻撃受けてる最中は、自分の接続が出来なくなる。よって、hashlimitを使う。

普通に制限無く設定する場合は、HTTPの設定みたく書けば良い。プロトコルとポートを許可する。こんな感じか?

FTPは事情が複雑。(知りたければ、アクティブ・パッシブなどで調査)ip_conntrack_ftpとip_nat_ftpをロードして、ルールを書く。
これが分からなくて、昔、「FTP全面禁止だ」(特別の場合は、申請書書かせて、上位ネットワークに直接)でゴリ押ししてたからなぁ。
実験と勉強素晴らしいですなぁ。

あとは、マインクラフトのポートを開ける。マインクラフトRCONポートは、ICMPの要領でアクセス回数制限を設けて、パスワード解析にかかる時間を増大させる。無対策なら1秒で1億通り試せたが、5分で15通りしか試せない。単純計算で、効率を20億分の1に落とせる。

なお、省略しているDNSとか、DHCP、前回設定したNTPなどなどの通信が必要な物は、もれなく列挙しておくこと!通信が出来なくなる。

ここの作業が面倒な人は、サーバー何て立ててはいけない。スナイポの手下ゾンビになって、ネット中を攻撃する。そして貴方は、タイ━━━━||Φ|(|´|Д|`|)|Φ||━━━━ホ!!される。

もちろん、 上の例だと、-j ACCEPT でパケットを通している。だが、マインクラフト本体や、Wiki・メーリングリストは、国内の人としかやらないと言うのであれば、絞るべきだろう。
参考サイトを例に、ACCEPT_COUNTRYで日本国内かどうかをチェックするチェーンに回し、そこで、通す通さないを決めた方が、ポート番号が合っててかつ日本のIPと絞り込めるので、セキュリティがわずかに増す。
もちろん、例外も作りたいだろう。完全拒否IP群を列挙しておいたり、特別許可IPをACCEPT_COUNTRYチェーンに潜り込ませたりする処理を書くことで、もう少しセキュリティをあげつつ、使いやすいファイアウォールが出来る。

これで、半固定して運用したい場合は。service iptables save でセーブすれば良い。/etc/sysconfig/iptables の内容が更新される。


まとめ

Linuxのファイアウォールのiptables を設定した。
iptablesは奥が深く、より柔軟勝つ高度のファイアウォールを組めることが分かった。

« 第6回マインクラフトサーバーを構築する(セキュアシェル(SSH)編) | トップページ | 第8回マインクラフトサーバーを構築する(マインクラフトサーバー編) »

Linux」カテゴリの記事

マインクラフト」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

« 第6回マインクラフトサーバーを構築する(セキュアシェル(SSH)編) | トップページ | 第8回マインクラフトサーバーを構築する(マインクラフトサーバー編) »