fail2ban 0.9について
fail2banは0.9からssh-iptablesのフィルタがデフォルトでONにならなくなっている。
(仕様変更のようだ)
いろいろ調べたらipsetとfail2banをすでに試されている方がいた。。
世の中広い。ありがとうございます。
以前まではデフォルトで有効だったssh-iptablesを有効にしようかと思ったが、
どうもfail2ban0.9.0からいろいろ仕様が変わったみたいだ。
jail.confの最初の説明文を読むと
をjail.localという名前で保存して、
[DEFAULT]
bantime = 3600
#
[sshd]
enabled = true
service fail2ban restartをすればsshで5回パスワードを間違えた場合
アクセス元IPを自動的にiptablesのfail2ban用のチェインにREJECTを追加してくれる。
簡単でありがたいね。
SSH接続で特定国(中国、ロシア)からの接続をブロックする(ipsetを使って)(その2)
SSH接続で特定国(中国、ロシア)からの接続をブロックする(ipsetを使って)(その1) - ~恵み多き日々~みんな悩みはいっしょ!
からの続きです。
ipsetのRPMが古かったのでやり直しました。
用意するもの
ipset-6.11-4.el6.x86_64.rpm (2016年1月1日時点でRHEL6用の最新)
インストールしてみると
[root@machine 20160101ipset]# rpm -ivh ipset-6.11-4.el6.x86_64.rpm
エラー: 依存性の欠如:
libmnl.so.0()(64bit) は ipset-6.11-4.el6.x86_64 に必要とされています
libmnl.so.0(LIBMNL_1.0)(64bit) は ipset-6.11-4.el6.x86_64 に必要とされています
依存性ではじかれてばっちり入らない。。
依存関係を解消してみる。
[root@machine 20160101ipset]# rpm -ivh ipset-6.11-4.el6.x86_64.rpm libmnl-1.0.2-3.el6.x86_64.rpm
これでバッチグーでインストールできる。
[root@machine 20160101ipset]# rpm q-ql ipset-6.11-4.el6.x86_64
/etc/rc.d/init.d/ipset
/usr/lib64/libipset.so.2
/usr/lib64/libipset.so.2.0.1
/usr/sbin/ipset
/usr/share/doc/ipset-6.11
/usr/share/doc/ipset-6.11/COPYING
/usr/share/doc/ipset-6.11/ChangeLog
/usr/share/man/man8/ipset.8.gz
ありますね。initスクリプト。やっほぅ。
ここまで来ると
ipsetとiptablesでSSHを日本国内からの接続に限定する (CentOS 6) – 稲葉サーバーデザイン
稲葉サーバデザインさんのページを見ながら設定はコンプリートできる。
1.ipsetのリストを作る
2.chkconfig ipset on でipsetをサーバ起動時にONにしておく
3.iptablesに新しいルールを入れる(-m set –match-set <セット名=WHITELIST> src)
4.(当然)iptablesもchkconfig iptables onでなければならない。
これで設定できますね。
で、オリジナリティということで、稲葉サーバデザインさんのスクリプトはホワイトリスト=日本からのIPだけ通す 方式のスクリプトでしたが、日本だけというのは今どき結構難しいと思いました。たとえばAWSを使っているときはアメリカのIPになるんじゃないかと、ホワイトリストの逆のブラックリストというリストの作り方もあるんじゃないかと思いました。
昨今問題になってくるのは、中国、韓国、北朝鮮、ロシアなどの国からの攻撃なのでこのあたりからのIPをブロックできればあとはOPENで大丈夫なんじゃないかと。
よって、ipdeny.comを利用してそのあたりからのIPをブロックすることができるipsetのリストを作成するスクリプトを考えてみました。
#!/bin/bash
COUNTRY="cn" # cn is CHINA
BSTRING="BLACKLIST-"${COUNTRY} # example BLACKLIST-cn
# Download Country ip address list(ipv4)
if [ -s ${COUNTRY}.zone ]; then
mv ${COUNTRY}.zone ${COUNTRY}.zone.old
fi
# Chine Internet Address
# http://www.ipdeny.com/ipblocks/data/countries/cn.zone
wget http://www.ipdeny.com/ipblocks/data/countries/${COUNTRY}.zone
# Create BLACKLIST hash in ipset
ipset create -exist ${BSTRING} hash:net
# Register specific country ip address to BLACKLIST group
while read ADDRESS; do
echo "ipset add ${BSTRING} $ADDRESS" # FOR DEBUG
ipset add ${BSTRING} $ADDRESS
done < ${COUNTRY}.zone
# Confirm
ipset list ${BSTRING} |head -n 20
上記であればCOUNTRY変数のところの文字を
cn→中国
ru→ロシア
kr→韓国
kp→北朝鮮
などに変えれば、それぞれのBLACKLISTがipsetに登録できます。
2文字の国コードは
を見てください。
自分がやりたいことは一応これでできました。あとは細かい点をもう少し調整します。
ActiveDirectoryで無効化したユーザを除くためのフィルター
たぶん有名な話だと思うのですが、ADもLDAPなので、RubyからActiveLDAPなどで検索することができます。
ただAD上で一時的にロックしたいユーザを無効化することがありますよね。
そのユーザを除きたいときは
(!(userAccountControl:1.2.840.113556.1.4.803:=2))
です。(としししーさんのブログが大変わかりやすかったです。ありがとうございます。)
activeldapの場合は:filterに書けばすぐに適用できます。
インターネットってすばらしいなと今日も思わされました。
SSH接続で特定国(中国、ロシア)からの接続をブロックする(ipsetを使って)(その1)
インターネットに接続しているサーバのSSHのポートに海外からブルートフォースアタックが来たりしますよね。
日本人が運用している日本人のためのサーバであれば、基本IPは日本国からになるので、海外からのアタックは防止したいところです。
IPが数個~数十個であればiptablesの選択で間違いないんですが、海外のIPを丸ごとごっそりブラックリスト化したい場合は、ipsetを使った方がよさそうです。
まずは上記ウェブとても参考になります。cnやruの最新IPを取得できます。
インターネット的にとても評判の良いページ、これさえあればほとんど設定できるんじゃないかと思わされます。
ただipsetでリストを作った後にサーバを再起動するとリストがなくなるよ、というあたりで、じゃあ、一度作ったリストをちゃんと読み込むためにはどうすればよいのか?という最後の最後の記述が少し足りない気がします。
ipsetとiptablesでSSHを日本国内からの接続に限定する (CentOS 6)
といって、上記ページで書いてある「view /etc/init.d/ipset」はRedHat用のipsetのRPMにはありません。(CentOS独自なのか?)
手元の環境で見ると
[root@ipset]# rpm -qa|grep ipset
ipset-6.11-1.el6.x86_64
[root@ipset]# rpm -ql ipset-6.11-1.el6.x86_64
/usr/lib64/libipset.so.2
/usr/lib64/libipset.so.2.0.0
/usr/sbin/ipset
/usr/share/doc/ipset-6.11
/usr/share/doc/ipset-6.11/COPYING
/usr/share/doc/ipset-6.11/ChangeLog
/usr/share/man/man8/ipset.8.gz
とipsetの起動スクリプトは明らかにない。たしかにipset saveとかでファイルとしては書き出せるが、それでは起動時に自動読み込みするまでは至らない...と思っていたら、ただ単にRPMが古いだけだった。6.11-2以降であれば含まれている模様。
Changelog
* Wed Feb 25 2015 Thomas Woerner <twoerner@redhat.com> - 6.11-4 - move ipset_port_usage into library (RHBZ#1121665) * Tue Aug 26 2014 Thomas Woerner <twoerner@redhat.com> - 6.11-3 - fixed init script according to according to rhbz#1130570 and rhbz#888571#c28 * Fri Jun 13 2014 Thomas Woerner <twoerner@redhat.com> - 6.11-2 - added ipset init script (rhbz#888571) * Fri Feb 10 2012 Thomas Woerner <twoerner@redhat.com> - 6.11-1 - new version 6.11 with so library version 2, includes - cleaned up spec file for 6.11, dropped patch, no kernel will be built - adapted for RHEL-6: added clean tag, BuildRoot
RPMのバージョンを新しくして試してみる。
詳細は後日書きます。
Windows7のTeraTermのフォントを見やすく設定する!
TeraTermのフォントの見やすさは生産性の鍵です。
今まではIPAゴシックを使っていました
が、IPAゴシックだとバッククォートの判別がつかず、
1年通じてイライラしてきたので、この際フォントを見直すことにしました。
方針としては
・バッククォートがちゃんと表示できるフォントにする
・見やすいと感じるフォントにする
です。
結果、インターネットで評判のInconsolataにしました。
参考にしたページは
定番ターミナルエミュレータ Tera Term のフォントを Inconsolata に
です。これにそってやれば基本設定ができるんですが、URLリンク切れなどもあるので補足します。
1.GoogleFontのURLのリンク切れ
Inconsolataの2016.01.01時点で有効なURLは
です。ここにいって、右上の「Open Inconsolata in Google Fonts 」を押すとダウンロードページに移動します。↓矢印のボタンを押せばダウンロードできるので、
右クリック→インストールでフォントのインストールは完了です。
2.等幅メイリオのインストール
てもぐのページでは、Inconsolataに日本語フォントを紐づけると、さらっと書いてありますが、実は等幅メイリオフォントのインストールが必要です。
を参考に進めます。手元の環境はWindows7なので、Meiryoが6.02です。(Windows8だと6.20になる)
ページから等幅メイリオ6.02の改造EXEをダウンロードして、等幅フォントを作成します。
ファイル名は「meiryoKe_602r1.ttc」「meiryoKeB_602r1.ttc」です。
これも右クリック→インストールでフォント導入が完了。
3.レジストリ編集のキー
てもぐさんのページで、自分はこうした、と書いてあるレジストリ設定は
レジストリエディタ(regedit など)を起動して以下のフォルダを開きます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink
InconsolataをmeiryoKe_602r1.ttc,MeiryoKe_Gothic にするということだと思います。
貼り付けてWindowsを再起動すると、TeraTermのフォントがきれいになります。
bashで日本語を処理してみる。。Linuxだと文字化け多発。。やっぱCygwinや!
仕事で作成している日報(思いっきり日本語)がある。これを月報化するときにシェルを書いて楽して纏めてみようと思い立ったのがそもそもの発端。
まずWordの文章を一括テキスト変換することにした。
使ったソフトは
---
word2txt.vbs -- by i16 2002/10/01
Word文書ファイルをvbsアイコンにドロップするとtxtファイルが出来ます
(複数ファイルを同時にドロップして一気に作業することも可能)
(MS Wordがインストールされている必要があります)
http://i16.jp
---
Wordをword2txt.vbsにドラッグアンドドロップする。
これでTEXTになる。ここまではすぐにできた。
けど、この後が日本語の文字化けとの戦いだった。
word2txtでTEXT化された日本語は、
文字コード:SJIS
改行コード:CR+LF
これをWinSCPで仮想OSのLinux(CentOS6.4)にコピーして、そこでBASHでシェルを書いて
ルールを決めて集計をしてみたところ、文字化けが多発。。。
例えば、
---
文字化け例
侮ヲ ⇒ 表示
瑞ソ ⇒ 申請
狽ノ ⇒ 能
告ャ ⇒ 構成
狽ィ ⇒ 能お
狽 ⇒ 能
狽ゥ ⇒ 能か
嵐閧ナ ⇒ 予定で
---
同じ日本語とは思えないほど意味不明な文字になる。どこでなっているのか全く分からなかった。。LinuxのLANGを「export LANG=ja_JP.UTF-8」にしてみたり、TeraTermの受信、送信をSJISにしたりUTF-8にしてみたが改善は見られなかった。。おいおいマジですか。。。日本語おかしくなっちゃうのは報告書として致命的で痛すぎる。。。愚直にコツコツやるしかないんかい!とあきらめかけたけれども。そこで思い立ったのは、
WindowsのCygwinでBASHすればいいじゃん!ってこと。
これが当たりでしたね~Cygwinおっそいけど、文字化けしないのが一番。
Cygwinで処理するには、
word2txt.vbs で処理したTEXTを
---
[ソフト名] ZiiDetector 1.0.3
[ 作者 ] oibore
[動作環境] Windows/XP/Vista/7 32bit/64bit
[必要環境] Microsoft .NET Framework 3.5以上
[開発環境] WindowsXP SP3(x86)
[ 連絡先 ] oibore@gmail.com
[配布転載] ご連絡ください
[ 要望等 ] ご連絡ください
---
ZiiDetectorというソフトで
文字コード:UTF-8(BOM無)
改行コード:LF(一応Unix的にそろえた)
で統一して、Cygwinフォルダにブッコム。
そこでBASHで処理すると、あら不思議日本語文字化けせずにきれいに処理できる!
※一応Cygwinの日本語環境は
「Cygwin 1.7.9 で日本語を使うための覚書」を見て
---
Cygwin を新しくインストールすると、画面に Cygwin Terminal という Cygwin を起動するためのアイコンが追加されます。これの実体は mintty.exe というターミナルエミュレータです。
Cygwin Terminal のアイコンをクリックし Cygwin を起動する。
Cygwin の画面上で右クリックし、表示されるメニューで Options を選ぶ
Text の設定をクリックし、 Font を日本語が表示できるものにする。
例えば Select から MS ゴシック を選ぶ。 フォントのサイズは好きなものに設定してください。
Locale を ja_JP に設定、Character set を UTF-8 に設定する。
---
はやりました。
これで、文字化けせずにガッツリいい感じで月報に纏められた==超うれC
VMware Playerのライセンス体系について(商用利用になるの?)
VMware Player(今はVMware Workstation Playerらしい)のライセンスってどうなっているんだろ。
調べてみました。
公式のライセンス情報
気になる箇所を抜粋してみる。
VMware Workstation Player について教えてください
VMware Workstation Player (旧称 Player Pro) はデスクトップ仮想化アプリケーションです。個人利用の場合は無償で提供されます。商用ライセンスを適用すると、Workstation Player を有効にして、VMware Workstation Pro および Fusion Pro で作成された制限付き仮想マシンを実行できます。
VMware Workstation Player は引き続き無償で提供されますか
VMware Workstation Player は、個人利用、および商用以外での利用の場合は無償で提供されます (企業または非営利組織での利用は商用利用に該当します)。仮想マシンについて学びたい方や、個人的に利用したい方は無償の VMware Workstation Player をご利用ください。認定教育機関の学生や教職員で、 VMware Academic Program のメンバーの方は、VMware Workstation Player を無償で利用できます。
うーん。。「(企業または非営利組織での利用は商用利用に該当します)」ということを踏まえると
例えば大学で教育機関が研究用途で使っている場合は、商用利用に該当すると思われる。
認定教育機関ってなんだ、、、知らんぞ。
VMWare Workstation PlayerのEULA
EULAを見てみよう、いくつか抜粋してみる。
2.4 ベンチマーク お客様は、内部でのパフォーマンス テストおよびベンチマーク調査を実施するために本ソフトウェアを使用することができます。調査の結果は次のいずれかに該当する場合のみ第三者に公開または別の方法で配布できます。
おいおい、ベンチマークにしか使えんのかPlayerは。。。
3.1 ライセンスの制限事項 事前に VMware の書面による同意がない限り、お客様は次の行為を行ってはならず、いかなる第三者にも許可してはならないものとします。(a)本ソフトウェアをアプリケーション サービス プロバイダー、サービス機関、または類似する第三者が使用すること
このあたりを見ると、VMPlayerをシステム管理者がインストールして、その上にWindows7などを立てて
利用者に使ってもらうのはNGってことですね。間違いなさそう。
過去経緯を紐解くと
VMwarePlayerの「非営利目的の使用(商用利用)」はどこまで?
2012年ころまではライセンスの解釈が緩やかだったように思われる。
ただし、、、
ライセンス解釈が変わったようです。
を見ると、個人利用以外は全部ダメ!になったようだ。
2013年の記事なので、1年の間に方針転換があったように思われる。。
世の中いろいろと厳しい…ですね