- 網路參數的設定,請依據底下的方式來設定好你的網路環境:
- 因為我們的系統是 clone 來的,因此裡面的網路卡連線會跑掉。所以,請先刪除所有的連線界面後,
再依據底下的要求逐次建立好你的網路環境:
- 建立 eth0 為外部的連線網卡 (相同的連線界面名稱),使用 ethernet 類型,且:
- IPv4 的 IP位址: 172.18.255.*/24 ,其中 * 為老師規定的 IP 尾數
- gateway 為 172.18.255.254
- DNS 為 172.16.200.254 以及 168.95.1.1
- 使用 teamd 的機制建立內部區域網路的備援功能:
- team 的界面使用 team0 卡號,且連線名稱請命名為 team0
- team 使用 activebackup 備援功能,不要使用 loadbalance
- team 的實體網卡 (team slave) 請使用 eth1 及 eth2 ,且其連線名稱名稱亦請命名為 eth1, eth2
- 內部網路參數為: 172.19.*.254/24,不需要 gateway
- 主機名稱指定為: server*.example.dic
- 最終你的主機名稱與 IP 的對應為:
server*.example.dic 172.18.255.* 別名為 server*
server254.example.dic 172.18.255.254 別名為 server254
server.lan*.example.dic 172.19.*.254 別名為 server
client.lan*.example.dic 172.19.*.1 別名為 client
- 基本的伺服器作業系統設定行為:
- 使用崑山的 FTP 網站作為你的 YUM server 來源,並且清除一次 yum 清單快取
- 安裝相關的軟體,至少須安裝 vim-enhanced, bash-completion, net-tools, mailx, wget, links, bind-utils
- 全系統自動升級,且每天凌晨 3 點也會自動升級一次。(請寫入 /etc/crontab 為主)
- 將 SELinux 修改成為 Enforcing 模式,且未來每次開機都自動為 Enforcing 才行
- 實際設定好本機防火牆
- 請關閉 firewalld 服務,並且自行安裝、啟動 iptables 服務
- 將預設的規則轉存到 /root/firewall.sh 這個檔案內
- 首先將全部的規則刪除 (應該有三條指令)
- 設定好預設政策,讓 INPUT 成為 DROP 而 OUTPUT 與 FORWARD 成為 ACCEPT
- 針對 INPUT 前三條規則為 (1)回應封包 (2)放行 lo 界面 (3)放行 icmp 封包
- 放行你自己的內部區域網路那個網域的連線要求
- 讓 ssh 只對外部的區網放行,不會對 Internet 放行
- 讓 http 針對整個 Internet 放行
- 最後讓確定的規則轉存到 /etc/sysconfig/iptables 這個設定檔
- 重新啟動 iptables 服務,然後觀察規則是否正確
- 實際設定好 Server 的路由功能
- 讓核心支援 IP 轉遞的功能
- 修改 /root/firewall.sh ,增加刪除 nat 表格的規則與自訂鏈
- 增加讓來自內部網路的封包,並預計由 eth0 對外網卡出去的封包,全部偽裝成為 eth0 的 public IP
- 在 /etc/sysconfig/iptables-config 當中增加 nf_nat_ftp 及 nf_conntrack_ftp 模組功能
- 此功能在開機後依舊能夠順利啟動
- 基礎 Apache 架設
- WWW 啟動的埠口會同時啟動於 port 80 與 port 9999 這兩個
- 管理員的 email 請設定為 student@server.lanXX.example.dic
- 取消強制使用 UTF8 的語系設定
- 設定 index.html, welcome.html, default.html 作為你的首頁檔名
- 當瀏覽 http://localhost 時,會顯示你的學號與姓名
- 讓你的伺服器可以同時提供 port 80 與 port 9999 的網路連線 (防火牆功能思考)
yum install httpd
systemctl start httpd
systemctl enable httpd
vim /etc/httpd/conf/httpd.conf
Listen 80
Listen 9999 //新增
<IfModule dir_module>
DirectoryIndex index.html welcome.html default.html //更改
</IfModule>
#AddDefaultCharset UTF-8 //註解
vim /var/www/html/index.html
學號 姓名
vim /root/firewall.sh
#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -s 172.19.*.0/24 -j ACCEPT
iptables -A INPUT -s 172.18.255.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 9999 -j ACCEPT <----- 新增此規則
iptables -A INPUT -j REJECT
iptables-save > /etc/sysconfig/iptables
sh /root/firewall.sh
- 個人首頁的設定
- 請設定,預設建立新用戶時,該用戶的家目錄會存在一個名為 web 的目錄,且內含一個 index.html 的檔案,檔案內容填寫『 Personal web page 』即可。
- 當瀏覽器瀏覽 http://localhost/~username 時,會顯示 /home/username/web/index.html 的內容。
- 為了擔心個人用戶用爆系統容量,因此請設定好 /home 這個目錄的檔案系統得要支援磁碟容量配額 (quota) 的功能。
若 /home 並不存在獨立的 partition ,那你可能得要針對根目錄進行 quota 的設定 (雖然這不是個好建議!)。但是 Linux 核心預設不能讓根目錄掛載為支援 quota,
因此需要動點小手術。請參考 https://help.directadmin.com/item.php?id=557
來取得正確的 quota 支援。(註,我們只需要 userquota 即可, projectquota 可以不予理會)
- 建立一隻名為『 /root/webuser.sh 』的腳本,並建立一個名為 /root/webuser.txt 的檔案,/root/webuser.txt 的內容有點像這樣:
alex
dora
hank
而 /root/webuser.sh 的腳本使用 for, do, done 的迴圈功能,會針對上述 /root/webuser.txt 的檔案進行如下動作:
- 使用預設方式建立用戶,且用戶的密碼與帳號相同。
- 建立用戶後,會給予該用戶 soft/hard 分別為 400MB/500MB 的可用磁碟容量
- 讓該用戶的家目錄權限設定為 711
建置完畢後請執行一次該腳本,並使用 http://localhost/~alex 確認該帳號是存在的!
- 讓 alex, dora, hand 可以使用 ftp 上傳/下載資料到伺服器上,且這三個用戶必須是 chroot 的使用環境。
- 伺服器的防火牆必須要放行 FTP (注意 port 的放行以及 FTP 的相關模組設定與載入)
mkdir /etc/skel/web
vim /etc/skel/web/index.html
Personal web page
vim /etc/login.defs
UMASK 022
vim /etc/httpd/conf.d/userdir.conf
<IfModule mod_userdir.c>
UserDir web
</IfModule>
<Directory "/home/*/web">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
vim /etc/default/grub
找到 GRUB_CMDLINE_LINUX
在該行尾端加上 rootflags = uquota
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.orig
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
vim /root/webuser.txt
alex
dora
hank
vim /root/webuser.sh
#!/bin/bash
for var in {1..3}
do
user=$(sed -n ${var}p /root/webuser.txt)
useradd ${user}
echo ${user} | passwd --stdin ${user}
xfs_quota -x -c "limit -u bsoft=400M bhard=500M ${user}" /
chmod 711 /home/${user}
done
sh /root/webuser.sh
yum install vsftpd
systemctl start vsftpd
systemctl enable vsftpd
vim /etc/vsftpd/vsftpd.conf
取消註解
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
新增
allow_writeable_chroot=YES
touch /etc/vsftpd/chroot_list
systemctl restart vsftpd
vim /root/firewall.sh
#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -s 172.19.*.0/24 -j ACCEPT
iptables -A INPUT -s 172.18.255.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 9999 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT <----- 新增此規則
iptables -A INPUT -j REJECT
iptables-save > /etc/sysconfig/iptables
sh /root/firewall.sh
- 受保護目錄的建置
- 只有 127.0.0.0/8, 以及 Server 自己的所有 IPv4 的 IP 位址可以瀏覽 http://localhost/pro_one/ 這個目錄,且當成功瀏覽這個目錄時,
畫面會顯示『 This is protect one directory 』
- 當輸入 http://localhost/pro_two/ 這個目錄時,會提示需要輸入帳號密碼,當輸入帳號為 student 且密碼也是 student 時,
才會予以放行。
- 請使用 .htaccess 的方式來處理這個題目
- 假設密碼檔位於 /var/www/apache.pw 這個檔案內
- 正確輸入帳密會顯示『 I am Protect two hehe 』的字樣。
mkdir /var/www/html/pro_one
mkdir /var/www/html/pro_two
vim /var/www/html/pro_one/index.html
This is protect one directory
vim /var/www/html/pro_two/index.html
I am Protect two hehe
vim /etc/httpd/conf.d/"檔名自己取".conf
<Directory "/var/www/html/pro_one">
Options Indexes FollowSymLinks
AllowOverride None
Require ip 127.0.0.0/8 172.19.*.0/24 172.18.255.*
</Directory>
<Directory "/var/www/html/pro_two">
Options Indexes FollowSymLinks
AllowOverride AuthConfig
</Directory>
systemctl restart httpd
cd /var/www/html/pro_two
vim .htaccess
AuthType basic
AuthName "你要顯示到彈出式視窗的文字"
AuthUserFile /var/www/apache.pw
require user student
htpasswd -c /var/www/apache.pw student