目錄
一、構建NTP時間服務器(CentOS7)
NTP服務器是用於局域網服務器時間同步使用的,可以保證局域網所有的服務與時間服務器的時間保持一致,某些應用對時間實時性要求高的必須統一時間。
國內外常用NTP公共時間同步服務器如下供參考:(https://blog.csdn.net/weixin_42588262/article/details/82501488)
server cn.pool.ntp.org
server cn.ntp.org.cn
server ntp.aliyun.com
server time.asia.apple.com
支持IPv6
server time.google.com
server time.cloudflare.com
server time.hko.hk
server ntp.nict.jp
server time.nist.gov
server ntp.tuna.tsinghua.edu.cn
server ntp.neu.edu.cn
server ntp.nc.u-tokyo.ac.jp
NTP服務端:
NTP服務器監聽端口爲UDP的123,需要在本地防火牆開啓客戶端訪問123端口,
vi /etc/sysconfig/iptables添加如下規則:
-A INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
CentOS7不使用iptables,使用firewall開啓123端口參考如下:
firewall-cmd --zone=public --add-port=123/udp --permanent
firewall-cmd --reload
NTP時間服務器安裝:yum install ntp ntpdate -y
修改ntp.conf配置文件 vi /etc/ntp.conf
重啓NTP服務:/etc/init.d/ntpd restart
查看NTP狀態:ntpq -p //只有啓動NTP服務才能監視NTP,否則ntpq: read: Connection refused
//注:默認服務端啓動幾分鐘後才能同步,否則會報no server suitable for synchronization found
CentOS7下默認同步時間工具時chronyd,使用ntp服務需要關閉chronyd服務
[root@10 sysconfig]# systemctl status chronyd
● chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Tue 2020-03-17 13:41:48 EDT; 1min 4s ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Mar 17 10:01:11 10.0.2.15 chronyd[670]: Selected source 84.16.73.33
Mar 17 10:01:11 10.0.2.15 chronyd[670]: System clock wrong by 2.241067 seconds, adju...ed
Mar 17 10:01:13 10.0.2.15 chronyd[670]: System clock was stepped by 2.241067 seconds
Mar 17 10:03:26 10.0.2.15 chronyd[670]: Selected source 185.255.55.20
Mar 17 10:03:28 10.0.2.15 chronyd[670]: Source 185.209.85.222 replaced with 193.182....42
Mar 17 10:03:29 10.0.2.15 chronyd[670]: System clock wrong by 1.764803 seconds, adju...ed
Mar 17 10:04:31 10.0.2.15 chronyd[670]: Selected source 84.16.73.33
Mar 17 10:14:15 10.0.2.15 chronyd[670]: Selected source 185.255.55.20
Mar 17 13:41:48 10.0.2.15 systemd[1]: Stopping NTP client/server...
Mar 17 13:41:48 10.0.2.15 systemd[1]: Stopped NTP client/server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@10 sysconfig]# systemctl disable chronyd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@10 sysconfig]# systemctl start ntpd
[root@10 sysconfig]# systemctl enable ntpd
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
檢查ntp服務已啓動( yum install net-tools)
[root@10 sysconfig]# netstat -tunlp |grep ntp
udp 0 0 10.0.2.15:123 0.0.0.0:* 9382/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 9382/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 9382/ntpd
udp6 0 0 fe80::4f14:193b:a52:123 :::* 9382/ntpd
udp6 0 0 ::1:123 :::* 9382/ntpd
udp6 0 0 :::123 :::* 9382/ntpd
[root@10 sysconfig]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*makaki.miuku.ne 218.186.3.36 2 u 51 64 377 225.246 49.524 25.293
tock.ntp.infoma .GPS. 1 u 260 64 250 221.602 -12.719 12.814
+h199-182-204-19 219.119.208.14 2 u 62 64 377 270.913 -5.889 55.643
+time.cloudflare 10.12.3.42 3 u 51 64 73 235.926 7.386 39.593
客戶端同步時間:
NTP安裝:yum install ntp ntpdate -y
NTP同步時間命令: ntpdate [域名/IP地址]
[root@10 sysconfig]# date
Tue Mar 17 13:35:31 EDT 2020
[root@10 sysconfig]# ntpdate pool.ntp.org
17 Mar 13:36:54 ntpdate[9360]: adjust time server 84.16.73.33 offset -0.043212 sec
[root@10 sysconfig]# date
Tue Mar 17 13:36:59 EDT 2020
客戶端計劃任務:crontab -e
增加一行,計劃在每天的6:00進行時間同步
00 06 * * * /usr/sbin/ntpdate [ntp-server ip] >>/usr/local/logs/crontab/ntpdate.log
ntp.conf部分參數說明:
1. 先處理權限方面的問題,包括放行上層服務器以及開放局域網用戶來源:
restrict default kod nomodify notrap nopeer noquery <==拒絕 IPv4 的用戶
restrict -6 default kod nomodify notrap nopeer noquery <==拒絕 IPv6 的用戶
restrict 220.130.158.71 <==放行 tock.stdtime.gov.tw 進入本 NTP 的服務器
restrict 59.124.196.83<==放行 tick.stdtime.gov.tw 進入本 NTP 的服務器
restrict 59.124.196.84<==放行 time.stdtime.gov.tw 進入本 NTP 的服務器
restrict 127.0.0.1<==底下兩個是默認值,放行本機來源
restrict -6 ::1
restrict 192.168.100.0 mask 255.255.255.0 nomodify <==放行局域網用戶來源,或者列出單獨IP
2. 設定主機來源,請先將原本的 [0|1|2].centos.pool.ntp.org 的設定批註掉:
server 220.130.158.71 prefer <==以這部主機爲最優先的server
server 59.124.196.83
server 59.124.196.84
3.默認的一個內部時鐘數據,用在沒有外部 NTP 服務器時,使用它爲局域網用戶提供服務:
server127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
4.預設時間差異分析檔案與暫不用到的 keys 等,不需要更動它:
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
二、構建DHCP服務器
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)時一個局域網的網絡協議,使用UDP協議工作,主要用途是給內部網絡或網絡服務供應商自動分配IP地址,DHCP有3個端口,其中UDP67和UDP68爲正常的DNCP服務端口,分別作爲DHCPServer和DHCPClient的服務端口。
DHCP可以部署在服務器,交換機或者路由器,可以控制一段IP地址範圍,客戶機登錄服務器時就可以自動獲得DHCP服務器分配的IP地址和子網掩碼。其中DHCP所在服務器需要安裝TCP/IP協議,設置靜態IP地址、子網掩碼、默認網關。
安裝DHCP服務:yum install dhcp dhcp-devel -y
修改配置文件/etc/dhcp/dhcpd.conf,配置參考:/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
重啓DHCP服務:systemctl restart dhcpd.service
客戶端釋放原IP:dhclient -r
客戶端獲取新IP:dhclient
查看IP地址:ifconfig //CentOS7使用命令:ip addr
三、構建SAMBA服務器
Samba時在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它爲局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置“NetBIOS over TCP/IP”使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。
(以下命令適用於CentOS7)
安裝SAMBA服務器:yum install samba -y
配置文件:/etc/samba/smb.conf
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[temp]
comment = Temporary file space
path=/root/tmp
read only = no
public = yes
[data]
comment = Temporary file space
path=/root/data
read only = no
public = yes
注:參數"security = share"已經廢棄,使用testparm檢查參數時提示 WARNING: Ignoring invalid value 'share' for parameter 'security',換用如下:
security = user
map to guest = Bad User
重啓命令:systemctl start smb 查看啓動狀態:systemctl status smb 查看啓動錯誤:testparm 或者 journalctl -xe//參考如下
查看日誌:smbd -F -S
[root@10 samba]# testparm
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: Ignoring invalid value 'share' for parameter 'security'
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: Ignoring invalid value 'share' for parameter 'security'
Error loading services.
注意啓動前:
1、關閉防火牆service iptables stop,或者systemctl stop firewalld.service
2、關閉selinux:
1)臨時關閉:#setenforce 0;
2)永久關閉#vi /etc/selinux/config
#SELINUX=enforcing改爲SELINUX=disabled,重啓生效;
3)查看狀態:#getenforce //enforcing爲開啓、disable爲關閉,臨時關閉爲permissive
這裏添加root用戶來訪問:
[root@localhost ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@localhost ~]#
[root@localhost ~]# pdbedit -a -u root
new password:
retype new password:
Unix username: root
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3575077016-1421681991-2031849627-1000
Primary Group SID: S-1-5-21-3575077016-1421681991-2031849627-513
Full Name: root
Home Directory: \\localhost\root
HomeDir Drive:
Logon Script:
Profile Path: \\localhost\root\profile
Domain: LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 10:06:39 EST
Kickoff time: Wed, 06 Feb 2036 10:06:39 EST
Password last set: Wed, 18 Mar 2020 12:07:07 EDT
Password can change: Wed, 18 Mar 2020 12:07:07 EDT
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl status smb
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2020-03-18 12:08:20 EDT; 26s ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 1600 (smbd)
Status: "smbd: ready to serve connections..."
CGroup: /system.slice/smb.service
├─1600 /usr/sbin/smbd --foreground --no-process-group
├─1602 /usr/sbin/smbd --foreground --no-process-group
├─1603 /usr/sbin/smbd --foreground --no-process-group
└─1604 /usr/sbin/smbd --foreground --no-process-group
Mar 18 12:08:19 localhost.localdomain systemd[1]: Starting Samba SMB Daemon...
Mar 18 12:08:20 localhost.localdomain smbd[1600]: [2020/03/18 12:08:20.316064, 0] ../lib/util/become_daemon.c:138(daemon_ready)
Mar 18 12:08:20 localhost.localdomain systemd[1]: Started Samba SMB Daemon.
Mar 18 12:08:20 localhost.localdomain smbd[1600]: daemon_ready: STATUS=daemon 'smbd' finished starting up and ready to serve connections
[root@localhost ~]#
通過運行訪問:\\192.168.56.101,輸入用戶/密碼即可訪問配置的目錄
四、構建NFS服務器
NFS(Network File System)網絡文件系統,使用於分散式文件系統的協定,是由SUN公司研製的UNIX表示層協議(presentation layer protocol)。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位於服務器磁盤紅的數據,是在類Unix系統間實現磁盤文件共享的一種方法。
NFS在文件傳送或信息傳送過程中依賴於RPC協議(Remote Procedure Call遠程過程調用),RPC是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的。NFS常用於高可用文件共享,多臺服務器共同樣的數據,可擴展性比較差,高可用方案不完善,取而代之的數據量比較大的可以採用MFS、TFS、HDFS等分佈式文件系統。
1、服務端部署
安裝命令: yum -y install nfs-utils
由於CentOS7自帶rpcbind,所以不需要安裝rpc,rpc監聽在111端口,使用ss -tnulp | grep 111查看rpc服務是否啓動,如果沒有啓動,使用systemctl start rpcbind啓動服務,rpc能夠獲得nfs服務器端的端口號等信息,nfs服務器端通過rpc獲得這些信息後才能連接nfs服務器端,rpc服務啓動後如下:
[root@10 ~]# ss -tnulp | grep 111
udp UNCONN 0 0 *:111 *:* users:(("rpcbind",pid=1535,fd=5),("systemd",pid=1,fd=73))
udp UNCONN 0 0 [::]:111 [::]:* users:(("rpcbind",pid=1535,fd=7),("systemd",pid=1,fd=75))
tcp LISTEN 0 128 *:111 *:* users:(("rpcbind",pid=1535,fd=4),("systemd",pid=1,fd=72))
tcp LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=1535,fd=6),("systemd",pid=1,fd=74))
確認安裝是否成功
[root@10 ~]# rpm -qa nfs-utils
nfs-utils-1.3.0-0.65.el7.x86_64
編輯/etc/exports(首次爲空文件),第一列/data表示共享的目錄,IP表示允許的ip客戶端訪問,如果都允許爲“*”,括號裏表示對共享文件的權限,權限的具體說明參考如下。
/data 192.168.56.0/24(rw,async)
ro | 只讀訪問 |
rw | 讀寫訪問 |
sync | 所有數據在請求時寫入共享 |
hide | 在NFS共享目錄中不共享其子目錄 |
no_hide | 共享NFS目錄的子目錄 |
all_squash | 共享文件的UID和GID映射匿戶anonymous,適合公用目錄 |
no_all_squash | 保留共享文件的UID和GID(默認) |
root_squash | root的所有請求映射成如anonymous一樣的權限(默認) |
no_root_squash | root用戶具有根目錄的完全管理訪問權限 |
啓動NFS服務:systemctl start nfs,啓動後可以用rpcinfo -p localhost查看下
[root@10 ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 49201 status
100024 1 tcp 56698 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 39406 nlockmgr
100021 3 udp 39406 nlockmgr
100021 4 udp 39406 nlockmgr
100021 1 tcp 40237 nlockmgr
100021 3 tcp 40237 nlockmgr
100021 4 tcp 40237 nlockmgr
使用showmount -e localhost檢查掛載狀態(常用):
[root@10 /]# showmount -e localhost
Export list for localhost:
/data 192.168.56.0/24
設置開機自啓動:systemctl enable nfs-server.server和systemctl enable rpcbind
2、客戶端部署
yum -y intall nfs-utils,不需要啓動,只使用showmount
showmount -e 192.168.56.102
[root@10 ~]# showmount -e 192.168.56.102
Export list for 192.168.56.102:
/data 192.168.56.0/24
注意:如果提示:clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host),則需要開防火牆:systemctl stop iptables和systemctl stop firewalld.service(測試解決辦法)
掛載到本地目錄: mount -t nfs 192.168.56.102:/data /mnt
到/mnt目錄下則可以查看NFS分享的文件:
[root@10 mnt]# ll
total 4
-rw-r--r-- 1 root root 5 Mar 21 04:16 1.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Mar 21 03:39 test.txt
查看掛載:
[root@10 mnt]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 484M 0 484M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.8M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/mapper/centos_10-root 6.2G 1.3G 5.0G 21% /
/dev/sda1 1014M 136M 879M 14% /boot
tmpfs 100M 0 100M 0% /run/user/0
192.168.56.102:/data 6.2G 1.3G 5.0G 21% /mnt
四、構建FTP服務器
FTP(File Transfer Protocol,文件傳輸協議)是 TCP/IP 協議組中的協議之一。FTP協議包括兩個組成部分,其一爲FTP服務器,其二爲FTP客戶端。其中FTP服務器用來存儲文件,用戶可以使用FTP客戶端通過FTP協議訪問位於FTP服務器上的資源。默認情況下FTP協議使用TCP端口中的 20和21這兩個端口,其中20用於傳輸數據,21用於傳輸控制信息。但是,是否使用20作爲傳輸數據的端口與FTP使用的傳輸模式有關,如果採用主動模式,那麼數據傳輸端口就是20;如果採用被動模式,則具體最終使用哪個端口要服務器端和客戶端協商決定。vsftpd是一款在Linux發行版中最主流的FTP服務器程序,特點是小巧輕快,安全易用。目前開源操作系統中常用的FTP服務器程序主要有vsftpd、ProFTPD、PureFTPd和wuftpd等等。Windows下可以使用Server-U搭建。
1、服務端安裝及匿名訪問
安裝命令: yum -y install vsftpd
啓動命令:service vsftpd start
啓動後就可以通過ftp進行訪問了,輸入ftp://192.168.56.102/訪問,注意關閉防火牆和SELinux
此時是匿名訪問,對應路徑在ftp上在/var/ftp/下
默認開啓FTP服務chkconfig vsftpd on
[root@10 test]# chkconfig vsftpd on
Note: Forwarding request to 'systemctl enable vsftpd.service'.
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
vi /etc/vsftpd/vsftpd.conf //修改配置文件參考如下:
anonymous_enable=NO //禁止匿名用戶訪問
local_enable=YES //允許本地用戶登陸FTP
write_enable=YES //運行用戶在FTP目錄有寫入的權限
local_umask=022 //設置本地用戶的文件生成掩碼爲022,默認是077
dirmessage_enable=YES //激活目錄信息,當遠程用戶更改目錄時,將出現提示信息
xferlog_enable=YES //啓用上傳和下載日誌功能
connect_from_port_20=YES //啓用FTP數據端口的連接請求
xferlog_std_format=YES //是否使用標準的ftpd xferlog日誌文件格式
listen=YES //使vsftpd處於獨立啓動監聽端口模式
pam_service_name=vsftpd //設置PAM認證服務配置文件名稱,文件存放在/etc/pam.d/目錄
2、設置用戶訪問
給ftp添加用戶:
[root@10 data]# useradd test
[root@10 data]# passwd test
Changing password for user test.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
需要修改/etc/vsftpd/vsftpd.conf配置文件以下內容並重新指定根目錄路徑:
anonymous_enable=NO
userlist_deny=NO
local_root=/var/ftp/test
ftp用戶配置中添加test用戶:vi /etc/vsftpd/user_list 然後重啓service vsftpd restart
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
test
如果沒有添加訪問會報錯500:
ftp路徑下:
[root@10 test]# cd /var/ftp/
[root@10 ftp]# ls
pub test
[root@10 ftp]# ll
total 0
drwxr-xr-x. 2 root root 6 Oct 30 2018 pub
drwxr-xr-x. 2 test test 19 Mar 21 05:58 test
訪問ftp://192.168.56.102 會彈出登錄框,如果點了保存密碼,右鍵登錄可以重新打開登錄框
3、用戶管理模塊
除2中方法外,還可以使用vsftpd虛擬用戶登錄FTP。相比2中方法更安全,配置也複雜一些,詳細配置方法這裏不再贅述。
yum
install
pam pam-* db4 db4-*
4、FTP主被動模式
1)FTP主動模式:客戶端從一個任意的非特權端口N(N>1024)連接到FTP服務器的port21命令端口。然後客戶端開始監聽的端口N+1,併發送FTP命令“port N+1”到FTP服務器。接着服務器會從它自己的數據端口(20)連接到客戶端指定的數據端口(N+1)。
2)FTP被動模式:客戶端從一個任意的非特權端口N(N>1024)連接到FTP服務器的port21命令端口。然後客戶端開始監聽端口N+1,同時客戶端提交PASV命令,服務端會開啓一個任意的非特權端口(P>1024),併發送PORT P命令給客戶端,然後客戶端發起從本地端口N+1到服務器的端口P的連接用來傳送數據。
注:部分查看問題方式,查看服務端日誌:tail -fn 100 /var/log/messages
[root@10 data]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@10 data]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
參考文獻:
1.https://www.cnblogs.com/yj411511/p/10794226.html