Nmapを利用する際、root権限を渡したくないので一般ユーザでsudoもなしで実行できるようにしたいことがある。 そんなときは、まず以下のようにnmapのバイナリのグループと権限を変更する。

chgrp adm /usr/bin/nmap
chmod 750 /usr/bin/nmap

次に、setcapコマンドを実行するためにパッケージをインストールする。

sudo yum install libcap # RHEL系の場合
sudo apt-get install libcap2-bin # Debian/Ubuntu系の場合


ペネトレーションテストのデータ管理システム『Kvasir』にNmapのスキャン結果を登録する

今回は、先日導入したKvasirに、Nmapのスキャンデータを登録して結果を確認してみる。

1. 事前に取得したxmlファイルをインポートさせる

Kvasirサーバからアクセスできないサーバや事前に取得済みのNmapのXMLファイルがある場合、Webコンソールからインポートさせることができる。 NmapでのXMLファイルが必要な場合は、-oXオプションを付与することで取得できる。 例えば、以下のコマンドで取得可能だ。

nmap -v -A -oX $(date +%Y%m%d_%H%M%S)_nmapscan.xml 対象サーバ

xmlファイルが取得できたら、上部メニューよ...


Ubuntu Server 16.04へペネトレーションテストのデータ管理システム『Kvasir』をインストールする

調べものをしてたところ、ペネトレーションテストのデータを管理するためのシステム『Kvasir』というものを見かけた。 確かにペネトレーションテストの実行データをファイルサーバなどで管理しているといろいろと面倒だし、ちゃんと連携できるかといわれると難しいかもしれない。 こういったツールで管理するのもよさそうだ。 NessusやNmapのデータも管理できるようなので、とりあえずUbuntu Server 16.04 LTSにインストールして触ってみることにする。

前提条件として、以下が挙げられている。

  • web2pyの最新版が動作していること
  • データベースとしてのPostgreSQL...

ペネトレーションテストのデータ管理システム『Kvasir』でCVEなどの脆弱性情報を取得する

今回は、先日導入したKvasirに、CVEなどの脆弱性情報について登録を行う。 手順としては簡単で、上部メニューから「Administration」>「VulnDB」>「Import CANVAS Exploits」を選択する。

あとは、「Download」にチェックを入れて「Submit」を押下するだけだ。

もしうまくいかない場合は、「Run in background task」のチェックを外してフロントエ...


先日行われた第26回シェル芸勉強会の復習中、よさげなツールがないか調べてたところXMLやCSVを平文フォーマットで「位置情報=値」といった形式に変換できるというxml2・csv2というツールを見かけた。 インストールは以下のコマンドで行える。

yum install xml2 # RHEL系の場合
apt install xml2 # UbuntuなどDebian系の場合

インストール後、以下のように標準出力から受けとることでXMLやCSVを整形してくれる。

コマンド | xml2 # XMLの場合
コマンド | csv2 # CSVの場合

XMLの場合

blackno...

ssh経由でファイル・フォルダを自動同期させる『sshync』

ssh経由でファイルやフォルダを自動同期させる『sshync』というものがあるようなので、触ってみることにした。 Lsyncdと同じようなことができるようで、Starの数は多く評判はよさそう。 Node.jsで書かれているようなので、npmを用いてインストールができるようだ。

中身としてはrsyncとfs.watch()を使っているとのことなので、ファイルの変更を検知したら同期処理が走るようだ。

1. インストール

先ほども記述したように、Node.jsで書かれているのでnpmでインストールができる。

npm install sshync -g
blacknon@BS-PU...

2016年12月25日、一応世間ではクリスマスなのだが新宿でシェル芸勉強会があったので行ってきた。 で、その復習。

今回はエクシェル芸…というより、Excelに限らずMSオフィスのファイルをbash上でいろいろといじるという内容。 問題及び模範解答はこちら。 最初に、問題に利用するファイルをgitで落としておくといいだろう。

git clone https://github.com/ryuichiueda/ShellGeiData.git

Q1.

