DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

RapberryPiでステッピングモーターを制御する ④制御

今回は実際にラズパイから制御してみます。

前回はGPIOとドライバーとの接続でした。

dreamerdream.hateblo.jp

 

f:id:DreamerDream:20181205154059p:plain

 

適当なpythonコードを書いて制御してみます。

#!/usr/bin/python
#coding:utf-8

import RPi.GPIO as GPIO
import atexit
import time

Dir = 27 #DIRピン設定
Step = 17 #STEPピン設定

def end():  #終了時に呼ぶ
  GPIO.cleanup()  #GPIOの開放

def init():  #GPIO初期化
  GPIO.setmode( GPIO.BCM )  #BCMモード
  GPIO.setup( Dir , GPIO.OUT )  #Dirピンを出力モードへ
  GPIO.setup( Step , GPIO.OUT )  #Stepピンを出力モードへ
  atexit.register( end )  #強制終了時にもGPIO開放するよう設定


def act( dir = 0 , step = 1 , sec = 1): #dir:回転方向、step:ステップ数、sec:秒

  GPIO.output( Dir , dir )  #正逆転セット

  step = step *2  #STEP信号はHiごとに1stepなので2倍にしておく
  sleep = float( sec ) / float( step ) #step間の待ち時間を算出
  for i in range( step ):  #step数繰り返し
    GPIO.output( Step, 1 - GPIO.input( Step ) )  #反転出力
    print GPIO.input( Step ), GPIO.input( Dir )  #動作確認用
    time.sleep( sleep )  #step間の待ち時間


def fwd( step , sec ):  #正転
  act( 0 , step, sec ) #dirだけ決めてact()に投げる

 

def rvs( step , sec ):  #逆転
  act( 1 , step, sec )  #dirだけ決めてact()に投げる

 

def test():  #動作テスト
  for i in range( 3 ):

    for j in range( 10 ):
      fwd( 10 * ( j+1 ) , 1 )
      print j
    for j in range( 10 )[::-1]:
      fwd( 10 * ( j+1 ) , 1 )
      print j

    for j in range( 10 ):
      rvs( 10 * ( j+1 ) , 1 )
      print j
    for j in range( 10 )[::-1]:
      rvs( 10 * ( j+1 ) , 1 )
      print j

 

if __name__=='__main__':
  init()  #初期化
  test()  #動作テスト

 

これを実行すると、画面にSTEPに出力されている信号が01でズラーっと出て来ます。

そして、モーター側はこうなります。


ステッピングモーター動作テスト

当然回ります。はい、モーターですのでね。

このギアードモーターの最短パルスは400/s程度でした。それを超えると脱調という現象が起きて正確な制御が出来なくなります。


ステッピングモーターテスト3(脱調)

 

HDDから取り外したモーターも回してみました。

これは4線全てが内部で繋がっているステッピングモーターで機構が違うのでとりあえず2線だけで繋いでいます。

実際どうやって正常に動かすのかよくわかりませんが、とりあえず動くように繋いでみました。

ばりばり脱調していますが、周波数がピッタリ合うと水を得た魚のように元気に回転します。


HDDモーターテスト1

 

実験の結果、だいたい200/s程度のパルスで安定して回るようです。


HDDモーターテスト2

このように、ステッピングモーターによって特性が全く違うので動かしたいモーターの特性はデータシートが無ければ実験して把握するしかありません。

 

回るだけじゃ面白く無い!

ということで、古いエプソンのスキャナから取り外したステッピングモータ制御の直動機構も動かしてみました。

f:id:DreamerDream:20181205164511p:plain

減速ギアの組まれたこんな立派なモーターです。

 


ステッピングモーターテスト2

固定は面倒なのでテープ固定(笑)すっごい雑だけどちゃんと動いています。これも安定して動くパルス調があります。

この機構をXY軸で組めば単純なプロッタマシンですね。

 

いろいろなモーターの実験をしましたが、実際にモーターを高回転で安定して制御する場合に脱調を起こさないためにはArduinoなどのバックでOSやら何やら動かない単純なマイコン制御の方がコスパが良いでしょう。

ラズパイでPyhtonからだとどうしても正確なタイミングでのGPIO制御には限界があります。

 

このように、モータードライバーを使えば結構単純な回路でステッピングモーターの制御が可能になります。

工作の幅が広がりますのでLチカに飽きたら是非試してみてください。

 

 

作例として ↓この自作3Dスキャナでもステッピングモーターとドライバーを使っていますね。

dreamerdream.hateblo.jp

 

RapberryPiでステッピングモーターを制御する ③接続

 前回は部品選択でした。

dreamerdream.hateblo.jp

 

今回は部品の繋ぎ方です。

 

まずは、ラズパイから制御できるようGPIOのポートをチェックしましょう。 

ステッピングモータードライバーを制御するには、最低DIRとSTEPとGNDが必用になります。

今回はピン番号9,11,13のGND、GPIO17,GPIO27を利用することにします。

https://www.bigmessowires.com/wp-content/uploads/2018/05/Raspberry-GPIO.jpg

 

 モータードライバーのピンアサインは最近ではこの配置に定着しつつあるようです。

http://image.itmedia.co.jp/mn/articles/1609/09/hi_mo03.jpg

A4988データシート

 

VMOT:ステッピングモータ用電源(8V-35V)
GND:ステッピングモータ用電源GND
2A/2B:1A/1B:ステッピングモータ接続端子
VDD:制御ボード用電源(3.3Vまたは5V)
GND:制御ボード用電源GND
DIR:モータの回転方向(High・Low)
STEP:回転制御パルス(1.8度/1stepのモーターでFull stepに設定したとき200stepで一回転する)
SLEEPーRESET:短絡しておく
MS1~MS3:マイクロステップ設定用端子

(各PinのHigh・Lowでマイクロステップを設定できる)

MS1 MS2 MS3 Microstep
Lo Lo Lo Full (1/1)
Hi Lo Lo Half (1/2)
Lo Hi Lo Quarter (1/4)
Hi Hi Lo Eighth (1/8)
Hi Hi Hi Sixteenth (1/16)

 

つまり1ステップごとに制御出来る回転角がモードによって違い、1.8度角のステッピングモーターの場合、

・Fullの場合は、1step信号ごとに1.8度単位(360度回転に200step)

