CentOS 7に脆弱性スキャンツール「OpenVAS」をインストールする

リモートから脆弱性をスキャンする方法はいろいろあるが、その中でも比較的有名なのがOpenVASだ。
コマンドや管理画面から指定したホストに対しホストの外部・内部からスキャンを実施することで脆弱性をスキャン、検知させることが可能だ。
細かくはこちらの記事が非常に詳しく書かれているので、一読するとよいだろう。

今回は、このOpenVASをCentOS 7にインストールする。

1.インストール

まずは、以下のコマンドを実行してリポジトリを追加する。

wget -q -O - http://www.atomicorp.com/installers/atomic |sh
[...

人間なので、時折IPアドレスの設定時に誤って重複したアドレスを振ってしまう、設定してしまうこともある(DHCPサーバの範囲内のアドレスで固定IP設定しちゃったりとか)。
そんな時すぐに気づければいいのだが、結構気づかずにそのままにしてしまって対象のホストのネットワークが不安定になった段階でようやく気付くこともあるだろう。

そんなときは、以下のいずれかの方法で重複したIPアドレスを調べて修復してやるといいだろう。

1.arpingで調べる

重複しているであろうIPアドレスに当たりがついている状態であれば、apringコマンドで確認ができる。
そのIPアドレスが重複している場合、返...


OracleJDKをCentOS 7にインストールする場合、yumなどではなく、こちらからOracleJDKのrpmパッケージをダウンロードしてインストールしてやる必要があるのだが、これをwgetでダウンロードしてくる方法がある。具体的には、以下のようにwgetコマンドを実行、インストールしてやればよい。


第24回シェル芸勉強会に参加してきたので、その復習。
今回はLLOTと同日開催のためか、少し人数が少なめ?だった様子。ベテラン勢が少し少数になってた…のかな?
まぁ、いつも通り復習。模範解答と問題はこちら

Q1.

各行に2種類の文字列(卵、玉子)があるので、それの数を算出する。
awkのみで回答するのがキレイな解き方なんだけど、あんまりawkに自信ないので以前やった行の内容をソートさせる方法にちょい手を加えて回答した。


Proxmox VE 4.2でOVS(Open vSwitch)を使ってタグVLANの設定をする

Proxmox VE 4.2で、接続するLANケーブル1本でトランクポートにして、Proxmox側でそれぞれのVMに応じてアンタグさせる必要があったので、OVS(Open vSwitch)を設定してVLAN設定をしてみた。
とりあえず、今回は検証なので以下のような構成で考えている(検証なので、裏の管理コンソールは別にLAN刺してる)。トランクポートに設定した以外のスイッチで各VLANのアンタグをさせて、そこにクライアント刺すことでテストをする。

  • VLAN101 … 192.168.101.0/24
  • VLAN102 … 192.168.102.0/24
  • VLAN103 … 19...

メモリダンプからいろいろと情報を取得するフォレンジックツール「Volatility tool」というものがあるようなので、CentOS 7に試しにインストールしてみる。
メモリダンプを解析できるOSは結構種類があるようで、LinuxだけではなくWindows、Mac OS Xも解析可能なようだ。

1.インストール

まずは、以下のコマンドで前提となるパッケージ類を導入する。

yum install git

以下のコマンドでVolatility toolをインストールする。

git clone https://github.com/volatilityfoundation...

ProxmoxVE 4.2のログインにワンタイムパスワードによる二要素認証を設定する

ここのとこワンタイムパスワードについていろいろ設定してるのだけど、どうやらProxmox VEでもOTPによる二要素認証が設定ができるようだ。
というわけで、試しに設定してみることにした。

設定方法は簡単。
[データセンター]から[認証]タブを選択し、ワンタイムパスワードを定義する認証方法(今回はpam)の設定画面を開く。
で、[TFA]の設定値を「OATH」と指定する。

次に、Proxmox VEのコンソール画面で以下のコマンドを実行し、ワンタイムパスワードのキーを生成する。

oathkeygen
root@BS-PHY-MICROSERVER-01:~# oa...

以前Google Authenticatorによるsshログイン時のワンタイムパスワード認証(Ubuntuはこっち)について記述したが、似たようなツールでAuthyというアプリ(というかサービス)を利用することで同様のことができるので、CentOS 7でsshログイン時に二要素認証が行われるように設定してみることにした。
事前にiPhone/AndroidでAuthyのインストール・設定をしておく。これについては簡単なので、こちらを参考に進めておけばよいだろう。

1.Authyの設定・APIキーの取得

まず最初にAuthyの設定およびAPIキーの取得だ。
こちらからAu...


CentOS 7にLinuxのCVE脆弱性検知ツール「Vuls」をインストールする

会社の先輩(というかリーダー)から、sshなどでリモートのLinuxにアクセスし、CVEの脆弱性確認して検知したら自動的にSlackなどで通知してくれるツール「Vuls」というものがあると教えてもらったので、会社の環境に導入する前に自宅環境に入れてみることにした。
Vulsは日本人が作成したツールらしいので、日本語の情報もたんまりとあるのが素晴らしい。
詳細な情報については、以下の記事を見るとわかるだろう。


少し調べものをしていたところ、Webベースのリアルタイムにパフォーマンスをモニタできるツール『Netdata』というものを見かけたので、少し試してみることにする。

1.インストール

まずは、以下のコマンドで前提となるパッケージをインストールする。

sudo apt-get install zlib1g-dev gcc make git autoconf autogen automake pkg-config uuid-dev # Debian/Ubuntu系の場合
yum install zlib-devel gcc make git autoconf autogen auto...

bashでヒアドキュメントを使ってファイルに書き出す際、変数をそのまま記述すると現在の環境変数を元に展開されてしまう。

blacknon@BS-PUB-UBUNTU-01:~$ env | grep SHELL
SHELL=/bin/bash
blacknon@BS-PUB-UBUNTU-01:~$ cat << EOF > ./test
> SHELL=99999
> TEST=1234
> VAL=$SHELL
> AAA=$TEST
> EOF
blacknon@BS-PUB-UBUNTU-01:~$ cat ./test
SHELL=99999
TEST=1234
VAL=/bin...

Webベースのネットワークフォレンジックツール『Xplico』を使ってみる

ちょっと調べものをしていたところ、Webブラウザで管理できるネットワークフォレンジックツール『Xplico』なるものを見かけたので、試しに使ってみることにした。
フォレンジックツールといってもあまり伝わらないと思うので補足すると、何かしらのセキュリティインシデントが発生した際に後から追跡できるよう、証拠となるデータ(通信パケットやログ、その他のデータなど)を補完し、分析する機能を持ったツールのことだと考えてもらえればよいだろう。

今回は、この『Xplico』をインストールが簡単らしいUbuntu 14.04 LTSに導入する。

1.インストール

書かれていた通り、確かにU...


Ubuntu 16.04 LTSでpsadによるポートスキャン検知・ログ出力

自身にポートスキャンが行われた際に検知させたり、ログに出力させたりしたいと思ったので、何かいい方法ないかなぁ…と調べていたところ、psadというツールがあるようなので、ちょっと試してみることにした。で、インストールにはUbuntuを利用するのが楽そうなので、まずはUbuntu 16.04 LTSで試してみることにする。

1.psadのインストール

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

sudo apt-get install psad

インストール中、Postfixのメールサーバ形式について選択する画面が表示されるので、適当に選択、設定する。

2.psa

...
WordPressにGoogle Authenticatorを使ってワンタイムパスワードによる2要素認証設定を行う

WordPressの管理画面のセキュリティを強くする方法はいろいろあるけど、以前にsshでの認証で触れたGoogle Authenticatorを使ってワンタイムパスワードによる2要素認証設定を行えるようなので、導入してみることにした。

1.iPhone/AndroidでGoogle Authenticatorのアプリをインストールする

まず、手元のiPhoneやAndroidで、iTunesStoreやGooglePlayからGoogle Authenticatorをインストールしておく。
まぁ、普通に検索したら出てくるのでこの辺は割愛。

2.WordPressへ「Google

...

sshやWordPressへのログインにワンタイムパスワードを利用できるようにするGoogle Authenticatorだが、少し残念なことにパスワードを確認するためのアプリケーションがiPhone/Androidにしか用意されていない。できればLinuxの特定のサーバだったり、手元のMacBookなどでも確認できるようならばいいのに…と思ったので、そういったことができないか少し調べてみた。

で、どうも「oath-toolkit」コマンドを利用することでワンタイムパスワードを取得できるようなので、試してみることにした。
まずは、以下のコマンドでインストール。

sudo yum in...

pfSenseでウィルススキャン透過プロキシ(Squid+ClamAV)を設定する

職場でFortiGateのウィルスチェックWebフィルタリング機能を使っているのだけど、さすがにこれを家で使うのは難しい(有償のライセンス買わないといけないので…)。
で、何か似たようなものがオープンソースでないかな、と思って調べていたところ、ちょうど使用しているpfSenseでSquid+CalmAVを使ってその辺の設定ができそうだ。
というわけで、実際に設定してみることにする。

まずはSquid(+α)をpfSenseにインストールする。
Webコンソールから「[System] > [Package Manager] > [Available Packages]」を開き、Squi...


基本的にVyOS(Vyatta)を利用する場合は仮想基盤(ESXiとかKVM)上で動作させることが多いため、可用性とかはそちらに依存(HA化しときゃいいとか、とりあえずVMのバックアップをストレージに置いとけばいいとか、ハードウェアに依存しないからコンフィグさえあればどうとでもなるとか…)させることができるのだけど、時には仮想基盤に乗せず動かすこともあるだろう。また、ダウンタイムがあまり許容されないシステムの場合もある。

そんな時は予備機器を用意しておくのもいいが、VyOSではアクティブ・スタンバイ構成のクラスタを組んでダウンタイムを最小限に抑えることもできるようだ。
なお、クラスタ構成...


『addrwatch』でLAN内のIPアドレス・MACアドレスを監視する

調べもの中、「arpwatch」と似たような使い方ができるツール「addrwatch」というものを見かけたので、Ubuntu 14.04 LTSへインストールしてみることにした。

1.インストール

まずは、インストール前に前提となるパッケージ類をインストールしておく。

sdudo apt-get install autoconf pkg-config libpcap-dev libevent-dev libsqlite3-dev sqlite3

次に、Githubからソースをダウンロードしてコンパイルを行う。

git clone https://github.com/f...

「OTPW」というpamモジュールを利用して、銀行のパスワードカード(三井住友銀行のちょっと前の認証形式みたいなやつ)に似た認証形式を利用できるようなので、Ubuntu 14.04 LTSで設定してみることにした。

1.インストール・設定

まずはOTPWのインストールおよびsshdへの設定追加を行う。
以下のコマンドを実行し、OTPWをインストールする。

sudo apt-get install otpw-bin libpam-otpw

インストール完了後、「/etc/pam.d/sshd」の以下の項目について編集する。

●/etc/pam.d/sshd

#@incl...

公開鍵に特定のコマンド(sshとかscp)を指定してssh接続時にそのコマンドしか実行できないようにする

sshの踏み台サーバの構築で、ユーザにログイン先の公開鍵が見れないようにしたい。
ということは、踏み台サーバへのssh接続時にcatとかその辺がつかえないようにして、sshコマンドだけを利用可能にすればいいのだけど、そんなやり方あるのかなぁ…と思って調べてみたところ、サーバ側の鍵ファイルに使えるコマンドを設定してやることで実現できそうだ。今回は、sshの踏み台サーバとしてCentOS 7を利用する。

1.鍵ファイルの作成

まずは踏み台サーバへログインするための鍵ファイル作成から。
以下のコマンドを実行する。

ssh-keygen
[ssh-user@BS-PUB-CENT7...

grepで正規表現を用いてIPアドレス・MACアドレスを抽出する

ネットワーク回りのログや調査をしていると、IPアドレスやMACアドレスだけをgrepで抽出したいことがある。
その場合は、それぞれ以下のようにgrepを実行するとよい。

IPアドレス

grep -E '([1-2]?[0-9]{0,2}\.){3,3}[1-2]?[0-9]{0,2}'

[ssh-user@BS-PUB-CENT7-01 .ssh]$ echo IPAddress:255.255.333.111 | grep -E '([1-2]?[0-9]{0,2}\.){3,3}[1-2]?[0-9]{0,2}'
[ssh-user@BS-PUB-CENT7-01 .ss...

awkのフラグを使って特定の文字列~文字列の行を抽出する

特定の文字列を含む行~行を抽出する場合、こちらのやり方を応用してsedで抽出を行う場合が多いと思うが、awkでもフラグを立てることで同じようなことが可能だ。

例)sedでの特定の文字列~文字列の行を抽出する

sed -n '/キーワード/,/キーワード/p'

[root@BS-PUB-CENT7-01 ~]# cat /tmp/test2.txt
aaaaa
bbbbb
ccccc
ddddd
eeeee
fffff
ggggg
hhhhh
iiiii
jjjjj
[root@BS-PUB-CENT7-01 ~]# sed -n '/c/,/g/p' /tmp/test2....

『vlock』でLinuxの仮想コンソールを一時的にロックする

仕事でLinuxにsshや仮想コンソールでつなげていると、一時的に席を外す際にコンソールをロックしたい時がある。
そんなときは、screenやtmuxを使うのもいいけど、昔からあるという「vlock」コマンドで単にロックするという方法もある。

基本的には最初からインストールされていると思うけど、入ってない場合は以下のコマンドでインストールできる。

yum install vlock
sudo apt-get install vlock

awkで置換するといえば組み込み関数のsub関数やgsub関数だが、これらはawk内で代入した変数の置換をするような使い方ができない($0で受けた内容すべてに対しての置換はできる)。
定義した変数や特定の列に対してのみ置換をする場合は、gensub関数を利用するとよいだろう。

gensub("置換前","置換後",置換位置(NUM)[,置換対象文字列(列や変数名など)])

awkで指定したキーワードを持ってる列のみ抽出する

awkで指定したキーワードを持ってる列のみを抽出する場合、以下のようにコマンドを実行する。

awk '{for(i=1;i<=NF;i++)if(match($i,"キーワード")) print $i}'

[root@BS-PUB-CENT7-01 ~]# cat /tmp/test.txt
aaa="1" bbb="2" ccc="3" ddd="4"
aaa="11" bbb="21" ccc="31" ddd="41"
aaa="12" bbb="22" ccc="32" ddd="42"
aaa="13" bbb="23" ccc="33" ddd="43"
aaa="14...

ふと、ロト6とかロト7買おうと思ったのだけど、あんまり数字を当てる自信がないのでコマンドでランダムに決めてしまおうと思った。
で、Linuxのコマンドでランダムにn個の数字を得る場合はshufコマンドが便利なので、それで得ることにした。

shuf -i○-● -n NUM | sort -n

つまり、ロト6やロト7で記述する数字を出す場合、以下のようにすればよいということだ。

●ロト6

shuf -i1-43 -n 6 | sort -n