1、 WEB應用程序開發環境
windows瀏覽器作為前端;一臺Ubuntu虛擬機運行web前臺應用;一臺Ubuntu虛擬機運行業務層服務;一臺Ubuntu虛擬機運行數據層服務。
使用虛擬機部署Web分布式開發環境
2、 宿主主機和虛擬機的地址設置
使用windows10自帶的Hyper-V安裝虛擬機,為每臺虛擬機指定網絡適配器Default Switch,以便使用虛擬交換機功能。各虛擬機使用DHCP進行動態IP地址分配。
下圖是安裝的三臺Ubuntu虛擬機系統分配的動態IP地址。
創建Ubuntu虛擬機時DHCP分配的動態IP地址
開發環境或者運行環境,最好使用靜態IP,因為DHCP動態分配IP,同一臺主機有時會分配不同的IP地址,為便于管理和程序調用,下面是windows前端和各Ubuntu主機的IP地址規劃。
展示層、服務層、數據層和前端主機的IP規劃
windows主機靜態IP地址設置,不再詳述,下面描述Ubuntu Server環境下靜態IP地址的設置問題。
創建虛擬機指定網絡適配器Default Switch后,在windows宿主機的"網絡和internet"中增加了虛擬網絡"vEthernet(Default Switch)"和"vEthernet(Hvsilcs)" 兩個虛擬以太網適配器。如下圖。
使用Hyper-V創建虛擬機時指定網絡適配器的界面截圖
需要配置vEthernet(Default Switch)適配器的"共享"和"網絡"屬性,如下圖,這樣就完成了虛擬網絡的設置。
配置虛擬適配器的共享屬性和網絡屬性
下面設置各虛擬機的網絡屬性。Netplan是Ubuntu 18.04上的默認網絡管理工具,通過編輯/etc/netplan/下的配置文件50-cloud-init.yaml,可以修改配置DHCP、IP地址、子網掩碼、默認網關、DNS服務器。
下面的文件注釋掉了原來的配置,取消DHCP,設置成靜態屬性,直接設置了Web虛擬機的網絡參數,其他虛擬機和此類似,不再直接給出。
Ubuntu網絡配置文件,設定靜態屬性
配置修改后,執行$sudo netplan apply,使修改生效。之后執行ifconfig命令就會發現新的配置已經生效。宿主機的DNS為192.168.1.1,將虛擬機的DNS也設置成192.168.1.1,虛擬機也可以上互聯網。
3、 宿主主機到各虛擬機的telnet設置
宿主主機windows10上開啟telnet客戶端。即"啟用或停止windows功能"中勾選telnet client,確認成功后,windows的CMD中可以使用telnet命令。
ubuntu虛擬機開啟telnet服務的方法,包括安裝和開啟監聽;安裝telnet服務功能:
(1)安裝openbsd-inetd監聽進程:sudo apt-get install openbsd-inetd。
openbsd-inetd是一個監聽外部網絡請求 [就是一個socket] 的系統守護進程,對應的進程名為inetd,程序位置/usr/sbin/inetd。
系統啟動時它首先讀/etc/inetd.conf文件,看看里面有沒有配置標準服務,如果有,例如有telnet的標準服務配置,則該inetd系統服務會啟動一個tcp的監聽LISTEN,當有一個外部的網絡請求到達時,它會到/etc/inetd.conf中查詢該請求應該調用什么服務,并啟動對應服務。
openbsd-inetd后臺進程的啟動,減少了需要啟動的后臺進程的總數量,當有需求時再啟動對應后臺進程。
(2)安裝telnetd:sudo apt-get install telnetd
該安裝過程安裝了telnet的服務程序,并在/etc/inetd.conf增加了一行:
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
正是有了這條配置,inetd后臺進程啟動時才會創建一個tcp 的 LISTEN請求。
(3)重啟openbsd-inetd:sudo /etc/init.d/openbsd-inetd restart
(4)查看telnet運行狀態:sudo netstat-a|grep telnet應該發現ubuntu上的telnet監聽已經啟動
(5)登錄:telnet IPaddress,輸入用戶名和密碼后就可以登錄ubuntu了。
(6)需要注意:windows自帶cmd窗口,有時會出現亂碼,屬性設置為"使用舊版控制臺"在顯示本地內容時不再有亂碼,cmd中telnet到主機時漢字會有亂碼,無法設定字符編碼;
(7)下載CRT工具Xshell作為telnet終端使用,可以設置字符編碼為utf-8,不會有漢字亂碼,該工具有免費版本,但限制了一個Xshell進程可以開啟的telnet窗口的數量不超過4個,不過夠用了。
建議使用第三方的終端工具,好用,并且有安全選項,可以保證數據的安全傳輸。
4、 宿主主機到各虛擬機的ftp設置
直接登錄到Ubuntu主機,采用字符終端形式進行開發很不方便和快捷,一般都在windows主機上使用集成開發環境,開發完成后部署到服務器上,故需要配置各機器之間的ftp功能。
(1)windows宿主機要確保ftp/tftp客戶端正常運行,不再詳細描述。
(2)Ubuntu虛擬機,如果沒有安裝ftp服務器,則
sudo apt-get remove/install vsftpd (very secure FTP daemon)
安裝vsftpd服務器后,在/etc/目錄下會建立一個vsftpd.conf的配置文件
service vsftpd start 或 /etc/init.d/vsftpd start
服務器vsftpd安裝和啟動后,win客戶端的ftp請求會被響應,但上傳文件被禁止。下圖是未設定靜態IP時的截圖。
Ubuntu的vsftpd默認安裝和啟動后,可以響應ftp請求,但無法傳輸文件
修改/etc/vsftpd.conf,將"write_enable=YES"前面的#取消。 重啟vsftp服務器,service vsftpd restart;
編輯vsftpd的conf配置文件,設置可寫選項,則ftp可正常使用
ftp需要的配置文件:/etc/vsftpd.conf,里面設置項很多,根據實際需要調整。
三臺Ubuntu主機都安裝vsftpd服務器,修改安裝該服務器產生的配置文件vsftpd.conf,修改write_enable=YES。
在使用Vsftp服務時經常需要啟動、停止、重啟vsftp服務,下面是這幾個操作使用的指令:
啟動Vsftpd服務其命令為: service vsftpd start 或 /etc/init.d/vsftpd start
停止Vsftpd服務的命令為:service vsftpd stop 或 /etc/init.d/vsftpd stop
重新啟動Vsftpd服務的命令為:service vsftpd restart 或 /etc/init.d/vsftpd restart
檢查Vsftpd服務的運行狀態:service vsftpd status
5、 宿主機windows10 安裝jdk
具體安裝過程不再詳述,下載JDK,根據安裝向導安裝就行。和jdk相關的三個主要的環境變量
JAVA_HOME=C: \Program Files\Java\jdk-11.0.5
classpath=C:\Program Files\Java\jdk-11.0.5\lib
path=C:\Program Files (x86)\NetSarang\Xshell6\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%SYSTEMROOT%\System32\OpenSSH\;C:\Program Files\Java\jdk-11.0.5\bin;
6、 Web虛擬機安裝jdk
sudo apt-get install default-jdk
這樣安裝后java可執行程序的目錄:
/usr/lib/jvm/java-11-openjdk-amd64/bin
驗證Ubuntu上安裝的JDK是否成功
/etc/profile文件修改,環境變量很重要,設置和輸出環境變量后,系統才可正常執行。
最后面增加
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export CLASSPATH=/usr/lib/jvm/java-11-openjdk-amd64/lib
export PATH=$PATH: /usr/lib/jvm/java-11-openjdk-amd64/bin
使profile生效
#source /etc/profile
Ubuntu列出全部環境變量:#env
列出某個環境變量:#echo $JAVA_HOME
其他虛擬機安裝JDK步驟相同,不重復描述
7、 web虛擬機主機安裝TOMCAT
sudo cp apache-tomcat-9.0.30.tar.gz /usr/local/
cd /usr/local
tar -zxvf apache-tomcat-9.0.30.tar.gz 解包tomcat到當前目錄
sudo chmod 755 -R apache-tomcat-9.0.30/ 賦文件權限
cd /usr/local/apache-tomcat-9.0.30/bin
在startup.sh的啟動文件后面加上jdk的環境變量和tomcat的環境變量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export CLASSPATH=/usr/lib/jvm/java-11-openjdk-amd64/lib
export PATH=$PATH: /usr/lib/jvm/java-11-openjdk-amd64/bin
export TOMCAT_HOME=/usr/local/apache-tomcat-9.0.30
sudo ./startup.sh
啟動Tomcat服務器成功
表示成功啟動。
為了在其他機器上運行本機上tomcat控制臺,需要允許Tomcat通過防火墻
Tomcat默認端口為 8080, 要允許這個端口通過防火墻,命令如下:
sudo ufw allow 8080
ufw是Ubuntu的防火墻
在宿主windows主機上用瀏覽器查看web主機的tomcat配置界面(截圖時還未配置靜態IP)
出現下面的畫面,說明從192.168.1.110的windows主機上訪問172.18.5.233上web服務器成功。
貌似遠程調用Tomcat控制臺已經成功,實際上點擊其中的部分功能會報錯,如下圖。要完整的運行tomcat,需要修改一些配置文件。
點擊Server Status、Manager App、Host Manager時報錯
紅框內的不可用,要遠程使用,必須進行配置。
不額外設置遠程使用Tomcat控制臺的配置參數,圖中紅框內的功能不可用
第一步:在 $tomcathome/conf/Catalina/localhost/下創建
manager.xml,填入如下內容,確保可以遠程調用:
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
第二步:修改配置文件$tomcathome /conf/tomcat-users.xml,定義遠程執行的用戶名和口令
$tomcathome/conf/tomcat-users.xml 中的 <tomcat-users></tomcat-users> 標簽內添加如下代碼:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
<user username="deploy" password="deploy" roles="manager-script"/>
第三步:修改配置文件$tomcathome /webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|172\.18\.5\.\d+" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter$LruCache(?:$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
也就是在Valve組件中的allow行 加入172\.18\.5\.\d+
其中172.18.5.0這個網段是我配置的虛擬機的網段 根據不同可以自己調整。
三步完成后,遠程執行tomcat的控制臺就可以正常使用了。
8、 應用服務器和數據庫服務器安裝
本文不討論這方面的內容,留待后續補充
?
一、Windows系統安全配置管理制度
在應用以下安全制度之前應根據業務系統的實際情況進行操作,注意實施操作后對業務的風險。
a)
對于不能訪問 Internet 的 Windows 系統,應采用手工打補丁的方式。
b)
應及時進行補丁更新,補丁的更新前應在測試系統中進行驗證,驗證通過后方可在正式系統進行部署
a)
所有帳戶均應設置口令。
b)
應將系統管理員賬號重命名,如windows系統的administrator,。
c)
應禁止操作系統多余賬號, 如windows系統的Guest。
d)
應啟用“密碼必須符合復雜性要求”,設置“密碼長度最小值”、“密碼最長存留期”、“密碼最短存留期”、“密碼強制修改時間”,要求密碼強度為8位以上字母大小寫、數字和特殊字符組合,設置定期更換時間少于90天。
e)
應設置“登錄失敗次數”、“賬戶鎖定時間”,“賬戶鎖定閾值”,“復位賬戶鎖定計數器”來防止遠程密碼猜測攻擊。
f)
在信息安全組批準下,應定期利用口令破解軟件進行口令模擬破解測試,在發現脆弱性口令后及時通告并采取強制性的補救修改措施。
a)
應盡可能減少網絡服務,關閉不必要的服務。
b)
應通過修改注冊表項,調整優化 TCP/IP 參數,來提高系統抵抗 DoS 攻擊的能力。
c)
應限制使用 SNMP 服務。如果的確需要,應使用 V3 版本替代 V1、V2 版本,并啟用 MD5 校驗等功能。
a)
所有分區均應使用 NTFS。
b)
盡量使用磁盤配額管理、文件加密(EFS)等功能。
c)
應將所有常用的管理工具放在 %systemroot% 外的特殊目錄下,并對其進行嚴格的訪問控制,保證只有管理員才具有執行這些工具的權限。
d)
應關閉 NTFS 生成 8.3 文件名格式。
e)
應設置訪問控制列表(ACL),對重要的目錄、文件進行訪問權限的限制。
05
日志制度
a)
應啟用系統和文件審核功能,包括應用程序日志、安全日志、系統日志、以及各種服務的日志。
b)
應更改日志存放的目錄,并及時監控,特別是安全日志、系統日志。對于重要主機設備,應建立集中的日志管理服務器,實現對重要主機設備日志的統一管理,以利于對主機設備日志的審查分析。
a)
對于獨立服務器應直接檢查本地的制度和配置。對于屬于域的服務器,應檢查域控制器上對計算機的域管理制度。檢查內容主要為用戶、用戶組及其權限管理制度。
b)
應限制對注冊表的訪問,嚴禁對注冊表的匿名訪問,嚴禁遠程訪問注冊表,并對關鍵注冊表項進行訪問控制,以防止它們被攻擊者用于啟動特洛伊木馬等惡意程序。
c)
應定期檢查注冊表啟動項目,避免系統被安裝非法的自啟動程序。
d)
應隱含最后登陸用戶名,避免攻擊者猜測系統內的用戶信息。
e)
在登錄系統時應顯示告警信息,防止用戶對遠程終端服務口令進行自動化的腳本猜測,并刪除關機按鈕。
f)
應刪除 Windows 主機上所有默認的網絡共享。
g)
應關閉對 Windows 主機的匿名連接。
h)
對于不需要共享服務的主機,應徹底關閉文件和打印機共享服務。
i)
應限制 Pcanywhere 等遠程管理工具的使用,如確實需要,應使用最新版本,完整安裝補丁程序并經過評測,獲得信息安全工作組的許可;并使用 Pcanywhere 加密方式進行管理。
j)
應安裝防病毒軟件,并及時更新軟件版本和病毒庫。
k)
盡量安裝防火墻。
二.UNIX/LINUX系統安全管理制度
a)
應及時安裝系統最新補丁。
b)
應及時升級服務至最新版本,補丁的更新前應在測試系統中進行驗證,驗證通過后方可在正式系統進行部署。
a)
所有帳戶均應設置口令。
b)
去除不需要的帳戶、修改默認帳號的 shell 變量,如operator、halt、news、shutdown等用戶。
c)
除 root 外,不應存在其他 uid=0 的帳戶。
d)
應設置超時自動注銷登陸,減少安全隱患。
e)
應限制可以 su 為 root 的組。
f)
應禁止 root 遠程登陸。
g)
在信息安全組批準下,應定期利用口令破解軟件進行口令模擬破解測試,在發現脆弱性口令后及時通告并采取強制性的補救修改措施。
a)
應盡可能減少網絡服務,關閉不必要的服務。
b)
應啟用 inetd 進站連接日志記錄,增強審計功能。
c)
應調整優化 TCP/IP 參數,來提高系統抵抗 DoS 攻擊的能力。
d)
應調整TCP/IP 參數,禁止 IP 源路由。
e)
應限制使用 SNMP 服務。如果的確需要,應使用 V3 版本替代 V1、V2 版本,并啟用 MD5 校驗等功能。
f)
應調整內核參數打開“TCP隨機序列號”功能。
a)
盡量使系統 root 用戶初始創建權限(umask)為077。
b)
盡量使用磁盤配額管理功能。
c)
去除適當文件的 set-uid 和 set-gid 位。
d)
應限制 /etc 目錄的可寫權限。
e)
增強對關鍵文件的執行權限控制。
f)
為不同的掛載點指派不同的屬性。
a)
應對 ssh、su 登陸日志進行記錄。
b)
除日志服務器外,應禁止 syslogd 網絡監聽514端口。
c)
對于重要主機設備,應建立集中的日志管理服務器,實現對重要主機設備日志的統一管理,以利于對主機設備日志的審查分析。
a)
只允許 root 執行 crontab 命令。
b)
應保證 bash shell 保存少量的(或不保存)命令。
c)
應禁止 GUI 登陸。
d)
應隱藏系統提示信息。
e)
盡量安裝第三方安全增強軟件。
f)
操作系統在作業正常或非正常結束以后,能清除分配給該作業的全部臨時工作區域。
g)
系統能像保護信息的原件一樣,精確地保護信息的拷貝。