・Halfでは、1step信号ごとに0.9度単位(360度回転に400step)

・Quarterでは、1step信号ごとに0.45度単位(360度回転に800step)

・Eighthでは、1step信号ごとに0.225度単位(360度回転に1600step)

・Sixteenthでは、1step信号ごとに0.1125度単位(360度回転に3200step)

となる。
ENA:Enable端子。ドライバの動作と停止を制御できる。Loで動作する。

 

必用に応じて使用する端子を選ぶのだけど、基本的に細かい設定は最初からプルアッププルダウンしてあるみたいなので

VMOT/GND:モーター用電源12V

VDD/GND:制御回路用電源5V

DIR:正転/逆転

STEP:ステップ信号

1A/1B:ステッピングモータ1相コイル

2A/2B:ステッピングモータ2相コイル

を繋げばFullStepモードとして動作する。

ということです。

 

実際に実験で接続した写真です

黒線:GNDー共用

灰色:GPIO17ーSTEP

白色:GPIO27ーDIR

青線:5Vですが、今回は別電源から取ったので繋いでいません

f:id:DreamerDream:20181205154059p:plain

モータードライバーの

緑、赤、黄、白は実際にモーターのコイルへ伸びている線

ピンクはモーター用電源+12V電源

赤色は5V電源

GNDは共用(12V、5V、ラズパイ共に)

あと、RESETとSLEEPを直結しています。

 

もし、この状態でなにもしていないのにモーターがガリガリ音を立てて回転するようならSTEPからノイズ信号が入っています。

これは、ポートがHiでもLoでもないどっちつかずのフラフラした状態で自然界の電磁ノイズ(商用周波数とか)を拾っているためです。GPIO制御時には必ずHiまたはLoになるので安定しますが、気になる場合はSTEPに10kΩ程度の抵抗を入れてGNDに繋ぐ事で回避できます(プルダウン)

 

次回はこの回路でモーターを動かします。

dreamerdream.hateblo.jp

 

RapberryPiでステッピングモーターを制御する ②部品選択

前回、ステッピングモーターの制御にはユニポーラ制御とバイポーラ制御がありますという説明をしました。 

dreamerdream.hateblo.jp

 

ユニポーラの方が構成回路は簡単になりますが専用のドライバは少ないのでマイコンを用いて自前で組むことになるでしょう。

マイコンからモーターやリレーといった大電流の流れる可能性のあるコイルを使った部品の制御というのは実は厄介なもので、単純にFETを繋げば良いというものではありません。

起電流誘導電流ノイズという問題に対処しないといけませんし、適切な電流を流さないと発熱による部品の損傷も起こり得ます。

 

ましてやバイポーラ制御を目的に電流の方向が変わるフルブリッジ回路マイコンで制御するには切り換えのタイミングやプログラムや配線のミスでユニポーラ制御よりショートさせやすくなります。

停止時にコイルに流す電流も考慮しなければなりません。無駄無く正確に制御する為には「チョッピング電流」というPWM波を発生させて流しっぱなしにならないようにしないと低速時のモーターの発熱が凄いことになります。その他の熱や過負荷の保護機構も考えないといけません。

僕は実際にパイポーラ駆動用の回路をマイコンで組んだ事がありますがなかなかな苦労をした末に結局ノイズの問題に対応出来ず失敗しました。

 

しかし、現在そんな苦労をせずとも簡単にステッピングモータ制御するための専用の基盤が200円弱で手に入るのです。

代表的なステッピングモータードライバー「A4988」

www.switch-science.com

マイクロステップという細かい角度制御が可能、電流調整のボリューム付き、回転速度に応じたチョッピング制御、各種保護回路内蔵。

本物は1つ1000円を超えますが、これの模造品が格安で出ています。信じられないことに5個入りで1000円以下です。

これでも充分に機能します。

但し、こういった激安品は検査が甘く(無く?)たま〜に短絡している物があるらしいのでちゃんとチェックしてから使うようにしましょう!

※最初は正常に動作してるのに使っていると異常発熱や動作を起こす物もあるのでしばらくは様子を見る期間も必用です(経験あり)。

もしこの時点で「部品のチェック方法なんか解らん!無理無理!」という方はお値段は張っても正規のA4988チップを購入してください。ラズパイを燃やすより断然安いです。

商品ページから説明文を抜粋、本家A4988のデータシートも参考に日本語が変なところを含め解説します。

A4988特徴:
1.8V未満~35V2Aのステッピングモータを動かすのに適当である。
2.非常に簡単なステップ方向コントロールインタフェース。
3.5つの、種々の、段をつけているモード:全部、半分、1/4、1/8、および1/16。
4.調整可能な電位差計は最大の現在のアウトプットを調整できる よりよいステップレートを得ることができる。
5.自動的な現在の腐敗モード検出選択。
6.高い熱は結果として生じる 回路切断、不足電圧ロックアウト、クロスオーバー電流保護。
7.ショート保護とロードショート保護を接地しなさい。

 

①8V〜35V、2Aまでの幅広いステッピングモーターに対応しています。

②基本的に「STEP」(回転ステップ数)と「DIR」(回転方向)という端子に信号を与えるだけで機能します。

③「マイクロステップ」と呼ばれる機能で、5段階あります。1.8度角のステッピングモーターであれば最大1.8/16=0.1125度という細かいステップ角で制御が可能になります。

④本体に付いているボリュームで最大電力をコントロールすることが可能になります。

⑤チョッピング制御方法を自動で選択します。

⑥過熱時切断回路、低電圧ロッック回路、過電流保護回路があります。

⑦接地故障検出回路、ショート時保護回路があります。

 

う〜ん、これだけの機能のものをこのサイズで作るのは素人工作では無理!200円以下なんてとんでもないことです!

やはりモータードライバーは機能面からも激安なので買うべきです。

 

 

ステッピングモーターは用途に応じた物を選びましょう。

上で上げたモータードライバーを使うにはバイポーラ制御用を選びましょう(ユニポーラ制御用でも場合によっては使えます)

 

モーター本体は、基本的に1.8度のモノが多いです。

3Dプリンターでつかわれているのもこのタイプのもので、トルク等の特性もあり値段も様々です。

 

小型のステッピングモーターもあります。但し力は弱いです。

力を必用としない用途、車のタコメーターにも使われているタイプです。

 

