acokikoy's notes

最近気になる=[NoCode, Shopify], I am..=[Python, ウクレレ, マニュアル車, CMS] LoveなWebディレクター

イベント参加ログ》超入門!! Linuxサーバー構築の第一歩!! 11月23日13:30 - 16:00

svkb.connpass.com

  • 明星大学で行われたオープンソースカンファレンス2019 Tokyo/Fallコミニティ企画でLinuxの超初心者を対象とした「サーバー構築勉強会」に参加した。
  • リモート接続してApacheインストール、/var/www/に用意されたホームページのファイルを配置してブラウザからアクセスするところまでのごくエッセンスだけのハンズオンであったが、実際にやってみられたのが良かった。

参加目的・獲得目標

  • ひとりで勉強し続けるのは苦手なので、"セミナー出席とその復習を繰り返して楽しく成長するよ!作戦" の一環。
  • Linuxに慣れて今より自由に扱えるようになる。

受講ノート(ハンズオン)

  • IPアドレス
    • IP4 アドレス (1Byte * 4 = 4 Byte, 32bit)
    • IP6 アドレス (2Byte * 8 = 16 Byte, 128bit)

CentOS7にSSH接続

SSH接続 => 2つの認証を通過する

  1. SSHホスト認証:
    • クライアントがサーバの正当性を確認している
    • SSH接続の度にクライアント、サーバ間で公開鍵の一致をチェックしている
    • 一度認証されるとサーバから公開鍵が送られてくる。ホストキー
  2. SSHユーザ認証
    • defaultは公開鍵認証
    • なければパスワード認証
[2019-11-23 13:53:29] ~ $ ssh 210.197.79.201 -l root
The authenticity of host '210.197.79.201 (210.197.79.201)' can't be established.
ECDSA key fingerprint is SHA256:R62tNTjcPZsTXZLhIwRD+hcFAZsaNgul16wt4mK6Hys.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '210.197.79.201' (ECDSA) to the list of known hosts.
root@210.197.79.201's password: 
Last failed login: Sat Nov 23 13:56:08 JST 2019 from 182.61.2.238 on ssh:notty
There were 215 failed login attempts since the last successful login.
[root@localhost ~]#

セキュリティ上の配慮: rootでSSHできないようにする

一般ユーザーを登録(rootの代わりに使う)

[root@localhost ~]# useradd {ユーザ名}
[root@localhost ~]# passwd {ユーザ名}
ユーザー {ユーザ名} のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

[2019-11-23 14:31:34] ~ $ ssh ユーザ名@210.197.79.201
ユーザ名@210.197.79.201's password: 

rootのsshを禁止する

  • /etc/ssh/sshd_config を編集して PermitRootLogin no にする
  • sshdを再起動。ステータス確認
[root@localhost ~]# vi /etc/ssh/sshd_config 
[root@localhost ~]# systemctl restart sshd
[root@localhost ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 土 2019-11-23 14:28:32 JST; 25s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 3235 (sshd)
    Tasks: 1
   CGroup: /system.slice/sshd.service
           └─3235 /usr/sbin/sshd -D


1123 14:28:32 localhost.localdomain sshd[3235]: Server listening on 0.0.0.0 port 22.
1123 14:28:32 localhost.localdomain sshd[3235]: Server listening on :: port 22.
1123 14:28:32 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
1123 14:28:39 localhost.localdomain sshd[3236]: Invalid user ibraim from 104.42.153.42 port 4544
1123 14:28:39 localhost.localdomain sshd[3236]: input_userauth_request: invalid user ibraim [p...th]
1123 14:28:39 localhost.localdomain sshd[3236]: pam_unix(sshd:auth): check pass; user unknown
1123 14:28:39 localhost.localdomain sshd[3236]: pam_unix(sshd:auth): authentication failure; l....42
1123 14:28:42 localhost.localdomain sshd[3236]: Failed password for invalid user ibraim from 1...sh2
1123 14:28:42 localhost.localdomain sshd[3236]: Received disconnect from 104.42.153.42 port 45...th]
1123 14:28:42 localhost.localdomain sshd[3236]: Disconnected from 104.42.153.42 port 4544 [preauth]
Hint: Some lines were ellipsized, use -l to show in full.
  • 以降は、rootでログインしようとしても 「権限ないっすよ」と叱られる
[2019-11-23 14:30:08] ~ $ ssh root@210.197.79.201
root@210.197.79.201's password: 
Permission denied, please try again.
root@210.197.79.201's password:      ← 正しいパスワードを入れても通らなくなる

