Linux

Clam AntiVirusをAmazon Linux2へ導入する

無料で使えるオープンソースのアンチウイルスソフト「ClamAV」をAWSのAmazon Linux2へインストールして動かすところまでをまとめます。

ウイルスはWindowsをターゲットとしたものが多く、限られたユーザーしか利用しないLinux環境だと入れないことが多かったりしますが、今回は専門学校の実習で50名前後の生徒にWebサーバーとして開放する関係で導入することにしました。さすがに意図的にウイルスをアップすることは無いと思いますがw 万全を期するに越したことはないですからね。
続きを読む

FFmpegで実際使うと便利だが脳みそに焼き付いてくれないオプションメモ

コマンドラインで利用できる動画編集ツールFFmpegですが、十数年来の付き合いだというのに、たまにしか使わないもんだからオプションが脳みそに定着してくれませんw いざ使うとめっちゃ便利なんですよ。でもそこまでたどり着けないw

今回は年貢の納め時と思ってオプションの一覧を自分用にまとめることにします。

ちなみに構成を考えながら動画編集する場合には、素直にAdobe PremiereやFinalCutなどのGUIの編集ソフトを使った方が早いです。FFmpegはあくまで定形処理を行う場合に活躍してくれるものと言えます。
続きを読む

Let’s EncryptでワイルドカードなSSL証明書を入れる – Amazon Linux2編

WebサーバにSSL対応した約40件のサブドメインを追加する必要に迫られたのですが、さすがに1個ずつSSL証明書を発行するのは地獄なのでワイルドカード証明書を導入した際のメモになります。

無料のSSL証明書としておなじみのLet’s Encryptでは2018年からワイルドカード証明書に対応しているためこちらを利用します。

今回の環境は以下の通り。

  • Amazon Linux2
  • Apache 2.4.46

続きを読む

[Linux] 行番号付きで出力する – nl

nlコマンドを利用すると、出力結果の各行の先頭に連番を付けることができます。

$ nl -w 1 -n ln file.txt
1   Apple
2   Orange
3   Banana

要は行番号ですね。デフォルトでは連番の後ろにはタブが挿入されます。
続きを読む

[Linux] Terminalを閉じてもバックグラウンドの処理を実行し続ける – nohup

Linuxでシステム運用をしていると、数時間〜数日間に及ぶバッチ処理を実行することがあります。手動でプログラムを起動する場合にディスプレイの前にずっと付きっきりでは過労死まっしぐらです。またうっかりTerminalを閉じてしまうと大惨事になってしまうため通常はバックグラウンドで実行します。

その際の具体的なコマンドは以下の通り。

$ nohup (コマンド) & 

コマンドの最後に&を付けるだけでバックグラウンドで実行してくれます。ただこれだけだとTerminalを閉じてしばらくすると自動的にプログラムも終了してしまいます。そこでコマンドの冒頭に nohup を付けることで強制終了を防ぐことができます。

標準出力に表示されるはずだった内容はカレントディレクトリに nohup.out というファイル名で記録されます。

またコマンドの実行が終了すると以下のような通知が来ます。

$ nohup sleep 10 & 
[1]+  終了                  sleep 10

続きを読む

[Linux] 一定間隔でコマンドを実行する – watch

小ネタです。
特定のコマンドを一定間隔で自動的に実行したい場合は watch コマンドを使用します。

例えば以下のコマンドでwc -l foo.txtが10秒置きに実行されます。

$ watch -n 10 wc -l foo.txt

画面がwatchコマンド専用モードに切り替わります。終了したい場合はCtrl+cなどを入力します。
続きを読む

[Linux] 指定した大きさのファイルを作成する – dd

小ネタです。

LinuxやmacOS上で特定サイズのファイルを作成するにはddコマンドを利用します。以下のコマンドを実行すると中身がすべてゼロの1kbyteのファイルを生成できます。

$ dd bs=1024 count=1 if=/dev/zero of=file1
$ ls -l  
total 8
-rw-r--r--  1 katsube  staff  1024  2  4 17:53 file1 

odコマンドでバイナリファイルとして表示すると、以下のようにすべて0が記録されていることを確認できます。

$ od test1                                
0000000    000000  000000  000000  000000  000000  000000  000000  000000
*
0002000

続きを読む

[Linux] SSHのログイン時にIPアドレス制限を行う

ここ数日、SSHへのアタックが急激に増加した関係で特定のIPアドレスからだけログインできるよう対応しました。結論から言うと以下の設定を行うだけです。

