20210503のLinuxに関する記事は8件です。

Mac で iTerm2 から Linux に接続して locale のエラーに遭遇したときの対処法

エラー -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory 解決策 自分の場合,iTerm2 の locale variable の自動設定機能が悪さをしていた. iTerm2 の Preferences から,Profile タブ Terminal の項目にある "Set locale variables automatically" を無効化する.
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】関数の戻り値を変数に格納する【Bash】

初めに インタラクティブな関数の戻り値を変数に格納する情報が少なかったので、備忘録的に。 Bashの関数の戻り値について Bashの関数の戻り値は終了ステータスを返却します。 正常終了だったら「0」を返却するのが一般的です。 文字列を返却 関数の戻り値に文字列を扱いたい場合は標準出力を利用するのが一般的です。でもないようです。 ※コメントで説明してくださっていますので必読。 test.sh #!/bin/bash function test () { echo "hello world" } result=$(test) echo "${result}" 実行結果 $ bash ./test.sh hello world インタラクティブな関数の場合 ここからが本題。 キーバードからの入力値を扱う関数の場合は、echoコマンドを利用して入力案内等を出す場合が多いと思います。 test2.sh #!/bin/bash function test () { echo -n "please enter a number: " read result } test echo "your number is ${result}" 実行結果 $ bash ./test2.sh please enter a number: 111 your number is 111 問題点 上記の方法には問題点があります。 キーボードからの入力値を「result」というグローバル変数に格納している部分。 関数「test」の実行結果をechoコマンドで表示していますが、 関数内の変数「result」を関数外でも扱うのは関数化の意味がないとも言えます。 ではキーボードでの入力値を標準出力で返却し、変数に格納する形にしてみます。 test3.sh #!/bin/bash function test () { echo -n "please enter a number: " read input echo "${input}" } result=$(test) echo "your number is ${result}" 実行結果 $ bash ./test3.sh 111 your number is please enter a number: 111 Bashを実行しても何も表示されないので、とりあえず数字を入力してみるとこのように表示されました。 関数の結果を変数に格納する場合、全ての標準出力が変数に格納されるので入力案内も変数に格納されてしまいます。 他の言語を経験してからBashを使うようになるともどかしい部分ですね。 標準エラーを利用する 解決方法は単純で、関数内で表示したい標準出力を全て標準エラーにしてしまえば、 変数には格納されず表示されます。 test4.sh #!/bin/bash function test () { echo -n "please enter a number: " 1>&2 read input echo "${input}" } result=$(test) echo "your number is ${result}" 実行結果 $ bash ./test4.sh please enter a number: 111 your number is 111 別の方法 標準出力全てをエラーにしていくのが煩わしいという方は、関数化してもいいかもしれません。 関数「to_error」は第1引数を標準エラーで出力してくれます。 test5.sh #!/bin/bash function to_error () { echo -n "${1}" 1>&2 } function test () { to_error "please enter a number: " read input echo "${input}" } result=$(test) echo "your number is ${result}" 実行結果 $ bash ./test5.sh please enter a number: 111 your number is 111 あまり煩わしさは変わっていませんね。 まとめ インタラクティブな関数の戻り値を変数に格納する方法をまとめてみました。 すごく一般的な関数の使い方な気がしますが、調べてみると全然情報がないのが不思議でした。 それとも聞くまでもないようなことなのでしょうか。。。 個人的にはこのやり方は力技過ぎてあまり好きではありませんが、しょうがないみたいです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

サーバ監視用のLinuxコマンドまとめ

現場でサーバ運用を行うにあたり、どのLinuxコマンドを実行するかが曖昧だったので自分用に簡単にまとめました。 topコマンド topコマンドで現在動作しているプロセスを一覧で確認できます。 1行目 稼働時間やロードアベレージなどの情報が表示されます。 項目 説明 02:23:54 現在時刻 up 3 min 稼働時間 1 user ログインユーザ数 load average: 0.36, 0.65, 0.32 実行待ちプロセス数の平均値(過去15分, 5分, 1分) 2行目 実行中のタスク(=プロセス)状態が表示されます。 ゾンビ状態のタスクとは、処理が完了しているのにメモリ上に存在しているタスクのことをいいます。 ゾンビ状態を解くためには、ユーザがkillコマンドを発行する必要があります。 項目 説明 total タスクの合計 running 実行中のタスク数 sleeping 待機中のタスク数 stopped 停止中のタスク数 zombie ゾンビ状態のタスク数 3行目 CPUとタスクの情報です。 CPU使用率を判断するときはここをみます。 項目 説明 us ユーザプロセスの使用時間 sy システムプロセスの使用時間 ni 優先度付プロセスの使用時間 id アイドル状態の時間 wa I/O待ちプロセスの使用時間 hi ハードウェア割込の使用時間 si ソフトウェア割込の使用時間 st 仮想マシンのリソース割当待ち時間 4行目 メモリの使用状況です。 バッファとキャッシュの違いは以下になります。 バッファ: もう一度アクセスされる可能性が高いデータが保存される キャッシュ: 直近でアクセスのあったデータが保存される 5行目 スワップ領域(ハードドライブ上のメモリ領域)の使用状況です。 freeコマンド freeコマンドを実行すると、topコマンドの実行結果の4, 5行目の詳細を確認することができます。 -mオプションでメガバイト表示になります。 psコマンド プロセスの状態を確認し、サーバにどのような処理が負荷をかけているのかをみることができます。 -aux -efオプションとよく一緒に使われます。 これらのオプションの実行結果は大体同じです。 オプション 表示内容 a 端末操作のプロセス u CPUやメモリの使用率など x 端末操作以外のプロセス 項目 説明 USER 実行ユーザ PID プロセス番号 %CPU プロセスのCPU使用率 %MEM プロセスのメモリ使用率 VSZ プロセスが確保した仮想メモリ領域のサイズ RSS 物理メモリ領域のサイズ TTY 標準入出力となっている端末 STAT プロセスの状態表示 START プロセスの開始時刻 TIME CPUの累積使用時間 COMMAND 実行中のプロセス killコマンド ソンビ状態のプロセスなどを強制終了させることができます。 $ kill [プロセスID] 強制終了の他にも、さまざまなシグナルを送ってプロセスの挙動を変えることができます。 例えば、kill -1 [プロセスID]を実行すると、プロセスにHUPというシグナルが送られます。 jobsコマンド 実行中のジョブを表示することができます。 $ jobs ちなみに、シェルから見たときの処理の単位をジョブ、カーネルから見たときの処理の単位がプロセスです。 シェルのコマンドラインに入力した1行が1つのジョブになります。 また、bgでジョブをバックグラウンドへ移行したり、fgでフォアグラウンドへ移行することもできます。 $ bg [ジョブ番号] $ fg [ジョブ番号] 参考資料
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ultra96/Ultra96-V2 向け Ubuntu20.04で Lima を動かしてみた(インストール編)

