Linux运维笔记(二)

目录

一、构建NTP时间服务器(CentOS7)

二、构建DHCP服务器

三、构建SAMBA服务器

四、构建NFS服务器

1、服务端部署

2、客户端部署

四、构建FTP服务器

1、服务端安装及匿名访问

2、设置用户访问

3、用户管理模块

4、FTP主被动模式


一、构建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

2.https://www.cnblogs.com/zqyanywn/p/11454236.html

3.https://www.cnblogs.com/kevingrace/p/8550810.html

猜你喜欢

转载自blog.csdn.net/xlyrh/article/details/104932859