小型のステッピングモーターの力を補う為にギアを内蔵した「ギヤードモータ」と呼ばれる種類のものもあります。

結構力は強く、水洗の電磁弁として使われていることもあります。

 

 次回は部品の接続です。

dreamerdream.hateblo.jp

 

 

RapberryPiでステッピングモーターを制御する ①原理

ここ最近、ブログがソフトウェア的な内容ばかりで飽きてきたので今回は気分を変えてハードウェアのお話です。

 

ステッピングモーター」はご存知でしょうか?

ここ近年3Dプリンターブームもあって自作や廉価商品用にステッピングモーターとその制御用モータードライバーが安く量産されているようです。

ステッピングモーターと混同されがちなのがサーボモーターですが、サーボモーターは回転角をモーター内部でフィードバックされて正確な角度制御するのに対し、ステッピングモーターはフィードバック機構が無いので動作は投げっぱなしです。その分コストを抑えられるという大きなメリットがあります。

ステッピングモーターの種類は大きく分けて2種類あります。

 

まず、理解しやすい1つめのステッピングモーターの基本的な原理です。 


基本的な構造と動作原理_ステッピングモーターの基礎

このような制御方法を「ユニポーラ制御」といい、ごく単純な回路で動作させることができます。このようなステッピングモーターを「バイファイラ巻きのモーター」と呼び、一般的にステッピングモーターから5本や6本の線が出ているタイプになります。

5本のタイプはGNDが1つ共有で使われており、他4本に+直流電流を流すことでムービーのように制御が出来ます。

<↑小型ユニポーラ制御用モーター>

順番に直流電流を流すだけなのでFETとい部品で順番に制御してあげれば制御可能です。

 <↑FET>

 

2つめのモーター。

前述の基本構造を踏まえ、次の動画をご覧ください。


ST ステッピング・モータの基本 (ePresentation - asian language)

こちらは、4つではなく2つの電磁石で制御していますね。

電磁石の極性が変わる、このような制御を「バイポーラ制御」と呼び、モーターは「モノファイラ巻きのモーター」と呼ばれており、一般的にステッピングモーターから4本の線が出ているタイプの物が多いです。

本来の制御は+-が入れ替わる「フルブリッジ回路」と呼ばれる回路を2つ構成する必用があるのでユニポーラ制御より遥かに難しいのですが、そんな制御回路を考えて組まずとも安価な「モータードライバー」が多数出ています(1つ200円以下)ので3Dプリンターで普及しているものはこちらになります。

<↑バイポーラ制御用モーター>

<↑モータードライバー> 

 

参考

ユニポーラ駆動とバイポーラ駆動

 

モーターの内部構造は精密ですが単純ですので6線式のバイファイラ巻きのモーターから出ているGND線を使わずにモノファイラ巻きのモーターとして使用することも可能です。

その逆はモーター線をバラさないといけないので難しいです。

 

原理を押さえた上で、次回は部品の選択です。 

dreamerdream.hateblo.jp

 

WordPressのWebページ管理者は要注意!!Webページの不正アクセスログを集計してみた

僕が公開しているWebサイトの不正アクセス履歴を調べてみました。

今回の対象はざっと7000アクセス程度ですが、エンドポイント

http://www/サイトアドレス/ [ ここの部分 ] へのアタックを集計して書き出してみました。(一部です)リストの下ほどアクセス数が多い名前です。

 

※["エンドポイント",エンドポイントへのアタック数]です。