既存パッケージのUpdateと、EPEL(エンタープライズ Linux 用の拡張パッケージ)追加

  • 一般ユーザでログインし、suでrootになる。
  • 既存パッケージのUpdateと、EPEL(エンタープライズ Linux 用の拡張パッケージ)追加
[ユーザ名@localhost ~]$ su
パスワード:(rootのパスワード)

[root@localhost ユーザ名]# yum -y update
[root@localhost ユーザ名]# yum -y install epel-release

HTTP -Apacheインストール-

80番ポートの開放

先に http ポートを開放しておく。

# 80番ポート(http)を開放
[root@localhost ユーザ名]# firewall-cmd --add-service=http --zone=public --permanent
success

# サービスのリロード
[root@localhost ユーザ名]# firewall-cmd --reload
ipsuccess

# 80番ポートが開放されたかチェック
[root@localhost ユーザ名]# iptables -L -n |grep 80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 ctstate NEW,UNTRACKED

Apacheパッケージのインストール

パッケージを4つインストールする - httpdApacheご本尊。httpdウェブサーバー本体) - httpd-devel (httpd関連の開発ツール、モジュール) - httpd-tools (監視、統計、ログ分析、DoS 検出、および防衛のためのツール) - httpd-manual (httpdのドキュメント)

[root@localhost ユーザ名]# yum -y install httpd httpd-devel httpd-tools httpd-manual

読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                             |  10 kB  00:00:00     
 * epel: nrt.edge.kernel.org
epel                                                                             | 5.3 kB  00:00:00     
(1/3): epel/x86_64/group_gz                                                      |  90 kB  00:00:00     
(2/3): epel/x86_64/updateinfo                                                    | 1.0 MB  00:00:00     
(3/3): epel/x86_64/primary_db                                                    | 6.9 MB  00:00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ httpd.x86_64 0:2.4.6-90.el7.centos を インストール
--> 依存性の処理をしています: /etc/mime.types のパッケージ: httpd-2.4.6-90.el7.centos.x86_64
---> パッケージ httpd-devel.x86_64 0:2.4.6-90.el7.centos を インストール
--> 依存性の処理をしています: apr-util-devel のパッケージ: httpd-devel-2.4.6-90.el7.centos.x86_64
--> 依存性の処理をしています: apr-devel のパッケージ: httpd-devel-2.4.6-90.el7.centos.x86_64
---> パッケージ httpd-manual.noarch 0:2.4.6-90.el7.centos を インストール
---> パッケージ httpd-tools.x86_64 0:2.4.6-90.el7.centos を インストール
--> トランザクションの確認を実行しています。
---> パッケージ apr-devel.x86_64 0:1.4.8-5.el7 を インストール
---> パッケージ apr-util-devel.x86_64 0:1.5.2-6.el7 を インストール
--> 依存性の処理をしています: openldap-devel(x86-64) のパッケージ: apr-util-devel-1.5.2-6.el7.x86_64
--> 依存性の処理をしています: libdb-devel(x86-64) のパッケージ: apr-util-devel-1.5.2-6.el7.x86_64
--> 依存性の処理をしています: expat-devel(x86-64) のパッケージ: apr-util-devel-1.5.2-6.el7.x86_64
---> パッケージ mailcap.noarch 0:2.1.41-2.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ expat-devel.x86_64 0:2.1.0-10.el7_3 を インストール
---> パッケージ libdb-devel.x86_64 0:5.3.21-25.el7 を インストール
---> パッケージ openldap-devel.x86_64 0:2.4.44-21.el7_6 を インストール
--> 依存性の処理をしています: cyrus-sasl-devel(x86-64) のパッケージ: openldap-devel-2.4.44-21.el7_6.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ cyrus-sasl-devel.x86_64 0:2.1.26-23.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

========================================================================================================
 Package                      アーキテクチャー   バージョン                      リポジトリー      容量
========================================================================================================
インストール中:
 httpd                        x86_64             2.4.6-90.el7.centos             base             2.7 M
 httpd-devel                  x86_64             2.4.6-90.el7.centos             base             197 k
 httpd-manual                 noarch             2.4.6-90.el7.centos             base             1.3 M
 httpd-tools                  x86_64             2.4.6-90.el7.centos             base              91 k
