コアダンプの数だけ強くなれるよ

見習いエンジニアの備忘log

Linux

ハニーポットを自宅に設置しVPS経由で公開する

下記を読んで自分もハニーポットを植えてみたいと思いました。 tk-secu.hateblo.jp どうせなら色々なハニーポット試したいし、攻撃の様子もいい感じに可視化したい。 だったらT-Potを植えればいいじゃない!ということで環境を構築してみました。 環境構成 T…

Linux PCのデスクトップ画面をブラウザから監視する

やりたいこと HLS(HTTP Live Streaming) 実施例 事前準備 WEBサーバの設定 HLS開始 実行結果 その他の方法 リンク やりたいこと こんな感じでブラウザから外部のPC(Linux)のモニターに表示している内容をできる限りリアルタイムで表示したい。 HLS(HTTP Live…

sshでログインしている端末の出力をのぞき見る

やりたいこと 自分は端末Aでログインしている状態。 端末Aから別の端末である端末Bのコマンドの入力、応答をのぞき見たい。 できればC言語で実装したい 実現方法 ググってみたところ、perl製のttylogを使ったり、shellスクリプトで頑張ればできるようです。 …

Python3サンプルコード集(その2)

Pythonのサンプルコードです。 ネットワーク系が中心となります。 書かなくなるとすぐ忘れてしまうので備忘録として残しておきます。 全てクラアント-サーバの通信のサンプルです。 TCP UDP UNIXドメイン(DATAGRAM型) UNIXドメイン(STREAM型) TCP(selectで待…

Nginx+uWSGI+viewvcでSubversionのリポジトリをブラウザから閲覧する

ViewVC: Repository Browsingを使ってLinux(CentOS7)上に構築したリポジトリをブラウザから参照可能にしてみます。 これで、Linuxが使えないポンコツな上司から修正内容を問われても、URLをコピペしてメールするだけで済むようになります(?) Git環境向けは…

Virtualbox + CentOS7 + シリアル接続してみる

Virutalbox上でLinuxを動かす際に起動ログやカーネルパニック時の画面ログを取りたい時があります。 調べると仮想シリアルポートを組み合わせることでVritualbox上の仮想マシンとシリアル接続が可能らしい。 イメージはこんな感じ。 ということで早速やって…

packetソケットでキャプチャしてみる

Linuxのpacketソケットを使って受信フレームの内容を表示してみます。 今回はEther + IPv4 + TCPで受信したフレームの各ヘッダ情報を表示するアプリケーションを作ります。Linux, C言語です。 packetソケットについての詳しい説明はMan page of PACKETとかを…

Linuxのnamespaceでネットワークを区切って遊ぶ

Linuxのnamaspace(名前空間)で遊んでみます。 Dockerとかコンテナを実現する技術で使われるアレですね。 お遊び内容 各種設定 疎通確認 参考 お遊び内容 まず、下図のネットワーク構成を作ります。 ・eth1,eth2は内部ネットワーク ・vlan100,vlan200はVLANタ…

proc経由でkernelとやり取りしてみる

procインタフェースを利用してユーザランドのアプリケーションとカーネルでデータをやりとりするサンプルです。 具体的には下記のようにechoでリダイレクトした文字列をカーネルで受信して、catで覗くとリダイレクトした文字列が表示されるような簡単なカー…

さくらVPSでBitZenyを掘ってみる

さくらVPSでBitZenyのプールマイニングに挑戦してみます。まずはお試し1週間です。 はじめに 全体の流れ walletの作成 マイナープールにアカウント作成 ワーカの作成 マイナーソフトの導入と実行 結果 参考 はじめに これまで、さくらVPSの空きリソースを使…

Linuxのカーネルモジュールを作って遊んでみる

今回はLinuxのカーネルモジュール(例えばデバイスドライバ)のプログラミングにトライします。 まず今回はHello World的プログラムを作り、次回は/procファイルシステムへのアクセスなど色々試して遊んでみたいと思います。 環境はLinux(CentOS 7)(64bit)です…

FREDから日経平均株価を取得してみる(Python)

最近は仮想通貨の取引所が公開しているAPIを使い販売レートを取得したりビットコインを購入したり出来ることを知り色々遊んでいました。 ふと、日経平均株価(N225)とか他の経済情報を収集してデータを分析できたら面白いのでは?と思ったので情報を取得する…

C/C++のメモリ破壊を3種の方法で検出してみる

C/C++のプログラマーなら一度は悩ませられるであろうメモリ関連のバグ。その内の1つであるメモリ破壊は作りこむのは簡単ですが、後々見つける事が難しくなる場合も多くやっかいな奴です。 今回はそんなメモリ破壊検出の助けとなるツールをいくつか試してみ…

gdbで動作中のプロセスをデバッグしてみる

gdbを使ってLinux上で既に動作しているアプリケーションをattachしてデバッグしてみる。 今回は例としてsnmpdをほんの少しだけ解析します。環境はLinux(CentOS7)です。 gdbのインストール SNMPエージェントのビルド シンボルの抽出と削除 SNMPエージェント起…

TCPのURGフラグの謎

普段からネットワークを扱う人にとってはお馴染みのTCPという技術。 ネットワークを学ぼうとするビギナーが最初に教わるであろう基礎的で重要なプロトコルですが、ずっとTCPヘッダにあるURGフラグ(緊急フラグ)とUrgenポインタ(緊急ポインタ)の使いどころが疑…

ownCloud+nginx+さくらVPSでプライベートクラウド構築

前回、さくらVPS+nginx環境にSSL証明書を導入してHTTPSによる通信ができるようになりました。今回はownCloudを導入して自分専用のファイルサーバを構築していきます。 www.segmentation-fault.xyz はじめに ownCloudの導入 概要 事前準備 ownCloudのダウンロ…

さくらVPS + nginx + SSL証明書でHTTPS通信

さくらVPSにnginx + wordpressの環境を構築してちょこちょこ遊んでおります。近いうちにHTTPSで接続できるようにもしたいなぁと思ってたのですが、手つかずのまま大分時間が経過してしまいました。 www.segmentation-fault.xyz 今回はSSL証明書を導入してHTT…

Mackerel(マカレル)を使ってワクワクしてみる

以前から気になっていたサーバー監視サービスのMackerel(マカレル)を使ってCentOS7(さくらVPS)を監視してみました。 はじめに 登録~監視まで サインアップ オーガニゼーションの作成 エージェントのインストール サービス、ロールの作成 グラフの表示 まと…

Python3サンプルコード集(その1)

最近はC言語ばっかりでしたが、今後もソフトウェア屋をやるのであればPythonかRubyは慣れておきたいところ。Pythonを新たに始めるならPython3一択らしい(Python2は必要になったら調べれば事足りるため)。個人的に新しい言語を覚えるときは短いサンプルコード…

GoogleのTCP BBRでLinuxサーバーの高速化を試す

GoogleさんがLinuxに実装したTCPの輻輳制御モジュールでTCP通信がどのくらい高速化されるのか試してみる。環境はVirtualBox上にインストールしたCentOS7(64bit)。具体的にはVMを2つ作成しiperfを使ってVM間のTCP通信性能がどのくらい変わるのか見てみる。 BB…

Net-SNMPのサブエージェントを作ってみる

プライベートMIBで監視するためのサブエージェントをNet-SNMPをベースに作成してみた。 作成&実行環境はLinux-CentOS7(64bit)、言語はC。 はじめに Net-SNMPのインストール ソースコードのダウンロード configure / make / make install コンフィグ(snmpd.c…

WordpressをNginx + redisキャッシュで高速化する

Wordpressは今までApache + mysql + phpの構成で構築してたけど、NginxとRedisを使ってみたかったで試してみた。下記を参考にさせていただいた。qiita.comwww.jeedo.net 構築環境は下記(さくらVPSの1Gプラン) ・CentOS7 (64bit) ・RAM 1G ・仮想コア 2コア (…

CentOS7(VPS)にminergate-cliをインストールしてアイドルタイムで仮想通貨を掘る

お勉強用にさくらVPSを利用しているが、平日の日中と夜間はリソースの使用率が低く余っており、このアイドルタイムで何か出来ないと探っていたところMinerGateのマイニングソフトで仮想通貨の採掘が可能そうなので試してみた。実行環境はCentOS 7, 仮想2コア…

NETLINKでネットワークインタフェースの状態変化を検知する

LinuxでNETLINKを使ったネットワークインタフェースの状態変化(up/down, IPアドレスの追加/削除)を検知してみる。NETLINKはネットワークインタフェースの状態変化をカーネルからユーザランドのアプリケーションに対してソケットインタフェース経由で通知して…

Virtualbox上にLinux Mintをインストール

Windows7でVirtualBox上にLinux Mintの環境(sshでログインできるまで)を構築する。 用途はRaspberry-pi用のソフトウェア開発環境。[材料] ・Windows7-32bit ・Linux Mint 18.1(Mate 32bit) ・VirtualBox ・Teraterm (ssh接続用) 事前準備 イメージァイル(iso…

32bit-UEFI環境でLinux-MintをUSB-bootする

手持ちのノートPCであるASUS x205TAでLinux-Mint(インストール用のライブ版)をUSB-Bootしてみる。[材料] ・ASUS x205TA ・USBメモリ(BUFFALO 16GB) ・Linux-Mint(18.1-mate-32bit)[注意点] ・従来BIOSではなくUEFI(詳しくは勉強中)環境 ・CPUが32bitであるこ…

プロキシの設定(yum,wget,curl,git)

プロキシ環境下にあるLinuxでyum, wget, curl, gitコマンドを使うときの設定。 yum $ sudo vi /etc/yum.conf proxy=http://<server>:8080 proxy_username=<user> proxy_password=<pass> wget $ vi ~/.wgetrc http_proxy=http://<server>:8080 https_proxy=http://<server>:8080 ftp_proxy="ftp://<server></server></server></server></pass></user></server>…

gdbで絶対秒を日付で表示する

gdbでデバッグ時に、対象のプログラムが内部で持っている絶対秒(Unix時間)を 日付に変換して表示する方法。バグ等でcoreファイルから原因を調査する際に欲しくなったので作ってみた。 具体的には~/.gdbinitにユーザ定義のコマンドを作って実現する。#普通にg…

socatで装置内通信のデータをのぞき見る

socatを使ってUNIXドメイン通信を中継し通信内容をのぞいてみる。 構成のイメージは下記。 -------------------------------------------------- ________ ________ ________ | | | | | | | Client |--->| socat |--->| Sever | |________| |________| |____…

Ncursesでスクリーン制御

Ncurses(*1)を使ってスクリーン制御してみる。(*1) CUIでスクリーン、キー入力、カーソルなどの制御機能を提供するライブラリのこと。 make menuconfig とか実行すると出てくるアレを実現できる。 ソースコード sample.c #include <curses.h> #include <stdlib.h> #define ESCAPE</stdlib.h></curses.h>…