サーバー構築メモ|CentOS7 x86_64
# ssh root@XXX.XXX.XXX.XXX
# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
# arch x86_64
# uname -a Linux CentOS7 3.10.0-957.el7.x86_64
# getenforce Enforcing(有効)
# cp -piv /etc/selinux/config /etc/selinux/config.`date "+%Y%m%d"`
# vi /etc/selinux/config
# reboot
サーバーはターミナルを使って遠隔操作・・となるので、まずこれが必要
プレインストールされているので実際には以下の操作は不要
# yum install openssh-server
# sshd -v
# systemctl enable sshd(ちなみに反対は disable)
# systemctl start sshd
# firewall-cmd --zone=public --add-service=ssh --permanent
# yum install httpd参考 yum remove httpd
# httpd -vServer version: Apache/2.4.6 (CentOS)
# systemctl enable
# systemctl start httpd # systemctl status httpd> Active: active (running) となっていればOK
# firewall-cmd --zone=public --add-service=http --permanent # firewall-cmd --zone=public --add-service=https --permanent # firewall-cmd --reload参考:「不許可」を設定する場合
# firewall-cmd --zone=[ ゾーン名 ] --remove-service=[ サービス名 ] --permanent
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: ssh dhcpv6-client http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
# ip a 1: lo: <LOOPBACK,UP,LOWER_UP>・・・ inet 127.0.0.1/8 ・・・ 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP>・・・ inet 192.168.xxx.xxx/24・・・一つ目はローカルループバックアドレス(localhost)です。
デフォルトのままだと、ブラウザからアクセスした際にディレクトリリストが表示されてしまい、セキュリティー的によろしくありません。そこで、この一覧を表示させないようにするため、apache の設定ファイルである httpd.conf を編集し、該当するディレクトリの Indexes オプションを無効にします。
/etc/httpd/conf/httpd.conf
<Directory "/var/www/html"> : # Options Indexes FollowSymLinks ← これをコメントアウト( # ) Options FollowSymLinks ← これに変更 : </Directory>
変更を保存して、Apacheを再起動して設定を有効化します。ブラウザの画面から確認。リスト表示が「Forbiddon」のメッセージに変更されればOKです。
# systemctl restart httpd
# yum install phpよってこれは参考まで・・ということで、続きをお読み下さい。
# yum -y install epel-release
# yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# ls -l /etc/yum.repos.d/
# yum list installed | grep php php.x86_64 5.6.24-1.el7.remi php-cli.x86_64 5.6.24-1.el7.remi php-common.x86_64 5.6.24-1.el7.remi php-gd.x86_64 5.6.24-1.el7.remi php-intl.x86_64 5.6.24-1.el7.remi php-ldap.x86_64 5.6.24-1.el7.remi php-mbstring.x86_64 5.6.24-1.el7.remi php-mysqlnd.x86_64 5.6.24-1.el7.remi php-pdo.x86_64 5.6.24-1.el7.remi php-pecl-jsonc.x86_64 1.3.10-1.el7.remi.5.6 php-pecl-zip.x86_64 1.13.4-1.el7.remi.5.6 php-process.x86_64 5.6.24-1.el7.remi php-soap.x86_64 5.6.24-1.el7.remi php-xml.x86_64 5.6.24-1.el7.remi php-xmlrpc.x86_64 5.6.24-1.el7.remi
# yum remove php-*
# yum install --enablerepo=epel,remi,remi-php74 php php-mbstring php-gd php-pdo php-xml php-mcrypt php-mysql php-imagick
# yum list installed | grep php php.x86_64 7.4.13-1.el7.remi php-cli.x86_64 7.4.13-1.el7.remi php-common.x86_64 7.4.13-1.el7.remi php-gd.x86_64 7.4.13-1.el7.remi php-json.x86_64 7.4.13-1.el7.remi php-mbstring.x86_64 7.4.13-1.el7.remi php-mysqlnd.x86_64 7.4.13-1.el7.remi php-pdo.x86_64 7.4.13-1.el7.remi php-pecl-imagick.x86_64 3.4.4-10.el7.remi.7.4 php-pecl-mcrypt.x86_64 1.0.4-1.el7.remi.7.4 php-sodium.x86_64 7.4.13-1.el7.remi php-xml.x86_64 7.4.13-1.el7.remi
# php -v PHP 7.4.13 (cli) (built: Nov 24 2020 10:03:34) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies
以下の書き方でインストールできます。
# yum install --enablerepo=remi-php7x php-xxxx
x の部分はバージョン番号、 xxxx の部分はモジュール名
PHPのバージョン確認時に以下のエラーが出ることがあります。
PHP Warning: PHP Startup: Unable to load dynamic library 'gd' (tried: /usr/lib64/php/modules/gd (/usr/lib64/php/modules/gd: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/gd.so (/lib64/libraqm.so.0: undefined symbol: hb_ft_font_set_load_flags)) in Unknown on line 0
ネットで探し回ったところ・・
hb_ft_font_set_load_flags comes from HarfBuzz
ということらしく、HarfBuzz をインストールしたら解決しました。
# yum install harfbuzz
/etc/php.ini
# vi /etc/php.ini default_charset = "UTF-8" mbstring.language = Japanese mbstring.encoding_translation = Off mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII : date.timezone = "Asia/Tokyo" :iniファイル書き換え後は、サーバーのリスタートが必要です
# systemctl restart httpd
$ cd /var/www/html $ vi info.php <?php echo phpinfo(); ?> :wq
# yum install vsftpd
# vsftpd -v vsftpd: version 3.0.2
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org
# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
ascii_upload_enable=YES ascii_download_enable=YES
chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_listchroot_local_user をYESにすることでホームディレクトリより上層へのアクセスが禁止されます(基本)。ただし、chroot_list_enable をYESにすると、ホームディレクトリより上層へのアクセスを許可するユーザーリストの利用が有効となります。結果、chroot_list_file(つまり/etc/vsftpd/chroot_list) に記述したユーザーのみが上層へのアクセスを許可されるので、ここに FTPユーザーを追加します。
tcp_wrappers=NO
use_localtime=YES
userlist_enable=YES userlist_deny=NOuserlist_enable=YES にすると、user_list を使用したアクセス制限ができるようになります。
:w :q
# vi /etc/vsftpd/user_list
# vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. user01
:w :q
# vi /etc/vsftpd/chroot_list
user01
:w :q
# chmod 600 /etc/vsftpd/chroot_list
# systemctl enable vsftpd.service
# systemctl start vsftpd
# firewall-cmd --add-service=ftp --zone=public --permanent # firewall-cmd --permanent --add-port=21/tcp # firewall-cmd --reload
# setsebool -P ftpd_full_access on
# systemctl restart vsftpd
以上
# useradd testuser
# passwd testuser
# vi /etc/vsftpd/user_list ファイルの最後尾に testuser を追加
# vi /etc/vsftpd/chroot_list ファイルの最後尾に testuser を追加
# systemctl restart vsftpd
# vi /etc/vsftpd/ftpusers > root をコメントアウト
pasv_enable=YES pasv_min_port=4000 pasv_max_port=4029
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="[許可したいIP]" port protocol="tcp" port="4000-4029" accept"
# pam_tally2 -u <ユーザ名> Login Failures Latest failure From <ユーザ名> <失敗回数> <日付> <リモートIP>
# pam_tally2 -u <ユーザ名> --reset Login Failures Latest failure From <ユーザ名> 0
別記事:Database
# yum install mariadb mariadb-server
# systemctl enable mariadb
# systemctl start mariadb
# mysql以下のように表示されれば接続OKです。
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is ・・ ・・途中略・・ MariaDB [(none)]>
MariaDB [(none)] > quit Bye
MySql と postfix の仲良し関係に注意
http://big1to.com/development-note/867
$ yum list installed | grep postfix以下のように出ればインストールされています
postfix.x86_64 2:2.10.1-6.el7
# yum install postfix
# postconf -n ← デフォルトパラメーターとは異なる設定のみ表示
/etc/postfix/main.cf → main_org.cf など
# postfix checkエラーが表示されなければ、設定ファイルには問題なし
systemctl restart postfix
# systemctl status firewalld.serviceActive: active (running) since ・・ となっていれば稼働中
# systemctl start firewalld.service
# systemctl stop firewalld.service
# systemctl is-enabled firewalld.service enabled
# systemctl enable firewalld.service
# firewall-cmd --get-active-zones
# firewall-cmd --get-default-zone
# firewall-cmd --list-allデフォルトゾーンとアクティブゾーンが異なる場合はアクティブゾーンの設定を見るように促されます。
# firewall-cmd --list-all-zones
# firewall-cmd --list-all-zones --permanent
# firewall-cmd --get-services
# firewall-cmd --list-services --zone=public dhcpv6-client ftp http https ssh
# firewall-cmd --list-services --zone=public --permanentdhcpv6-client ssh
# firewall-cmd --add-service=https --zone=public
# firewall-cmd --add-service=https --zone=public --permanent # firewall-cmd --reload success
--add-service= のかわりに --remove-service=
# firewall-cmd --list-ports --zone=public
# firewall-cmd --list-ports --zone=public --permanent
# firewall-cmd --add-port=8080/tcp --zone=public # firewall-cmd --add-port=60000/udp --zone=public
# firewall-cmd --add-port=8080/tcp --zone=public --permanent # firewall-cmd --add-port=60000/udp --zone=public --permanent
# firewall-cmd --reload success
-add-port= のかわりに --remove-port=
# firewall-cmd --list-sources --zone=public
# firewall-cmd --add-source=192.168.0.0/24 --zone=public
# firewall-cmd --add-source=192.168.0.0/24 --zone=public --permanent # firewall-cmd --reload success
# firewall-cmd --add-source=192.168.11.0/24 --zone=drop
# firewall-cmd --add-source=192.168.11.0/24 --zone=drop --permanent # firewall-cmd --reload success
# firewall-cmd --change-source=192.168.11.0/24 --zone=drop
# firewall-cmd --change-source=192.168.11.0/24 --zone=drop --permanent # firewall-cmd --reload success
# firewall-cmd --get-zone-of-source=192.168.11.0/24 drop
# firewall-cmd --remove-source=192.168.11.0/24 --zone=drop
# firewall-cmd --remove-source=192.168.11.0/24 --zone=drop --permanent # firewall-cmd --reload success
SELinux|Security-Enhanced Linux は、アメリカ国家安全保障局 (NSA) がGPL下で提供している、Linuxのカーネルに強制アクセス制御 (MAC) 機能を付加するモジュールです。
サーバー構築時に生じる「なぜ動かない?」では、これが「効いている」ことが原因である場合があります。まず、以下の手順で、一旦無効にしてみて問題が解決するかチェックし、SELinux の有効/無効 で状態が変わるようであれば、正しく関係調整する・・というのが賢明です。
# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing ← 現在有効(つまりいろいろ厳格) Mode from config file: enforcing ← 設定ファイルも「有効」になっている Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31
# setenforce 0これで症状が解決する場合は、SELinux が効いている・・よってどんなエラーが出ているかログを見て調整すればよい・・ということになります。
参考情報
http://www.yam-web.net/selinux/base.html
Disabled / Permissive / Enforcing の 3 モードがあります.
# setenforce 0