.xlsxや.docx、.pptxはzipファイルになっており、xlsなどのようにバイナリ形式のデータにはなっていない。 このた...


コンソール上でWebサーバと対話式に通信を行える『htty』

コンソール上からWebサーバに対し、対話的に通信を行えるツール『htty』というものを見かけたので、ちょっと触ってみる。 Rubyで書かれているらしく、gemを用いてインストールが行えるようだ。

gem install htty

インストールができたら、以下のようにコマンドを実行することでWebサーバとの対話型インターフェイスが動く。

htty ドメイン名

上の画像のように、keyを渡してgetやput...


『googler』でコンソール上からGoogle検索を行う

LinuxやMacのコンソール上からGoogle検索を行える『googler』というコマンドを見かけたので、入れてみることにする。 前にもコンソール上から利用できるWebブラウザについて記述したことがあったが、これはそのままGoogle検索を行ってくれるようだ。

今回は、とりあえずUbuntu Server 16.04 LTSにこのツールを導入して触ってみることにする。

1.インストール

ソースからインストールする場合は、以下のコマンドでインストール可能だ。

git clone https://github.com/jarun/googler/
cd googler
s...

前にClam AntiVirus(以下、ClamAV)をCentOS 7へインストールしたことがあったが、Repoforgeが利用できなくなったので、Epelからインストールしてデーモンとして動かすようにする。 まず、以下のコマンドでEpelとClamAVをインストールする。

yum install -y epel-release
yum install -y clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner clamav-scanner-systemd clamav-deve...

Linuxでよく利用されるOSSのウィルスチェックソフトであるClamAVでは、他のウィルスチェックソフトと同様にリアルタイムスキャン(オンアクセススキャン)を行うように設定できる。 設定方法は簡単で、ClamAVの設定ファイルである「/etc/clamd.d/scan.conf(/etc/clamd.conf)」にて以下の内容を追記するだけだ。 (前提として、すでにClamAVのデーモンでのインストール・設定ができているものとする)

/etc/clamd.d/scan.conf
ScanOnAccess yes OnAccessIncludePath /オンアクセススキャン...

Chromeでスペルチェックを無効化する

Chromeで、ちょっと英単語とかのスペルチェックが邪魔だったので無効化することにした。 Windows版の場合だと、「chrome://settings/」で詳細設定画面を開き、「言語と入力の設定」から「スペルチェックを有効にする」のチェックを外せばよい。


今回はCentOS 7にファイルの改ざん検知を行う『AIDE』を導入する。 改ざん検知というと、『Tripwire』あたりが一番よく使われている(かなり頑張ってやればInotifyも使えなくはないのだが…応用効くし)のだが、yumでインストールする場合はEPELリポジトリが必要になる。 AIDEの方はデフォルトのリポジトリでそのままインストールできて、かつ設定も簡単に行えるようだ。

1. インストール

先ほど記述したように、インストールはデフォルトのリポジトリからそのままインストールできる。

yum install -y aide

これでOK。

2. 設定

次に...


Linuxをサーバとして複数人で利用する際、ssh接続するアカウント事に使用できるコマンドを制限したいことがある。 そのような場合には、以下のような手法が用意されている。

1. ログインシェルをrbashにする

前にここでも触れているのだが、rbashというbashのシンボリックリンクを作成して、それをログインシェルにすることで、特定のコマンドのみを実行可能なユーザを作成できる。 bashのシンボリックリンクなので、別にコマンドのバイナリを用意したりとかしなくてもいい。 また、PATHを直接指定してのコマンド実行も行えないようになっているのもよい。

おそらく、一番手軽な設定方法...


Webベースのオンラインパスワードマネージャ「CLIPPERZ」

パスワードマネージャについて調べてたところ、OSSのWebベースパスワードマネージャの『CLIPPERZ』というものがあるようだったので、試しに入れてみることにした。 今までにグループでのパスワードマネージャは触れていたのだが、今回の『CLIPPERZ』は個人向けのデータを扱う。 とりあえずインストール先にはCentOS 7を用いる。