["python'.", 2]
["lib-dynload'.", 2]
['tmp', 2]
['3.3 configured -- resuming normal operations', 2]
['w00tw00t.at.blackhats.romanian.anti-sec:)', 2]
['manager', 2]
['wwscripts', 2]
['FormScripts', 2]
['hacly.php', 3]
['xiaohei.php', 3]
['cadre.php', 3]
['db.php', 3]
['xiaomo.php', 3]
['pwd', 3]
['servlet', 3]
['7A96EC7CA8EA17F1C58C2077A13BB60D.php', 3]
['phpMyadmin', 3]
['phpmyAdmin', 3]
['phpmyadmin3', 3]
['phpmyadmin4', 3]
['2phpmyadmin', 3]
['database', 3]
['sqlmanager', 3]
['mysqlmanager', 3]
['php-myadmin', 3]
['phpmy-admin', 3]
['phpMyAdmin2', 3]
['phpMyAdmin3', 3]
['phpMyAdmin4', 3]
['phpMyAdmin-3', 3]
['php-my-admin', 3]
['PMA2011', 3]
['PMA2012', 3]
['PMA2013', 3]
['PMA2014', 3]
['PMA2015', 3]
['PMA2016', 3]
['PMA2017', 3]
['PMA2018', 3]
['pma2011', 3]
['pma2012', 3]
['pma2013', 3]
['pma2014', 3]
['pma2015', 3]
['pma2016', 3]
['pma2017', 3]
['pma2018', 3]
['phpmyadmin2011', 3]
['phpmyadmin2012', 3]
['phpmyadmin2013', 3]
['phpmyadmin2014', 3]
['phpmyadmin2015', 3]
['phpmyadmin2016', 3]
['phpmyadmin2017', 3]
['phpmyadmin2018', 3]
['sitemap.xml', 4]
['wp-includes', 4]
['wordpress', 4]
['wp', 4]
['site', 4]
['cms', 4]
['bea_wls_deployment_internal', 4]
['pixel.gif', 4]
['index.css', 4]
['yj.php', 5]
['xmlrpc.php', 5]
['blog', 5]
['bg_boder.gif', 5]
['favicon.ico', 6]
['aa.php', 6]
['wb.php', 6]
['7.php', 6]
['cf_scripts', 6]
['CFIDE', 7]
['wp-login.php', 8]
['program', 10]
['shopdb', 10]
['phppma', 10]
['phpmy', 10]
['uu.php', 11]
['wp-content', 11]
['user', 12]
['phpMyAdmin123', 12]
['java.php', 17]
['data.php', 17]
['webdav', 18]
['_query.php', 18]
['ak.php', 18]
['ip.php', 18]
['92.php', 18]
['nuoxi.php', 18]
['htfr.php', 18]
['xiaomar.php', 18]
['fack.php', 18]
['angge.php', 18]
['db_pma.php', 19]
['license.php', 19]
['cmv.php', 19]
['wc.php', 19]
['db_dataml.php', 19]
['bak.php', 19]
['l7.php', 19]
['yumo.php', 19]
['wanan.php', 19]
['hh.php', 19]
['default.php', 19]
['tiandi.php', 19]
['linuxse.php', 19]
['qa.php', 19]
['Ss.php', 19]
['dexgp.php', 19]
['godkey.php', 19]
['okokok.php', 19]
['erwa.php', 19]
['pma.php', 19]
['ruyi.php', 19]
['51314.php', 19]
['5201314.php', 19]
['fusheng.php', 19]
['general.php', 19]
['repeat.php', 19]
['ldw.php', 19]
['api.php', 19]
['s1.php', 19]
['xiaodai.php', 19]
['xp.php', 19]
['p.php', 19]
['a.php', 19]
['conf.php', 19]
['123.php', 19]
['HX.php', 19]
['diy.php', 19]
['666.php', 19]
['777.php', 19]
['qwq.php', 19]
['.php', 19]
['infos.php', 19]
['zzk.php', 19]
['toor.php', 19]
['xiaoma.php', 19]
['xiaomae.php', 19]
['pmd', 19]
['typo3', 19]
['utility.css', 19]
['db_cts.php', 20]
['logon.php', 20]
['hell.php', 20]
['pmd_online.php', 20]
['lala-dpr.php', 20]
['text.php', 20]
['muhstik.php', 20]
['uploader.php', 20]
['cmdd.php', 20]
['knal.php', 20]
['appserv.php', 20]
['plugins', 20]
['xw1.php', 20]
['9678.php', 20]
['db_desql.php', 20]
['ak47.php', 20]
['defect.php', 20]
['webslee.php', 20]
['pe.php', 20]
['hm.php', 20]
['cainiao.php', 20]
['zuoshou.php', 20]
['zuo.php', 20]
['aotu.php', 20]
['system.php', 20]
['l6.php', 20]
['l8.php', 20]
['56.php', 20]
['mz.php', 20]
['min.php', 20]
['wan.php', 20]
['ssaa.php', 20]
['aw.php', 20]
['12.php', 20]
['infoo.php', 20]
['qwe.php', 20]
['1213.php', 20]
['post.php', 20]
['h1.php', 20]
['3.php', 20]
['phpinfi.php', 20]
['aaaa.php', 20]
['9510.php', 20]
['python.php', 20]
['sean.php', 20]
['app.php', 20]
['miao.php', 20]
['xz.php', 20]
['zuoindex.php', 20]
['zshmindex.php', 20]
['tomcat.php', 20]
['ceshi.php', 20]
['1hou.php', 20]
['ou2.php', 20]
['zuos.php', 20]
['zuoss.php', 20]
['zuoshss.php', 20]
['boots.php', 20]
['she.php', 20]
['qw.php', 20]
['caonma.php', 20]
['ss.php', 20]
['wcp.php', 20]
['u.php', 20]
['uuu.php', 20]
['sss.php', 20]
['core.php', 20]
['qaz.php', 20]
['sha.php', 20]
['ppx.php', 20]
['conf1g.php', 20]
['ver.php', 20]
['hack.php', 20]
['xxx.php', 20]
['phpAdmin', 20]
['phpMyadmin_bak', 20]
['phpmyadmin-old', 20]
['phpMyAdmin.old', 20]
['phpMyAdmin+++---', 20]
['phpmyadm1n', 20]
['phpMyadmi', 20]
['help-e.php', 21]
['htdocs.php', 21]
['desktop.ini.php', 21]
['lala.php', 21]
['wpo.php', 21]
['wp-config.php', 21]
['muhstik2.php', 21]
['muhstiks.php', 21]
['muhstik-dpr.php', 21]
['lol.php', 21]
['cmx.php', 21]
['scripts', 21]
['cacti', 21]
['wuwu11.php', 21]
['xw.php', 21]
['w.php', 21]
['sheep.php', 21]
['qaq.php', 21]
['db.init.php', 21]
['db_session.init.php', 21]
['db__.init.php', 21]
['wp-admins.php', 21]
['mx.php', 21]
['wshell.php', 21]
['xshell.php', 21]
['conflg.php', 21]
['lindex.php', 21]
['phpstudy.php', 21]
['phpStudy.php', 21]
['weixiao.php', 21]
['feixiang.php', 21]
['ak48.php', 21]
['xiao.php', 21]
['yao.php', 21]
['PMA2', 21]
['pmamy', 21]
['pmamy2', 21]
['web', 21]
['mysql_admin', 21]
['phpadmin', 21]
['phpmyadmin0', 21]
['phpmyadmin1', 21]
['phpMyAdmin-4.4.0', 21]
['myadmin2', 21]
['xampp', 21]
['www', 21]
['tools', 21]
['phpMyAdminold', 21]
['pma-old', 21]
['claroline', 21]
['phpma', 21]
['phpMyAbmin', 21]
['phpMyAdmin__', 21]
['v', 21]
['phpMyAdm1n', 21]
['shaAdmin', 21]
['phpMyAdmion', 21]
['phpMyAdmin1', 21]
['administrator', 21]
['dbadmin', 23]
['PMA', 24]
['mysqladmin', 24]
['mysql-admin', 24]
['phpmyadmin2', 24]
['', 25]
['hello.php', 25]
['pma', 25]
['myadmin', 26]
['MyAdmin', 26]
['index.php', 28]
['help.php', 36]
['2.php', 38]
['log.php', 39]
['q.php', 39]
['shell.php', 40]
['xx.php', 40]
['m.php', 40]
['s.php', 41]
['sql', 42]
['z.php', 44]
['x.php', 59]
['db', 59]
['test.php', 60]
['cmd.php', 62]
['mysql', 75]
['qq.php', 78]
['1.php', 78]
['confg.php', 79]
['phpMyAdmin', 88]
['phpmyadmin', 89]
['admin', 187]
('size', 7145)

圧倒的に「admin」「〜〜admin」に対しての試みが多いようです。

あとは「php」をねらったものや「SQL」狙ったもの。

同じアドレスでも

['php-myadmin', 3]
['phpmy-admin', 3]
['phpMyAdmin2', 3]
['phpMyAdmin3', 3]
['phpMyAdmin4', 3]
['phpMyAdmin-3', 3]
['php-my-admin', 3]