はじめに Lima とは Mali-400/450 用のオープンソースなグラフィックドライバです。筆者は Lima を Ultra96/Ultra96-V2 向け Ubuntu 20.04 で試験的に動かしてみました。動かすのに少々苦労したので、その方法を何回かに分けて説明します。 概要編 DRM Lima 編 DRI Lima 編 共有バッファ編 ストライド問題編 インストール編(この記事) Ubuntu Desktop ビルド編 以下の URL に Ultra96/Ultra96-V2 用に Boot Loader(U-Boot 等)、DRM Lima をイネーブルにして DRM Xlnx に修正を加えた Linux Kernel、DDX Xlnx と DRI Lima を Debian Package としてインストール済みの Ubuntu 20.04 Desktop Root File System を用意しています。この記事ではインストール方法を説明します。 https://github.com/ikwzm/ZynqMP-FPGA-Ubuntu20.04-Lima-Ultra96 Boot Loader、Linux Kernel、Ubuntu 20.04 Desktop Root File System のビルドはとても面倒です。単に使ってみたいという方はどうぞ。 なお、現時点(2021年4月)では、Ubuntu 20.04 の gnome-shell が動作するところまで確認していますが、すべてのアプリケーションで動作を確認したわけでは無いことに注意してください。 概要 Hardware Ultra96 : Xilinx Zynq UltraScale+ MPSoC development board based on the Linaro 96Boards specification. Ultra96-V2 : updates and refreshes the Ultra96 product that was released in 2018. Boot Loader FSBL(First Stage Boot Loader for Ultra96/Ultra96-V2) PMU Firmware(Platform Management Unit Firmware) BL31(ARM Trusted Firmware Boot Loader stage 3-1) U-Boot xilinx-v2019.2 (customized) Linux Kernel Version v5.4.0 linux-xlnx tag=xilinx-v2020.2 Enable Device Tree Overlay with Configuration File System Enable FPGA Manager Enable FPGA Bridge Enable FPGA Reagion Enable ATWILC3000 Linux Driver for Ultra96-V2 Enable CIFS (Common Internet File System) Enable Xilinx APF Accelerator driver Enable Xilinx APF DMA engines support Enable DRM Lima (Open-source reverse-engineered driver for Mali-4xx GPUs) Fixed DRM Xlnx to support shared buffer with DRM Lima Ubuntu20.04(focal) Desktop Root File System Installed build-essential Installed ubuntu-desktop Installed lightdm Installed ruby python python3 Installed DDX Xlnx for DRI3 and Lima Installed DRI Lima for DDX Xlnx and DRM Xlnx インストール ダウンロード githubから次のようにダウンロードしてください。現時点の最新バージョンは v2020.2-desktop-rc1 です。なお、いくつかのイメージファイルはかなり大きいので、Git LFS(Large File Storage)を使っています。お使いの環境に git-lfs がインストールされている必要があります。 shell$ git clone --depth=1 --branch v2020.2-desktop-rc1 git://github.com/ikwzm/ZynqMP-FPGA-Ubuntu20.04-Lima-Ultra96 shell$ cd ZynqMP-FPGA-Ubuntu20.04-Lima-Ultra96 shell$ git lfs pull ファイルの説明 target/Ultra96 boot/ boot.bin : Stage 1 Boot Loader uEnv.txt : U-Boot environment variables for linux boot image-5.4.0-xlnx-v2020.2-zynqmp-fpga-lima : Linux Kernel Image (use Git LFS) devicetree-5.4.0-xlnx-v2020.2-zynqmp-fpga-lima-ultra96.dtb : Linux Device Tree Blob for Ultra96 devicetree-5.4.0-xlnx-v2020.2-zynqmp-fpga-lima-ultra96.dts : Linux Device Tree Source for Ultra96 target/Ultra96-V2 boot/ boot.bin : Stage 1 Boot Loader uEnv.txt : U-Boot environment variables for linux boot image-5.4.0-xlnx-v2020.2-zynqmp-fpga-lima : Linux Kernel Image (use Git LFS) devicetree-5.4.0-xlnx-v2020.2-zynqmp-fpga-lima-ultra96v2.dtb : Linux Device Tree Blob for Ultra96-V2 devicetree-5.4.0-xlnx-v2020.2-zynqmp-fpga-lima-ultra96v2.dts : Linux Device Tree Source for Ultra96-V2 ubuntu20.04-desktop-rootfs.tgz : Ubuntu 20.04 Desktop Root File System (use Git LFS) linux-image-5.4.0-xlnx-v2020.2-zynqmp-fpga-lima_5.4.0-xlnx-v2020.2-zynqmp-fpga-lima-1_arm64.deb linux-headers-5.4.0-xlnx-v2020.2-zynqmp-fpga-lima_5.4.0-xlnx-v2020.2-zynqmp-fpga-lima-1_arm64.deb libgl1-mesa-xlnx-dri_20.2.6-0ubuntu0~20.04.1_arm64.deb : Debian Pacakge for DRI Lima xserver-xorg-video-armsoc-xilinx_1.5-alpha8_arm64.deb : Debian Package for DDX Xlnx SD-Card のフォーマット SD-Card のパーティション1を VFAT File System でファイルシステムを作ります。だいたい100MB〜300MBあれば充分です。 SD-Card のパーティション2を ext4 File System でファイルシステムを作ります。 Linux での SD-Card のフォーマットは次の URL を参照してください。 https://github.com/ikwzm/ZynqMP-FPGA-Ubuntu20.04-Lima-Ultra96/blob/main/doc/install/format-disk.md SD-Card への書き込み  0. SD-Card のマウント ここではフォーマットした SD-Card のドライブが /dev/sdc だった場合の例を示します。 shell# mount /dev/sdc1 /mnt/usb1 shell# mount /dev/sdc2 /mnt/usb2  1.1 Boot Partition のコピー(Ultra96 の場合) SD-Card のパーティション1(この例では /mnt/usb1) にtarget/Ultra96/boot/ 下のファイルをコピーします。 shell# cp target/Ultra96/boot/* /mnt/usb1  1.2 Boot Partition のコピー(Ultra96-V2 の場合) SD-Card のパーティション1(この例では /mnt/usb1) にtarget/Ultra96-V2/boot/ 下のファイルをコピーします。 shell# cp target/Ultra96-V2/boot/* /mnt/usb1  2. RootFS Partition の生成 SD-Card のパーティション2(この例では /mnt/usb2) に ubuntu20.04-desktop-rootfs.tgz の中身を展開します。 shell# tar xfz ubuntu20.04-desktop-rootfs.tgz -C /mnt/usb2  3. SD-Card のアンマウント shell# umount /mnt/usb1 shell# umount /mnt/usb2 Ultra96/Ultra96-V2のセットアップ Ultra96/Ultra96-V2 の SD-Card スロットに SD-Card をセットします。 Ultra96/Ultra96-V2 の mini Display Port コネクタにモニターを接続します。 Ultra96/Ultra96-V2 の USB ポートにキーボードとマウスを接続します。 Ubuntu 20.04 の開始 Ultra96/Ultra96-V2 の電源スイッチをオンにします。 数秒後にディスプレイモニターに Ubuntu のログイン画面が出ます。 User Name に fpga、Password に fpga を入力してログインします。 Lima の無効化 提供したシステムはあくまでも開発中のため、Lima を有効にしたことで動作しない場合が十分考えられます。この章では Lima を無効化する方法を説明します。 DRI Lima の無効化 libGL は環境変数 LIBGL_ALWAYS_SOFTWARE に 1 を設定すると DRI Lima によるレンダリングを行わずにソフトウェアによるレンダリングを行います。  アプリケーション毎の DRI Lima の無効化 ターミナルから起動するようなアプリケーションは、次の例のように環境変数 LIBGL_ALWAYS_SOFTWARE に 1 を設定して起動すると良いでしょう。 shell$ LIBGL_ALWAYS_SOFTWARE=1 glmark2  Desktop の DRI Lima の無効化 Ubuntu 20.04 の Desktop は gnome-shell を使っています。Desktop 全体で DRI Lima を無効化するためには、gnome-shell の起動時に前述の 環境変数 LIBGL_ALWAYS_SOFTWARE に 1 を設定します。 gnome-shell は systemd の機構を使って起動しています。したがって、gnome-shell に環境変数を設定するためには systemd の設定ファイルを使います。具体的には、次のような /etc/systemd/user/gnome-shell-x11.service.d/override.conf を用意します。 /etc/systemd/user/gnome-shell-x11.service.d/override.conf [Service] Environment="LIBGL_ALWAYS_SOFTWARE=1"  DDX Xlnx の DRI3 対応の無効化 もしかしたら DDX Xlnx を DRI3 対応にしたことによる問題が発生するかもしれません。その場合は、DRI Lima を無効化するだけではダメで、DDX Xlnx の DRI3 対応を止めなければなりません。その場合は、/etc/X11/xorg.conf の Section "Device" の Option "DRI" を "2" に変更します。なお、DRI Lima は DRI3 でないとアプリケーションごと落ちてしまうので、DDX Xlnx を DRI2 にした場合は、前述のように DRI Lima を無効化するか、あるいは DRI Lima をアンインストールしておく必要があります。 /etc/X11/xorg.conf Section "Device" Identifier "ZynqMP" Driver "armsoc" Option "DRI" "2" Option "NoFlip" "false" Option "Debug" "false" EndSection  DRI Lima のアンインストール libGL は対応する DRI ドライバが無ければ自動的にソフトウェアによるレンダリングを行います。いっそのこと DRI Lima をアンインストールしてしまう手もあります。 shell# dpkg --remove libgl1-mesa-xlnx-dri 備考 GUI と CUI の切り替え 提供したシステムは GUI (Ubuntu 20.04 Desktop) が起動します。CUI と GUI の切り替えは、ランレベルをブート時にカーネルにわたすパラメーターで指定することで行います。カーネルパラメーターは uEnv.txt で指定できます。  CUI でのブート uEnv.txt の linux_boot_args_systemd に "systemd.unit=multi-user.target" を指定します。 linux_boot_args_systemd=systemd.unit=multi-user.target  GUI でのブート uEnv.txt の linux_boot_args_systemd に "systemd.unit=graphical.target" を指定します。 linux_boot_args_systemd=systemd.unit=graphical.target  デフォルトでのブート デフォルトのランレベルは Ubuntu が起動してからも変更できます。デフォルトのランレベルでブートする場合は、uEnv.txt の linux_boot_args_systemd を空にします。 linux_boot_args_systemd=systemd.unit= システムコンソールの切り替え 提供したシステムはデフォルトではディスプレイモニターとキーボードがシステムコンソールになっています。Ultra96/Ultra96-V2 には USB-Serial があり、こちらをシステムコンソールにすることができます。 システムコンソールの切り替えはブート時にカーネルにわたすパラメーターで指定することで行います。カーネルパラメーターは uEnv.txt で指定できます。  シリアルポートへの切り替え uEnv.txt の linux_boot_args_console に "console=ttyPS0,115200" を指定します。ttyPS0 は Ultra96/Ultra96-V2 の USB-Serial のデバイス名です。ボーレートなどを指定することができます(例では115200)。 linux_boot_args_console=console=ttyPS0,115200  ディスプレイ+キーボードへの切り替え uEnv.txt の linux_boot_args_console に "console=tty1" を指定します。 linux_boot_args_console=console=tty1 参考 https://github.com/ikwzm/ZynqMP-FPGA-Ubuntu20.04-Lima-Ultra96
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LPIC 303 チートシート(202の範囲は除外してます)