依存性関連でのインストールをします:
 apr-devel                    x86_64             1.4.8-5.el7                     base             188 k
 apr-util-devel               x86_64             1.5.2-6.el7                     base              76 k
 cyrus-sasl-devel             x86_64             2.1.26-23.el7                   base             310 k
 expat-devel                  x86_64             2.1.0-10.el7_3                  base              57 k
 libdb-devel                  x86_64             5.3.21-25.el7                   base              39 k
 mailcap                      noarch             2.1.41-2.el7                    base              31 k
 openldap-devel               x86_64             2.4.44-21.el7_6                 base             804 k

トランザクションの要約
========================================================================================================
インストール  4 パッケージ (+7 個の依存関係のパッケージ)

総ダウンロード容量: 5.8 M
インストール容量: 22 M
Downloading packages:
(1/11): apr-util-devel-1.5.2-6.el7.x86_64.rpm                                    |  76 kB  00:00:00     
(2/11): apr-devel-1.4.8-5.el7.x86_64.rpm                                         | 188 kB  00:00:00     
(3/11): expat-devel-2.1.0-10.el7_3.x86_64.rpm                                    |  57 kB  00:00:00     
(4/11): cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm                                | 310 kB  00:00:00     
(5/11): httpd-devel-2.4.6-90.el7.centos.x86_64.rpm                               | 197 kB  00:00:00     
(6/11): httpd-manual-2.4.6-90.el7.centos.noarch.rpm                              | 1.3 MB  00:00:00     
(7/11): httpd-tools-2.4.6-90.el7.centos.x86_64.rpm                               |  91 kB  00:00:00     
(8/11): libdb-devel-5.3.21-25.el7.x86_64.rpm                                     |  39 kB  00:00:00     
(9/11): mailcap-2.1.41-2.el7.noarch.rpm                                          |  31 kB  00:00:00     
(10/11): httpd-2.4.6-90.el7.centos.x86_64.rpm                                    | 2.7 MB  00:00:00     
(11/11): openldap-devel-2.4.44-21.el7_6.x86_64.rpm                               | 804 kB  00:00:00     
--------------------------------------------------------------------------------------------------------
合計                                                                     12 MB/s | 5.8 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : apr-devel-1.4.8-5.el7.x86_64                                           1/11 
  インストール中          : cyrus-sasl-devel-2.1.26-23.el7.x86_64                                  2/11 
  インストール中          : openldap-devel-2.4.44-21.el7_6.x86_64                                  3/11 
  インストール中          : expat-devel-2.1.0-10.el7_3.x86_64                                      4/11 
  インストール中          : libdb-devel-5.3.21-25.el7.x86_64                                       5/11 
  インストール中          : apr-util-devel-1.5.2-6.el7.x86_64                                      6/11 
  インストール中          : httpd-tools-2.4.6-90.el7.centos.x86_64                                 7/11 
  インストール中          : mailcap-2.1.41-2.el7.noarch                                            8/11 
  インストール中          : httpd-2.4.6-90.el7.centos.x86_64                                       9/11 
  インストール中          : httpd-devel-2.4.6-90.el7.centos.x86_64                                10/11 
  インストール中          : httpd-manual-2.4.6-90.el7.centos.noarch                               11/11 
  検証中                  : httpd-devel-2.4.6-90.el7.centos.x86_64                                 1/11 
  検証中                  : mailcap-2.1.41-2.el7.noarch                                            2/11 
  検証中                  : httpd-tools-2.4.6-90.el7.centos.x86_64                                 3/11 
  検証中                  : libdb-devel-5.3.21-25.el7.x86_64                                       4/11 
  検証中                  : httpd-2.4.6-90.el7.centos.x86_64                                       5/11 
  検証中                  : openldap-devel-2.4.44-21.el7_6.x86_64                                  6/11 
  検証中                  : apr-devel-1.4.8-5.el7.x86_64                                           7/11 
  検証中                  : httpd-manual-2.4.6-90.el7.centos.noarch                                8/11 
  検証中                  : apr-util-devel-1.5.2-6.el7.x86_64                                      9/11 
  検証中                  : expat-devel-2.1.0-10.el7_3.x86_64                                     10/11 
  検証中                  : cyrus-sasl-devel-2.1.26-23.el7.x86_64                                 11/11 

インストール:
  httpd.x86_64 0:2.4.6-90.el7.centos                  httpd-devel.x86_64 0:2.4.6-90.el7.centos          
  httpd-manual.noarch 0:2.4.6-90.el7.centos           httpd-tools.x86_64 0:2.4.6-90.el7.centos          

