mariadb の utf8mb4 への移行完了
自宅サーバで、mysqlからmariadbへの移行、内部文字コードが Latin1 になっていたものを utf8mb4 への変更がようやく上手くいったと思う。そこで、学科のWebサーバも同様に移行作業を行う。ただ、文字コードの移行などの際にデータベースの物理ファイルを壊してしまったようで、どこまで上手く治ったのかが不安。
mysql5.7でFROZNモード
先日、mysql-server-5.6 からのアップグレードに失敗し、mariadb, mysql 8 などを入れたり消したりのトラブルを発生させちゃったけど、今日 “aptitude safe-upgrade” を実行したら、アップグレード時にデータベースの互換性で問題ありと判定され、FROZEN モードになってしまい、データベースとつながらなくなった。おかげで WordPress が動かなくなる。
明日からの試験で、Webでの講義資料公開ができなくなると、学生さんからも不満が出そう。
早々に修正と思うけど、FROZEN ファイルを読むと、mysql-server-5.7 が入っているけど、mysql-server-5.6 からのアップグレードに問題があるから、一度 5.6 にダウングレードしてから、5.7 にアップグレードしろ…との説明。
でも、5.6 はインストール対象から外されている。ひとまず、その後に dpkg-reconfigure mysql-server-5.7 を実行せよと書いてあるので、dpkg-reconfigure を実行。データベースの更新やらチェックが行われて、若干エラーが出たけどうまく修復できたみたい。rm /etc/mysql/FROZEN して systemctl start mysql を実行。無事 WordPress が動き出す。
WebAssembly環境の構築
卒研で WebAssembly を使った開発をしてもらっているけど、自分でも試したいので環境の構築。
Debian emscripten パッケージだけではダメだった
卒研の学生さんが、emscripten 使っているという話だったので、”aptitude search emscripten” を実行したら、パッケージがあったので、”aptitude install emscripten” を実行。鉄板の hello world をコンパイルしようとしたら、”LLVM version appears incorrect (seeing “11.0”, expected “10.0”)”というエラーが出て、コンパイルに失敗。
llvm の C コンパイラとのバージョンが合わない様子。ということで、git より環境を構築してみる。
git で emsdk 環境の構築
通常ユーザであれば、”git clone https://github.com/juj/emsdk.git” を実行すると、その PATH 直下に環境が作られるみたい。こういう使い方は好きじゃないので…
$ sudo bash ((( ひとまず emscripten は必要みたい ))) # apt-get install emscripten # 導入後は不要? ((( emsdk のインストール ))) # cd /usr/local # git clone https://github.com/juj/emsdk.git # cd emsdk # ./emsdk install latest # ./emsdk activate latest
Hello World を試す
((( 自分の環境で以下のコマンドにより環境変数をセット ))) $ source /usr/local/emsdk/emsdk_env.sh ((( Hello World をコンパイル ))) $ cd ~/public_html $ mkdir test $ cd test $ vi hello.c #include int main( int argc , char* argv[] ) { printf( "Hello World\n" ) ; return 0 ; } $ emcc test.c -s WASM=1 -o test.html $ ブラウザで test.html を開く http://...URL.../~t-saitoh/test/test.html
ブラウザから自分のC言語(wasm)を呼び出し結果を出力
$ mkdir html_template $ cp /usr/local/emsdk/upstream/emscripten/src/shell_minimal.html html_template $ vi html_template/shell_minimal.html ((( C言語側を呼び出すボタンを埋め込む ))) <textarea class="emscripten" id="input"></textarea> <input type="button" value="CALL WASM" onclick="Module._ems_func();"/> ((( test.cxx ))) #include <stdio.h> #include <emscripten/emscripten.h> #include <string> int main( int argc , char* argv[] ) { return 0 ; } // void* getElementValue_( char const* id ) { ... } が作られる EM_JS( void* , getElementValue_ , (char const* id) , { var e = document.getElementById( UTF8ToString( id ) ) ; var str = e.value ; var len = lengthBytesUTF8( str ) + 1 ; // コンパイル時に -s EXPORTED_FUNCTIONS="['_malloc']" しないとエラーがでる var heap = _malloc( len ) ; stringToUTF8( str , heap , len ) ; return heap ; } ) ; // std::string型はC++の文字列処理の型 // std::string s( "abcde" ) ; // s.c_str() で、C言語のNULターミネータ付きの文字列を参照できる。 std::string getElementValue( std::string const &id ) { void *p = getElementValue_( id.c_str() ) ; std::string s( (char const*) p ) ; free( p ) ; return s ; } void setElementValue( std::string const &id , std::string const &value ) { EM_ASM( { var e = document.getElementById( UTF8ToString( $0 ) ) ; e.value = UTF8ToString( $1 ) ; } , id.c_str() , value.c_str() ) ; } #ifdef __cplusplus extern "C" { #endif /* HTMLに埋め込んだ onclick=_ems_func() で呼び出される*/ void EMSCRIPTEN_KEEPALIVE ems_func() { std::string input = getElementValue( "input" ) ; setEnvironmentValue( "output" , input ) ; } #ifdef __cplusplus } #endif ((( test.cxx をコンパイル ))) $ source /usr/local/emsdk/emsdk_env.sh $ em++ -o test.html test.cxx -O3 -s WASM=1 -s EXPORTED_FUNCTIONS="['_main','_malloc']" --shell-file html_template/shell_minimal.html
情報処理演習室のルータを交換
EI棟3F演習室で、Aruba の WiFi 環境のための Buffalo ルータを使っていたけど、警告メッセージが出始めたので、確認したらルータの管理画面さえ表示できなくなってきた。古いルータだったので寿命と思われる。
かといって、このルータは、4EI教室,5EI教室,2F実験室,3F演習室,4F創成LABを束ねる Aruba WiFi の上流にあたるため、実験室がことごとく使えなくなる。そこで、手持ちのマニアックな Edgerouter-X に入れ替える。
「サイバー攻撃の手口と守り方」の準備
2/6(土)に「サイバー攻撃の手口と守り方~情報セキュリティ入門~」にて、CTFを中高生に体験してもらう準備のお手伝い中。
コマンドラインをたたいてもらう体験の部分は、クラウド上に準備した noVNC を使い、ブラウザさえあれば参加可能。問題は、以前 K-SEC 主催の CTF 問題から「いんすぱいぁ(≠ぱくった)」されて作った問題を少々。
Teams 説明会のトラヒック
fukuikousen-bot の更新周期を短く
福井高専のホームページの最新情報を、つぶやく bot ( https://twitter.com/FukuiKousen )を動かしているけど、この連日、コロナウィルスのため重要な公式情報の流れる機会が増えている。
通常は、5時,9時,11時,15時,19時 としていたが、当面頻度を高めておこう。8時から22時まで2時間刻みとしておく。
ネットワークセキュリティのためのTips
- デーモン(ネットワークサービス)の起動
- rc.d(古い方法)
- systemd(新しい方法)
- スーパーサーバによる起動
- ファイアウォール
- 検査手法
- Linuxで開いているポートを確認する方法(netstat)
- ポートスキャン
- パケットキャプチャ
- Webサーバへの攻撃方法
- 一般的な知識
- バックドアの確認方法
- 仕掛けられたバックドアの検出と対処
- maldetect
- ルートキット検出ツールの比較(rkhunter,chkrootkit)