1章 暗号化 X509証明書の拡張フィールド suobjectIdentifier…サブジェクト鍵識別子 authorityKeyIdentifier…認証局鍵識別子 basicConstraints…基本制約、証明書を作るにはCA.true KeyUsage…鍵用途 subjectAltName…公開鍵所有者の別名 extKeyUsage…鍵用途の限定 cRLDistributionPoints…CRL配布ポイント certificatePolicies…証明書の目的、発行の際の規定 authorityInfoAccess…認証局に関する追加情報のアクセス opensslコマンド…/etc/pki/tls/openssl.cnfに記載 ca…認証局の証明書を管理 ciphers…暗号スイート一覧 crl…CRLを管理 dgst…メッセージダイジェスト出力 genrsa…RSA生成 pkcs12…pkcs#12の作成、管理 req…CSRを管理 rsa…rsaの管理 rsautl…RSAでメッセージを暗号化、復号 x509…x509の管理 s_client…sslをクライアントとして動作  - …SSL,TLSを指定  -Cipher…暗号リスト指定  -connect…ホスト、ポートに接続テスト。IPもOK  -quiet…セッションと証明書情報を非表示  -servername…SNI対応ドメインを指定  -CAfile…ルート証明書指定  -CApath…サーバ証明書格納パス指定 s_server…sslをサーバとして動作  -accept…待受ポート デフォは4433  -cert…サーバ証明書指定  -certform…サーバ証明書形式。PEM(デフォ),DER  -key…秘密鍵指定  -Keyform…秘密鍵形式。PEM(デフォ),DER  -CAfile…中間CA証明書指定  -WWW…単純なwebエミュレート mod_ssl…/etc/httpd/conf.d/ssl.conf SSLEngine…SSL有効・無効 SSLProtocol…varsion指定 SSLcertificateFile…サーバ証明書を指定 SSLcertificateKeyFile…サーバ秘密鍵を指定 SSLcertificateChainFile…中間CA証明書を指定 SSLcipersuite…使用可能な暗号スイート指定 SSLCAcertificateFile…クライアント証明書を発行したCAの証明書を指定 SSLCARevocationFile…クライアント証明書のCRLを指定 SSLVerifyDepth…クライアント証明書を確認する深さ  0…自己署名されたクライアント証明書のみ  1…自己署名クライアント証明書もしくは署名されたサーバ証明書 SSLVerifyClient…認証レベルを指定  none…クライアント証明書不要  optional…クライアント証明書提示可能  require…クライアント証明書提示必要  optional_no_ca…提示可能だが必要でない SNI…名前ベースVirtualHostにアクセスする為に必要 apache 2.2.12以降から対応 OpenSSL 0.9.8以降から対応 SNIをサポートするブラウザが必要 ※SSLStrictSNIVHostCheckをONにするとSNIに対応してないブラウザからのアクセスをはじける OCSP stapling…失効状況を一定期間キャッシュする SSLUseStapling…on.off指定 SSLStaplingResponderTimeout…応答タイムアウト値 SSLStaplingReturnResponderErros…OCSPエラー応答のon.off SSLstaplingcache…キャッシュサイズ cryptsetupコマンド…ディスク暗号化 open…対象を暗号化  --type…plainモードで close…暗号化マッピング削除 resize…暗号化マッピングリサイズ status…暗号化マッピング状態表示 LUKS…LUKSモード  luksAddKey…デバイスにパス追加※8つまで  luksDump…暗号化ヘッダー情報出力  luksFormat…デバイスに暗号パーティション作成  luksClose…暗号化を閉じる  close…暗号化を閉じる(CentOS7から)  luksKillSlot…キースロット指定して暗号削除 ※0-7まで  luksDelKey…luksKillSlotと同じ  luksOpen…暗号開く  open --type luks…luksOpenと一緒 暗号化パーティションを自動マウント 1.キーファイル情報追加 dd bs=512 count=4 if=/dev/urandom of=/etc/lukskey cryptset luksaddKey /etc /etc/lukstestkey 2./etc/crypttabに以下のマウント情報を追加 luks /etc /etc/lukstestkey luks,timeout=180 マウント名、デバイス、キー、timeout等のオプション 3./etc/fstab にマウント情報追加 /dev/mapper/lukstest /mnt/lukstest ext4 defaults 1 3 cryptmountコマンド…暗号化ファイルシステム作成 -g,--generate-key…復号キー作成 -c,--change-password…復号キーパス変更 -l,--list…全ての基本情報 -m,--mount…マウント -u,--umount…アンマウント -s,--swapon…スワップ有効化 -x,--swapoff…スワップ無効化 -p,--prepare…/dev/mapperにデバイスマッピング設定 -r,--release…/dev/mapperにデバイスマッピング解除 eCryptfs…階層暗号化ファイルシステム ☆ツール一覧 ecryptfs-migrate-home…ホームDir暗号化 ecryptfs-setup-private…データDir暗号化 ecryptfs-mount-private…暗号化Dirマウント ecryptfs-umount-private…暗号化Dirアンマウント ecryptfs-unwrap-passsphrase…パスフレーズ確認 DNSSECで利用されるレコード DS…KSK公開鍵のハッシュ値を含む情報 DNSKEY…ZSK公開鍵、KSK公開鍵の情報 RRSIG…署名後のレコード情報 NSEC…レコード不在を証明する情報 NSEC3…ハッシュ化したNSEC NSEC3PARAM…NSEC3に必要な情報 dnssec-keygenコマンド…ZSK,KSK生成 -a…アルゴリズム -b…鍵サイズ -f…鍵フラグ(KSKのみ) -n…鍵のオーナータイプ -r…乱数生成元 -A…鍵が有効になる日時 -D…署名をゾーンから削除する日時 -I…再署名しない場合の取り消し日時 -K…ZSK,KSK生成場所 -P…鍵の公開日時 -R…取り消し日時(再署名されても) dnssec-signzoneコマンド…ZSK,KSKを用いて署名 -3…NSEC3生成のためのソルトを指定 -a…署名の整合性確認 -e…署名の有効期限指定 -f…署名済みゾーンファイル名指定 -o…ゾーン名指定 -x…KSKのみで署名 -K…ZSK,KSKの格納場所指定 -S…スマート署名利用 dnssec-dsfromkey…DSレコード -1…SHA-1を使用 -2…SHA-256を使用 -a…指定したアルゴリズムを使用 dnssec-settimeコマンド…鍵の時刻情報変更 DANE…DNSを利用して認証を行う TLSAレコード…TLS証明書、種類、ハッシュのアルゴリズム等の認証情報        ポート.プロトコル._ドメイン名 2章 ホストセキュリティ sysctlコマンド…/proc/sys カーネルパラメータの設定 -a,--all…全設定値表示 -w,--write…値をカーネルに反映 -p,--load…設定反映 --system…設定反映(centos7から) ulimitコマンド…/etc/security/limits.conf -a…リソース一覧 -c…coreサイズ指定 -d…データセグメント指定 -f…ファイルサイズ指定 -l…ロック可能なメモリサイズ指定 -n…オープン可能なファイル数指定 -s…スタックサイズ指定 -t…CPU時間指定 -u…プロセス数指定 -v…仮想メモリ空間指定 -H…hardlimit -S…softlimit auditctlコマンド…制御ルールの定義 -b…auditバッファ最大指定(デフォは64) -D…全auditルール削除 -l…auditルール全表示 -r…1秒当たり生成、メッセージ数上限(デフォは0で無制限) -s…オプション設定値表示 -e…audit監査有効無効  0…無効  1…有効  2…ロック -f…クリティカル時の動作  0…何もしない  1…printk出力  2…カーネルパニック auditctlコマンドファイルシステムルール -w…監査対象指定 -k…識別の為の名称指定 -p…パーミッション  r…読み取り  w…書き込み  x…実行  a…属性変更 auditctlコマンドシステムコールルール -a…追加アクション,リストをカンマ区切り指定 -d…削除アクション,リスト指定 アクション always…常に監査記録生成       never…監査記録生成しない リスト   exclude…特定のイベントを監査から除外       exit…システムコール終了時       task…子プロセスの生成時(fork),プロセスコピー時(clone)       user…ユーザー空間でのイベントフィルタ -k…識別の為の名称指定 -F…アーキテクチャ,userID,PID指定(複数だとand条件) -S…システムコールもしくはall(複数だとor条件) ausearchコマンド…audit監査ログ検索(デフォで/var/log/audit.logを検索) -f,--file…指定したファイルを検索 -ga,--gid-all…指定したGIDを検索 -i,--interpret…日時UIDをテキストに変換 -if,--input…指定したログファイルまたはログファイルを含むディレクトリを検索 -k,--key…キー名に一致するイベント検索 -m,--message…メッセージタイプに一致するイベント検索 -sv,--success…yes(成功),no(失敗)に一致するイベント検索 -ts,--start…検索範囲開始日時 -te,--end…検索範囲終了日時 -ua,--uid-all…指定UIDのイベント検索 -x,--executable…実行可能ファイルに対してイベント検索 aureportコマンド…auditレポート生成 chkrootkitスクリプト…rootkitの存在検知 rkhunterスクリプト…rootkitの存在検知、cron出来る maldetコマンド…マルウェア検知、cron出来る aideコマンド…/etc/aide.conf AIDSというホスト型IDSの設定 -C,--check…改竄チェック -D,--config-check…aide.conf 書式チェック -i,--init…DB初期化 -u,--update…改竄チェックとDB更新 --compare…[database=]と[database_new=]を比較 chageコマンド…既存のユーザーのパスポリシー変更 -d,--lastday…パス最終更新日指定(0で初回ログイン時強制的に変更) -E,--expiredate…ロックされる日時指定 -I,--inactive…パスワードの有効期限切れからロックされるまでの期間 -M,--maxdays…有効期限(-1で無期限) -m,--midays…変更可能となる日 -w,warndays…有効期限前に警告する日数 pam_cracklib.so…より複雑なポリシー dcredit…パスに含める必要がある数字の数 lcredit…パスに含める必要がある小文字の数 ucredit…パスに含める必要がある大文字の数 ocredit…パスに含める必要がある記号の数 difok…変更前のパスと異なっている必要がある文字数 minlen…最低文字数(デフォは9) retry…エラーとなるまでの試行回数 SSSD…認証情報をキャッシュ sss_cashe…sssd削除 sss_groupadd…sssdにグループ追加 sss_groupdel…sssdのグループ削除 sss_seed…ユーザー,パスをsssdキャッシュにシードする sss_useradd…sssdにユーザー追加 sss_userdel…sssdにユーザー削除 Kerberos…/etc/krb5.conf にレルム、KDCサーバ情報を追加し、kinitコマンドで使える ☆/etc/krb5.confの設定 appdefaults…Kerberos V5 アプリで使用される設定 libdefaults…Kerberos V5 ライブラリで使用される設定 capaths…非階層クロスレルム認証の設定 domain_realm…Kerberosレルムとサーバホストの対応付け plugins…プラグインモジュールの登録を管理 realms…KerberosレルムのKDCを指定 ☆Kerberosの関連コマンド kdestroy…Kerberos認証情報を破棄 klist…キャッシュされたKerberos認証情報を表示 kinit…TGT取得およびキャッシュ FreeIPA…ユーザー、サーバID、ポリシーを集中管理 ipa-server-installスクリプト…FreeIPAサーバの設定 -a,--admin-password…adminパス設定 -p,--ds-password…Directory Managerのパス設定 -n,--domain…DNSドメイン設定 -r,--realm…レルム名設定 --forwardar…DNSフォワーダ指定 --hostname…FreeIPAサーバのホスト名指定 --ip-address…FreeIPAサーバのIP指定 --mkhomedir…初回ログイン時homeDir作成 --setup-dns…DNS設定 ipa-replica-prepareスクリプト…レプリカサーバ作成前に実行 -p,--password…Directory Managerのパス設定 --ip-address…レプリカサーバのIP指定 ipa-replica-installスクリプト…レプリカサーバ作成、設定 -w,--admin-password…adminパス設定 -p,--password…Directory Managerのパス設定 --forwardar…DNSフォワーダ指定 --ip-address…FreeIPAサーバのIP指定 --mkhomedir…初回ログイン時homeDir作成 --setup-dns…DNS設定 --setup-ca…CA設定 ipa-replica-manageスクリプト…レプリカ合意の管理 connect…レプリカ合意作成 disconnect…レプリカ合意の削除 del…レプリカ合意、トポロジの削除 list…トポロジに関わるサーバ表示 ipa-client-installスクリプト…クライアントの設定 --domain…DNSドメイン名を指定 --hostname…クライアントのホスト名指定 --ip-address…クライアントIP指定 --mkhomedir…初回ログイン時homeDir作成 --realm…レルム名指定 ipaスクリプト…統合スクリプト user-add…ユーザ追加 user-find…ユーザ検索 user-show…ユーザ情報表示 group-add…グループ追加 group-add-member ※グループ --user ユーザ…グループにユーザー追加 group-show…グループ情報表示 config-mod…設定オプションの変更 dnsrecord-add…DNSレコード追加 trust-add…ドメイン信頼関係追加 3章 アクセス制御 setfaclコマンド…ACLを設定 setfattrコマンド…拡張属性を設定 -n,--name…拡張属性の 名前 指定 -v,--value…拡張属性の 新しい値 指定 -x,--remove…拡張属性の削除 getfattrコマンド…拡張属性を取得 -d,--dump…指定したパスの拡張設定を全表示 -n,--name…指定した拡張属性の値表示 拡張属性のクラス security…SElinuxなどで使用される system…カーネルに使用される trusted…rootユーザなど特定のプロセスから使用される user…一般ユーザなどの設定で使用される SElinux…/etc/selinux/config セキュアOS 疑似FSは/selinux Type Enforce…プロセスがアクセスするリソースを制限 ※パーミッションチェックの後にSElinux独自のセキュリティポリシーチェックを行う ドメイン遷移…子プロセスに最低限の権限を付与 RBAC…ロールをユーザに付与して制御 SElinuxのモード disabled…無効 enforcing…有効 permissive…アクセス制御は行わず、ポリシーに反したアクションをログ出力 SElinux以外のセキュアOS AppArmor…SUSE、設定しやすいけどセキュリティ低、アプリ制御中心 SMACK…ラベル付与してラベル組み合わせで制御、シンプル NFSv4…/etc/exports , デーモン は /usr/sbin/rpc.idmapd , デーモン設定 は /etc/idmpad.conf 新たに Kerberos、LIPKEY、SPKMが使用可能に 複数のFSをまとめて1つにみせる"疑似FS" nfs4acl…ACL設定 CIFS…Windows系ファイル共有 mount.cifsコマンド uid=arg…サーバが所有者情報を提供しない時に所有UID設定 gid=arg…サーバが所有者情報を提供しない時に所有GID設定 user=arg…接続ユーザー名 password=arg…CIFSパス ro…read-only rw…read-write sec=mode…mode setcifsaclコマンド…CIFS の ACL設定変更 -a…アクセス制御エントリを追加 -D…アクセス制御エントリを削除 -M…アクセス制御エントリを修正 -S…セキュリティ記述子のACL設定 getcifsaclコマンド…CIFS の ACL設定表示 -r…セキュリティ記述子を表示 4章 ネットワークセキュリティ FreeRADIUS…/etc/raddb/radiusd.conf pidfile…PIDを記録するパス user…linux上のuserID group…linux上のgroupID max_request_time…応答返すまでの最大秒数 cleanup_delay…再処理が実行されるまで前のパケットを保存しておく秒数 max_requests…同時処理できるパケットの最大個数 port…要求を受け付けるUDPポート RADIUSクライアント…/etc/raddb/client.conf ipaddr=…クライアントのIP指定 secret=…共有秘密鍵指定 shortname=…IP、ホスト名の代わりのエイリアス radclientコマンド…パケット送信して応答を確認する -4…IPv4で送信 -6…IPv6で送信 -t…再送信まで待つ時間 その他のRADIUSコマンド radtest…パケット送信して応答を確認する radlast…最近ユーザーを表示できる radmin…FreeRADIUSの管理ツール radiusd…デーモン radwho…ログイン中のユーザー表示 nmapコマンド…ポートスキャン -A…OSとver検知 -F…高速 -O…OS検出 -p…port指定 -T…スキャン速度 -iL…ファイルから読み込む -pn…pingしないように tsharkコマンド…WiresharkのCUI版 -f…キャプチャフィルタ式設定 -i…NWインターフェースまたはパイプ名を指定 -r…指定ファイルからパケット生データを読み込む -V…詳細 -w…指定ファイルにパケット生データを出力 -z…指定項目の統計情報 tcpdumpコマンド…トラフィックをダンプ -i…IF指定 -n…アドレスを名前変換しない -r…パケットをファイルから読み込む -s…キャプチャするサイズ(0で65535) -w…キャプチャ内容を出力 -x…パケットを16進数表示 -X…パケットを16進数とASCII表示 NDP…IPv6用、同一リンク上のルータ発見、IFへのアドレス自動設定、アドレス解決、近隣者到達可能性チェック ntopコマンド…NWトラフィックリアルタイム表示 -A,--set-admin-password…ntop管理者パス -d,--daemon…ntopデーモン起動 -i,--interface…IF指定 -p,--protocols…TCP/UDP指定 -u,--user…指定userでntop起動 -r,--refresh-time…画面更新間隔(デフォは3秒) -w,--http-server…HTTPserverのポート指定 -W,--https-server…HTTPSserverのポート指定 snortコマンド…/etc/snort/snort.conf オープンソースIDS(IPSとしても動作)、シグネチャと呼ばれるルールを作る -b…tcpdumpのフォーマットで保存 -c…設定ファイルを保存 -d…アプリケーション層のデータをダンプ -D…デーモンモード実行 -g…指定グループで実行 -h…指定NWをhomeに設定 -i…IF名を指定 -l…指定Dirにログ出力 -u…指定userでsnortを実行 -v…コンソールにパケット出力 snortシグネチャ…ルールヘッダ(ルールアクション他)とルールボディを使う ☆ルールアクション activate…該当パケットがあったら警告し、dynamicに記録 dynamic…activateから呼び出されパケット記録 alert…該当パケットがあったら警告し、記録 log…該当パケットがあったら記録 pass…該当パケットがあったら無視 snort-statコマンド…syslogを読み込み、ポートスキャンの統計情報を生成 cat ファイル | snort-stat という書式で使われる OPENVASの関連コマンド…/etc/openvas/openvassd.conf 脆弱性スキャナ openvas-adduserコマンド…OpenVAS用のuser追加 openvas-rmuserコマンド…OpenVAS用のuser削除 openvas-mkcertコマンド…証明書作成(-q…迅速に質問なしで作成) openvas-nvt-syncコマンド…openVASのセキュリティチェックを更新 openvassdコマンド…対象マシンをスキャン(-a…指定IPのみ、-c…設定ファイル指定) iptables関連コマンド iptables-saveコマンド…iptables設定ファイル保存 iptabless-restoreコマンド…iptables設定ファイルを読み込む ipsetコマンド…iptables補助ツール ☆オプション -!,-exist…エラー無視 -n,-name…既存セットの名前だけ一覧表示 -o,-output…listコマンドの出力形式 -q,-quiet…標準出力、エラー出力の抑制 -r,-resolve…セット一覧表示の際に名前解決 -s,-sorted…ソートして出力 -t,-terse…セット名、ヘッダだけ一覧表示 ☆サブコマンド add…エントリ追加 del…エントリ削除 save…指定されたセットを保存 restore…saveコマンドで作成したセット復元 list…ヘッダデータとエントリ表示 test…指定したエントリがエントリかをテスト n,create…セットとタイプ名作成 x,destroy…セット削除 ebtablesコマンド…L2 Ethernetレベルで検査ルールを設定管理 OpenVPN設定ファイル ☆/etc/openvpn/server.conf ca…CA証明書ファイル名 cert…サーバ証明書ファイル名 key…秘密鍵ファイル名 keepalive…クライアント・サーバ間が通信可能か監視する間隔 port…OpenVPNサーバのポート番号 proto…プロトコル push "route ..."…経路情報 push "dhcp-option ..."…名前解決するサーバのアドレス server…クライアントに割り振るIP範囲 ☆/etc/openvpn/client.conf ca…CA証明書ファイル名 cert…クライアント証明書ファイル名 key…秘密鍵ファイル名 proto…プロトコル cipher…暗号化方式 nobind…ポート番号をバインドしない場合設定 remote…サーバ、ポート番号設定 openvpnコマンド --daemon…デーモンとして起動 --genkey…共有秘密鍵として利用するランダムキー生成 --mlock…一時的な鍵をswap領域に書き込まない --secret…StaticKeyモード有効 --show-ciphers…暗号アルゴリズムを表示 --show-tls…全tls暗号を表示 --tls-timeout…制御パケットを再送信するタイムアウト時間 setkeyコマンド…IPSecツール、SAD(安全な通信経路を確立)、SPD(どのプロトコルでどのSAを使うか)エントリを管理 -a…期限切れ含め表示 -c…標準出力からの操作を受取 -f…指定ファイルに記載された操作を受取 -x…無限ループし、PH_KEYへ送られるメッセージをdump -D…SADエントリをdump -F…SADエントリを破棄 -c,-fでの書式 add…SAD追加 delete…SAD削除 get…SAD表示 deleteall…全SAD削除 flush…一致SAD全クリア spdadd…SPD追加 spddelete…SPD削除 recoon…/etc/racoon/racoon.conf IKEのデーモン
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