依存性関連をインストールしました:
  apr-devel.x86_64 0:1.4.8-5.el7                       apr-util-devel.x86_64 0:1.5.2-6.el7             
  cyrus-sasl-devel.x86_64 0:2.1.26-23.el7              expat-devel.x86_64 0:2.1.0-10.el7_3             
  libdb-devel.x86_64 0:5.3.21-25.el7                   mailcap.noarch 0:2.1.41-2.el7                   
  openldap-devel.x86_64 0:2.4.44-21.el7_6             

完了しました!

Apacheを起動する

# インストール直後は inactive の状態
[root@localhost ユーザ名]# systemctl status httpd

● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)

# マシン起動時にサービスを自動起動させる設定
[root@localhost ユーザ名]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

# 今すぐサービスを起動
[root@localhost ユーザ名]# systemctl start  httpd

# ステータスが active になった
[root@localhost ユーザ名]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2019-11-23 14:42:10 JST; 3s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 3720 (httpd)
   Status: "Processing requests..."
    Tasks: 6
   CGroup: /system.slice/httpd.service
           ├─3720 /usr/sbin/httpd -DFOREGROUND
           ├─3721 /usr/sbin/httpd -DFOREGROUND
           ├─3722 /usr/sbin/httpd -DFOREGROUND
           ├─3723 /usr/sbin/httpd -DFOREGROUND
           ├─3724 /usr/sbin/httpd -DFOREGROUND
           └─3725 /usr/sbin/httpd -DFOREGROUND

1123 14:42:10 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...

アクセスログ(/var/log/httpd/access_log)を見てみる

# access_log を tail コマンドでモニターする
[root@localhost ユーザ名]# tail -f /var/log/httpd/access_log

# ブラウザで http://210.197.79.201/xxx にアクセスするとログを吐く
170.238.36.66 - - [23/Nov/2019:14:44:33 +0900] "GET / HTTP/1.0" 403 4897 "-" "masscan/1.0 (https://github.com/robertdavidgraham/masscan)"
126.233.154.177 - - [23/Nov/2019:14:45:16 +0900] "GET / HTTP/1.1" 403 4897 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:70.0) Gecko/20100101 Firefox/70.0"

WEBテンプレートインストール

  • あらかじめ用意されたサンプルファイルを wgetで取得
  • /var/www/html/ に配置する
  • ブラウザからアクセスして表示されることを確認(OK!)
[root@localhost ユーザ名]# cd
[root@localhost ~]# wget --inet4-only http://usg.mydns.jp/free.zip
--2019-11-23 14:47:49--  http://usg.mydns.jp/free.zip
usg.mydns.jp (usg.mydns.jp) をDNSに問いあわせています... 210.197.78.243
usg.mydns.jp (usg.mydns.jp)|210.197.78.243|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 367290 (359K) [application/zip]
`free.zip' に保存中

100%[==============================================================>] 367,290     --.-K/s 時間 0.01s   

2019-11-23 14:47:49 (33.9 MB/s) - `free.zip' へ保存完了 [367290/367290]

[root@localhost ~]# ls 
anaconda-ks.cfg  free.zip  initial-setup-ks.cfg
[root@localhost ~]# unzip -d /var/www/html/ free.zip
Archive:  free.zip
   creating: /var/www/html/free/css/
  inflating: /var/www/html/free/css/common.css  
  ...
  inflating: /var/www/html/free/index.html  

キーワード

講中に初めて聞いたキーワードや印象に残ったことのメモ。

成果・今後のTODO

  • SSH接続は、ホスト認証とユーザ認証の2つの認証を経て接続されることがわかった。
  • 超入門レベルのハンズオンなのだと思うが、体験したことがあるとないでは大違いなので受けて良かった。
  • Linux周りはもうちょっと使いこなせるようになりたい。

その他、雑多な感想

  • 「ここで突然大きな天災に見舞われたら、逃げ道がわからず死ぬな」と思える場所がたまにある。明星大学はまさに「ここで何かあったら死ぬかも」な場所だった。構内レイアウト、建物内の間取り(27, 28号棟しか入ってないが)、どれも複雑で検討がつきにくい構成で、しかも建物内の案内板のわかりにくさが格別だった。会場が28号棟6Fとあるのに、地階からエスカレーターで4階まで上がったら その上がないんですもの。。。裏手の方にエレベータを発見してようやく6階にたどり着いたです。時間に余裕があったのに焦った。