情弱エンジニアのなかのblog

一人前のエンジニアになる為のブログです

インフラ LAMP環境構築

今回はLAMP環境構築を行っていきます

Apache

下記コマンドでApacheのインストールを実行します。

$ sudo yum install -y httpd

インストールが完了するまで待ちましょう。

下記コマンドで起動確認をします

$ sudo /etc/init.d/httpd start

下記コマンドでインストールできたかとバージョンを確認できます

$ httpd -v

MySQL

下記コマンドでMySQLのインストールを実行します。

yum install mysql mysql-devel mysql-server mysql-utilities

インストールが完了するまで待ちましょう。 下記コマンドでインストールできたかとバージョンを確認できます

mysql --version

PHP

まずは下記コマンドでインストール可能か確認します。

yum info --enablerepo=remi,remi-php56 php

下記表示されますと インストール可能になります

Repo        : remi-php56

下記コマンドでPHPのインストールを実行します

yum install -y --enablerepo=remi,remi-php56 php

下記コマンドでインストールできたかとバージョンを確認できます

php -v

下記サイトを参考にいたしました。

CentOS6 or 7 + Apache2系のインストール手順

PHP : CentOS6にPHPをインストール | DN-Web64

インフラ IPアドレス制限

今回はサーバーIPアドレスを制限する方法について記載致します。

まずは下記ファイルの編集をしていきます。

#vim /etc/hosts.deny

ここに下記を追記いたします。

ALL: ALL

これで不要なアクセスを禁止いたします。

続いて下記ファイルを編集していきます。

#vim /etc/hosts.allow

下記のようにIPを設定しますと全てのポートでの接続を許可します。

ALL: 192.168.xxx.xxx

これで特定のIPのみログイン可能になります。

ちなみに設定していないIPアドレスでログインしようとすると下記のようになりログイン不可となっています。

f:id:nonaka-katuma-hal:20180824180905j:plain

下記サイトを参考にいたしました

接続してくるIPアドレス制限する

インフラ 鍵認証2

前回の続きを設定していきます。

公開鍵をサーバーへ転送を行ったので転送した公開鍵をサーバーへ登録します。

公開鍵をサーバーへ登録

PuTTYでサーバーに一般ユーザーでログインして下記を実行します

$ pwd
/home/username

$ ls
id_rsa.pub

.sshディレクトリを作成します。

$ mkdir .ssh

権限を変更します。

$ chmod 700 .ssh

作成した公開鍵の形式を変換します。

$ ssh-keygen -i -f id_rsa.pub >> .ssh/authorized_keys

これで登録完了です。

公開鍵によるSSH接続

PuTTYを起動します。

ホストネームとポートを設定して左のサイドバーの「SSH」をクリックします。

f:id:nonaka-katuma-hal:20180807234531j:plain

続いて「SSH」→「Auth」をクリックします。 次に「Browse」をクリックして、ローカルに保存した秘密鍵を選択します。 「Open」をクリックしてログインします。

f:id:nonaka-katuma-hal:20180807234833j:plain

ユーザー名とパスワードを入力するとログインできます。 以上で完了になります。

下記サイトを参考にさせて頂きました。

webkaru.net

インフラ 鍵認証

今回は鍵認証について記載していきます。

PuTTYgenで鍵作成

まずは鍵作成を行います。 「PuTTYgen」と検索してアプリケーションを起動します。

「Generate」を押してマウスをグルグル動かしていくと鍵の生成ができます。

鍵作成後は「Key comment」に任意のコメントを記入します これは鍵を区別するために使われます。デフォルトは「rsa-key-yyyymmdd」等になっています。

「Key passphrase」にパスフレーズを記入します。 パスフレーズは鍵を使用する際に入力が求められます。 「Confirm passphrase」に同じものを入力します。

「save private key」で秘密鍵を作成保存します。「○○.ppk」となります。 「save public key」で公開鍵ファイルを保存します。

CentOSの設定

鍵の準備は完了したのでCentOSの方を設定します。 rootユーザーになっておきます。

ssh-keygen -t rsa

Enter file in which to save the key (/home/cent/.ssh/id_rsa):   変更の必要がなければそのままEnter

Enter passphrase (empty for no passphrase): パスフレーズ記入
Enter same passphrase again: もう一度パスフレーズ記入

鍵が作成されたことを確認します。

cd ~/.ssh

ll
xxxxx id_rsa
xxxxx id_rsa.pub

鍵が作成されたことを確認したら権限の変更をします

chmod 600 id_rsa.pub

ll

-rw------- 1 root root xxx xxx xx xx:xx id_rsa.pub

となります。

一般ユーザーへのroot権限付与

一般ユーザーにroot権限を与えます。 rootで下記コマンドを実行していきます。

# usermod -G wheel username

一般ユーザーにroot権限を与えるため、 /etc/sudoersを編集します。

# visudo

vimが起動したら下記を編集していきます。

## Allows people in group wheel to run all commands 
# %wheel ALL=(ALL) ALL 

↓ 

## Allows people in group wheel to run all commands 
 %wheel ALL=(ALL) ALL

編集が終わったら一般ユーザーに切り替えて、sudo コマンドを使えるか確認する

$ sudo pwd
[sudo] password for username: usernameのパスワードを入力

カレントディレクトリが表示されれば成功

