セキュリティ

[Git] git-secretsでパスワードや機密情報の登録を禁止する

AWSなどのクラウドサービスでは、データベースやファイルシステムなどの各種リソースを操作するためのアカウント(IAM)を発行して権限管理を行うことがありますが、このアカウント情報をGitのリポジトリに登録してしまうと、意図せず流出し悪い人に悪用されてしまう場合があります。

定期的にネット上で話題になりますが、最終的に仮想通貨のマイニングなどに利用され多額の請求がやってくるパターンが多いようです。

このような悲劇を防ぐために、Gitのリポジトリへ特定のパターンの文字列を登録できくなくするgit-secretsを導入してみます。なおこのツールはAmazon製ということもありAWSとの相性がバッチリです。
続きを読む

[Linux] SSHのログイン時にIPアドレス制限を行う

ここ数日、SSHへのアタックが急激に増加した関係で特定のIPアドレスからだけログインできるよう対応しました。結論から言うと以下の設定を行うだけです。

特定のIPアドレスのみログインできる

$ sudo vi /etc/hosts.allow
sshd: (許可したいIPアドレス)
$ sudo vi /etc/hosts.deny
sshd: all

/etc/hosts.allowで許可を、/etc/hosts.denyで拒否の設定を行います。これはSSHだけではなく「TCP Wrapper」を利用しているサーバソフトウェアは同じ要領で設定が可能です。

特定のIPアドレスをブロックする

逆にブロックしたい場合には以下のように設定します。

$ sudo vi /etc/hosts.allow
sshd: all
$ sudo vi /etc/hosts.deny
sshd: (拒否したいIPアドレス)

hosts.allow|denyの書式

IPアドレスは半角スペースで区切り複数同時に記述することや、サブネットマスクなどで指定することもできます。

sshd: 192.168.1.1 192.168.1.2
sshd: 192.168.1.1/255.255.255.0

以下のようにIPアドレスの途中までを記述した場合は前方一致となります。

sshd: 192.168.1.

IPアドレスだけではなく.example.comなど接続元のドメインで許可(拒否)もできます。以下の例では後方一致となります。ただしドメインを指定した場合はIPアドレスのみの場合と比べてドメインを調べる処理が加わりますので多少重くなります(よほど大量に来なければ気にするほどではありませんが)

sshd: .ocn.ne.jp

行末にバックスラッシュ()を付けると途中で改行することも可能です。

sshd: 192.168.1.1 192.168.1.2 \
      .ocn.ne.jp

注意点

いずれもファイルに保存した瞬間に設定が適用されるため、間違えた設定をしてしまうと自分でも二度とログインできなくなる可能性があります。設定する際には十分に注意してください。

続きを読む

[Quora] 盗聴された上にSNSに個人情報を公開されたら?

Quora回答シリーズです。

質問

盗聴の内容をsnsで書き込まれてるのを気づいたらどうしますか?
https://qr.ae/pNsusa

序盤は小説や脚本的なネタで書いていたのですが、結果的にコメント欄が一番ホラーな展開になりましたw 詳しくはリンク先をご覧いただければと思うのですが、旦那さんが大変そうというか……世の中にはいろいろな方がいらっしゃるようです。 (旦那さんが実在していれば)
続きを読む

[Quora] ゲームのチート対策ツールを開発するには?

Quora回答シリーズです。

質問

ゲームのチート対策ツールを作りたいです。どんな勉強から始めたらいいでしょうか?
https://qr.ae/pNsuKw

Quoraの厄介なところは質問者の詳しい状況が把握できないところなんですよね。知恵袋やTeratailのように個人が抱える問題を解決するのではなく「テーマ」について知見を持ち寄るような方針なんでしょうけども。
続きを読む

[Linux] bashで超簡易的な改ざん検知を行いSlackに投げる

小ネタが続いてますが、今回も小ネタですw
Webサイトの改ざん検知を手軽にパパッと行いたい場合、単純にcurlなどで取得したファイルをdiffで比較するだけでも実現できます。

というわけで以下がコード。ここでは最終的にSlackに通知しています。

#!/bin/bash

#
# 簡易的な改ざん検知からのSlack投稿
#

# 対象ページ
TARGET_URL='https://blog.katsubemakito.net/'

# 投稿先のSlack URL
WEB_HOOK_URL='https://hooks.slack.com/services/xxxxxxxx/xxxxxxxx/xxxxxxxxxxxxxxxxxx'

# 保存先ディレクトリ
STORE_DIR='/home/katsube/'


#-----------------------------------
# 最新のHTMLを取得
#-----------------------------------
cd $STORE_DIR
curl -s $TARGET_URL -o current.html

if [ $? -ne 0 ]; then
  echo "Can not get TARGET_URL: $TARGET_URL" >&2
  exit 1
fi

#-----------------------------------
# 前回のファイルと比較する
#-----------------------------------
if [ -f ./prev1.html ]; then
  result=`diff prev1.html current.html`

  if [ -z ${result} ]; then
    text="変化はありません"
  else
    text="<!channel> 変化がありました"
  fi


  # Slackに投げる
  curl -X POST --data-urlencode "payload={\"text\": \"${text}\"}" $WEB_HOOK_URL

  if [ $? -ne 0 ]; then
    echo "Can not post Slack, diff is ${result}" >&2
    exit 1
  fi
fi

#-----------------------------------
# 今回取得したファイルの名称変更
#-----------------------------------
# 1世代残す
if [ -f ./prev1.html ]; then
  mv prev1.html prev2.html
