- 網路參數的設定,請依據底下的方式來設定好你的網路環境:
- 因為我們的系統是 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 模組功能
- 此功能在開機後依舊能夠順利啟動
- 虛擬主機的架設
- 讓 server*.example.dic 可以瀏覽到 /var/www/html/ 這個目錄,且首頁會顯示『 I am server*.example.dic service 』
- 讓 server.lan*.example.dic 可以瀏覽到 /var/www/lan/ 這個目錄,且首頁會顯示『 This is LAN service 』。
此外,這個目錄會讓 alex 這個用戶具有完整的存取權限 (用戶若不存在,請自行建立。且密碼會跟用戶名稱相同。)
- 當用戶使用 https://server*.example.dic 或其他的 https:// 瀏覽時,都會自動被導向 /var/www/ssl/ 目錄,
且首頁會顯示『 Here is HTTPS services 』
yum install httpd
systemctl start httpd
systemctl enable httpd
vim /etc/http/conf.d/"檔名自己取".conf
<VirtualHost *:80>
ServerName server*.example.dic
DocumentRoot /var/www/html/
</VirtualHost>
<VirtualHost *:80>
ServerName server.lan*.example.dic
DocumentRoot /var/www/lan/
</VirtualHost>
echo "I am server*.example.dic service" > /var/www/html/index.html
mkdir /var/www/lan
echo "This is LAN service" > /var/www/lan/index.html
useradd alex
echo alex | passwd --stdin alex
setfacl -m u:alex:rwx /var/www/lan/
yum install mod_ssl
vim /etc/httpd/conf.d/ssl.conf
取消註解並修改
DocumentRoot "/var/www/ssl"
ServerName https://server*.example.dic
mkdir /var/www/ssl
echo "Here is HTTPS services" > /var/www/ssl/index.html
systemctl restart httpd
- 資料庫建置
- 請使用安全的方式 (包括加上 root 密碼設定為 2727175) 來處理 Mariadb 這個資料庫的建立 (hint: mysql_secure_installation)
- 讓你的 Web server 可以支援 PHP,且上傳的檔案最大容量可達 32MB
- 建立如下的資料庫用戶
- 資料庫: mydb
- 主機名稱: localhost
- 帳號: myuser
- 密碼: mypass
- 下載 這個檔案 的內容,然後依據這個檔案的內容重建你的資料庫!
- 以本課程的說明,讓你的 http://server.lan*.example.dic/phpbb/ 目錄可以使用操作你的 phpbb 論壇
yum install mariadb
yum install mariadb-server
yum install php
yum install php-mysql
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation
vim /etc/php.ini
post_max_size = 32M
mysql -u root -p
create database mydb;
grant all privileges on mydb.* to myuser@localhost identified by 'mypass' ;
yum install wget
wget http://dic.vbird.tw/linux_server/download/database.sql
mysql -u root -p mydb < /root/database.sql
- 其他設定
- 讓你的 Apache 可以支援 python 等 WSGI 程式,並且透過腳本別名來執行某個特定腳本:
- 利用本節課程當中提到的 showip.wsgi 的檔案,將該檔案放置於 /var/www/wsgi/ 目錄中
- 設定 web server,讓用戶輸入 http://你的主機名稱/showip/ 時,就會執行該腳本的功能。
- 設定好 squid server,讓你的內網可以使用你的 squid 向外瀏覽。另外,當崑山科大資傳系的三段 Class C 中的網域電腦使用這個 proxy 時,
也可以取得 proxy 的使用權。假設 squild 的設定中,限定使用 ksudic 這個 acl 的暱稱來處理。至於三段 IP 分別是
120.114.140.0/24, 120.114.141.0/24, 120.114.142.0/24
yum install mod_wsgi
mkdir /var/www/wsgi
vim /var/www/wsgi/showip.wsgi
#!/usr/bin/python
def application(environ, start_response):
start_response('200 OK', [('Content-type', 'text/plain')])
import socket
hostname = socket.gethostname()
IPAddr = socket.gethostbyname(hostname)
msg = 'Server Name is: ' + hostname + "\n"
msg = msg + "Server IP Address is: " + IPAddr + "\n"
host = environ['REMOTE_ADDR']
msg = msg + 'Client IP Addrss is: ' + host
return([msg, ])
vim /etc/httpd/conf.d/wsgi.conf
<Directory "/var/www/wsgi/">
Options Indexes FollowSymLinks ExecCGI
Require all granted
AddHandler wsgi-script .wsgi
</Directory>
WSGIScriptAlias /showip/ /var/www/wsgi/showip.wsgi
systemctl restart httpd
yum install squid
systemctl start squid
systemctl enable squid
vim /etc/squid/squid.conf
在 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS 下新增
acl ksudic src 120.114.140.0/24 120.114.141.0/24 120.114.142.0/24
http_access allow ksudic
systemctl restart squid