のように、大文字小文字のバリエーションを試したものが多いようです。

 

上記のことから、これらのアクセスの多くは「WordPress」などのCMSを狙ったものだと推測されます。

残念ながら僕のWebページはCMSで構築したものでは無いので管理者ログインを試みられることはありませんが(そもそもログイン画面が無い)

最近主流になっているWordPressを始めとしたCMSは初心者でも簡単に見栄えの良いWebページを作成できるということで人気になっています。

しかし、「管理者画面をWeb上に大公開しているサービス」ですので管理者のログインページを上記のリストに設定している人は特に要注意です。

 

少なくともログインIDがデフォルトの「admin」のままなんてことは無いように設定しましょう。

f:id:DreamerDream:20181122121904p:plain

3Dプリンターの自作スプールホルダーまとめ

3Dプリンターを購入して最初に必ず作るものと言っても過言ではないほどの3Dプリンター関連グッズは「スプールホルダー」でしょう。

https://cdn.thingiverse.com/renders/34/ef/1c/8f/fd/6e5905e7ea0df7f8f3e328e1ad11c310_preview_featured.JPG

専用フィラメントには殆どそれに対応したホルダーが用意されているのだが、社外フィラメントを使うためにはそのスプールの大きさに対応したホルダーが必用になります。

 

スムーズにフィラメントが供給できる機構が無いと、造形物の出力が困難になります。

 

いろいろなタイプが考案されています。

最も単純なものは突起に引っ掛けるだけのものです。

www.thingiverse.com

ですが、引っ掛けるだけのものは引き出す抵抗が強いので皆さん様々な方法を試しておられます。

 

スプールの径に合わせた中心軸でスムーズに回るようにしたもの。

www.thingiverse.com

 

主軸を金属にしたもの。

www.thingiverse.com

 

ベアリングを駆使して中心軸を通さずに置くだけにしたもの。

www.thingiverse.com

上記のものの進化系。これならレールから外れません。

www.thingiverse.com

 

横回転式のもの。

www.thingiverse.com

横回転式にベアリングを+したもの。

www.thingiverse.com

 

機能だけじゃなく、遊び心のあるもの。

www.thingiverse.com

 

多種多様なフィラメントを容易に交換可能にしたシステム。

www.thingiverse.com

ハンガー形式で引っ掛けるスプールシステム。

www.thingiverse.com

 

リールの大きさは決まっていないので1つのパーツで合わせられるよう工夫している人もあります。

www.thingiverse.com

 

スプールは社外フィラメントの場合寸法にバラツキがあったりして一様にして使いにくいんですよね。しかも1kgって意外と重い。

けど3Dプリンターなんだから好きに自作したらいい!いや、すべきだ!ということでしょうか?

  • エクストルーダーの力で軽く排出できること
  • 但し、スプールが軽く回りすぎてフィラメントが脱線しないこと
  • 長時間安定して稼動できること
  • フィラメントが絡まったときに引っ張られて倒れたり壊れないこと

スプールホルダーの選定、設計にはこのあたりが重要になります。

SSH攻撃への対策

この前sshログイン失敗の履歴をふと見てみたら色々なIDで試行されていることが判明しました。

SSHのログイン履歴は

last

SSHのログイン失敗履歴

sudo lastb

結果