1.前提パッケージの導入

LAMP環境が必要になるので、こちらを参考に導入しておく。

yum install -y httpd mariadb-server mariadb mariadb-devel php php-devel php-pd...

Linuxでmanを少しカラフルで見やすくする

UbuntuやCentOSなどでmanを見る際、「most」をPagerにすることで少し見やすくすることができる。 まず、以下のコマンドでmostをインストールしておく。

sudo apt install most # Debian/Ubuntuの場合
sudo yum install ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/utilities/CentOS_6/x86_64/most-5.0.0a-3.1.x86_64.rpm # RHEL系の場合

次に、以下のコマンドを実行しデフォルトのPa...


Excelファイル(~.xls/~.xlsx)をLinuxコンソール上でCSV方式に変換する方法

よくある問題だからなのか、LinuxやMac OS XでExcelファイル(.xlsや.xlsxファイル)をコンソール上でCSV方式に変換するためのコマンドは数多く用意されている。 で、今回はその中でも使えそうなものを2つほど抜粋してみようと思う(エクシェル芸な勉強会近いし)。

1. xlsx2csv

こういった用途では一番多く使われているだろう、xlsx2csvコマンドを用いての変換。 xlsx2csvコマンド自体は以下でインストールができる。

pip install xlsx2csv

CSV形式への変換は以下のコマンドで行える。 オプションでどのシートを変換するかについ...


複数台のホストに対し、同時にコマンドを実行させるGolang製のツール『orgalorg』なるものを見かけたので、Ubuntu Server 16.04に入れてみることにした。 このツールはGolangで書かれているので、インストールも簡単に行える(事前にGOを入れてちゃんとGOPATHとか設定してる必要はあるが)。

go get github.com/reconquest/orgalorg