特定のIPアドレスのみログインできる

$ sudo vi /etc/hosts.allow
sshd: (許可したいIPアドレス)
$ sudo vi /etc/hosts.deny
sshd: all

/etc/hosts.allowで許可を、/etc/hosts.denyで拒否の設定を行います。これはSSHだけではなく「TCP Wrapper」を利用しているサーバソフトウェアは同じ要領で設定が可能です。

特定のIPアドレスをブロックする

逆にブロックしたい場合には以下のように設定します。

$ sudo vi /etc/hosts.allow
sshd: all
$ sudo vi /etc/hosts.deny
sshd: (拒否したいIPアドレス)

hosts.allow|denyの書式

IPアドレスは半角スペースで区切り複数同時に記述することや、サブネットマスクなどで指定することもできます。

sshd: 192.168.1.1 192.168.1.2
sshd: 192.168.1.1/255.255.255.0

以下のようにIPアドレスの途中までを記述した場合は前方一致となります。

sshd: 192.168.1.

IPアドレスだけではなく.example.comなど接続元のドメインで許可(拒否)もできます。以下の例では後方一致となります。ただしドメインを指定した場合はIPアドレスのみの場合と比べてドメインを調べる処理が加わりますので多少重くなります(よほど大量に来なければ気にするほどではありませんが)

sshd: .ocn.ne.jp

行末にバックスラッシュ()を付けると途中で改行することも可能です。

sshd: 192.168.1.1 192.168.1.2 \
      .ocn.ne.jp

注意点

いずれもファイルに保存した瞬間に設定が適用されるため、間違えた設定をしてしまうと自分でも二度とログインできなくなる可能性があります。設定する際には十分に注意してください。

続きを読む

Linux入門「はじめてのコマンドライン」- Part.5

※この記事は専門学校の講義用に作成されたものです

今回はLinuxを利用する上で避けては通れない「パーミション」について取り上げます。

今後Linux上でプログラミングを行ったり、サーバ運用をする場合には必ずこのパーミションを意識して行う必要が出てくるためです。もしいい加減なパーミションの設定をしていると、コマンドを間違えて実行した際の被害の拡大を招くだけではなく、悪意のある第三者に攻撃の糸口を与えてしまいかねません。

パッと見は地味ですが非常に重要な項目と言えます。
続きを読む

Linux入門「はじめてのコマンドライン」- Part.2

※この記事は専門学校の講義用に作成されたものです

前回はLinuxでの基本的なコマンドラインの操作方法、ファイルやディレクトリの扱い方について練習しました。今回はディレクトリ(フォルダ)の「移動方法」について学習します。
続きを読む

Linux入門「はじめてのコマンドライン」- Part.1

※この記事は専門学校の講義用に作成されたものです

LinuxにはWindowsやmacOSと同じ様にGUIを利用した操作ができる「XWindow」という仕組みもありますが、遠隔地にあるサーバを操作する場合には「コマンド」を入力して実行する方法が一般的です。

今回は初めてコマンドを操作する方を対象に、基本的な操作方法を取り上げます。

続きを読む

SSHで接続できない「Can’t assign requested address」エラーが発生した場合

小ネタです。
なぜか特定のサーバにSSHで接続できない現象が発生しました。他のサーバにはいつも通りに接続でき、DNSやサーバ自体の設定も特に変更していません。

$ ssh ec2-user@example.com -p 10022
ssh: connect to host example.com port 10022: Can't assign requested address

どうやらOpenVPNのクライアントを貧弱なネットワーク環境で使用したり、推奨されない操作をすると「ルーティングテーブル」がぶっ壊れることがちょいちょいあるようです。……思いっきり心当たりがあるw ちょうどこの現象が起こるちょっと前にフリーズしてkill -9 (OpenVPNクライアントのPID)したのでした。

というわけでルーティングテーブルをリセット(flush)します。

$ sudo ifconfig en0 down
$ sudo route flush
$ sudo ifconfig en0 up

これで無事につながるようになりました。めでたしめでたし。

続きを読む

[Linux] yumで一度利用したパッケージをキャッシュする

小ネタです。
AnsibleのPlaybookを作成していたのですが、何度もyumで同じパッケージのインストールを繰り返していると、処理に時間はかかるしネットワーク利用量(利用料)もバカになりません。

そこで一度でも利用したパッケージはローカルにキャッシュするよう設定します。
続きを読む