linux系統教程 | 搭建服務器的之后總結的一些個人經驗
今天給大家分享的文章是一篇關于服務器安裝的文章,作者在將服務器放在內網之后通過堡壘機和外界相連,在這個過程中遇到一些問題并將其解決,很適合大家學習。
最近幫實驗室裝了兩臺服務器,計算用的服務器放在內網,通過一臺堡壘機與外界相連。碰到很多小問題,在這里記錄一下。
組建內網
這一部分沒有太多好說的,堡壘機需要有兩塊網卡,一塊對外一塊對內,內網服務器一塊就夠了。組網的時候根據情況可以手工指定IP也可以DHCP。如果內網只有一臺機器的話可以找一根網線直連兩臺機器,如果機器多的話還是買個路由器吧,最好找高級一點的,可定制的功能多一點,否則會很坑。
端口轉發
從外面訪問內網服務器的時候有三種方法:
- 最簡單的辦法是先ssh到堡壘機,再ssh到內網的服務器。這樣做的問題是需要同時在堡壘機和內網服務器上創建賬號,而有的時候我們并不希望用戶訪問堡壘機,堡壘機對用戶應該是透明的。
- 第二種辦法是ssh隧道,我們可以通過堡壘機建立隧道,把外面的請求轉發到內網。但建立隧道本身也比較麻煩。?這篇博客?對于ssh隧道講得非常清楚。
- 最方便解決辦法就是端口轉發:將堡壘機上的端口與內網服務器需要訪問的端口建立映射關系,例如將堡壘機的1234端口映射到內網服務器的22端口,這時?
ssh -p 1234 <bastion server IP>
?實際登錄到的就是內網服務器。端口轉發的本質是把堡壘機當成了路由器。這篇博客對于端口映射講得非常清楚。
時間校準
一個與世隔絕的服務器時間往往不準,有時候是設置問題,有時候是BIOS上的時鐘本來就不準。想要校準的話,最方便的當然是手工設置,但這樣無法保證精度,而且過一段時間可能又會產生偏差。比較好的辦法是用NTP在線校準時間,但是內網無法訪問公共NTP服務器。這時可以把堡壘機配置成一個NTP server,然后讓內網的服務器都跟堡壘機校準。
當然我們也可以給內網服務器指定一個網關(堡壘機),然后打開堡壘機的轉發功能,這樣內網服務器就可以直接上網了。但有時候我們并不想這么做。
用戶管理
用戶管理涉及到批量添加/刪除用戶,用戶分組,權限控制,磁盤限額,限時登錄等等。
批量添加/刪除用戶
下面是我寫的一個小腳本,需要讀取一個記載了用戶名和登錄密碼的文本文件,然后依次創建每一個用戶。
需要注意,通過?useradd
?的?-p
?參數指定密碼時候一定要給出crypt加密后的密碼,不是原始密碼。在CentOS 7上,crypt加密后的密碼可以由?openssl passwd -crypt $password
?生成,?$password
?代表原始密碼。?mkpasswd
?這個命令似乎也可以。
限制用戶磁盤空間
在前面的腳本里也看到了,可以通過?quota
?命令限制每個用戶(或每個用戶組)使用的磁盤空間。但如果你的文件系統是xfs,就需要用?xfs_quota
?。為了支持磁盤限額,首先內核要足夠新(Linux 2.4以上),其次分區掛載的時候需要加上?usrquota
?和?grpquota
?兩個參數(在?/etc/fstab
?里)。
限制用戶登錄時間
我們的服務器是教學用的,學生可以通過預約獲得使用權限。我們需要控制學生只能在預約的時間段登錄,這個時間段之外,不僅不能登錄,如果有這個用戶的進程還要殺掉。限制用戶登錄時間有很多辦法,例如寫一個crontab,預約時間結束就用?passwd
?或者?usermod
?把用戶賬戶置為鎖定狀態,到下一次預約時間再解鎖。但這樣相當于一次預約要寫兩行crontab,對于我這種懶人很不友好。
我選擇的辦法是用PAM里的時間模塊,這種辦法首先要編輯?/etc/security/time.conf
?,在里面寫入允許(或禁止)用戶登錄的時間,然后再編輯?/etc/pam.d/login
?在?auth
?條目后加入?account required pam_time.so
?。這種辦法有一個局限,只能指定周幾,不能指定具體的日期。不過我們的預約正好也是以周為單位,所以無所謂了。
殺死某個用戶的所有進程
有兩個方便的命令?killall
?和?pkill
?。當然也可以用?ps
?、?grep
?、?kill
?等命令組合起來,實現更復雜的功能。