FTPとは?LinuxにWindowsでFTP接続【vsfptd】

FTP - File Transfer Protocol とは FTP(File Transfer Protocol)は2つのコンピュータがファイルの送受信をするために利用される通信プロトコル。 プロトコルというのはよく"通信のお約束ごと"と例えられます。 二人の人間が意思疎通するためには共通の言語を使わなければなりませんよね? FTPはその"言語"的な立ち位置です。2つのコンピュータがFTPで通信をやり取りすることでファイルの送受信が可能になります。 FTPはただのプロトコル(="言語")です。コンピュータが会話するためにはFTPというプロトコルだけでなくFTPサーバーが必要です。 二人の人間が会話する例でいうと、言語処理をする"脳"のような役割でしょうか。 FTPサーバーとはvsftpdなどに代表される、FTPでのファイルの送受信を可能にする"脳"です。 サーバーという言葉は多義的で、理解するのがなかなか難しいです。 ここでいうFTPサーバーとは、FTPでの通信を可能にする機能をコンピュータに提供(=Serve)してくれる助っ人、提供者(=Server)というニュアンスです。FTPサーバーをコンピュータにインストールすることでFTPでの通信が可能になります。 いまからFTPサーバーをLinux(接続される側)にインストールして、Windows(接続する側)からファイルを送受信します。 さらにいうと、Linuxでvsftpdを起動させたのち、WindowsのコマンドラインからLinuxコンピュータのIPアドレスを指定してftp接続します。ftp接続が成功するとWindowsのコマンドラインからファイルの送受信を命令できるようになります。 vsftpdのインストール Linux(ここではKali Linux)でvsftpdをインストールします。Ubuntuでも同じです。 sudo apt install vsftpd CentoOSなどはaptではなくyumだった気がする。(yum -y install vsftpd) インストールできないときは sudo apt update sudo apt upgradeを試してもう一度トライ。 vsftpdの設定 vsftpdの設定、つまりFTPサーバーの設定をします。重要です。 ftp接続は基本的に、接続する側(WIndows)がされる側(Linux)のパブリックorプライベートIPアドレスと、ユーザー名(Linuxコンピュータのユーザー名)とパスワード(Linuxコンピュータのユーザーのパスワード)の3つが揃っていて成り立ちます。 Linuxのユーザー名やパスワードは使用者本人がわかっているでしょうから特に言及しません。 Linuxが同じネットワーク内にあるならLinuxのプライベートIPを指定します。そうでないならばパブリックIPを指定します。 パブリックIPアドレスはLinuxのWebブラウザで"what is my global ip"と検索し、ヒットした任意のサイトにアクセスして明らかになります。 設定する項目は - ipv4での接続を許可するか(ほとんどの場合YESでしょう) - 匿名(anonymous)ユーザーとしてのログインを許可するか - ファイルの送信(書き込み)を許可するか - どのユーザーとしてのログインを許可しないか 上記のうち上から3つはvsftpd.confというファイルを編集して設定、残り一つはftpusersというファイルを編集して設定します。 vsftpd.confファイルの編集 vsftpd.confファイルはLinuxファイルシステムにおいて /etc/vsftpd/vsftpd.conf もしくは/etc/vsftpd.confにあります。 すきなテキストエディタを使って編集します。ここではvimをつかいます。 vim /etc/vsftpd.conf listen=YES #listen_ipv6=YES anonymous_enable=YES write_enable=YES デフォルトの設定から上記の変数だけを書き換えました。 listen=YES IPv4での接続を許可します。 これに伴いlisten_ipv6=YESをコメントアウト(#)して無効にしました。<- 重要 さらにanonymous_enable=YESで匿名ユーザー(ユーザー名:anonymous,パスワード:なし)としてのログインを許可しました。 write_enable=YESでファイルの書き込み、アップロードを許可します。 ftpusersの編集 ftpusersは/etc/vsftpd/ftpusersもしくは/etc/ftpusersにあります。 このファイルに記されたユーザーとしてのログインを禁止します。 私はrootユーザーとしてのログインを許可したいので vim /etc/ftpusers # /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5). #root <= コメントアウトしてrootユーザーとしてのログインを 許可 user1 user2 user3 ... なおこのファイルにもともと記されていないユーザーはもともとログインできるので特にするべきことなしです。 vsftpdの再起動 設定の変更を反映させるため再起動します。 sudo systemctl restart vsftpd sudo systemctl status vsftpd特にエラーがなければよし。 Linuxを起動したとき毎回自動でvsftpdを起動するためには sudo systemctl enable vsftpd これでLinuxがFTPサーバーに化けました。 Windowsから接続 コマンドラインかPowershellを開きます。 ftp <宛先のIP>で接続(パブリックかプライベートかに十分注意) Usernameを要求されるので先程設定したログインできるユーザーを入力します。 anonymousでログインした場合にはpasswordを入力せずEnterでOK。 ftp>   こんな感じになれば成功。 接続を終了するときはquit。 ファイルをアップロードするときはput c:\絶対パスを指定 ファイルを取得するときは"get ファイル名"。 ここまでくれば、あとは必要に応じてググって解決できるはずです。 はじめてftp接続するときはとても興奮したのを覚えています。 間違っているところがあればコメントで指摘してくれると助かります。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

