Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Linux入門講座
Search
機械音痴の鯖防人
May 11, 2018
Technology
1
590
Linux入門講座
長崎県立大学情報セキュリティ学科の学生を対象として開催した、Linux入門講座のスライド資料です。
機械音痴の鯖防人
May 11, 2018
Tweet
Share
More Decks by 機械音痴の鯖防人
See All by 機械音痴の鯖防人
Cyber研春合宿LT「Google先生となかよし」
serverboujin
1
170
Other Decks in Technology
See All in Technology
Discord とビルダー&チャットボットの使い方 / How to use Discord and Builder & Chatbots
ks91
PRO
0
130
少数チームで挑む: SwiftUI, TCA, KMPを用いた 新規動画配信アプリ 「ABEMA Live」の開発について
tomu28
0
550
2024/4/26 コンピュータ歴史博物館解説告知
toshi_atsumi
0
200
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
6
3.5k
開発生産性向上サービスを作るFindyが自分たちで開発生産性を爆上げした組織づくりの歩み / Findy's path to boosting its own development productivity 2024-04-17
ma3tk
3
350
GraphQL 成熟度モデルの紹介と、プロダクトに当てはめた事例 / GraphQL maturity model
mh4gf
6
500
Hands-on / Kaname Frusawa / Cloud Compare Users Meetup 2024 at University of Tokyo on April 17
paraworld
2
480
The CloudCompare project by Dr. Daniel Girardeau-Montaut
kentaitakura
0
510
Databricks における 『MLOps』
databricksjapan
2
140
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
0
150
DevOpsDays History and my DevOps story
kawaguti
PRO
8
1.6k
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
750
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
243
20k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
Unsuck your backbone
ammeep
662
57k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
12
1.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
658
120k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
124
32k
Mobile First: as difficult as doing things right
swwweet
216
8.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
15
2.6k
Optimizing for Happiness
mojombo
370
69k
Designing for Performance
lara
601
67k
Debugging Ruby Performance
tmm1
70
11k
Transcript
Linux入門講座 第0羽 ~Linux入門~ 長崎県立大学Cyber研究会
参考資料 © 2018 Cyber Tech Study Group All Rights Reserved.
2 https://img.ips.co.jp/ij/13/1113101068/1113101068-520x.jpg
Linuxとは • WindowsやMac OSと同じコンピュータのオペレーティングシステム • UNIXライクで,多くのUNIXコマンドやUNIXソフトが使用可能 • Windowsなどとは違い,基本無償で利用できる(OSS) • Linuxには複数の種類があり,「ディストリビューション」と呼ばれる
• ディストリビューションにより,動作するソフトやコマンドに多少差がある © 2018 Cyber Tech Study Group All Rights Reserved. 3
Linuxディストリビューション(ディストロ) • Red Hat系 • Debian系 • Slackware系 • Arch
Linux • Gentoo Linux など © 2018 Cyber Tech Study Group All Rights Reserved. 4
Red Hat系 • Fedora • Red Hat Enterprise Linux •
Fedoraのテスト済み安定版 • サポートが受けられる.商用.有償(むっちゃ高い) • CentOS • RHELのクローン • サポートなし.無償 • サーバ用OSとして採用されることが多い など © 2018 Cyber Tech Study Group All Rights Reserved. 5
Debian系 • Debian GNU/Linux • Ubuntu • 商用サポートが受けられる.無償 • 割とWindowsライクなのでLinux初心者にも使いやすい
• KNOPPIX など © 2018 Cyber Tech Study Group All Rights Reserved. 6
Slackware系 •省略 •(ほぼ死んでる) © 2018 Cyber Tech Study Group All
Rights Reserved. 7
Arch Linux & Gentoo Linux • ここでは説明しません • 気になる人は •
自分で調べて • 自分で触ってみて • そして挫折してください • 玄人向け(?) © 2018 Cyber Tech Study Group All Rights Reserved. 8
迷った人は… • CentOS • Ubuntu あたりを選んでおけば無難. © 2018 Cyber Tech
Study Group All Rights Reserved. 9
Linuxのデスクトップ環境 • 「LinuxはCUIオンリー」だと思ってる人が一定数いそう? • 実はかなりしっかりとしたデスクトップ環境を提供している • ディストロによって対応するデスクトップ環境が異なる • 自分の好みによって選択すればいい •
GNOME(ノーム,グノーム) • Unity • KDE • Xfce • LXDE など © 2018 Cyber Tech Study Group All Rights Reserved. 10
スーパーユーザへの昇格 • Linuxのユーザには「一般ユーザ」と「スーパーユーザ(root)」がある • 一般ユーザよりも多くの権限を与えられている • rootでログインすることは推奨されていない →必要に応じて一般ユーザから昇格する © 2018
Cyber Tech Study Group All Rights Reserved. 13
スーパーユーザへの昇格 $ sudo コマンド 例)$ sudo shutdown –h now •
プロンプトが#の場合はsudoする必要はない © 2018 Cyber Tech Study Group All Rights Reserved. 14
システム終了/再起動 • シャットダウン $ sudo shutdown –h now • 再起動
$ sudo shutdown –r now • ログアウト $ exit ※デスクトップ環境上のTerminalで実行するとTerminal終了 © 2018 Cyber Tech Study Group All Rights Reserved. 15
コマンドの使い方がわからなくなった… • helpオプションを使う 例)$ shutdown --help • manコマンドを使う 例)$ man
shutdown • ググる 例)[Linux shutdown コマンド]で検索 © 2018 Cyber Tech Study Group All Rights Reserved. 16
Linux入門講座 第1羽 ~ファイルとディレクトリ~ 長崎県立大学Cyber研究会
ファイルの種類 • 通常ファイル • 通常のファイル.主にこれを操作する • ディレクトリ • フォルダのようなもの.ファイルを格納することができる •
リンクファイル • 特殊ファイル • デバイスファイルなどの特殊なファイル © 2018 Cyber Tech Study Group All Rights Reserved. 18
ファイル名 • 「拡張子」という概念が存在しない最高の世界 • hoge.txtの様にしてもしなくてもよい • .(ドット)から始まるファイル/ディレクトリ名は隠しファイル/ディレクトリ • ファイル名に使える文字は英数字とアンダーバー(_)とハイフン(-)とドット(.) •
スペースは使わない(アンダーバー等で代用) • ファイル名は大文字小文字で区別される 例)HOGE.txt Hoge.txt hoge.txt はすべて別ファイル © 2018 Cyber Tech Study Group All Rights Reserved. 19
Linuxのディレクトリ構造 • 右の図のような感じ • 一番上のディレクトリを「ルートディレクトリ」 • ルートディレクトリは「/」で表す • 今いるディレクトリを「カレントディレクトリ」 または「ワーキングディレクトリ」という
• カレントディレクトリは「.」で表す • カレントディレクトリの1つ上のディレクトリは「..」で表す © 2018 Cyber Tech Study Group All Rights Reserved. 20 / home root hoge hoge. txt
ホームディレクトリ • ログインユーザのためのディレクトリ • /homeの下にユーザの数だけ存在 • rootユーザのホームディレクトリは/root • ホームディレクトリが存在しないユーザもある •
自分のホームディレクトリは「~」で表す • 右の例では ~/hoge.txt © 2018 Cyber Tech Study Group All Rights Reserved. 21 / home hoge hoge. txt ~
パス • ファイルやディレクトリの住所のようなもの • 絶対パスと相対パスがある © 2018 Cyber Tech Study
Group All Rights Reserved. 22
絶対パス • 一番上のディレクトリから一つずつたどる表記の仕方 • 右の例では /home/hoge/hoge.txt © 2018 Cyber Tech
Study Group All Rights Reserved. 23 / home root hoge hoge. txt
相対パス • カレントディレクトリを起点にたどる表記の仕方 • /root/hogeをカレントディレクトリとすると,右の例では ../../home/hoge/hoge.txt © 2018 Cyber Tech
Study Group All Rights Reserved. 24 / home root hoge hoge. txt hoge . .. ../.. ../../home ../../home/hoge
絶対パスと相対パス • どちらのほうが良いということはない • カレントディレクトリなどを規準に使い分けることで短く表記できる © 2018 Cyber Tech Study
Group All Rights Reserved.
ファイルの一覧表示 • ls(LiSt)コマンド • さまざまなオプションがある(追々説明する) • Windowsのdirコマンドに相当 • 絶対パス/相対パスでディレクトリを指定 •
ディレクトリ名を省略するとカレントディレクトリのファイル一覧を表示 $ ls [オプション] [ディレクトリ名] © 2018 Cyber Tech Study Group All Rights Reserved. 26
ファイルの一覧表示 $ ls © 2018 Cyber Tech Study Group All
Rights Reserved. 27 作業
カレントディレクトリの確認 • pwd(Print Working Directory)コマンド $ pwd © 2018 Cyber
Tech Study Group All Rights Reserved. 28
カレントディレクトリの確認 $ pwd © 2018 Cyber Tech Study Group All
Rights Reserved. 29 作業
カレントディレクトリの変更 • 適切なタイミングで適切なディレクトリに移動することによって 作業効率が上がる • cd(Change Directory)コマンド • 絶対パス/相対パスで対象ディレクトリを指定できる •
cd - で1つ前,cd .. で1つ上のディレクトリに移動 • cd ~ または cd でホームディレクトリに移動する $ cd [対象ディレクトリ名] © 2018 Cyber Tech Study Group All Rights Reserved. 30
カレントディレクトリの変更 $ cd .. $ pwd $ cd – $
pwd $ cd /var/log/ $ pwd $ ls © 2018 Cyber Tech Study Group All Rights Reserved. 31 作業
ファイルの中身表示 • cat(conCATenate)コマンド • ファイルの先頭から末尾までを一気に表示 • ただ表示するだけ • lessコマンド •
ファイルを開きっぱなしにして自由にファイルを閲覧可能 • Spaceキーでページ送り/Ctrl+Bでページ戻り • ↑キー/Kキーで1行上へ 下キー/Jキーで1行下へ • Qキーで終了 • moreコマンド • lessコマンドとほぼ同じ © 2018 Cyber Tech Study Group All Rights Reserved. 32
ファイルの中身表示 $ cat /etc/passwd $ less /etc/passwd © 2018 Cyber
Tech Study Group All Rights Reserved. 33 作業
ファイルのコピー • cp(CoPy)コマンド • ファイルをコピーする $ cp コピー元ファイル名 コピー先ファイル名 $
cp コピー元ファイル名 コピー先ディレクトリ © 2018 Cyber Tech Study Group All Rights Reserved. 34
ファイルのコピー $ cp /etc/passwd /tmp (または $ cp /etc/passwd /tmp/passwd)
$ ls /tmp © 2018 Cyber Tech Study Group All Rights Reserved. 35 作業
ファイル名の変更・ファイルの移動 • mv(MoVe)コマンド • 通常はファイルやディレクトリの移動に使うコマンドだが,ファイル名の変更 にも使う • ファイル名の変更 $ mv
変更前ファイル名 変更後ファイル名 • ファイルの移動 $ mv 移動元ファイル名 移動先ファイル名 $ mv 移動元ファイル名 移動先ディレクトリ © 2018 Cyber Tech Study Group All Rights Reserved. 36
ファイル名の変更・ファイルの移動 • ファイルの移動 $ mv /tmp/passwd . (または $ mv
/tmp/passwd ./passwd) • ファイル名の変更 $ mv passwd userslist © 2018 Cyber Tech Study Group All Rights Reserved. 37 作業
ファイルの削除 • rm(ReMove)コマンド • ファイルを削除する • -iオプションを付けることで削除前に確認メッセージが表示される $ rm [オプション]
ファイル名 © 2018 Cyber Tech Study Group All Rights Reserved. 38
ファイルの削除 $ rm –i userslist ~~~~~? y ←y応答 © 2018
Cyber Tech Study Group All Rights Reserved. 39 作業
空ディレクトリの作成・削除 • 空ディレクトリの作成 • mkdir(MaKe DIRectory)コマンド(Windowsと同じ) • -pオプションを付けると複数階層のディレクトリを作成 例) $mkdir
hoge $ mkdir hoge/fuga • 空ディレクトリの削除 • rmdir(ReMove DIRectory)コマンド(Windowsと同じ) • 空のディレクトリを削除する • -pオプションを付けると複数階層のディレクトリを削除 © 2018 Cyber Tech Study Group All Rights Reserved. 40 OR $ mkdir –p hoge/fuga
空ディレクトリの作成・削除 • 空ディレクトリの作成 $ mkdir hoge $ ls $ mkdir
–p hoge/hoge/fuga $ tree (事前に $ sudo yum install tree) • 空ディレクトリの削除 $ rmdir –p hoge/hoge/fuga © 2018 Cyber Tech Study Group All Rights Reserved. 41 作業 hoge hoge fuga
空ではないディレクトリの削除 $ rm –r ディレクトリ名 © 2018 Cyber Tech Study
Group All Rights Reserved. 42
Linux入門講座 第2羽 ~viの使い方~ 長崎県立大学Cyber研究会
はじめるまえに... © 2018 Cyber Tech Study Group All Rights Reserved.
2
viとは • テキストエディタ • viを使ってテキスト編集することが多い 特徴 • Escキーを酷使する • j,
k, l, mでカーソル移動 • 慣れるまで訓練が必要だが,慣れると高速にテキスト編集が可能 © 2018 Cyber Tech Study Group All Rights Reserved. 4
Vim • viの進化版 • 基本的にはVimを使う • viのコマンドをそのまま使うことができる • viには無かった「ビジュアルモード」がある •
Vimには低機能な「Vim-tiny」や 高機能な「Vim-enhanced」などがある © 2018 Cyber Tech Study Group All Rights Reserved. 5
viの起動 $ vi ファイル名 © 2018 Cyber Tech Study Group
All Rights Reserved. 6
コマンドモードと挿入(インサート)モード • コマンドモード • viを操作するためのコマンドを受け付けるモード • vi起動直後はコマンドモードになっている • i(Insert)キー等で挿入モードへ移行 •
挿入モード • 文字を入力してテキストを編集するモード • それ以上でもそれ以下でもない. • Escキーでコマンドモードへ移行 © 2018 Cyber Tech Study Group All Rights Reserved. 7
コマンドモード→挿入モード • 「i」でカーソル位置に挿入 • 「a」でカーソル位置の1つ後ろに挿入 • 「I」で行の先頭に挿入 • 「A」で行の末尾に挿入 ←便利!
• 「o」でカーソル位置の下に空行を挿入して挿入モード • 「O」でカーソル位置の上に空行を挿入して挿入モード © 2018 Cyber Tech Study Group All Rights Reserved. 8
カーソル移動 © 2018 Cyber Tech Study Group All Rights Reserved.
9 j k h l
カーソル移動 • 「^」で行の先頭に移動 • 「$」で行の末尾に移動 © 2018 Cyber Tech Study
Group All Rights Reserved. 10
ページ送り/ページ戻り • ページ送り Ctrl+F • ページ戻り Ctrl+B © 2018 Cyber
Tech Study Group All Rights Reserved. 11
行のジャンプ • 「gg」で先頭の行に移動 • 「G」で末尾の行に移動 • 「:行番号」または「行番号G」で指定行にジャンプ © 2018 Cyber
Tech Study Group All Rights Reserved. 12
文字・行の削除 • 「削除」ではなく,正確には「切り取り」 • 「x」でカーソル位置の文字を切り取り • 「X」でカーソル位置の1つ前の文字を切り取り • 「dd」でカーソル位置の1行を切り取り ©
2018 Cyber Tech Study Group All Rights Reserved. 13
文字・行の貼り付け • 切り取った文字・行は1回分だけバッファに保存される • バッファから貼り付け • 「p」(Paste)でカーソル位置の1つ後ろに貼り付け • 「P」でカーソル位置に貼り付け ©
2018 Cyber Tech Study Group All Rights Reserved. 14
文字列検索 • 「/検索文字列」で下方向に検索 © 2018 Cyber Tech Study Group All
Rights Reserved. 15
もとに戻す・やり直し • 「u」(Undo)で1つ前の状態に戻る • Ctrl+R(Redo)で1つ先の状態に行く © 2018 Cyber Tech Study
Group All Rights Reserved. 17 u Ctrl+R
テキストの保存・viの終了 • viの終了 • コマンドモードで「:q」 • テキストを上書き保存 • コマンドモードで「:w」 •
名前を付けて保存 • コマンドモードで「:w ファイル名」 • テキストを保存して終了 • コマンドモードで「:wq」 • 変更を破棄して終了 • コマンドモードで「:q!」 © 2018 Cyber Tech Study Group All Rights Reserved. 18
viに慣れる © 2018 Cyber Tech Study Group All Rights Reserved.
19
VIM Adventures • https://vim-adventures.com © 2018 Cyber Tech Study Group
All Rights Reserved. 20 作業
PacVim • VimでPacMan(?) $ sudo yum install ncurses-devel $ git
clone https://github.com/jmoon018/PacVim.git $ cd PacVim $ sudo make install © 2018 Cyber Tech Study Group All Rights Reserved. 21 作業
vimtutor • VIM教本 $ vimtutor © 2018 Cyber Tech Study
Group All Rights Reserved. 22 作業
Linux入門講座 第4羽 ~シェルとシェルスクリプト~ 長崎県立大学Cyber研究会
ターミナルエミュレータとは • 端末エミュレータ,端末,ターミナルとも呼ばれる • いわゆる「端末」,「Terminal」である • SSHやTelnetによるものもターミナルエミュレータに含まれる • みなさんの環境ではGNOME端末(GNOME-terminal) ©
2018 Cyber Tech Study Group All Rights Reserved. 3
シェル(shell)とは • シェルとは、コンピュータのOS(オペレーティングシステム)を構成するソフトウェアの 一つで、利用者からの操作の受け付けや、利用者への情報の提示などを担当 するもの。 http://e-words.jp/w/シェル.html • ターミナルエミュレータの「シェル」という機能を利用して オペレーティングシステム(Linuxではカーネル)に指示を与える(みたいな?) ©
2018 Cyber Tech Study Group All Rights Reserved. 4
登場人物の関係性(シェルの機能) © 2018 Cyber Tech Study Group All Rights Reserved.
5 >_ カーネル シェル ターミナル ユーザからの要求(コマンド) 結果を出力(表示) ユーザのコマンドを解釈して Kernelに対し処理要求 実行結果を返す(渡す)
シェルの種類 • sh,bash,csh,zsh,fish...など種類はたくさん • Linuxの標準シェルはbash. • 標準がbashだからといってbashを使わなければならないということはない • 界隈(?)ではzshやfishが人気 •
今回を含め「Linux入門講座」ではbashを扱うこととする © 2018 Cyber Tech Study Group All Rights Reserved. 6
標準入出力 • シェルに限らず,Linux上で実行されるプログラムには 標準入力(stdin),標準出力(stdout),標準エラー出力(stderr)が ある • ファイルディスクリプタという識別子があり,標準入力には0,標準出力に は1,標準エラー出力には2が割り当てられている • デフォルトではキーボードからの入力が標準入力で,標準出力・標準エ
ラー出力の両方が出力される © 2018 Cyber Tech Study Group All Rights Reserved. 7 $ echo “stdout” ←標準入力 stdout ←標準出力 $ ls /hoge > /dev/null ←標準入力 ls: cannot access /hoge: No such file or directory ←標準エラー出力 (標準出力を表示しないようにし,標準エラー出力のみ画面に出力)
メタキャラクタ(metacharacter) • メタ文字とは、その文字本来の意味とは異なり、プログラムで特別な意味 を持たせた文字のことである。 (https://www.weblio.jp/content/メタ文字) © 2018 Cyber Tech Study
Group All Rights Reserved. 8
シェルのメタキャラクタ(一部) メタキャラクタ 読み方(一例) 機能 * アスタリスク 0文字以上の任意の文字列 ? クエスチョンマーク 任意の1文字
[] ブラケット []内の任意の1文字 \ バックスラッシュ \(バックスラッシュ)直後のメタキャラクタの打ち消し “ “ / ‘ ‘ ダブル/シングルクォート クォーテーション内をただの文字列とする © 2018 Cyber Tech Study Group All Rights Reserved. 9 重要 ワイルドカード
$ ls /r* $ ls /h??e $ ls /[d-e]* シェルのメタキャラクタ
© 2018 Cyber Tech Study Group All Rights Reserved. 10 実践
シェルで使える便利な機能 © 2018 Cyber Tech Study Group All Rights Reserved.
11
コマンドのバックグラウンド実行 • &(アンパサンド)をコマンドの後につけるとバックグラウンドで実行 © 2018 Cyber Tech Study Group All
Rights Reserved. 12
コマンドのバックグラウンド実行 $ firefox くらべてみる $ firefox & © 2018 Cyber
Tech Study Group All Rights Reserved. 13 実践
1行で複数のコマンドを実行 • コマンド1; コマンド2 コマンド1を実行した後に,実行結果にかかわらずコマンド2を実行 • コマンド1 && コマンド2 コマンド1が正常終了した後にコマンド2を実行
• コマンド1 || コマンド2 コマンド1が異常終了した後にコマンド2を実行 © 2018 Cyber Tech Study Group All Rights Reserved. 14
1行で複数のコマンドを実行 $ date; pwd $ ls /etc && echo “/etc
found” $ ls /hoge || echo “/hoge not found” © 2018 Cyber Tech Study Group All Rights Reserved. 15 実践
パイプ • コマンドの実行結果(出力)を別のコマンドの標準入力にする • コマンドA | コマンドB *渡す先のコマンドの代表にless/more, grep, sedなどがある
© 2018 Cyber Tech Study Group All Rights Reserved. 16 重要
パイプ $ cat /etc/passwd | less(moreでもよい) $ cat /etc/passwd |
grep root (この場合,grep root /etc/passwdでいけちゃう…汗) ※grepコマンドはテキストファイルまたは出力を対象に文字列検索をするコ マンド © 2018 Cyber Tech Study Group All Rights Reserved. 17 実践
リダイレクト(>) • 実行結果を標準出力ではなくファイルに出力する • コマンド > ファイル名 • コマンド >>
ファイル名 • >と>>の違いは上書き(>)or追記(>>) © 2018 Cyber Tech Study Group All Rights Reserved. 18 重要
リダイレクト(>) $ echo “stdout” ←標準入力 stdout ←標準出力 $ echo “stdout”
> stdout $ cat stdout stdout ←標準出力 $ echo “stdout” >> stdout $ cat stdout stdout ←標準出力 stdout © 2018 Cyber Tech Study Group All Rights Reserved. 19 実践
リダイレクト(>) • 標準出力 > ファイル 以外もできる • 例 • 標準出力
> 標準エラー出力 • 標準エラー出力 > 標準出力 • 標準エラー出力 > ファイル • 標準出力 > /dev/null など */dev/null(nullデバイス)にリダイレクトすると出力されない © 2018 Cyber Tech Study Group All Rights Reserved. 20
リダイレクト(>) $ ls /hoge > /dev/null ←標準入力 ls: cannot access
/hoge... ←標準エラー出力 © 2018 Cyber Tech Study Group All Rights Reserved. 21 実践
発展:標準エラー出力のリダイレクト • 標準エラー出力を捕まえたい時がいつか必ず来る(!) $ ls /hoge 2> stderr *”2”は標準エラー出力を表す(0:標準入力 1:標準出力)
標準出力と標準エラー出力両方捕まえたいときは $ ls /hoge >& output など © 2018 Cyber Tech Study Group All Rights Reserved. 22 おすすめのページ:https://qiita.com/laikuaut/items/e1cc312ffc7ec2c872fc
リダイレクト(<) • リダイレクトには入力のリダイレクトもある • コマンド < ファイル名 • ファイルの中身を入力として渡してコマンドを実行できる ©
2018 Cyber Tech Study Group All Rights Reserved. 23
シェルスクリプト • シェルのスクリプト © 2018 Cyber Tech Study Group All
Rights Reserved. 24
スクリプトとは コンピュータプログラムの種類の一つで、機械語への変換や実行可能ファイ ルの作成などの過程を省略または自動化し、ソースコードを記述したら即座 に実行できるようなプログラムのことをスクリプトという。そのようなプログラムを 記述できるプログラミング言語のことをスクリプト言語という。 © 2018 Cyber Tech Study
Group All Rights Reserved. 25 http://e-words.jp/w/スクリプト.html
シェルスクリプトとは • つまり,シェルのスクリプト.(オイ • シェルスクリプトとは、複数の処理をまとめて行う(バッチ処理)ときに使われ る、OSのシェルが直接解釈・処理できるスクリプト。 • めっちゃ噛み砕いて言うと, コマンドをつらつらファイルに書いておくとその通り実行してくれる. •
#から始まる部分はコメントになる(C言語とかと違うので注意) © 2018 Cyber Tech Study Group All Rights Reserved. 26 http://e-words.jp/w/シェルスクリプト.html
シェルスクリプトを書いてみよう $ vi hello.sh © 2018 Cyber Tech Study Group
All Rights Reserved. 27 実践 #!/bin/bash #使用するシェル # これはコメント行です echo “hoge” echo “fuga” echo “Hello World”
シェルスクリプトを書いてみよう • 書いたスクリプトに実行権限を付加する $ chmod +x hello.sh • シェルスクリプトを実行する $
./hello.sh © 2018 Cyber Tech Study Group All Rights Reserved. 28 実践
変数の定義 変数名=“文字列” ←シングルクォート 変数名=数値 変数名=`コマンド` ←バッククォート または 変数名=$(コマンド) =の前後にスペースを入れないこと ©
2018 Cyber Tech Study Group All Rights Reserved. 29
もうちょっとシェルスクリプトを書いてみよう $ vi hello.sh © 2018 Cyber Tech Study Group
All Rights Reserved. 30 実践 #!/bin/bash whoami=`whoami` # =$(whoami)でも良い echo “こんにちは${whoami}さん“ # $whoamiでも良い echo “現在は`date`です“ # ..$(date)..でも良い
もっとシェルスクリプトを書いてみよう • シェルスクリプトを実行する $ ./hello.sh © 2018 Cyber Tech Study
Group All Rights Reserved. 31 実践
シェルスクリプト • もちろんif文やwhile文も使える • 「コンピュータに処理をさせたいけどプログラムを書くほどではない…」という時 にシェルスクリプトを書くと良い © 2018 Cyber Tech
Study Group All Rights Reserved. 32
© 2018 Cyber Tech Study Group All Rights Reserved. 33
以上! お疲れ様でした!
始める前に・・・ 前回の補足 © 2018 Cyber Tech Study Group All Rights
Reserved. 1
Linux入門講座 第5羽 ~ソフトウェアとパッケージ~ 長崎県立大学Cyber研究会
高級言語(高水準言語)とは • 自然言語(人間が普段使う言語,主に英語)に近いプログラミング言 語. • 私たちが普段使う「プログラミング言語」という言葉はこれを指す. • 対義語は低級言語(低水準言語). • 機械(コンピュータ)が理解しやすいプログラミング言語.
• 機械語やアセンブリ言語などが含まれる. © 2018 Cyber Tech Study Group All Rights Reserved. 4
プログラムの実行手順 プログラム 機械語 実行 © 2018 Cyber Tech Study Group
All Rights Reserved. 5 コンパイルとは 高級言語で書かれたプログラムを,低水 準な言語に変換すること.機械語やアセ ンブラに変換される.
© 2018 Cyber Tech Study Group All Rights Reserved. 6
プ ロ グ ラ ム ア セ ン ブ ラ 機 械 語 コンパイル 逆コンパイル
他人が作ったプログラムを実行するには • 基本的にはプログラムをもらってきて実行すれば良い • でも人によって環境は違う→環境によって正しく動作しない可能性 • きちんと動作するように環境を整える設定をする • configureスクリプトが必要になる(後述) ©
2018 Cyber Tech Study Group All Rights Reserved. 8
tar.gzファイル ファイル群をtar形式でひとまとめにする ↓ ひとまとめにしたものをgzipで圧縮 UNIX向けではよくtar.gzでソフトウェアのソースが配布される © 2018 Cyber Tech Study
Group All Rights Reserved. 9
tar.gz形式のソースからのインストール tar.gzを展開 configureスクリプトを実行し,環境をチェック 必要な設定等を記述したMakefileを生成 Makefileにそってコンパイル 生成された実行ファイルを設置,インストール © 2018 Cyber Tech
Study Group All Rights Reserved. 10 tar xzvf xxxx.tar.gz cd xxxx && ./configure make make install
ソフトウェアのソースインストール $ wget https://www.python.org/ftp/python/3.6.6/Python- 3.6.6.tgz wgetが入っていなければ $ curl -O https://www.python.org/ftp/python/3.6.6/Python-
3.6.6.tgz $ tar xzvf Python-3.6.6.tgz $ cd ./Python-3.6.6 © 2018 Cyber Tech Study Group All Rights Reserved. 11 実践
tar.gz形式での展開・圧縮 • 展開 $ tar xzvf xxxx.tar.gz • 圧縮 $
tar czvf xxxx.tar.gz ※.tar形式にしてgzipで圧縮という方法もあるがおすすめしない © 2018 Cyber Tech Study Group All Rights Reserved. 12
configureスクリプトを見てみる $ less ./configure © 2018 Cyber Tech Study Group
All Rights Reserved. 13 実践
ソフトウェアのソースインストール $ make ←コンパイル $ sudo make install ←インストール または
$ make && sudo make install © 2018 Cyber Tech Study Group All Rights Reserved. 14 実践
うまくいきましたか?? • ソースからのインストールはちょっと大変 • configureでいろいろチェックして設定したりしているが不十分 • ソフトウェアには依存関係があり,ソフトウェアが動作するのに必要なソフト ウェアがある • 依存関係を解決しないとソフトウェアがインストールできない(これが大変)
© 2018 Cyber Tech Study Group All Rights Reserved. 15
パッケージ • Linuxではソフトウェアをパッケージという単位で管理している • パッケージには実行ファイル,設定ファイル,ドキュメントが含まれていて, 基本的にはコンパイル等の手順を経ずにソフトウェアをインストールできる • ファイルのフォーマットはDebian系では.deb,Red Hat系では.rpm •
Red Hat系ではパッケージからインストールされるソフトウェアは RPM(RPM Package Manager)で管理される (Debian系ではAPT(Advanced Packaging Tool),他ディストロ ではYaSTやpacmanなど) © 2018 Cyber Tech Study Group All Rights Reserved. 16
.rpm形式でのソフトウェアインストール $ wget http://ftp.iij.ad.jp/pub/linux/fedora/epel/7/x86_64/Package s/e/epel-release-7-11.noarch.rpm ←1行 $ sudo rpm -ivh
./epel-release*.rpm © 2018 Cyber Tech Study Group All Rights Reserved. 17 実践
.rpm形式でのソフトウェアインストール • コンパイル等の手間がなくなりインストールが格段に楽 • ただ,これでもやはり依存関係がネックになる © 2018 Cyber Tech Study
Group All Rights Reserved. 18
YUM • RPM(RPM Package Manager)のパッケージを管理するメタパッケージ 管理システム…(笑) • パッケージの管理は基本的にRPMで行われているが, インストール/アンインストール時に依存関係を検査してくれる •
インストール時に依存関係により必要なパッケージは同時にインストールさ れる • Red Hat系でソフトウェアをインストールする際は基本的にはYUMを使う ←依存関係を満たすようにインストールするため © 2018 Cyber Tech Study Group All Rights Reserved. 19
YUMでのインストール $ sudo yum install wireshark $ sudo yum –y
install wireshark-gnome *インストールしたいパッケージがあれば好きにインストールしてみてください Java, Python, Vim, Emacs, Z shell... © 2018 Cyber Tech Study Group All Rights Reserved. 20 実践
YUMでパッケージの検索 $ sudo yum search 検索文字列 © 2018 Cyber Tech
Study Group All Rights Reserved. 21
YUMでのアンインストール $ sudo yum remove パッケージ名 © 2018 Cyber Tech
Study Group All Rights Reserved. 22
あのソフトウェア,インストールしてたっけ…? $ rpm –qa | grep 検索文字列 © 2018 Cyber
Tech Study Group All Rights Reserved. 23
参考URL • C言語がコンパイルされて実行可能になるまでの流れ http://aoking.hatenablog.jp/entry/20121109/1352457273 • tarコマンド、gzipコマンドの使い方 https://qiita.com/sinpey_g2/items/13819ebe57a46090f06 4 • 「./configure」、「make」、「make
install」の意味 http://www.lovebug.jp/index.php?「.%2Fconfigure」、「make 」、「make%20install」の意味 © 2018 Cyber Tech Study Group All Rights Reserved. 24
© 2018 Cyber Tech Study Group All Rights Reserved. 25
以上! お疲れ様でした!
Linux入門講座 第6羽 ~ファイルシステム~ 長崎県立大学Cyber研究会
デバイスファイル • Linuxでは接続されているデバイスを「ファイル」として扱う • 「デバイスファイル」 • デバイスを扱うためのインターフェース • /dev以下に自動的に生成 ©
2018 Cyber Tech Study Group All Rights Reserved. 3
デバイスファイルの確認 $ ls /dev © 2018 Cyber Tech Study Group
All Rights Reserved. 4 実践
デバイスファイルの例 • s ・・・SCSI接続のデバイス • sd ・・・SCSI接続のHDD • sr ・・・SCSI接続のデータ用光学ドライブ
• lp ・・・プリンタ • tty ・・・端末 © 2018 Cyber Tech Study Group All Rights Reserved. 5
擬似デバイス • /dev/null …このデバイスに書き込まれたデータを捨てる擬似デバイス • /dev/zero …ヌル文字(0x00)を生成する擬似デバイス • /dev/random …可変長の擬似乱数文字列を生成する擬似デバイス
• /dev/urandom …可変長の擬似乱数文字列を生成する擬似デバイス © 2018 Cyber Tech Study Group All Rights Reserved. 6 めっちゃ面白い…
ハードディスク • /dev/sda …1つ目のハードディスク • /dev/sda1 …1つ目の基本パーティション • /dev/sda2 …2つ目の基本パーティション
• /dev/sda3 …3つ目の基本パーティション • /dev/sda4 …4つ目の基本パーティション • /dev/sda5 …1つ目の論理パーティション • /dev/sda6 …2つ目の論理パーティション … • /dev/sdb …2つ目のハードディスク … © 2018 Cyber Tech Study Group All Rights Reserved. 7
パーティション(partition)とは • ハードディスクの記憶領域の、分割された個々の領域 • パーティショニング(partitioning)…パーティションを作成すること © 2018 Cyber Tech Study
Group All Rights Reserved. 8
パーティションの確認 © 2018 Cyber Tech Study Group All Rights Reserved.
9 実践
パーティションの種類 • 基本パーティション • 1つのHDDに1つ以上必要 • 1つのHDDに最大4つ作成可能 • 拡張パーティション •
基本パーティションのうち1つだけを拡張パーティションにすることができる • ファイルシステムを作成することはできない • 拡張パーティションの中に複数の論理パーティションを作成可能 • 論理パーティション • 拡張パーティションに作成されるパーティション • /dev/sd?5以降で識別される © 2018 Cyber Tech Study Group All Rights Reserved. 10
パーティションの作成 # fdisk /dev/sda © 2018 Cyber Tech Study Group
All Rights Reserved. 11 実践
ファイルシステムとは • OSがファイルを管理する枠組み • パーティションの中にファイルシステムを作成することによって ファイルを配置することができる © 2018 Cyber Tech
Study Group All Rights Reserved. 12
ファイルシステムの種類 • ext2…一昔前のLinux標準ファイルシステム • ext3…ext2を改良し機能強化したファイルシステム • ext4…ext3を改良したファイルシステム • xfs…高速かつ堅牢なファイルシステム •
NTFS…Windowsのファイルシステム • FAT…デジカメなどでよく使われているファイルシステム • ISO9660…CD-ROMで使われているファイルシステム • UDF…DVDで使われているファイルシステム © 2018 Cyber Tech Study Group All Rights Reserved. 13 引用:1週間でLPICの基礎が学べる本 第2版 pp.235
ファイルシステムの作成 • mkfs(MaKe FileSystem) • mkfs [-t ファイルシステムの種類] デバイスファイル名 •
-tオプションを省略するとext2でファイルシステムが作成される © 2018 Cyber Tech Study Group All Rights Reserved. 14
ファイルシステムの作成 # mkfs -t ext4 /dev/sda? (mkfs.ext4 /dev/sda?でも多分同じ) © 2018
Cyber Tech Study Group All Rights Reserved. 15 実践
デバイスのマウント • マウントすることによって、デバイスを通常のディレクトリと同じように扱える • mountコマンド • mount デバイスファイル マウントポイント ©
2018 Cyber Tech Study Group All Rights Reserved. 16
デバイスのマウント・アンマウント マウント # mkdir /test # mount /dev/sda? /test アンマウント
# umount /test © 2018 Cyber Tech Study Group All Rights Reserved. 17 実践
/etc/fstabについて • マウントに関する情報が記述されている • 書かれている定義に従ってOS起動時などに自動的にマウントされる • 1列目…デバイス名 • 2列目…マウントポイント •
3列目…ファイルシステムの種類 • 4列目…マウントオプション • 5列目…dump(バックアップ)するか否か 0(しない)/1(する) • 6列目…fsckチェックを行うか否か 0(しない)/1,2…(する) © 2018 Cyber Tech Study Group All Rights Reserved. 18
ファイルシステムの自動マウント # vi /etc/fstab 以下を追記 /dev/sda? /test ext4 defaults 0
0 # shutdown –r now # mount マウント確認 # ls /test 中身確認 © 2018 Cyber Tech Study Group All Rights Reserved. 19 実践 async / auto / dev / exec / nouser / rw / suid
© 2018 Cyber Tech Study Group All Rights Reserved. 20
以上! お疲れ様でした!
Linux入門講座 第7羽 ~プロセスとジョブ~ 長崎県立大学Cyber研究会
プロセス(process)とスレッド(thread) • プロセス… コンピュータ上で動作中のプログラムの実行単位 メモリリソースはプロセス1つずつに対して割り当てられる • スレッド… 1つのプロセス中に1つ以上のスレッドが含まれており、 CPUリソースはスレッド1つずつに対して割り当てられる このような仕組みにより、並列処理などによる高速化が可能となっている
© 2018 Cyber Tech Study Group All Rights Reserved. 3
プログラム, プロセス, スレッド © 2018 Cyber Tech Study Group All
Rights Reserved. 4 プログラム 実行 プロセス CPU プロセス プロセス プロセス ・・・ ス レ ッ ド ス レ ッ ド ・・・ ス レ ッ ド ス レ ッ ド ・・・ ス レ ッ ド ス レ ッ ド ・・・
実行中のプロセスの確認 • ps コマンド • 主なオプション • a …他のユーザのプロセスも表示 •
u …ユーザ名等も表示 • x …端末から実行されたプロセス以外のプロセスも表示 • 主な表示項目 © 2018 Cyber Tech Study Group All Rights Reserved. 5 USER プロセスを実行中のユーザ START プロセスの実行開始日時 PID プロセスID TIME プロセスの実行時間 STAT プロセスのステータス COMMAND 実行コマンド
実行中のプロセスの確認 $ ps $ ps aux | less © 2018
Cyber Tech Study Group All Rights Reserved. 6 実践
実行中のプロセスの確認 $ pstree $ top © 2018 Cyber Tech Study
Group All Rights Reserved. 7 実践
プロセスの終了(プロセスを◦す) • 勝手に終了しないプロセスもある • プロセスを終了させる方法 • Ctrl + C •
kill/killall コマンド • シグナルをプロセスに送信して、 プロセスを終了させたり一時停止させたりする © 2018 Cyber Tech Study Group All Rights Reserved. 8 シグナルID シグナル名 プロセスの動作 9 KILL 強制終了 15 TERM 終了(デフォルト) 18 CONT 再開 19 STOP 一時停止
killコマンド • プロセスにシグナルを送信するコマンド $ kill [シグナルID] プロセスID $ kill –s
[シグナル名] プロセスID プロセスの終了 $ kill 28000 $ kill -15 28000 $ kill –s TERM 28000 プロセスの強制終了 $ kill –s KILL 28000 © 2018 Cyber Tech Study Group All Rights Reserved. 9
killコマンド $ firefox & ↓ firefoxのプロセスIDを調べる ↓ killコマンドを使ってfirefoxを終了(not 強制終了)させる ↓
firefoxが終了したか確認する © 2018 Cyber Tech Study Group All Rights Reserved. 10 実践
killallコマンド • プロセスIDではなくプロセス名で指定できる • プロセスIDを調べなくて良いので便利だが、 同名のプロセスが複数動いている場合はすべてに適用される 例) $ killall firefox
© 2018 Cyber Tech Study Group All Rights Reserved. 11
© 2018 Cyber Tech Study Group All Rights Reserved. 12
以上! お疲れ様でした!
Linux入門講座 第8羽 ~ネットワーク~ 長崎県立大学Cyber研究会 1年後期開講「コンピュータネットワーク」を受講しており、 その内容を理解していることを前提として進めます
物理層:NIC • NIC(Network Interface Card) …コンピュータに搭載され、Ethernetなどに接続するためのポート(RJ45な ど)を提供し、コンピュータネットワークでコンピュータ間通信を行うためのイン ターフェースカード 無線LANに接続するためのものはワイヤレスNIC(WNIC)などとも呼ばれる •
仮想マシンの場合は、仮想NIC(vNIC)がゲストOSに割り当てられ、 外部との通信はホストOSの物理NIC経由で行われる © 2018 Cyber Tech Study Group All Rights Reserved. 3
NICの確認 $ lspci | grep ‘Ethernet’ ↑は一例。 大抵はNIC認識の確認は不要。 © 2018
Cyber Tech Study Group All Rights Reserved. 4
データリンク層:MACアドレス • MAC(Media Access Control)アドレス …NICに(原則として)一意に割り当てられている物理アドレス • MACアドレスが変更可能な機器もあるが、 データリンク内でアドレスが重複すると正常な通信ができなくなる •
00:00:5E:00:53:4D の形式 © 2018 Cyber Tech Study Group All Rights Reserved. 5
MACアドレスの確認 (例えば) $ ip link show $ ip l ©
2018 Cyber Tech Study Group All Rights Reserved. 6
ネットワーク層:IPアドレス • IP(Internet Protocol)アドレス …TCP/IPのIPにおける、ノード(ホスト)を識別するためのアドレス • 192.0.2.251 の形式 © 2018
Cyber Tech Study Group All Rights Reserved. 7
IPアドレスの確認 (例えば) $ ip addr show $ ip a ©
2018 Cyber Tech Study Group All Rights Reserved. 8
ARPテーブル • ARP(Address Resolution Protocol) …IPアドレスからMACアドレスを解決するためのプロトコル • ARPテーブル …ホストが解決した、IPアドレスとMACアドレスとの対応表 •
ARPテーブルの確認 $ ip neighbor show $ ip n (または)$ arp –a ARPテーブルの編集も可能 © 2018 Cyber Tech Study Group All Rights Reserved. 9
ルーティングテーブル • ルーティングテーブル …個々のネットワークの宛先への経路の一覧表 …コンピュータやルータはこのルーティングテーブルをもとにパケットの送り先 を決定する • ルーティングテーブルの確認 $ ip
route show $ ip r (または)$ route ルーティングテーブルの編集も可能 © 2018 Cyber Tech Study Group All Rights Reserved. 10
ネットワーク設定の変更 • 設定ファイルは/etc/sysconfig/network-scripts/ifcfg-* • NetworkManagerが動作している時は設定ファイルを直接編集しない ほうが良い • 編集するときはNM_CONTROLLED=noを設定 • nmcli,
nmtui等を使う © 2018 Cyber Tech Study Group All Rights Reserved. 11
ネットワークに関連するファイル群(Red Hat系) • /etc/hosts …IPアドレスとホスト名の対応を記述 • /etc/resolv.conf …利用するDNSサーバを記述 • /etc/sysconfig/network
…ネットワークに関する基本的な設定を記述 • /etc/sysconfig/network-scripts/* …ネットワークインターフェースごとのネットワーク設定を記述 NetworkManagerが有効の時は、基本的に触らない方が無難。 /etc/hostsあたりは触ることがあるかも? © 2018 Cyber Tech Study Group All Rights Reserved. 12
ネットワーク設定の変更 # nmtui © 2018 Cyber Tech Study Group All
Rights Reserved. 13 実践
LISTENポートの確認 • どのプロセスがどのポートを使用しているか確認 © 2018 Cyber Tech Study Group All
Rights Reserved. 14
LISTENポートの確認 -l …LISTENしているものを表示, -n …名前解決しない LISTENしているTCPのポートを名前解決せず表示 $ netstat –tln $
ss –tln © 2018 Cyber Tech Study Group All Rights Reserved. 15 実践
余談:サンプル用アドレス・ドメイン • サンプル用として使用できるIPアドレスやドメインなどが RFC(Request for Comments)で規定されている • サンプル用IPアドレス • 192.0.2.0/24
• 198.51.100.0/24 • 203.0.113.0/24 123.456.789.012 はダメ!!(IPアドレスは0~255) • サンプル用ドメイン • example.com • example.jp • ドメイン名例.jp(xn--eckwd4c7cu47r2wf.jp) など © 2018 Cyber Tech Study Group All Rights Reserved. 16 ↑punycode
© 2018 Cyber Tech Study Group All Rights Reserved. 17
以上! お疲れ様でした!
Linux入門講座 第9羽 ~セキュリティ~ 長崎県立大学Cyber研究会
質問大歓迎! 例→ © 2019 Cyber Tech Study Group All Rights
Reserved. 2
情報セキュリティの3要素 •A … •I … •C … © 2019 Cyber
Tech Study Group All Rights Reserved. 3 Availability (可用性) Integrity (完全性) Confidentiality (機密性)
CIAとAIC • C (Confidentiality) が先か、A (Availability) が先か →優先度の違い • 対象となるシステムによって異なる
• 機密性と可用性はトレードオフの関係になりやすい • 私は、多くの場合は可用性を優先すべきだと考える © 2019 Cyber Tech Study Group All Rights Reserved. 4
情報セキュリティの7要素 • Availability (可用性) • Integrity (完全性) • Confidentiality (機密性)
• Authenticity (真正性) • Accountability (責任追跡性) • Reliability (信頼性) • Non-repudiation (否認防止) © 2019 Cyber Tech Study Group All Rights Reserved. 6
© 2019 Cyber Tech Study Group All Rights Reserved. 7
情報セキュリティの3要素 あるいは7要素すべてを確実にすることが 情報セキュリティ
主なセキュリティ製品 • Firewall • IDS / IPS • WAF •
UTM , NGFW • DPI • EDR • マルウェア対策ソフト などなど © 2019 Cyber Tech Study Group All Rights Reserved. 8
Linuxセキュリティの基本 • パーティショニング …適切なパーティショニングによりデータの破壊などの被害を最小限に • OS・ソフトウェアのアップデート …アップデートを行い常に最新の状態に • サービス・ファイアウォールの設定 …動作させるサービスや、許可する通信は最小限に
• パーミッション …適切なパーミッションを設定しデータの機密性・完全性を保つ • ユーザアカウント …ユーザのパスワードを適切に設定し権限は最小限に © 2019 Cyber Tech Study Group All Rights Reserved. 9
Linuxのファイアウォール実装 • ファイアウォールというより「パケットフィルタ」…? • Netfilter …Linuxカーネルに実装されているパケット処理の機能 …パケットフィルタやNATなどの機能をもつ • iptables/ip6tables…Netfilterの管理ツール •
firewalld…Netfilterの管理ツール • ufw(Uncomplicated Firewall)…iptablesの管理ツール。Ubuntu向け • ほかにもいろいろ © 2019 Cyber Tech Study Group All Rights Reserved. 10
ファイアウォールの基本 •デフォルトの動作は「破棄」 •ルールはなるべく「厳しく」 •ただし必要な通信は確実に通す © 2019 Cyber Tech Study Group
All Rights Reserved. 11
Firewalld • firewalldの設定にはfirewall-cmdコマンドを使う • 「ゾーン」に対してルールを設定し、それを各NWインターフェースに適用 • ルールを変更できる「ゾーン」と変更できない「ゾーン」がある • 9つの「ゾーン」があらかじめ設定されている(ユーザ定義も可能) •
block…外部からの接続を遮断。変更不可 • dmz…DMZ用 • drop…外部からの通信をすべて遮断。変更不可 • external…外部ネットワーク接続用 • home…自宅用 • internal…内部ネットワーク用 • public…publicな用途 • trusted…すべての通信を許可。変更不可 • work…職場用 © 2019 Cyber Tech Study Group All Rights Reserved. 12 https://www.server-memo.net/centos-settings/firewalld/firewalld.html
firewalldの状態確認 • ステータスの確認 # firewall-cmd --state または # systemctl status
firewalld • ゾーンの設定の確認 # firewall-cmd [--zone=ゾーン名] --list-all • すべてのゾーンの設定の確認 # firewall-cmd --list-all-zone © 2019 Cyber Tech Study Group All Rights Reserved. 13
firewalldのゾーンの設定 • ゾーンへの許可するサービスの追加 # firewall-cmd --zone=ゾーン名 --add-service=サービス名 • ゾーンに設定されているサービスの削除 #
firewall-cmd --zone=ゾーン名 --remove-service=サービス名 • ゾーンへの許可するポートの追加 # firewall-cmd --zone=ゾーン名 --add-port=ポート番号/プロトコル • ゾーンに設定されているポートの削除 # firewall-cmd --zone=ゾーン名 --remove-port=ポート番号/プロト コル • デフォルトのゾーンの変更 # firewall-cmd --set-default-zone=ゾーン名 © 2019 Cyber Tech Study Group All Rights Reserved. 14
firewalldのルールの恒久的な設定 • ポート・サービス追加時にコマンドに”--permanent“をつけ、 ルール設定後に # firewall-cmd --reload © 2019 Cyber
Tech Study Group All Rights Reserved. 15
SELinux SELinux(Security Enhanced Linux) • ユーザーと管理者がアクセス制御をより細かく制御できるようにする、 Linuxに対するセキュリティ機能強化のためのモジュール • つまり…Linuxが侵入されてしまった際に、 適切なアクセス制御により被害を最小限にするための機能
• rootだろうがなんだろうがアクセス制御 © 2019 Cyber Tech Study Group All Rights Reserved. 16 http://selinuxproject.org/page/Main_Page
SELinuxの強制アクセス制御(MAC) • SELinuxで扱われている強制アクセス制御のモデル • Type Enforcement(TE) …プロセス毎の権限の最小化 • Role-Based Access
Control(RBAC) …役割ベースのアクセス制御 • Multi Category Security(MCS) …カテゴリ毎のアクセス制御 • Multi Level Security(MLS) …セキュリティレベルによるアクセス制御 © 2019 Cyber Tech Study Group All Rights Reserved. 17 ※MAC…Mandatory Access Control アクセス制御については「認証とアクセス制御」にて
SELinuxの設定 © 2019 Cyber Tech Study Group All Rights Reserved.
18
SELinuxの状態の確認・変更 • SELinuxには3つのモードがある • Enforcing …有効。禁止された動作を止める • Permissive …有効。禁止された動作を止めず、ログに記録 •
Disabled …無効 • Permissiveに設定→ログを確認しながら動作テスト→ →ルールのチューニング→Enforcingに設定 © 2019 Cyber Tech Study Group All Rights Reserved. 19
SELinuxの状態の確認・変更 • 動作モードの確認 $ getenforce • 動作モードの変更(Enforcing→Permissive) # setenforce 0(シャットダウンまで有効)
または /etc/selinux/configの ”SELINUX=enforcing”を”SELINUX=permissive”に変更して再起動 © 2019 Cyber Tech Study Group All Rights Reserved. 20
chkrootkit • chkrootkit…Linuxのrootkit検出ツール • rootkitとは、コンピュータへの侵入後に、遠隔操作などのために必要な いろいろなツールをパッケージ化したもの バックドア用のプログラム • 定期的に実行し、rootkitが設置されていないかチェックする ©
2019 Cyber Tech Study Group All Rights Reserved. 21
IDS / IPS • IDS(Intrusion Detection System)…侵入検知システム • IPS(Intrusion Prevention
System)…侵入防止システム • ホスト型(HIDS,HIPS)とネットワーク型(NIDS,NIPS)がある • ルールに従って、不正な通信やファイルの改ざんなどを検知、防止する • 代表的なIDS,IPS • Snort, Suricata • Bro IDS • Tripwire © 2019 Cyber Tech Study Group All Rights Reserved. 22
TELNETとSSH • TELNET • 遠隔操作のためのプロトコル • 通信内容は暗号化されない • 23番ポートを使用 •
平文のパスワード認証 • 攻撃者に狙われやすい など • SSH • 遠隔操作のためのプロトコル • 通信内容は暗号化される • 22番ポートを使用 • 鍵やパスワードによる認証 • 攻撃者に狙われやすい など © 2019 Cyber Tech Study Group All Rights Reserved. 23
SSH (Secure Shell) © 2019 Cyber Tech Study Group All
Rights Reserved. 24
SSHサーバ構築 # yum install openssh-server # systemctl start sshd (※デフォルトでSSH有効の場合がある)
firewalldでSSHが許可されているか確認する © 2019 Cyber Tech Study Group All Rights Reserved. 25 実践
SSHサーバにやっておくべき設定 • SSH1の禁止 • rootログイン禁止 • 使用ポートの変更(49152~65535が良い) • パスワードではなく鍵による認証 •
SSHログイン可能なユーザの制限 • ログイン試行回数の制限 • 利用可能なアルゴリズムの制限 などなど © 2019 Cyber Tech Study Group All Rights Reserved. 26
SSHサーバの設定確認 • sshd_configファイルの確認 • sshクライアントからの確認 例)ssh ホスト名 -vv © 2019
Cyber Tech Study Group All Rights Reserved. 27 実践
SSH接続 $ ssh ユーザ名@ホスト名 [-p ポート番号] © 2019 Cyber Tech
Study Group All Rights Reserved. 28
ログファイル • 認証などのセキュリティ関連ログは”/var/log/secure” • SSHログインやsudoなどのログが書き込まれる • ログの読み方 • cat •
tail / head • tail -f • grep • less / more © 2019 Cyber Tech Study Group All Rights Reserved. 29
© 2019 Cyber Tech Study Group All Rights Reserved. 30
詳しい内容は 3年前期 「ネットワークセキュリティ」 「ネットワークセキュリティ演習」 「不正アクセス技法」 にて
© 2019 Cyber Tech Study Group All Rights Reserved. 31
以上! お疲れ様でした!