fi
mv current.html prev1.html

非常に簡易的な物ですので、実際に利用する場合は要件に応じてカスタマイズしてください。
続きを読む

[Quora] 簡単にできるクラッキング方法

Quora回答シリーズです。

質問

簡単にできるクラッキングの方法を教えてもらえませんか?

この質問は規約に反したのかQuoraの運営によって削除されてしまいました。私の回答は市販されている書籍などに掲載されている一般的な内容でしたので、こちらのブログには残しておきたいと思います。
続きを読む

[Quora] GitHubを会社で使う場合セキュリティが不安

Quora回答シリーズです。

質問

社内でGitHub等のクラウド上のコード管理の利用を検討中です。開発は使用したいのですが、セキュリティ委員がセキュリティ面で納得しません。皆さんの会社ではどうのようなセキュリティ対策をしていますか?
https://qr.ae/TVeSyv

GitHubに限らずクラウドサービスはどこまで第三者のサービスを信じるのか…という話に帰結する気がしますね。
続きを読む

[Apache] バージョン情報を出力しない

本番用のWebサーバでは利用しているソフトウェアのバージョン情報を表示しません。
例えば何らかの事情で最新版を利用していないことがわかると簡単に脆弱性を突かれてしまいます。また直接的に攻撃をされなくともクラックのきっかけになりますので不要な情報を第三者に公開すべてきではないというのがセオリーです。

そこで今回はApacheとPHPのバージョン情報を出力しない設定を施したいと思います。
続きを読む

[サーバ] お行儀の悪いアタック国ランキング

前回の続きです。
狙われやすいアカウント名ランキングに続きまして、どこの国からアタックを受けているかも調査してみました。…まぁなんとなく結果はわかっていましたが、数値化するのが大事ですよね!(虚空を見つめがら)

結果発表

IPアドレス単位

#カウントIPアドレス国CD国名
143,148218.92.1.163CN中国
243,14758.242.83.7CN中国
343,147218.92.1.174CN中国
443,147218.92.1.173CN中国
531,139112.85.42.196CN中国
627,063218.92.1.181CN中国
721,800112.85.42.238CN中国
820,223112.85.42.197CN中国
913,908218.92.1.172CN中国
1010,678112.85.42.232CN中国
119,605112.85.42.233CN中国
128,584112.85.42.151CN中国
136,73558.242.83.17CN中国
146,666193.201.224.216UAウクライナ共和国
153,559122.194.229.49CN中国
163,359112.85.42.231CN中国
173,228112.85.42.193CN中国
182,558101.91.215.199CN中国
192,548101.91.215.80CN中国
201,818188.92.77.235LVラトビア共和国
211,505122.194.229.18CN中国
221,483106.13.34.94CN中国
231,209188.92.75.248LVラトビア共和国
2498059.46.135.42CN中国
25828146.0.228.106DEドイツ連邦共和国
26719206.189.149.126SGシンガポール
27606112.85.42.235CN中国
2857554.169.36.191SGシンガポール
29408185.246.128.25SEスウェーデン王国
30402103.207.38.197VNベトナム

国単位

#行ラベル合計 / カウント割合
1中国353,34187.5079%
2アメリカ合衆国8,1282.0130%
3ウクライナ共和国6,9391.7185%
4フランス共和国4,7291.1712%
5ラトビア共和国3,0390.7526%
6シンガポール2,8930.7165%
7ドイツ連邦共和国2,2700.5622%
8インド1,9750.4891%
9ロシア1,6290.4034%
10大韓民国1,5040.3725%
11ブラジル連邦共和国1,4430.3574%
12イギリス1,3460.3333%
13オランダ王国1,1760.2912%
14カナダ9220.2283%
15ベトナム8990.2226%
16インドネシア共和国8570.2122%
17イタリア共和国6880.1704%
18ポーランド共和国6340.1570%
19コロンビア共和国6260.1550%
20スウェーデン王国5250.1300%
21日本4940.1223%
22メキシコ合衆国4830.1196%
23香港4450.1102%
24中華民国4410.1092%
25アルゼンチン共和国4280.1060%
26タイ王国3880.0961%
27スペイン2760.0684%
28イラン・イスラム共和国2220.0550%
29南アフリカ2150.0532%
30マレーシア2110.0523%

結論

中国からのアクセスをブロックすれば80%以上のアタックを防げる結果になりました\(^o^)/

ちなみに日本からのアタックは494件、0.1223%でした。
続きを読む

[サーバ] 狙われやすいアカウント名ランキング8000

専門学校の生徒用にAWS(Lightsail)でサーバを一台用意しているのですが、(乗っ取られてはいない物の)意図せずハニーポット状態になっていたので、どのアカウント名が狙われていたか軽く集計してみました。

前提

サーバ自体は2018年12月16日に立ち上げたのですが、現存する最古のデータが1月6日となっていたためざっくり1ヶ月間(27日程度)のデータと思っていただければと。

この間の/var/log/secureを集計すると約45万件のアタックを受けていた計算になります。

$ sudo grep -c 'Failed' /var/log/secure*
/var/log/secure:18982
/var/log/secure-20190113:127392
/var/log/secure-20190120:46130
/var/log/secure-20190127:132703
/var/log/secure-20190203:78543

403,750件

$ sudo grep -c 'Invalid' /var/log/secure*
/var/log/secure:1849
/var/log/secure-20190113:10378
/var/log/secure-20190120:11506
/var/log/secure-20190127:9932
/var/log/secure-20190203:14927

48,592件

続きを読む