FTPとは?LinuxにWindowsでFTP接続【vsftpd】

FTP - File Transfer Protocol とは FTP(File Transfer Protocol)は2つのコンピュータがファイルの送受信をするために利用される通信プロトコル。 プロトコルというのはよく"通信のお約束ごと"と例えられます。 二人の人間が意思疎通するためには共通の言語を使わなければなりませんよね? FTPはその"言語"的な立ち位置です。2つのコンピュータがFTPで通信をやり取りすることでファイルの送受信が可能になります。 FTPはただのプロトコル(="言語")です。コンピュータが会話するためにはFTPというプロトコルだけでなくFTPサーバーが必要です。 二人の人間が会話する例でいうと、言語処理をする"脳"のような役割でしょうか。 FTPサーバーとはvsftpdなどに代表される、FTPでのファイルの送受信を可能にする"脳"です。 サーバーという言葉は多義的で、理解するのがなかなか難しいです。 ここでいうFTPサーバーとは、FTPでの通信を可能にする機能をコンピュータに提供(=Serve)してくれる助っ人、提供者(=Server)というニュアンスです。FTPサーバーをコンピュータにインストールすることでFTPでの通信が可能になります。 いまからFTPサーバーをLinux(接続される側)にインストールして、Windows(接続する側)からファイルを送受信します。 さらにいうと、Linuxでvsftpdを起動させたのち、WindowsのコマンドラインからLinuxコンピュータのIPアドレスを指定してftp接続します。ftp接続が成功するとWindowsのコマンドラインからファイルの送受信を命令できるようになります。 vsftpdのインストール Linux(ここではKali Linux)でvsftpdをインストールします。Ubuntuでも同じです。 sudo apt install vsftpd CentoOSなどはaptではなくyumだった気がする。(yum -y install vsftpd) インストールできないときは sudo apt update sudo apt upgradeを試してもう一度トライ。 vsftpdの設定 vsftpdの設定、つまりFTPサーバーの設定をします。重要です。 ftp接続は基本的に、接続する側(WIndows)がされる側(Linux)のパブリックorプライベートIPアドレスと、ユーザー名(Linuxコンピュータのユーザー名)とパスワード(Linuxコンピュータのユーザーのパスワード)の3つが揃っていて成り立ちます。 Linuxのユーザー名やパスワードは使用者本人がわかっているでしょうから特に言及しません。 Linuxが同じネットワーク内にあるならLinuxのプライベートIPを指定します。そうでないならばパブリックIPを指定します。 パブリックIPアドレスはLinuxのWebブラウザで"what is my global ip"と検索し、ヒットした任意のサイトにアクセスして明らかになります。 設定する項目は - ipv4での接続を許可するか(ほとんどの場合YESでしょう) - 匿名(anonymous)ユーザーとしてのログインを許可するか - ファイルの送信(書き込み)を許可するか - どのユーザーとしてのログインを許可しないか 上記のうち上から3つはvsftpd.confというファイルを編集して設定、残り一つはftpusersというファイルを編集して設定します。 vsftpd.confファイルの編集 vsftpd.confファイルはLinuxファイルシステムにおいて /etc/vsftpd/vsftpd.conf もしくは/etc/vsftpd.confにあります。 すきなテキストエディタを使って編集します。ここではvimをつかいます。 vim /etc/vsftpd.conf listen=YES #listen_ipv6=YES anonymous_enable=YES write_enable=YES デフォルトの設定から上記の変数だけを書き換えました。 listen=YES IPv4での接続を許可します。 これに伴いlisten_ipv6=YESをコメントアウト(#)して無効にしました。<- 重要 さらにanonymous_enable=YESで匿名ユーザー(ユーザー名:anonymous,パスワード:なし)としてのログインを許可しました。 write_enable=YESでファイルの書き込み、アップロードを許可します。 ftpusersの編集 ftpusersは/etc/vsftpd/ftpusersもしくは/etc/ftpusersにあります。 このファイルに記されたユーザーとしてのログインを禁止します。 私はrootユーザーとしてのログインを許可したいので vim /etc/ftpusers # /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5). #root <= コメントアウトしてrootユーザーとしてのログインを 許可 user1 user2 user3 ... なおこのファイルにもともと記されていないユーザーはもともとログインできるので特にするべきことなしです。 vsftpdの再起動 設定の変更を反映させるため再起動します。 sudo systemctl restart vsftpd sudo systemctl status vsftpd特にエラーがなければよし。 Linuxを起動したとき毎回自動でvsftpdを起動するためには sudo systemctl enable vsftpd これでLinuxがFTPサーバーに化けました。 Windowsから接続 コマンドラインかPowershellを開きます。 ftp <宛先のIP>で接続(パブリックかプライベートかに十分注意) Usernameを要求されるので先程設定したログインできるユーザーを入力します。 anonymousでログインした場合にはpasswordを入力せずEnterでOK。 ftp>   こんな感じになれば成功。 接続を終了するときはquit。 ファイルをアップロードするときはput c:\絶対パスを指定 ファイルを取得するときは"get ファイル名"。 ここまでくれば、あとは必要に応じてググって解決できるはずです。 はじめてftp接続するときはとても興奮したのを覚えています。 間違っているところがあればコメントで指摘してくれると助かります。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

