動かざることバグの如し

近づきたいよ 君の理想に

sshで不正ログインを試みるユーザー名、1位は「user」

概要

sshのポート22のままにしばらくサーバーを放置してたらsshログイン履歴が結構たまっていた。。。

sshのオプションでパスワード認証は無効化しているので、幸いログインされることはなかったけど、せっかくログが残っているので集計してみた。

その名も、SSHで不正ログインを試みる不届き者が使うユーザー名ランキング

1位 user (36回)

堂々の1位。やっぱりユーザー名はuserでつける人間が多いということか。

2位 admin (26回)

これも多い。確かにrootでログインは無理でもこれならなんか行けそうな気がしてくる。

3位 test (26回)

2位の「admin」と同率の名前、test氏。とりあえず作って〜とかやるとセキュリティがザルになる心理をついている(?

4位 ftpuser (24回)

FTPまだ使ってるやつおる?????????(煽り

5位 oracle (18回)

なんか意外 なんかのソフトウェア入れるとできるユーザ名とか?

6位 teamspea (15回)

teamspeakのこと、、、だと思う。なんでkがないんや

7位 nagios (13回)

監視ツールnagiosのユーザ名が7位。こういうのはセットアップでアップアップでセキュリティまで手が回らないケースあるとも思います。

8位 postgres (12回)

なんでmysqlじゃなくてpostgresのほうが上なんだ??????

ってmysqlは標準だとログインユーザーになれないからか。。。

9位 pi (11回)

ラズベリーパイのpiを狙った戦法。

10位 tomcat (10回)

10位はtomcat。関係ないけどあのロゴはネコでいいんだよね。。。?

ということでまとめ。

  • 1位 user (36回)
  • 2位 admin (26回)
  • 3位 test (26回)
  • 4位 ftpuser (24回)
  • 5位 oracle (18回)
  • 6位 teamspea (15回)
  • 7位 nagios (13回)
  • 8位 postgres (12回)
  • 9位 pi (11回)
  • 10位 tomcat (10回)

もっと見たい人向け。10位以降含めた多い順上位200位。個人的には「john」が好き。

1位 user (36回)
2位 admin (26回)
3位 test (26回)
4位 ftpuser (24回)
5位 oracle (18回)
6位 teamspea (15回)
7位 nagios (13回)
8位 postgres (12回)
9位 pi (11回)
10位 tomcat (10回)
11位 mysql (9回)
12位 hy (9回)
13位 minecraf (8回)
14位 er (8回)
15位 guest (8回)
16位 la (8回)
17位 support (7回)
18位 hadoop (7回)
19位 hc (7回)
20位 tq (7回)
21位 wc (6回)
22位 mo (6回)
23位 ts3 (6回)
24位 sysadmin (6回)
25位 system (6回)
26位 jenkins (6回)
27位 dev (5回)
28位 gc (5回)
29位 we (5回)
30位 ICPDB (5回)
31位 cp (5回)
32位 ue (5回)
33位 nh (5回)
34位 zc (5回)
35位 cm (5回)
36位 deploy (5回)
37位 csgo (5回)
38位 ren (5回)
39位 testuser (4回)
40位 m (4回)
41位 flashlig (4回)
42位 qe (4回)
43位 uh (4回)
44位 cq (4回)
45位 csap (4回)
46位 ox (4回)
47位 zabbix (4回)
48位 odoo (4回)
49位 vd (4回)
50位 ie (4回)
51位 nn (4回)
52位 l (4回)
53位 aq (4回)
54位 postfix (4回)
55位 vh (4回)
56位 test1 (4回)
57位 usuario (4回)
58位 ftpadmin (4回)
59位 qd (4回)
60位 user2 (4回)
61位 suporte (4回)
62位 iris (4回)
63位 sa (4回)
64位 hj (4回)
65位 gk (4回)
66位 vbox (4回)
67位 go (4回)
68位 vw (4回)
69位 ej (4回)
70位 ncs (4回)
71位 rm (4回)
72位 zs (3回)
73位 i (3回)
74位 lh (3回)
75位 customer (3回)
76位 au (3回)
77位 dj (3回)
78位 sr (3回)
79位 vk (3回)
80位 testing (3回)
81位 you (3回)
82位 bots (3回)
83位 john (3回)
84位 bc (3回)
85位 luan (3回)
86位 rails (3回)
87位 icinga (3回)
88位 gs (3回)
89位 ansible (3回)
90位 uo (3回)
91位 develope (3回)
92位 je (3回)
93位 kfserver (3回)
94位 sd (3回)
95位 matt (3回)
96位 hl (3回)
97位 be (3回)
98位 jt (3回)
99位 xv (3回)
100位 yz (3回)
101位 pq (3回)
102位 vm (3回)
103位 chun (3回)
104位 ez (3回)
105位 git (3回)
106位 xd (3回)
107位 bf (3回)
108位 ji (3回)
109位 mm (3回)
110位 ka (3回)
111位 stanley (3回)
112位 glassfis (3回)
113位 ac (3回)
114位 ur (3回)
115位 vr (3回)
116位 qiao (3回)
117位 jh (3回)
118位 lf (3回)
119位 xp (3回)
120位 bp (3回)
121位 xx (3回)
122位 rh (3回)
123位 weblogic (3回)
124位 hplip (3回)
125位 lo (3回)
126位 x (3回)
127位 xg (3回)
128位 holy (3回)
129位 cafeuser (3回)
130位 userftp (3回)
131位 ks (3回)
132位 dx (3回)
133位 av (3回)
134位 vl (3回)
135位 nb (3回)
136位 uftp (3回)
137位 webmaste (3回)
138位 ju (3回)
139位 wm (3回)
140位 long (3回)
141位 testftp (3回)
142位 za (3回)
143位 ax (3回)
144位 uq (3回)
145位 j (3回)
146位 bw (3回)
147位 bo (3回)
148位 ny (3回)
149位 sammy (3回)
150位 spam (2回)
151位 sm (2回)
152位 adams (2回)
153位 oc (2回)
154位 pr (2回)
155位 jz (2回)
156位 sftpuser (2回)
157位 sb (2回)
158位 gary (2回)
159位 caleb (2回)
160位 t (2回)
161位 mp (2回)
162位 o (2回)
163位 qx (2回)
164位 ssh:notty (2回)
165位 km (2回)
166位 nt (2回)
167位 br (2回)
168位 kv (2回)
169位 bei (2回)
170位 in (2回)
171位 vi (2回)
172位 dimas (2回)
173位 oh (2回)
174位 contabil (2回)
175位 yu (2回)
176位 reach (2回)
177位 nw (2回)
178位 fr (2回)
179位 mz (2回)
180位 cistest (2回)
181位 ro (2回)
182位 ralp (2回)
183位 yh (2回)
184位 uf (2回)
185位 xt (2回)
186位 ng (2回)
187位 gw (2回)
188位 zh (2回)
189位 test3 (2回)
190位 team (2回)
191位 matsumur (2回)
192位 charles (2回)
193位 ansibleu (2回)
194位 de (2回)
195位 wi (2回)
196位 delete (2回)
197位 fd (2回)
198位 info (2回)
199位 ko (2回)
200位 ik (2回)

ポート番号変更するとか公開鍵限定とか受け付けるIPアドレスを制限するとかちゃんと対策しよう(戒め

querySelectorAll()で取得した要素をeachで回す5つの方法

例えばhttps://github.com/のような普通のページがあって、そのページ内の全リンクを取得してforeach的な何かで順番に処理していきたいということは全然あると思う。

取得自体は簡単で

const links = document.querySelectorAll('a');

で可能。が、流石JS、簡単にはいかなくて、これを回すとなると難しい。document.querySelectorAll()で返ってくるNodeListオブジェクトは単純な配列ではないからである。

ここではNodeListをなんとかしてeachするやり方を残す。

方法1 forのループを使う

いつものって感じ

var links = document.querySelectorAll('a');
for (var i = 0; i < links.length; i++) {
    console.log(links[i].href);
}

メリット

  • 全ブラウザで動作する

デメリット

  • きれいな書き方ではない。。。

方法2 for ofで回す

for ofは最近の記法で「イテレータの中身を1つずつ取り出して処理」ができる。そのイテレータにNodeListも含んでいるので、ループ処理で回すことができる。

const links = document.querySelectorAll('a');
  for (const link of links) {
    console.log(link.href);
  }

メリット

  • IEを除くブラウザで対応している
  • ナウい

デメリット

  • IE非対応(11ですら)

方法3 NodeListのKey,Valueを取得して回す

どういうことかというと、サンプルコードを見たほうが早い。

const links = document.querySelectorAll('a');
for (const link of links.values()) {
  console.log(link.href);
};

values()でイテレータ化してそれを for ofで回す。

以下はkeys()entries()で回す例。正直方法2より面倒になっているだけな気もするが、index番号も取得できるのはメリットかも知れない。

const links = document.querySelectorAll('a');
for (const i of links.keys()) {
  console.log(links[i].href);
};

const links = document.querySelectorAll('a');
for (const link of links.entries()) {
  console.log(link[1].href);
};

メリット

  • indexが取れる

デメリット

  • 方法2より複雑
  • IE非対応(11ですら)

方法4 foreachを使う

実はNodeListオブジェクト自体に独自のforEach()メソッドがある。

const links = document.querySelectorAll('a');
links.forEach(link => {
  console.log(link.href);
});

メリット

  • きれい

デメリット

  • IE非対応(11ですら)

方法5 スプレッド構文を使う

ES6に導入されたスプレッド構文で、NodeListオブジェクトを配列に変換する方法

const links = document.querySelectorAll('a');
[...links].forEach(link => {
  console.log(link.href);
});

VirtualBoxで2TB以上の大容量仮想ディスクを作成する

VirtualBoxGUIで仮想ディスクを作れるが、なぜか仕様として2TB以上のディスクは作成できない。

が、CUIツールであるVBoxManageコマンド経由だとそれ以上の容量の仮想ディスクも作成できるのでメモ

コマンド

例えば、8TBの仮想ディスクを作成したいときは以下

$ vboxmanage createhd --filename 8TB.vdi --size `expr 8000 '*' 1024` --format VDI --variant Standard

ポイントは以下

  • --sizeで指定する数値はメガバイトなので、exprコマンドで8000MB x 1024を計算している。
  • --variantでStandardを指定すると、実際に使ったぶんだけ実ディスクの容量も消費するようになる。(だからいきなり8TBが必要になるわけではない)
    • 逆に実容量で作成したい場合は--variant Fixed

参考リンク

UbuntuでXFSファイルシステムにインストールするときは注意が必要

環境

1行まとめ

  • /bootはXFSじゃなくてext4とかでフォーマットしないと起動できなくなる

この1行で??ならXFSを使うな諦めろ

概要

今回UbuntuをXFS形式でフォーマットしてインストールすることにした。以下のような感じ

が、これでインストールすると100%ブートに失敗する。

原因

なぜならubuntugrub2はXFSファイルシステム上のインストールに対応してないため

だから/bootに必要なデータが書き込まれずに死ぬ

対応策

/bootだけパーティション区切ってext4にするしかない。

よって、

する無事にブートローダーがインストールされて起動に成功する。

無理なら無理ってインストーラー中に警告出してくれよ、、

参考リンク

DockerでMecab&neologd辞書を一発で使う

最初は自分でビルドしてインストールして、、、と考えていたのだが、素晴らしいことにグノシーさんがImageをビルドして公開してくれているのでありがたく使う。

github.com

例えば適当にdocker-compose.ymlを用意して以下

version: "3.5"

services:
  mecab:
    image: gunosy/neologd-for-mecab
    stdin_open: true

stdin_openは起動しっぱなしにするオプション

で起動

docker-compose up

別のターミナルで試す

$ docker-compose exec mecab /bin/sh -c 'echo 隣の客はよく柿食う客だ | mecab -d /usr/lib/mecab/dic/neologd'
隣 名詞,一般,*,*,*,*,隣,トナリ,トナリ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
客 名詞,一般,*,*,*,*,客,キャク,キャク
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
よく  副詞,一般,*,*,*,*,よく,ヨク,ヨク
柿 名詞,一般,*,*,*,*,柿,カキ,カキ
食う  動詞,自立,*,*,五段・ワ行促音便,基本形,食う,クウ,クウ
客 名詞,一般,*,*,*,*,客,キャク,キャク
だ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ
EOS

いけてるっぽい。固有名詞にもバッチリ対応

$ docker-compose exec mecab /bin/sh -c 'echo 月曜から夜ふかし | mecab -d /usr/lib/mecab/dic/neologd'
月曜から夜ふかし    名詞,固有名詞,一般,*,*,*,月曜から夜ふかし,ゲツヨウカラヨフカシ,ゲツヨーカラヨフカシ
EOS

こういうのを公開してくれてるのまじで助かる。しかもdockerhubを見てる感じ定期的に更新してくれてるっぽい。最強か