Windows10にHyper-Vを使って、CentOS7をインストールしてみた。FTPサーバを立ててみたら、意外と面倒!
DockerとかVirtualBoxもあるけど、せっかくwin10 ProなのでHyper-Vを使ってみた。(Win10 homeでは出来ない)
1, Hyper-Vを有効化(最初から入っている。)
2, CentOS7のisoダウンロード(DVD isoの方。minimalは本当に何も入ってないらしい)
https://www.centos.org/download/
3, セキュリティブートをOFF(isoが起動しない)
4, ベーシックWebサーバでセットアップ
5, ip addrでip調べて、http://でブラウザからアクセス
systemctl status httpd でinnactiveなら(apacheが起動してない)
systemctl start httpd で起動させる。
→それでも接続できない!
1 2 3 |
# 80ポートを開放 # firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --reload |
6, SSHで接続できるようにする
問題なく接続できた。
7, FTP接続できるようにする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# FTPサーバをインストール yum -y install vsftpd # ftpポートを開放 firewall-cmd --permanent --zone=public --add-service=ftp firewall-cmd --reload // ポートの開放は、サービス名でも出来る! firewall-cmd --permanent --zone=public --add-service=ftp ←ftpを開放 firewall-cmd --permanent --zone=public --add-port=4000-4029/tcp ←ポート4000から4029番を開放 firewall-cmd --permanent --zone=public --add-service=http ←httpを開放 firewall-cmd --permanent --zone=public --add-service=https ←httpsを開放 firewall-cmd --permanent --zone=public --add-service=smtp ←smtpを開放 firewall-cmd --permanent --zone=public --add-service=pop3 ←pop3を開放 firewall-cmd --permanent --zone=public --add-service=imap ←imapを開放 firewall-cmd --permanent --zone=public --add-service=smtps ←smtpsを開放 firewall-cmd --permanent --zone=public --add-service=pop3s ←pop3sを開放 firewall-cmd --permanent --zone=public --add-service=imaps ←imapsを開放 firewall-cmd --reload ←設定を反映 |
デフォだとrootでのFTP接続はNG
8, httpd, vsftpdを自動起動させる。
1 2 3 4 5 6 7 8 9 10 11 |
# apacheが自動起動になっているかチェック # systemctl is-enabled httpd disabled # sudo systemctl enable vsftpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. # FTPサーバが自動起動になっているかチェック # systemctl is-enabled vsftpd disabled # sudo systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service. |
9, テストFTPユーザを作成して、自分のディレクトリ以外はアクセス出来ないようにする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#webルートの下に、ホームディレクトリを作成。 useradd -d /var/www/html/testuser -s /sbin/nologin testuser passwd testuser # vi /etc/vsftpd/vsftpd.conf chroot_local_user=YES # 最初に訪れたホームディレクトをルートにする chroot_list_enable=YES # 例外ユーザリストを適用 # 既存のユーザを例外リストに書き込んで、最後のtestuserだけ削除する(リストにかかれていないユーザは自分のホームディレクトリより上に移動できない!) cut -d: -f1 /etc/passwd > /etc/vsftpd/chroot_list # vsftpdを再起動して、動作に問題がないかtestuserでログインしてみる systemctl restart vsftpd |
10, nologinを追加(/etc/shellsファイル)
FTP接続できない…。どうやら最近のディストリビューションだとnologinは削除されてるっぽい。
https://qiita.com/Marukaziler/items/51da64b8935444c1d9e7
1 2 3 4 5 6 7 8 9 10 11 |
cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) vi /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh /sbin/nologin #←追加 |
11 ,SElinux(Security-Enhanced Linux)をオフにする。
それでもFTP接続出来ない!
接続に失敗しました。
OOPS: chroot
SElinuxが有効になっていると、ftp接続できないので設定変更する。
1 2 3 4 5 6 7 8 9 10 11 12 |
setsebool ftpd_full_access on #もしくは setenforce 0 # 永続的に変更する # vi /etc/selinux/config # SELINUX=enforcing SELINUX=disabled # サーバ再起動して、確認 getenforce Disabled |
やっと、普通にFTPでアップロード、ブラウザで閲覧が出来るようになった…。
http://サーバのIPアドレス/testuser/アップロードしたファイル