OCS Inventory-NG2.9をCentOS7へインストール

本記事について インベントリ情報収集を効率的にできないかなーとツールを探していたときに、 インベントリ収集として必要な情報はある程度取れそう。 収集した情報をAPIで情報を取得できる。 他の管理ツールとの連携が可能。 となかなか使い勝手が良さそうだったため、使って検証してみようと思い、実際にCentOS7へのOCS inventory-NGをインストールしてみてやり方をまとめました。 なお、基本的なインストール方法について以下のWikiを参考に実施しています。 https://github.com/OCSInventory-NG/Wiki OCS Inventory-NGとは IT資産管理を目的として、サーバやデバイスのインベントリ情報を収集するOSS。 収集の方式としては対象となる機器にAgentをインストールしておこなうものであり、Windows/Linux/Unix等といったマルチプラットフォームで利用できる。 また、エージェントがインストールできない機器についてもSNMPによるスキャンが有効となっているため、大抵の機器は対応可能と思われる。 エージェントを収集対象へインストールしてAgentがXML形式でサーバへ送る。サーバ⇔エージェント間の通信はHttp/Httpsを利用する。 収集した情報について、GLPIやOTRSなどのツールのとの連携も可能。 検証環境 SELinux、firewalldは事前に無効化済み。 ※今回は検証のため、セキュリティに関する設定については考慮外とする。 バージョン CentOS 7 ApacheHttpd 2.4.6 php 5.6 MariaDB 10.5.9 OCS Inventory-NG 2.9 必要パッケージのインストール OCSInventoryの動作に必要なパッケージをインストールする。 yum install httpd epel-release yum install perl-XML-Simple perl-Compress-Zlib perl-DBI perl-DBD-MySQL perl-Net-IP perl-SOAP-Lite perl-Archive-Zip perl-Mojolicious perl-Plack perl-XML-Entities perl-Switch perl-Apache-DBI MariaDBのインストール/初期設定 MySQL or MariaDB version 4.1.0 or higher with InnoDB engine active. Mysql version upper than 5.5 are not supported but may work. ※動作要件にMariaDB4.1以上であれば良いと記載があるので、最新版のMariaDBを使用する。 また、今回の用途は検証であるためmysql_secure_installationについては実施しない。 レポジトリのインストール # curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash MariaDBのインストール # yum install MariaDB-server MariaDB-client 初期設定 ・MariaDBの起動及び自動起動を設定 # systemctl enable mariadb # systemctl start mariadb ・rootユーザのパスワード設定 # mysql -u root MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password'); ※passwordの部分にrootユーザのパスワードを記載する。 ・OCSInventory用DBセットアップ MariaDB [(none)]> CREATE DATABASE ocsweb; ・OCSInventory用DBユーザ作成 MariaDB [(none)]> CREATE USER 'ocs'@'localhost' IDENTIFIED BY 'ocs'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON ocsweb.* TO 'ocs'@'localhost' WITH GRANT OPTION; ・設定反映 MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit PHP5.6のインストール # yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm # yum install --disablerepo=* --enablerepo=epel,remi,remi-safe,remi-php56 php php-mbstring php-gd php-mysql php-soap php-xml # php -v PHP 5.6.40 (cli) (built: Apr 28 2021 13:55:10) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies OCS Inventoryのインストール 以下のURLにあるOCSNG_UNIX_SERVER-2.9.tar.gzをダウンロードしてサーバへ配置する。 ※/root直下で作業することとする。 https://github.com/OCSInventory-NG/OCSInventory-ocsreports/releases # cd ~ # tar xvzf OCSNG_UNIX_SERVER-2.9.tar.gz # cd OCSNG_UNIX_SERVER-2.9 インストール用のスクリプトsetup.shがあるためそれを実行する。 # ./setup.sh setup.shを実行すると、ApacheやMariaDB等といったOCSInventoryを動作するためのパッケージが入っているかのチェック及び、設定のデプロイについて聞かれる。 基本的にはデフォルト設定で問題ないと思われる。(yもしくは何も入力せずEnterでOK) インストールが終わると、以下のメッセージが表示される。 Setup has created a log file /root/OCSNG_UNIX_SERVER-2.9/ocs_server_setup.log. Please, save this file. If you encounter error while running OCS Inventory NG Management server, we can ask you to show us its content ! DON'T FORGET TO RESTART APACHE DAEMON ! Enjoy OCS Inventory NG ;-) メッセージにもある通り、忘れずにApacheを再起動しておく。 systemctl restart httpd サービス自動起動設定 各サービスが自動起動するように設定しておく。 systemctl enable httpd systemctl enable mariadb その他設定 ・/var/lib/ocsinventory-reportsに書き込み可となってないとエラーとなったため、事前に付与しておく。 # ls -ld /var/lib/ocsinventory-reports drwxr-xr-x. 8 root root 87 May 2 23:30 /var/lib/ocsinventory-reports # chmod 777 /var/lib/ocsinventory-reports # ls -ld /var/lib/ocsinventory-reports drwxrwxrwx. 8 root root 87 May 2 23:30 /var/lib/ocsinventory-reports 初期設定 ブラウザからhttp://[Server_IP]/ocsreports/へアクセスする。 データベース、テーブル、インデックスなどを作成できるユーザーを使用してMySQLデータベースサーバーに接続するための情報を入力する。 事前に設定しておいた各パラメータを入力して、Sendボタンを押下する。 設定値 MySQL login root MySQL password password Name of Database ocsweb MySQL HostName localhost ※画像のWARNINGについてはphp-xmlがインストールされており、/var/lib/ocsinventory-reportsに書き込み可になっていれば表示されません。 Click here to enter OSC-NG GUIを押下する。 ログイン画面が表示される。言語設定で日本語を選択肢し、デフォルトユーザ情報(ユーザ名:admin、パスワード:admin)を入力してログインする。 ログイン完了。セキュリティ警告が出ているが後述にて警告を解除する方法を記載する。 セキュリティ警告メッセージについての設定変更 OCS Inventoryへログイン後、表示されている警告メッセージに対処するための設定を変更する。 install.phpを削除する。 # rm /usr/share/ocsinventory-reports/ocsreports/install.php DBアクセスユーザの変更 OCS Inventory公式としては、インストール時に作成したユーザocsは実際に利用する際には、使用せずに別に新しいユーザの使用を推奨するとのこと。 そのためここでは、新しくDB接続用にuserというユーザを作成して、DB接続設定の変更を実施する。 ※セキュリティを考慮するなら、ocsは権限削除や、アカウント自体を削除したほうが良いかもしれない。 ・ユーザ作成 # mysql -u root MariaDB [ocsweb]> select user,host from mysql.user; +-------------+-----------+ | User | Host | +-------------+-----------+ | mariadb.sys | localhost | | mysql | localhost | | ocs | localhost | | ocsuser | localhost | | root | localhost | +-------------+-----------+ 5 rows in set (0.001 sec) MariaDB [(none)]> use ocsweb; MariaDB [ocsweb]> CREATE USER 'user'@'localhost' identified by 'password'; MariaDB [ocsweb]> GRANT ALL PRIVILEGES ON `ocsweb` .* TO 'user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION; MariaDB [ocsweb]> select user,host from mysql.user; +-------------+-----------+ | User | Host | +-------------+-----------+ | mariadb.sys | localhost | | mysql | localhost | | ocs | localhost | | root | localhost | | user | localhost | +-------------+-----------+ 5 rows in set (0.001 sec) ・/usr/share/ocsinventory-reports/ocsreports/dbconfig.inc.phpの修正 ※修正前 define("COMPTE_BASE","user"); define("PSWD_BASE","password"); ※修正後 define("COMPTE_BASE","user"); define("PSWD_BASE","password"); ・/etc/httpd/conf.d/z-ocsinventory-server.confの修正 ※修正前 # User allowed to connect to database PerlSetEnv OCS_DB_USER ocs # Password for user PerlSetVar OCS_DB_PWD ocs ※修正後 # User allowed to connect to database PerlSetEnv OCS_DB_USER user # Password for user PerlSetVar OCS_DB_PWD password ・httpd再起動 systemctl restart httpd 今後やること WindowsやLinuxへAgentをインストールして実際に情報収集してみる。 関連記事 OCS Inventory-NG 2.9のインストール時エラーまとめ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む