jenkins ssh:notty 81.139.61.222 Sat Nov 10 08:55 - 08:55 (00:00)
jenkins ssh:notty 81.139.61.222 Sat Nov 10 08:39 - 08:39 (00:00)
jenkins ssh:notty 81.139.61.222 Sat Nov 10 08:39 - 08:39 (00:00)
hadoop ssh:notty 81.139.61.222 Sat Nov 10 08:22 - 08:22 (00:00)
hadoop ssh:notty 81.139.61.222 Sat Nov 10 08:22 - 08:22 (00:00)
hadoop ssh:notty 81.139.61.222 Sat Nov 10 08:06 - 08:06 (00:00)
hadoop ssh:notty 81.139.61.222 Sat Nov 10 08:06 - 08:06 (00:00)
import ssh:notty 81.139.61.222 Sat Nov 10 07:49 - 07:49 (00:00)
import ssh:notty 81.139.61.222 Sat Nov 10 07:49 - 07:49 (00:00)
import ssh:notty 81.139.61.222 Sat Nov 10 07:33 - 07:33 (00:00)
import ssh:notty 81.139.61.222 Sat Nov 10 07:33 - 07:33 (00:00)
debian ssh:notty 81.139.61.222 Sat Nov 10 07:17 - 07:17 (00:00)
debian ssh:notty 81.139.61.222 Sat Nov 10 07:17 - 07:17 (00:00)
debian ssh:notty 81.139.61.222 Sat Nov 10 07:00 - 07:00 (00:00)
debian ssh:notty 81.139.61.222 Sat Nov 10 07:00 - 07:00 (00:00)
debian ssh:notty 81.139.61.222 Sat Nov 10 06:44 - 06:44 (00:00)
debian ssh:notty 81.139.61.222 Sat Nov 10 06:44 - 06:44 (00:00)
debian ssh:notty 81.139.61.222 Sat Nov 10 06:27 - 06:27 (00:00)
debian ssh:notty 81.139.61.222 Sat Nov 10 06:27 - 06:27 (00:00)
bitrix ssh:notty 81.139.61.222 Sat Nov 10 06:11 - 06:11 (00:00)
bitrix ssh:notty 81.139.61.222 Sat Nov 10 06:11 - 06:11 (00:00)
bitrix ssh:notty 81.139.61.222 Sat Nov 10 05:54 - 05:54 (00:00)
bitrix ssh:notty 81.139.61.222 Sat Nov 10 05:54 - 05:54 (00:00)
memcache ssh:notty 81.139.61.222 Sat Nov 10 05:38 - 05:38 (00:00)
memcache ssh:notty 81.139.61.222 Sat Nov 10 05:38 - 05:38 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 05:21 - 05:21 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 05:21 - 05:21 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 05:05 - 05:05 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 05:05 - 05:05 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 04:49 - 04:49 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 04:49 - 04:49 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 04:32 - 04:32 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 04:32 - 04:32 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 04:16 - 04:16 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 04:16 - 04:16 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 03:59 - 03:59 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 03:59 - 03:59 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 03:43 - 03:43 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 03:43 - 03:43 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 03:26 - 03:26 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 03:26 - 03:26 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 03:10 - 03:10 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 03:10 - 03:10 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 02:54 - 02:54 (00:00)
user ssh:notty 81.139.61.222 Sat Nov 10 02:54 - 02:54 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 02:37 - 02:37 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 02:37 - 02:37 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 02:20 - 02:20 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 02:20 - 02:20 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 02:04 - 02:04 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 02:04 - 02:04 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 01:47 - 01:47 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 01:47 - 01:47 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 01:30 - 01:30 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 01:30 - 01:30 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 01:13 - 01:13 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 01:13 - 01:13 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 00:57 - 00:57 (00:00)
mysql ssh:notty 81.139.61.222 Sat Nov 10 00:57 - 00:57 (00:00)
test ssh:notty 81.139.61.222 Sat Nov 10 00:40 - 00:40 (00:00)
test ssh:notty 81.139.61.222 Sat Nov 10 00:40 - 00:40 (00:00)
test ssh:notty 81.139.61.222 Sat Nov 10 00:24 - 00:24 (00:00)
test ssh:notty 81.139.61.222 Sat Nov 10 00:24 - 00:24 (00:00)
test ssh:notty 81.139.61.222 Sat Nov 10 00:07 - 00:07 (00:00)
test ssh:notty 81.139.61.222 Sat Nov 10 00:07 - 00:07 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 23:51 - 23:51 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 23:51 - 23:51 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 23:34 - 23:34 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 23:34 - 23:34 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 23:18 - 23:18 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 23:18 - 23:18 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 23:01 - 23:01 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 23:01 - 23:01 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 22:45 - 22:45 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 22:45 - 22:45 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 22:28 - 22:28 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 22:28 - 22:28 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 22:12 - 22:12 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 22:12 - 22:12 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 21:55 - 21:55 (00:00)
test ssh:notty 81.139.61.222 Fri Nov 9 21:55 - 21:55 (00:00)
user ssh:notty 81.139.61.222 Fri Nov 9 21:39 - 21:39 (00:00)
user ssh:notty 81.139.61.222 Fri Nov 9 21:39 - 21:39 (00:00)
user ssh:notty 81.139.61.222 Fri Nov 9 21:23 - 21:23 (00:00)
user ssh:notty 81.139.61.222 Fri Nov 9 21:23 - 21:23 (00:00)
user ssh:notty 81.139.61.222 Fri Nov 9 21:06 - 21:06 (00:00)
user ssh:notty 81.139.61.222 Fri Nov 9 21:06 - 21:06 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 20:50 - 20:50 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 20:50 - 20:50 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 20:33 - 20:33 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 20:33 - 20:33 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 20:17 - 20:17 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 20:17 - 20:17 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 20:01 - 20:01 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 20:01 - 20:01 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 19:44 - 19:44 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 19:44 - 19:44 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 19:28 - 19:28 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 19:28 - 19:28 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 19:13 - 19:13 (00:00)
postgres ssh:notty 81.139.61.222 Fri Nov 9 19:13 - 19:13 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 19:00 - 19:00 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 18:46 - 18:46 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 18:33 - 18:33 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 18:18 - 18:18 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 18:01 - 18:01 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 17:45 - 17:45 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 17:28 - 17:28 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 17:11 - 17:11 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 16:55 - 16:55 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 16:38 - 16:38 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 16:21 - 16:21 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 16:05 - 16:05 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 15:48 - 15:48 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 15:31 - 15:31 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 15:14 - 15:14 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 14:58 - 14:58 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 14:41 - 14:41 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 14:24 - 14:24 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 14:07 - 14:07 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 13:51 - 13:51 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 13:34 - 13:34 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 13:17 - 13:17 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 13:00 - 13:00 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 12:44 - 12:44 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 12:27 - 12:27 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 12:11 - 12:11 (00:00)
root ssh:notty 81.139.61.222 Fri Nov 9 11:54 - 11:54 (00:00)
git3 ssh:notty 81.139.61.222 Fri Nov 9 11:37 - 11:37 (00:00)
git3 ssh:notty 81.139.61.222 Fri Nov 9 11:37 - 11:37 (00:00)
git2 ssh:notty 81.139.61.222 Fri Nov 9 11:21 - 11:21 (00:00)
git2 ssh:notty 81.139.61.222 Fri Nov 9 11:21 - 11:21 (00:00)
git1 ssh:notty 81.139.61.222 Fri Nov 9 11:04 - 11:04 (00:00)
git1 ssh:notty 81.139.61.222 Fri Nov 9 11:04 - 11:04 (00:00)
jay ssh:notty 81.139.61.222 Fri Nov 9 10:48 - 10:48 (00:00)
jay ssh:notty 81.139.61.222 Fri Nov 9 10:48 - 10:48 (00:00)
ghost ssh:notty 81.139.61.222 Fri Nov 9 10:31 - 10:31 (00:00)
ghost ssh:notty 81.139.61.222 Fri Nov 9 10:31 - 10:31 (00:00)
manager ssh:notty 81.139.61.222 Fri Nov 9 10:15 - 10:15 (00:00)
manager ssh:notty 81.139.61.222 Fri Nov 9 10:15 - 10:15 (00:00)
jerry ssh:notty 81.139.61.222 Fri Nov 9 09:58 - 09:58 (00:00)
jerry ssh:notty 81.139.61.222 Fri Nov 9 09:58 - 09:58 (00:00)
test1 ssh:notty 81.139.61.222 Fri Nov 9 09:42 - 09:42 (00:00)
test1 ssh:notty 81.139.61.222 Fri Nov 9 09:42 - 09:42 (00:00)
github ssh:notty 81.139.61.222 Fri Nov 9 09:25 - 09:25 (00:00)
github ssh:notty 81.139.61.222 Fri Nov 9 09:25 - 09:25 (00:00)
wemaster ssh:notty 81.139.61.222 Fri Nov 9 09:09 - 09:09 (00:00)
wemaster ssh:notty 81.139.61.222 Fri Nov 9 09:09 - 09:09 (00:00)
a ssh:notty 81.139.61.222 Fri Nov 9 08:52 - 08:52 (00:00)
a ssh:notty 81.139.61.222 Fri Nov 9 08:52 - 08:52 (00:00)
www ssh:notty 81.139.61.222 Fri Nov 9 08:36 - 08:36 (00:00)
www ssh:notty 81.139.61.222 Fri Nov 9 08:36 - 08:36 (00:00)
neil ssh:notty 81.139.61.222 Fri Nov 9 08:19 - 08:19 (00:00)
neil ssh:notty 81.139.61.222 Fri Nov 9 08:19 - 08:19 (00:00)
odoo ssh:notty 81.139.61.222 Fri Nov 9 08:03 - 08:03 (00:00)
odoo ssh:notty 81.139.61.222 Fri Nov 9 08:03 - 08:03 (00:00)
pussy ssh:notty 81.139.61.222 Fri Nov 9 07:47 - 07:47 (00:00)
pussy ssh:notty 81.139.61.222 Fri Nov 9 07:47 - 07:47 (00:00)
hama ssh:notty 81.139.61.222 Fri Nov 9 07:30 - 07:30 (00:00)
hama ssh:notty 81.139.61.222 Fri Nov 9 07:30 - 07:30 (00:00)
poney ssh:notty 81.139.61.222 Fri Nov 9 07:14 - 07:14 (00:00)
poney ssh:notty 81.139.61.222 Fri Nov 9 07:14 - 07:14 (00:00)
postpone ssh:notty 81.139.61.222 Fri Nov 9 06:57 - 06:57 (00:00)
postpone ssh:notty 81.139.61.222 Fri Nov 9 06:57 - 06:57 (00:00)
sandbox ssh:notty 81.139.61.222 Fri Nov 9 06:41 - 06:41 (00:00)
sandbox ssh:notty 81.139.61.222 Fri Nov 9 06:41 - 06:41 (00:00)
nodeclie ssh:notty 81.139.61.222 Fri Nov 9 06:24 - 06:24 (00:00)
nodeclie ssh:notty 81.139.61.222 Fri Nov 9 06:24 - 06:24 (00:00)
us ssh:notty 81.139.61.222 Fri Nov 9 06:08 - 06:08 (00:00)
us ssh:notty 81.139.61.222 Fri Nov 9 06:08 - 06:08 (00:00)
nodeserv ssh:notty 81.139.61.222 Fri Nov 9 05:51 - 05:51 (00:00)
nodeserv ssh:notty 81.139.61.222 Fri Nov 9 05:51 - 05:51 (00:00)
jsserver ssh:notty 81.139.61.222 Fri Nov 9 05:35 - 05:35 (00:00)
jsserver ssh:notty 81.139.61.222 Fri Nov 9 05:35 - 05:35 (00:00)
jsclient ssh:notty 81.139.61.222 Fri Nov 9 05:19 - 05:19 (00:00)
jsclient ssh:notty 81.139.61.222 Fri Nov 9 05:19 - 05:19 (00:00)
js ssh:notty 81.139.61.222 Fri Nov 9 05:02 - 05:02 (00:00)
js ssh:notty 81.139.61.222 Fri Nov 9 05:02 - 05:02 (00:00)
nodejs ssh:notty 81.139.61.222 Fri Nov 9 04:46 - 04:46 (00:00)
nodejs ssh:notty 81.139.61.222 Fri Nov 9 04:46 - 04:46 (00:00)
node ssh:notty 81.139.61.222 Fri Nov 9 04:29 - 04:29 (00:00)
node ssh:notty 81.139.61.222 Fri Nov 9 04:29 - 04:29 (00:00)
terminfo ssh:notty 81.139.61.222 Fri Nov 9 04:13 - 04:13 (00:00)
terminfo ssh:notty 81.139.61.222 Fri Nov 9 04:13 - 04:13 (00:00)
ovhuser ssh:notty 81.139.61.222 Fri Nov 9 03:57 - 03:57 (00:00)
ovhuser ssh:notty 81.139.61.222 Fri Nov 9 03:57 - 03:57 (00:00)
yan ssh:notty 81.139.61.222 Fri Nov 9 03:40 - 03:40 (00:00)
yan ssh:notty 81.139.61.222 Fri Nov 9 03:40 - 03:40 (00:00)
yan ssh:notty 81.139.61.222 Fri Nov 9 03:24 - 03:24 (00:00)
yan ssh:notty 81.139.61.222 Fri Nov 9 03:24 - 03:24 (00:00)
frank ssh:notty 81.139.61.222 Fri Nov 9 03:07 - 03:07 (00:00)
frank ssh:notty 81.139.61.222 Fri Nov 9 03:07 - 03:07 (00:00)
frank ssh:notty 81.139.61.222 Fri Nov 9 02:51 - 02:51 (00:00)
frank ssh:notty 81.139.61.222 Fri Nov 9 02:51 - 02:51 (00:00)
impala ssh:notty 81.139.61.222 Fri Nov 9 02:35 - 02:35 (00:00)
impala ssh:notty 81.139.61.222 Fri Nov 9 02:35 - 02:35 (00:00)
kms ssh:notty 81.139.61.222 Fri Nov 9 02:18 - 02:18 (00:00)
kms ssh:notty 81.139.61.222 Fri Nov 9 02:18 - 02:18 (00:00)
kms ssh:notty 81.139.61.222 Fri Nov 9 02:02 - 02:02 (00:00)
kms ssh:notty 81.139.61.222 Fri Nov 9 02:02 - 02:02 (00:00)
yarn ssh:notty 81.139.61.222 Fri Nov 9 01:46 - 01:46 (00:00)
yarn ssh:notty 81.139.61.222 Fri Nov 9 01:46 - 01:46 (00:00)
yarn ssh:notty 81.139.61.222 Fri Nov 9 01:29 - 01:29 (00:00)
yarn ssh:notty 81.139.61.222 Fri Nov 9 01:29 - 01:29 (00:00)
mapred ssh:notty 81.139.61.222 Fri Nov 9 01:13 - 01:13 (00:00)
mapred ssh:notty 81.139.61.222 Fri Nov 9 01:13 - 01:13 (00:00)
mapred ssh:notty 81.139.61.222 Fri Nov 9 00:57 - 00:57 (00:00)
mapred ssh:notty 81.139.61.222 Fri Nov 9 00:57 - 00:57 (00:00)
httpfs ssh:notty 81.139.61.222 Fri Nov 9 00:40 - 00:40 (00:00)
httpfs ssh:notty 81.139.61.222 Fri Nov 9 00:40 - 00:40 (00:00)
httpfs ssh:notty 81.139.61.222 Fri Nov 9 00:24 - 00:24 (00:00)
httpfs ssh:notty 81.139.61.222 Fri Nov 9 00:24 - 00:24 (00:00)
llama ssh:notty 81.139.61.222 Fri Nov 9 00:07 - 00:07 (00:00)
llama ssh:notty 81.139.61.222 Fri Nov 9 00:07 - 00:07 (00:00)
llama ssh:notty 81.139.61.222 Thu Nov 8 23:51 - 23:51 (00:00)
llama ssh:notty 81.139.61.222 Thu Nov 8 23:51 - 23:51 (00:00)
hdfs ssh:notty 81.139.61.222 Thu Nov 8 23:35 - 23:35 (00:00)
hdfs ssh:notty 81.139.61.222 Thu Nov 8 23:35 - 23:35 (00:00)
hdfs ssh:notty 81.139.61.222 Thu Nov 8 23:18 - 23:18 (00:00)
hdfs ssh:notty 81.139.61.222 Thu Nov 8 23:18 - 23:18 (00:00)
root ssh:notty 81.139.61.222 Thu Nov 8 23:02 - 23:02 (00:00)
root ssh:notty 81.139.61.222 Thu Nov 8 22:45 - 22:45 (00:00)
root ssh:notty 81.139.61.222 Thu Nov 8 22:29 - 22:29 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 22:12 - 22:12 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 22:12 - 22:12 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 21:56 - 21:56 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 21:56 - 21:56 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 21:39 - 21:39 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 21:39 - 21:39 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 21:23 - 21:23 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 21:23 - 21:23 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 21:07 - 21:07 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 21:07 - 21:07 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 20:50 - 20:50 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 20:50 - 20:50 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 20:34 - 20:34 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 20:34 - 20:34 (00:00)  