公開鍵をサーバーへ転送

公開鍵をサーバーへ転送するにはまずコマンドプロンプトを立ち上げ、PuTTYgenで作った鍵を保存したディレクトリに移動します。

移動したら下記を実行します

pscp id_rsa.pub username@サーバーのIPアドレス:id_rsa.pub

usernameのパスワード入力を求められるので記入します。 以下のようなメッセージが表示されればOKです。

id_rsa.pub   | 0 kB |   0.5 kB/s | ETA: 00:00:00 | 100%

今回はここまでになります。

下記サイトを参考にさせて頂きました。

qiita.com

インフラ一般ユーザー作成

今回は一般ユーザーの作成を行っていきます。 root権限のみではなくユーザーの追加を行います。

ユーザーの追加は下記コマンドになります

useradd username

特に文字が表示されることはありませんがユーザーが作成されています。 下記で作成したユーザーに切り替えます

su username

一般ユーザーに切り替えるにもパスワードをつける場合は下記になります。

passwd username

New password: パスワードを入力
Retype new password: パスワードを入力

パスワードを入力しないと切り替えられないようになりました。

su username

Password: パスワードを入力

一般ユーザーを作成したので起動時に作成したユーザーでログインすることができます。

続いてrootアカウントでは直接ログインできないようにします。 「/etc/ssh/sshd_config」に設定を記載致します。

まずはsshd_configをコピーしておきます。

cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_temp

続いて設定していきます

vi /etc/ssh/sshd_config

「#PermitRootLogin yes」となっているところを「PermitRootLogin no」に変更します。 変更が終わったらsshdを再起動することで設定を反映させます。

/etc/init.d/sshd restart

ログアウトしてrootでは入れないことを確認します。 もちろん一般ユーザーではログインできます。

下記サイトを参考にさせて頂きました。

CentOS 6 : 初期設定 インストールと設定 : Server World

www.server-memo.net

インフラ構築 ポートの変更2

前回設定しきれなかったので 今回はコマンドでポート設定の方法を調べます。

まずは

vi etc/ssh/sshd_config

でポート設定を記載します。

Port 22        #もともとのポート番号
Port 10022     #追加したポート番号

設定を有効にするために下記を実行します

service sshd restart

/etc/rc.d/init.d/sshd reload

ポート設定に関してコマンドを実行しす。

iptables -A INPUT -p tcp --dport 10022 -j ACCEPT

実行後に

nmap -p 1-10022 hostname

で設定確認しますと

Starting Nmap 5.51 ( http://nmap.org ) at 2018-07-17 23:53 JST
Nmap scan report for 133.242.232.36
Host is up (0.0000040s latency).
Not shown: 10021 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
10022/tcp open  unknown

ポート設定に追加されていました。

閉じてから10022で入るとログインできました!

下記サイトを参考にさせて頂きました。

tech.nikkeibp.co.jp

CentOS6.6の初期設定まとめ

インフラ構築 ポートの変更 

今回からインフラ構築の記事を書いていきます。 まずはいじくれるサーバーを用意します

最初にポートの変更を行っていきます。

現在22番でログインしているのですがどうやらSSHサービスを22番ポートで公開しているとかなり攻撃されてしまうようです。。 特にパスワード認証の場合は不正ログインされてしまう可能性もあるとのことです。

ポート番号を22から10022に変更します。

まずは変更前に10022でログインできるように設定します。 これを忘れると設定後にログイン出来なくなるので注意です。

chkconfig iptables --list

下記のように表示されます。

iptables       0:off   1:off   2:on    3:on    4:on    5:on    6:off

3:onになっていることを確認します。

もし、3:off になっていた場合は、以下のコマンドを実行して 3:on にします。

chkconfig iptables on

つづいて 「/etc/sysconfig/iptables」を記載していきます。

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT

COMMIT

上記を設定するとサーバー側でSSHポートを10022に設定されます。

続いて下記で設定変更を行います。

vi etc/ssh/sshd_config

ポートの設定があるので下記のように設定します。

Port 22        #もともとのポート番号
Port 10022     #追加したポート番号

設定を有効にするために下記を実行します

service iptables restart

service sshd restart

ポートの設定を確認するためにNmapを使って確認します。

nmap -p 1-10022 hostname

下記のように表示されるはずです。

PORT      STATE  SERVICE
22/tcp    closed ssh
10022/tcp open   unknown

Nmapなんてしらないよーと言われたら下記コマンドでインストールしてください。

yum -y install nmap

10022 のポート設定を確認しましたら22の設定を削除します。

vi etc/sysconfig/iptables

設定から22番を取り除きます

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT

COMMIT

続いて下記も設定変更を行います。

vi etc/ssh/sshd_config

ポートの設定から22を削除します。

Port 10022     #追加したポート番号

編集後は忘れずに下記を実行します。

service iptables restart

service sshd restart

最後にnmapを実行してポートを確認します。

nmap -p 1-10022 hostname

先程は22もあったのですが10022だけになっていることを確認します。

PORT      STATE SERVICE
10022/tcp open  unknown

以上が済みましたら実際に22では入れないことも確認します。 ですが10022でもうまく入れないのでまだ引き続きになります。

下記サイトを参考にいたしました。

CentOS の SSH ポート番号を変更する | Webセキュリティの小部屋

qiita.com