で、インストールできたら以下のように「-o」オプションで複数ホストを指定してコマンドを実行する。 「-p」でパスワード認証に対応しているので、鍵認証じゃなくても安心だ(同じパスワードを指定して...


Azureはサブスクリプションだったりアカウントの種類が多くて、混乱することが多い。 そもそもの前提としてAzureではアカウントの種類が大別して2つに分かれてて、microsoftアカウントと組織アカウントというのがあるようだ。 ざっくり言ってしまうと、Office365と連携していない個人アカウントがmicrosoftアカウントで、Office365のADで管理されているのが組織アカウントらしい。

そのほか、いろいろな面で組織アカウントにしかできないこと(microsoftアカウントではローカルADとAzureADの連携ができなかったり、AzureCLIやPowerShellで自動ログ...


複数人でファイルサーバなどを利用していると、時折同じファイルなのだけど名前変えて違うフォルダにファイルをコピーしたり、ISOファイルなどを気づかずに同じファイルを別名でおいてしまったりといった、中身が同じファイルを複数置いてしまうことがある。

ディスクサイズは有限なので、容量がいっぱいになってきたら当然重複したファイルや容量の大きいファイルは削除する必要がある。 そんな時、重複して中身がおなじファイルを見つけるときに便利なのがfdupesコマンドだ。

1. インストール

fdupesコマンドのインストール方法は以下。

yum install -y --enablerep...

ターミナル上でCSVファイルをいい感じに閲覧できる『tabview』

CSVファイルをターミナル上でいい感じに閲覧できる『tabview』なるツールを見かけたので、ちょっと触ってみることにした。 Python製のツールなので、インストールは以下のコマンドで行える。

pip install tabview

インストール完了後、CSVファイルを指定して以下のようにコマンドを実行することで、Excelなどの表計算ソフトのように矢印キーで移動しながら各セルの値を参照できる。

tabvie...

『csvkit』のin2csvコマンドでLinux上でExcelファイル(xls・xlsx)からcsvに変換してやる

ちょっと調べものをしてたところ、『csvkit』というCSVに関する処理を行えるコマンドツールパッケージを見かけた。 その中にin2csvコマンドなるものがあるのだが、これを使うことでxlsやxlsxといったExcel形式のファイルをcsvフォーマットに変換して出力してくれるようだ。

まず、以下のコマンドで『csvkit』をインストールする。

pip install csvkit

インストールができたら、in2csvを使ってみよう。 普通にExcelファイルを指定すると、標準出力でCSV形式に出力してくれる。


Rundeckでリモートサーバに対してsudoを用いた処理をさせたいことがある。 ジョブ実行ユーザ(今回の例だとrundeckユーザ)には鍵認証しか許可させない(+authorized_keysで接続元のIPをRundeckサーバに制限)するなどで接続時のセキュリティは担保できるので、sudo実行時にパスワードはいらない前提とすると、以下のように「/etc/sudoers」に追記してやればよい。 さすがになんでもsudo実行できるとちょっと問題なので、sudoで実行できるプログラムは制限してやればよい。

/etc/sudoers
rundeck ALL=(ALL) NOPAS...

最近ちょこちょこPythonを触る機会が多くなってきたのだが、処理の中でgrepやawkのように行の抽出をさせたいことがある。 Subprocessでgrepとかawkを呼び出すのはかっこ悪いし、Python内で処理を完結させたいというのもあったので少し調べてみた。

1.指定した文字列を含む行を抽出

1-1.基本的な抽出方法

Pythonでgrepのような処理を行うには、find('文字列')を用いてその文字列を含む数を指定することで抽出が可能だ。 以下、記述例。

# -*- coding: utf-8 -*
import sys
ld = open(sys.argv[1])...

Webサイトを運営するうえで、Firewallはどこも利用していると思う。 しかし、iptablesやfirewalldのようなFirewallの場合、防御してくれるのはされたポートやIPアドレスレベルでのフィルタリングであり、Webアプリケーションの脆弱性に対する攻撃を防御してくれるわけではない。

そういった攻撃を防ぐには、Webアプリケーションファイアウォール(WAF)が必要になるのだが、そんな時にApacheのモジュールとして動作するオープンソースなプロダクトが今回導入するmod_securityだ。

今回は、このmod_securityをCentOS 7にインストールして不正ア...


fail2banで何度BANしてもしつこくアタックをしてくるグローバルIPをより長時間BANするには、デフォルトで用意されいる「recidive」というJailルールを有効にすることで対応が可能だ。 設定は簡単で、大体のルール(BANとするfindtimeやbantime)は「/etc/fail2ban/jail.conf」の「[recidive]」に記述されているので、あとはルールを有効にしてやればよい。

以下のコマンドを実行し、jail.localに設定を追記する。


fail2banでアタックを検知したらSlackに通知させる

前回CentOS 7上でfail2banのインストール・設定を行ったが、アタックを検知して対象のIPアドレスをBANした際、メールではなくSlackに通知させることもできるようだ。 まず、事前にSlackのWebHookを作成しておく必要がある。

次に、actionとしてslackへのポストが行えるよう、設定ファイルを作成する。

/etc/fail2ban/action.d/slack.conf
[Definition] actionban = curl -X POST --data-urlencode 'payload={"channel": "#test", "use...

Webアプリケーションファイアウォールなどのテストでディレクトリトラバーサルのテストを行う際、手っ取り早くcurlで攻撃を行いたいことがある。ただ、そのまま「../../」といったパスを指定しても省略されてしまい、うまく攻撃してくれない。そんなときは、curlにオプションとして「--path-as-is」を付与することで対応が可能になる。


インターネット上にサーバを公開していると、sshやhttpdへDDoS攻撃やディレクトリトラサーバル攻撃を公開しているページすべてに行うようになツールを投げられたり、乗っ取りしようとして来たりといろいろと攻撃されることが多い。 DDoSやらツールでの攻撃を受けると大量のパケットやリクエストが飛んできてサーバへの負荷が重く、サービスの継続にも支障が出たりする。 そんな時は、攻撃してきているグローバルIPからの接続をファイアウォールなどでしばらく拒否してやるといった対応が必要になる。

そういったことをするためのツールがこのfail2banだ。 結構有名なツールだし、LPIC(303かな?2...