oracle ssh:notty 81.139.61.222 Thu Nov 8 20:18 - 20:18 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 20:18 - 20:18 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 20:01 - 20:01 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 20:01 - 20:01 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 19:45 - 19:45 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 19:45 - 19:45 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 19:29 - 19:29 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 19:29 - 19:29 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 19:12 - 19:12 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 19:12 - 19:12 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 18:56 - 18:56 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 18:56 - 18:56 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 18:39 - 18:39 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 18:39 - 18:39 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 18:25 - 18:25 (00:00)
oracle ssh:notty 81.139.61.222 Thu Nov 8 18:25 - 18:25 (00:00)

わわわわ、、同じIPアドレスで10分置きぐらいで何度も試行されています。

これはbotによるブルートフォース(総当たり)攻撃と思われます。

 

 

調べてみましたら、イギリスからのアクセスで同時期に報告が多数挙っていました。

AbuseIPDB - IP address abuse reports - Making the Internet safer, one IP at a time

 

f:id:DreamerDream:20181112085031p:plain

 

通常は22番ポートに対して行なわれる攻撃なので、ポート番号を変更しておくのが得策です。僕ももちろん変更していました。

しかしこのようにワザワザポートスキャンして総当たりを試みる輩も存在するのです。

dreamerdream.hateblo.jp

