CentOS7でDHCPサーバーを構築する

DHCPをインストールする。

# yum -y install dhcp

/etc/dhcp/dhcpd.confに下記を追記する。

option domain-name "local.example.com";
subnet 10.0.2.0 netmask 255.255.255.0 {
    range dynamic-bootp 10.0.2.110 10.0.2.119;
    option routers 10.0.2.2;
    option domain-name-servers 10.0.2.101,10.0.2.102;
    default-lease-time 288000;
    max-lease-time 576000;
}

ファイアウォールに例外を追加する。

# firewall-cmd --permanent --add-service=dhcp
# firewall-cmd --reload

サービスを有効にして起動する。

# systemctl enable dhcpd
# systemctl start dhcpd

パスワード間違いでアカウントロックさせる

各設定ファイルを編集する。編集後に再起動する必要はない。
ローカル認証 /etc/pam.d/system-auth
リモート認証 /etc/pam.d/password-auth

# auth句の2行目に追記
auth required pam_tally2.so deny=5 unlock_time=900 even_deny_root
# account句の1行目に追記
account required pam_tally2.so

※denyが試行許容値 ※unlock_timeはロックされる秒数
※even_deny_rootはRootにも適用するという記述

Webコンテンツ操作用のSFTP専用ユーザーを作成する

ユーザーを追加する。

# useradd ftp-user

パスワードを設定する。

# passwd ftp-user

Webサービスが作成したファイルの操作を行うため作成したユーザーをApacheグループに追加する。

# usermod -G apache ftp-user

sshの設定ファイルを編集する。

# vi /etc/ssh/sshd_config

元々あるSubsystem…の構文はコメントブロックする。

Subsystem    sftp    internal-sftp

Chrootでアクセスさせるディレクトリを限定する。

Match User ftp-user
    ChrootDirectory /var/www/
    ForceCommand internal-sftp

CentOS7でのLet’sEncrypt証明書のインストール

Apache、OpenSSL、ModSSLがインストールされている前提です。

インストールするディレクトリに移動。

$ cd /opt/

gitでプログラムを取得する。

# git clone https://github.com/letsencrypt/letsencrypt

ヘルプを表示すると必要コンポーネントをインストールしてくれる。

# cd letsencrypt
# ./letsencrypt-auto --help

証明書の作成。
※事前にapacheのサービスを停止しておく

# ./letsencrypt-auto certonly --standalone -d www.example.com

ApacheのSSL設定。
/etc/httpd/conf.d/ssl.conf の最下部に下記を追記する。

<VirtualHost *:443>
    ServerName www.example.com
    DocumentRoot "/var/www/html/"
    <Directory "/var/www/html/">
        AllowOverride All
    </Directory>
    SSLEngine on
    SSLProtocol -All +TLSv1.2
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!3DES:!RC4:!DH
    SSLHonorCipherOrder On
    SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
</VirtualHost>

証明書の自動更新設定。
更新するコマンドは下記の3行。
※ちなみにcertbot-autoに–dry-runオプションを付けるとテストが可能

# /bin/systemctl stop httpd
# /usr/local/letsencrypt/certbot-auto renew --force-renew
# /bin/systemctl start httpd

なのでcrontabで毎月1日の朝4時に更新を行うよう設定。

00 04 01 * * /bin/systemctl stop httpd; /usr/local/letsencrypt/certbot-auto renew --force-renew; /bin/systemctl start httpd

UbuntuでのSoftEtherVPNのインストール手順

OS:Ubuntu16.10
SoftetherVPN:4.21

ビルドするためのパッケージをインストール。

# apt-get install build-essential

http://www.softether-download.com/ja.aspx?product=softetherからOSに合ったVPN ServerのURLを取得しセットアップファイルを取得する。

$ wget [URL]

ダウンロードしたファイルを移動。

# mv ファイル名.tar.gz /usr/local/

ファイルを展開。

# tar xvzf ファイル名.tar.gz

インストールディレクトリに移動。

# cd /usr/local/vpnserver/

ビルドするためにmakeコマンドの実行。

# make

/etc/systemd/system/vpnserver.serviceを下記内容で作成する。

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target

自動起動を有効にして、サービスを起動する。

# systemctl enable vpnserver
# systemctl start vpnserver

設定ツールをさっきのとこからダウンロード。設定をウィザードでWindowsから行った。

下記ポート開放して、とりあえず動いてる。
50/tcp 500/udp 4500/udp

Ubuntuにアップデートを適用する

パッケージの最新リストをサーバーから入手する。

# apt-get update

インストールされているパッケージを最新にアップデートする。

# apt-get -y upgrade

ディストリビューションを最新にアップデートする。

# apt-get -y dist-upgrade

CentOS7へMySQL5.7をインストールする

CentOS7はデフォルトでMariaDBがインストールされていると思われるので、削除。

# yum remove mariadb-libs
# rm -d -r -f /var/lib/mysql/

MySQLサーバーをローカルインストール。
※https://dev.mysql.com/downloads/repo/yum/を参考に適宜URLを変更

# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

MySQLサーバーをインストール。

# yum -y install mysql-community-server

文字コードをUTF-8に設定する。
/etc/my.cnfを編集して下記1行を追加。

character-set-server = utf8

MySQLサーバーが自動起動するよう構成。

# systemctl enable mysqld.service

MySQLサーバーを起動。
※この時点でrootのパスワードが自動生成されログに書き込まれる(/var/log/mysqld.log)

# systemctl start mysqld.service

MySQLサーバーの初期設定。

# mysql_secure_installation

パスワードポリシーをMEDIUMからLOWに変更する。
mysql -p でログイン後に

SET GLOBAL validate_password_policy=LOW

php-mysqlのインストール。

# yum -y install php-mysql

CentOS7へApacheとPHPをインストールする

Apacheをインストールする。

# yum install httpd

サブドメイン毎のルートディレクトリを設定する。
設定ファイル最下部に下記を追記する。

<VirtualHost *:80>
    ServerName test.example.com
    DocumentRoot "/var/www/html/test/"
    <Directory "/var/www/html/test/">
        AllowOverride All
    </Directory>
</VirtualHost>

SELinuxのラベル付けを行うためのユーティリティをインストールする。

# yum install policycoreutils-python

ルートディレクトリ以下をhttpdで読み書き可能にするSELinuxのラベル付け。

# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/test(/.*)?"
# restorecon -RF /var/www/html/test/

httpdがネットワークに接続することを許可するSELinuxの設定。

# setsebool -P httpd_can_network_connect true

PHPと使用する拡張機能をインストールする。

# yum install php
# yum install php-mbstring
# yum install php-json
# yum install php-mysqlnd
# yum install php-xml
# yum install php-gd

Apacheを有効化してサービスを起動する。

# systemctl enable httpd
# systemctl start httpd

ファイアウォールに例外を追加する。

# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-service=https --permanent

ファイアウォールの設定を読み込み。

# firewall-cmd --reload