【ハッキング・ラボ④】コマンド等を学ぶ

Kali Linuxをカスタマイズしていきます。

また、以下4点について勉強していきます。

- ファイルの探し方について
- パッケージ管理について
- manコマンドの活用について
- エイリアスの活用について

<br>
まとめ記事（①〜⑯をまとめてます）
[【ハッキング・ラボのつくりかた】をやってみた](https://qiita.com/nakatatsu711/items/e90e6e0962bb787bf4a9)



## システム環境
`仮想化ソフト`：VirtualBox 6.1.0
`ホストOS`：Windows10
`ゲストOS`：Kali Linux 2020.1



## Kali Linuxのカスタマイズ
### 隠しファイルの有効化
「.」から始まるファイルを隠しファイルといい、デフォルトでは表示しないようになっています。

File Managerを起動し、「Show Hidden Files」にチェックをいれます。
<img width="600" alt="hacking-lab-part4-1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/2056de55-bda8-de45-c2ff-0cd5edec2d88.jpeg">


### Terminalのショートカットキー設定
Terminalはよく使うので、ショートカットキーを設定しておくと便利です。

Ctrl＋Alt＋tキーに設定しますが、VirtualBoxのホストキーと重複してしまうので、まずホストキーを以下のように変更します。

「ファイル」→「環境設定」→「入力」→「仮想マシン」から変更できます。
<img width="600" alt="hacking-lab-part4-2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/a49017bd-e423-a752-cdf9-0c578c4dd63b.jpeg">

バージョン2020.1ではデフォルトでKali Linux側でTerminalのショートカットキー設定がされていましたので、この段階でCtrl＋Alt＋tキーを押すとTerminalを起動できるようになりました。



## ファイルの探し方について
ファイルやコマンドのパスを探せるコマンドとして、locateコマンド、findコマンドがあります。

locateコマンドはファイル一覧データベースから検索するので、高速に動作します。
ただデータベースを更新しないと、新しいファイルは反映されません。
システムが起動していればデータベースは自動更新されます。

これに対して、findコマンドは素直にファイルを検索します。
即時反映しますが、動作は遅くなります。



## パッケージ管理について
DebianはDebianパッケージを扱うことができます。
パッケージとは実行ファイル、設定ファイル、マニュアル等をまとめたものです。
パッケージはインターネット上のリポジトリに存在します。

Debianパッケージはdeb形式で配布されており、dpkgコマンドで管理できます。

ただパッケージには依存関係があるため、依存関係を自動で解消するAPTという技術が開発されました。

APTは内部でdpkgコマンドを使ってパッケージを管理し、さらに依存関係も解消します。

APTではapt-getコマンドやaptコマンドを使いますが、現在はaptコマンドが推奨されています。
どちらを使っても内部では同じことをしています。



## manコマンドの活用について
Linuxにはデジタルのマニュアルが用意されており、manコマンドでマニュアルを読むことができます。

さらにman2htmlを導入すれば、ブラウザでマニュアルを読むことができます。

```
# apt install man2html
```

man2htmlをインストールすると、/usr/lib/cgi-bin/man/man2htmlファイルが配置されますが、Apacheの設定でCGIの実行が無効になっているため、ブラウザで表示することができません。
以下を実行すると、CGIの実行を有効にするcgidモジュールを組み込むことができます。

```
# a2enmod cgid
# systemctl restart apache2
```

`http://localhost/cgi-bin/man/man2html`を入力します。
ゲストOSのブラウザからアクセスできました。
<img width="600" alt="hacking-lab-part4-3" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/564a35ed-7614-f10b-c150-0a77b697d57b.jpeg">

ホストOSからアクセスするには/etc/apache2/conf-available/man2html.confファイルを以下のように編集し、Apacheを再起動します。

```man2html.conf（編集前）
Require local
```

```man2html.conf（編集後）
Require all granted
```

```
# systemctl restart apache2
```

`http://10.0.0.2/cgi-bin/man/man2html`を入力します。
ホストOSのブラウザからもアクセスできました。
<img width="600" alt="hacking-lab-part4-4" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/9c7663d3-71ed-3a06-d29f-82b11e1d80f7.jpeg">


## エイリアスの活用について
エイリアスとはコマンドを別の名前に置き換える仕組みです。
長いコマンドを短い名前に置き換えたりすることで、タイプ数やタイプミスを減らすことができます。

aliasコマンドで登録、unaliasコマンドで削除することができます。

ただ新たにシェルを起動すると元に戻ってしまうので、常にエイリアスを適用したい場合は.bashrcファイルに記述します。
.bashrcファイルはbashを起動すると読み込まれるファイルなので、このファイルに記述することで常にエイリアスを適用することができます。

ここでは.bash_aliasesファイルにエイリアスの設定を記述していきます。
.bash_aliasesファイルは.bashrcファイルから読み込まれる形になっています。

rootユーザーではデフォルトでこの読み込みの記述がされていなかったので、ここではkaliユーザーでエイリアスを設定していきます。

```
$ vi ~/.bash_aliases
```

```:.bash_aliases
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias ll='ls -l'
alias ..='cd ..'
alias del='rm -i'
alias gs='git status'
alias powerup='apt update && apt upgrade -y && apt dist-upgrade -y && apt autoremove -y && apt autoclean -y
```

```
$ source ~/.bashrc
```

エイリアスが適用されていることがわかります。
<img width="600" alt="hacking-lab-part4-5" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/a517781b-b946-c7e9-cafe-c7cf2eaf378b.jpeg">