まあ通常はrootログインを禁止にしてIDやパスワードの桁数も多ければ滅多なことでは破られないのですが(IDにadminやtestを使うのは危険)気持ち悪いので何かしら対策をしましょう。(しかしIDにpussyとか普通は使わんやろ?って思うんだけど)

これくらいの頻度であればかなりの長時間放置していても問題なさそうですが、ログが肥大化すると見辛くなるのと「放置されているシステム」というレッテルを貼られて更なる攻撃が行なわれる可能性も示唆されます。 

とりあえず今来ているのはずーっと同じIPアドレスで頻度も多く無いのでIP指定で接続拒否することで回避出来ます。

sudo nano /etc/hosts.deny

sshd : 81.139.61.222

とすればこのIPのSSH通信は拒否されます。

ssh以外の通信も拒否するには

ALL : 81.139.61.222

とします。

 

このように決まったIPアドレスに対してのみの対策であれば個別に設定するだけでOKなのですが、IPアドレスは簡単に変えられます。

新たなIPで試行されない(試行されてもブロックする)ためにツールがあります。

 

今回導入しようと思うのはdenyhostsというツールです。

www.server-memo.net

導入前にはとりあえずアップデート

sudo yum update

epelをインストール

sudo yum -y install epel-release

設定のバックアプをとって

cp -p /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo_backup201811

編集

sudo nano /etc/yum.repos.d/epel.repo

中身を

enabled=0

に変えてdenyhostsをインストール

sudo yum --enablerepo=epel install denyhosts

としたけど、あれえれ?エラー

No package denyhosts available.
Error: Nothing to do

 

ここの情報によりますと

Can't find denyhosts in epel 5,6,7 on CentOS 7 x64 - Super User

CentOS 7では、デフォルトのファイアウォールiptablesではなくfirewalldです。denyhostsツールは現在、iptablesで動作します

 

とのこと、なるほど!バージョン的に使えないんだぁ

どうしても使いたい場合はfirewallを停止させないと!?それは嫌だなぁ、、

 

てことで別のfirewallと共に使えるという「fail2ban」を導入します。

qiita.com

sudo yum install fail2ban

今回は無事インストール完了!

Complete!

ログの設定など本体の設定ファイルは

/etc/fail2ban/fail2ban.conf

だけど

/etc/fail2ban/fail2ban.local

と新規ファイルを作って設定をオーバーライドするそうな。

sshの設定とかはこちら

/etc/fail2ban/jail.conf

 これも.localファイルを作ってオーバーライドするそうな。

 

不正監視でメールとか送れるそうだけど、とりあえずデフォルトの設定のまま起動させる。

sudo systemctl start fail2ban

ステータスでちゃんと動いてるか確認

sudo status start fail2ban

常駐させる。

sudo systemctl enable fail2ban.service

完了。 

ssh22番ポートじゃないし頻繁にはアクセスされないだろうけど今後の一応の対策ということで備忘録としておきます。

 

ApacheのDDOS対策はこちら

dreamerdream.hateblo.jp