SSH(Secure Shell Protocol) 是由IETF网络工作小组制定,在进行数据传输之前,SSH先对联级数据包通过加密技术进行加密处理,加密后在进行数据传输,确保了传递的数据安全。
ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。
ssh服务端由两部分组成: openssh(提供ssh服务) ,openssl(提供加密的程序)。
ssh的客户端可以用 XSHELL,Securecrt, Mobaxterm等工具进行连接。
服务器启动的时候自己产生一个密钥(768bit公钥),本地的ssh客户端发送连接请求到ssh服务器,服务器检查连接点客户端发送的数据和IP地址,确认合法后发送密钥(768bits)给客户端,此时客户端将本地私钥(256bit)和服务器的公钥(768bit)结合成密钥对key(1024bit),发回给服务器端,建立连接通过key-pair数据传输。
加密技术:传输过程,数据加密。
1.SSH1没有对客户端的秘钥进行校验,很容易被植入恶意代码。
2.SSH2增加了一个确认联机正确性的Diffe_Hellman机制,每次数据的传输,Server都会检查数据来源的正确性,避免黑客入侵。
SSH2支持RSA和DSA密钥
1.SSH是安全的加密协议,用于远程连接Linux服务器。
2.SSH的默认端口是22,安全协议版本是SSH2。
3.SSH服务器端主要包含2个服务功能SSH连接和SFTP服务器。
4.SSH客户端包含ssh连接命令和远程拷贝scp命令等 。
1.密钥登录,更改端口。
2.牤牛阵法。
3.监听本地内网IP(ListenAddress 192.168.25.*)。
1.登录
ssh -p22 [email protected]
2.直接执行命令 -->最好全路径
ssh [email protected] ls -ltr /backup/data
==>ssh [email protected] /bin/ls -ltr /backup/data
3.查看已知主机
cat /root/.ssh/known_hosts
4.ssh远程执行sudo命令
ssh -t [email protected] sudo rsync hosts /etc/
5.scp
1.功能 -->远程文件的安全(加密)拷贝
scp -P22 -r -p /home/omd/h.txt [email protected]:/home/omd/
2.scp知识小结
scp是加密远程拷贝,cp为本地拷贝
可以推送过去,也可以拉过来
每次都是全量拷贝(效率不高,适合第一次),增量拷贝用rsync
6.ssh自带的sftp功能
1.Window和Linux的传输工具
wincp filezip
sftp -->基于ssh的安全加密传输
samba
2.sftp客户端连接
sftp -oPort=22 [email protected]
put /etc/hosts /tmp
get /etc/hosts /home/omd
3.sftp小结:
1.linux下使用命令: sftp -oPort=22 [email protected]
2.put加客户端本地路径上传
3.get下载服务器端内容到本地
4.远程连接默认连接用户的家目录
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-e escape_char] [-F configfile]
[-i identity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-W host:port] [-w local_tun[:remote_tun]]
[user@]hostname [command]
# 查询openssl软件
rpm -qa openssh openssl
# 查询sshd进程
ps -ef | grep ssh
--> /usr/sbin/sshd
# 查看ssh端口
netstat -lntup | grep ssh
ss | grep ssh (效果同上,同下,好用)
netstat -a | grep ssh(记住这个)
netstat -lnt | grep 22 ==> 查看22端口有没有开/ssh服务有没有开启
技巧: netstat -lnt | grep ssh | wc -l -->只要大于2个就是ssh服务就是好的
# 查看ssh的秘钥目录
ll /root/.ssh/known_hosts # 当前用户家目录的.ssh目录下
# ssh的配置文件
cat /etc/ssh/sshd_config
# ssh服务的关闭
service sshd stop
# ssh服务的开启:
service sshd start
# ssh服务的重启
service sshd reload [停止进程后重启] ==> 推荐
service sshd restart [干掉进程后重启] ==> 不推荐
# ssh远程登录
ssh 192.168.1.100 # 默认利用当前宿主用户的用户名登录
ssh [email protected] # 利用远程机的用户登录
ssh [email protected] -o stricthostkeychecking=no # 首次登陆免输yes登录
ssh [email protected] "ls /home/omd" # 当前服务器A远程登录服务器B后执行某个命令
ssh [email protected] -t "sh /home/omd/ftl.sh" # 当前服务器A远程登录服务器B后执行某个脚本
1、进入用户的家目录
[root@localhost ~]# cd /root/.ssh/ 【root用户就在root目录下的.ssh目录】
[root@localhost ~]# cd /home/omd/.ssh/ 【普通用户就是在家目录下的.ssh目录】
2、根据DSA算法生成私钥和公钥【默认建立在当前用户的家目录】
[root@localhost .ssh]# ssh-keygen -t dsa # 一路回车即可
id_dsa -->私钥(钥匙)
id_dsa.pub -->公钥(锁)
3.拷贝公钥给目标服务器
[root@localhost .ssh]# ssh-copy-id -i id_dsa.pub [email protected] 【 使用ssh登录的默认端口22】
[root@localhost .ssh]# ssh-copy-id -i id_dsa.pub –p 666 [email protected] 【使用ssh登录设置的端口666】
4.查看目标服务器生成的文件
[omd@localhost .ssh]$ ll /home/omd/.ssh/authorized_keys
5.免密码登录目标服务器
ssh [email protected]
6.总结一下钥匙和锁的关系
1.多个钥匙开一把锁
把id_dsa.pub 复制给各个服务器
2.一个钥匙开duobasuo
把id_dsa 传给各个服务器
把id_dsa 传给自己
1.判断物理链路是否通 ping 192.168.25.130 线路 | 防火墙 | 是否同一个网的
ping 本身是icmp协议
2.判断服务是否正常
telnet 192.168.25.130 22
3.Linux防火墙
service iptables status ==> /etc/init.d/iptables status
4.打开ssh的调测进行观察
ssh -vvv [email protected]
1.利用root做ssh key验证
优点:简单,易用
缺点:安全性能差,无法禁止root远程连接
2.利用普通用户omd -->推荐
思路:把要分发的文件拷贝到服务器用户的家目录,然后利用sudo提权拷贝分发的文件和对应目录
优点:安全
缺点:复杂,配置麻烦
1.sudo提权
echo 'omd All=(All) NOPASSWD:/usr/bin/rsync' >> /etc/sudoers
visudo -c
grep omd /etc/sudoers
2.ssh分发到服务器的家目录
ssh -p22 -r /etc/hosts [email protected]:~
3.ssh使用sudo复制到目标服务器的/etc
ssh -t [email protected] sudo rsync hosts /etc/
3.拓展方案2,不用sudo,而是设置suid对固定命令提权
优点:相当安全
缺点:复杂,安全性较差,任何人都可以处理带有suid权限的命令
1.which rsync
2.chmod 4755 /usr/bin/rsync
1.ssh远程的加密连接协议,相关软件openssh,openss。
2.默认端口:22。
3.ssh版本协议。
4.服务器ssh连接,ftp连接,sshd守护进程,开机启动。
5.ssh客户端重要命令:ssh(用户登录&&远程命令),scp,sftp。
6.安全验证方式:口令,密钥 学习原理。
7.ssh服务优化:改端口,改监听,no root,no empty,no DNS。
8.ssh密钥对,公钥在服务器端,私钥在客户端。
转自 https://www.cnblogs.com/ftl1012/p/ssh.html
DHCP (Dynamic Host Configuration Protocol,动态主机管理协议) 是一种基于UDP协议且仅限用于局域网的网络协议,主要用途是为局域网内部设备或网络供应商自动分配IP地址,通常会应用在大型的局域网环境中或局域网内存在比较多的移动办公设备,DHCP协议能够实现集中的管理、分配IP地址。
DHCP服务程序能够使局域网内的主机自动且动态的获取IP地址、子网掩码、网关地址以及DNS服务器地址等信息,且能够有效的提升地址使用率,提高配置效率,减少管理和维护成本。
1、DHCP Client以广播的方式发出DHCP Discover报文。
2、DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。DHCP Server在发出此报文后会存在一个已分配IP地址的纪录。
3、DHCP Client处理最先收到的DHCP Offer报文。DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。
4、DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。
5、DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。
6、DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。
Client--> DHCP DISCOVER
DHCP OFFER <-- Server
Client--> DCHP REQUEST
DCHP ACK <-- Server
Client—获取正确的ip地址信息
Client--> DCHP RELEASE(租约到期释放申请的ip)
租约:即DHCP客户机能够使用动态分配到的IP地址的时间。
# yum install dhcp
2、配置
在/etc/dhcp/dhcpd.conf 下默认只有注释语句,需要参考下模板文件
#mv /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf (此处dhcp版本为4.2.5,不同版本都有不同)
标准的DHCP配置文件包括全局配置参数、子网网段声明、地址配置选项以及地址配置参数:
host 配置具体mac地址主机的专用地址.
全局配置参数用于定义整个配置文件的全局参数,而子网网段声明用于配置整个子网段的地址属性,具体参数有:
参数 | 作用 |
---|---|
ddns-update-style 类型 | 定义DNS服务动态更新的类型,类型包括:none(不支持动态更新),interim(互动更新模式)与ad-hoc(特殊更新模式)。 |
allow/ignore client-updates | 允许/忽略客户机更新DNS记录。 |
default-lease-time 21600 | 默认超时时间。 |
max-lease-time 43200 | 最大超时时间。 |
option domain-name-servers 8.8.8.8 | 定义DNS服务器地址。 |
option domain-name “domain.org” | 定义DNS域名。 |
range | 定义用于分配的IP地址池。 |
option subnet-mask | 定义客户机的子网掩码。 |
option routers | 定义客户机的网关地址。 |
broadcase-address 广播地址 | 定义客户机的广播地址。 |
ntp-server IP地址 | 定义客户机的网络时间服务器(NTP)。 |
nis-servers IP地址 | 定义客户机的NIS域服务器的地址。 |
hardware 硬件类型 MAC地址 | 指定网卡接口的类型与MAC地址。 |
server-name 主机名 | 通知DHCP客户机服务器的主机名。 |
fixed-address IP地址 | 将某个固定IP地址分配给指定主机。 |
time-offset 偏移差 | 指定客户机与格林尼治时间的偏移差。 |
转自 https://www.cnblogs.com/whych/p/9136344.html
一般来讲,人们将计算机联网的首要目的就是获取资料,而文件传输是一种非常重要的获取资料的方式。今天的互联网是由几千万台个人计算机、工作站、服务器、小型机、大型机、巨型机等具有不同型号、不同架构的物理设备共同组成的,而且即便是个人计算机,也可能会装有Windows、Linux、UNIX、Mac等不同的操作系统。为了能够在如此复杂多样的设备之间解决问题解决文件传输问题,文件传输协议(FTP)应运而生。
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。FTP服务器普遍部署于内网中,具有容易搭建、方便管理的特点。而且有些FTP客户端工具还可以支持文件的多点下载以及断点续传技术,因此FTP服务得到了广大用户的青睐。FTP协议的传输拓扑如图11-1所示。
FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。FTP协议有下面两种工作模式。
主动模式:FTP服务器主动向客户端发起连接请求。
被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)。
(防火墙一般是用于过滤从外网进入内网的流量,因此有些时候需要将FTP的工作模式设置为主动模式,才可以传输数据。本文中使用的是被动模式)
vsftpd作为更加安全的文件传输的服务程序,允许用户以三种认证模式登录到FTP服务器上。
**匿名开放模式:**是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。
**本地用户模式:**是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器。
**虚拟用户模式:**是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。
ftp是Linux系统中以命令行界面的方式来管理FTP传输服务的客户端工具。我们首先手动安装这个ftp客户端工具,以便在后续实验中查看结果。
1.首先检查一下你的远程服务器是否已经安装了FTP服务。
#rpm -qa | grep vsftpd
如果啥都没显示,恭喜你,没有安装ftp服务,你可以安心安装。
运行下面的命令就可以完成vsftpd的安装
#yum -y install vsftpd
安装提示:
[root@linuxprobe ~]# yum install vsftpd
Loaded plugins: langpacks, product-id, subscription-manager
………………省略部分输出信息………………
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
vsftpd x86_64 3.0.2-9.el7 rhel 166 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 166 k
Installed size: 343 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : vsftpd-3.0.2-9.el7.x86_64 1/1
Verifying : vsftpd-3.0.2-9.el7.x86_64 1/1
Installed:
vsftpd.x86_64 0:3.0.2-9.el7
Complete!
安装完成再次利用上面的rpm命令检查一下是否完成安装,如果完成安装,那就可以继续。
vsftpd服务程序的主配置文件(/etc/vsftpd/vsftpd.conf)内容总长度达到123行,但其中大多数参数在开头都添加了井号(#),从而成为注释信息。
vsftpd服务程序常用的参数以及作用如下:
参数 | 作用 |
---|---|
listen=[YES | NO] |
listen_address=IP地址 | 设置要监听的IP地址 |
listen_port=21 | 设置FTP服务的监听端口 |
download_enable=[YES | NO] |
userlist_enable=[YES | NO] |
userlist_deny=[YES | NO] |
max_clients=0 | 最大客户端连接数,0为不限制 |
max_per_ip=0 | 同一IP地址的最大连接数,0为不限制 |
anonymous_enable=[YES | NO] |
anon_upload_enable=[YES | NO] |
anon_umask=022 | 匿名用户上传文件的umask值 |
anon_root=/var/ftp | 匿名用户的FTP根目录 |
anon_mkdir_write_enable=[YES | NO] |
anon_other_write_enable=[YES | NO] |
anon_max_rate=0 | 匿名用户的最大传输速率(字节/秒),0为不限制 |
local_enable=[YES | NO] |
local_umask=022 | 本地用户上传文件的umask值 |
local_root=/var/ftp | 本地用户的FTP根目录 |
chroot_local_user=[YES | NO] |
local_max_rate=0 | 本地用户最大传输速率(字节/秒),0为不限制 |
1、开启vsftpd服务
#service vsftpd start
#在centos 中使用 systemctl start vsftpd(上面的也可以)
2、检查vsftpd服务
#service vsftpd status
3、注意:关于防火墙的问题
CentOS7.0版本的linux系统的防火墙是firewalld,其他版本的可能是iptables(没有去确认)。
这里装的时候把防火墙给永久关闭了。
firewalld防火墙关闭代码
关闭防火墙:
systemctl stop firewalld.service
永久禁止防火墙:
systemctl disable firewalld.service
检查防火墙状态:
systemctl status firewalld.service
提示:Active: inactive (dead)就表示关闭了。
iptables防火墙关闭代码
查询防火墙状态:
[root@localhost ~]# service iptables status
停止防火墙:
[root@localhost ~]# service iptables stop
启动防火墙:
[root@localhost ~]# service iptables start
重启防火墙 :
[root@localhost ~]# service iptables restart
永久关闭防火墙:
[root@localhost ~]# chkconfig iptables off
永久关闭后启用:
[root@localhost ~]# chkconfig iptables on
特别注意:不要卸载iptables防火墙,否则会有大麻烦
如果因工作需求,无法关闭iptables防火墙,需要在iptables防火墙规则里添加FTP端口号:
(iptables防火墙)添加下面的代码到/etc/sysconfig/iptables里去。
(firewalld)添加下面的代码到/etc/sysconfig/firewalld里去。
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
重启防火墙服务:
#systemctl restart iptables.service
上面提到,在vsftpd服务程序中,匿名开放模式是最不安全的一种认证模式。任何人都可以无需密码验证而直接登录到FTP服务器。这种模式一般用来访问不重要的公开文件(在生产环境中尽量不要存放重要文件)。当然,如果采用第8章中介绍的防火墙管理工具(如Tcp_wrappers服务程序)将vsftpd服务程序允许访问的主机范围设置为企业内网,也可以提供基本的安全性。
vsftpd服务程序默认开启了匿名开放模式,我们需要做的就是开放匿名用户的上传、下载文件的权限,以及让匿名用户创建、删除、更名文件的权限。需要注意的是,针对匿名用户放开这些权限会带来潜在危险,我们只是为了在Linux系统中练习配置vsftpd服务程序而放开了这些权限,不建议在生产环境中如此行事。表11-2罗列了可以向匿名用户开放的权限参数以及作用。
可以向匿名用户开放的权限参数以及作用:
参数 | 作用 |
---|---|
anonymous_enable=YES | 允许匿名访问模式 |
anon_umask=022 | 匿名用户上传文件的umask值 |
anon_upload_enable=YES | 允许匿名用户上传文件 |
anon_mkdir_write_enable=YES | 允许匿名用户创建目录 |
anon_other_write_enable=YES | 允许匿名用户修改目录名称或删除目录 |
**快捷方法:**直接向vsftpd服务程序的主配置文件(/etc/vsftpd/vsftpd.conf)中添加下面的配置参数,原本的参数都删了。
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=YES
2 anon_umask=022
3 anon_upload_enable=YES
4 anon_mkdir_write_enable=YES
5 anon_other_write_enable=YES
6 local_enable=YES
7 write_enable=YES
8 local_umask=022
9 dirmessage_enable=YES
10 xferlog_enable=YES
11 connect_from_port_20=YES
12 xferlog_std_format=YES
13 listen=NO
14 listen_ipv6=YES
15 pam_service_name=vsftpd
16 userlist_enable=YES
17 tcp_wrappers=YES
然后重启FTP服务。
[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
**测试:**现在就可以在客户端执行ftp命令连接到远程的FTP服务器了。在vsftpd服务程序的匿名开放认证模式下,其账户统一为anonymous,密码为空。而且在连接到FTP服务器后,默认访问的是/var/ftp/pub目录。我们可以切换到该目录下的pub目录中,然后尝试创建一个新的目录文件,以检验是否拥有写入权限:
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:此处敲击回车即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
550 Permission denied.
系统显示拒绝创建目录,查看该目录的权限得知,只有root管理员才有写入权限。怪不得系统会拒绝操作呢!进入到/var/ftp/pub目录下,右键–属性–权限,将其他类的访问权限改为“创建和删除”,即可通过FTP在该目录下创建文件夹、上传、下载,更改文件名等操作。
如果还不行,系统提示“创建目录的操作失败”(Create directory operation failed),那就是SELinux服务在“捣乱”了吧。
下面使用getsebool命令查看与FTP相关的SELinux域策略都有哪些:
[root@linuxprobe ~]# getsebool -a | grep ftp
ftp_home_dir --> off
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
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
我们可以根据经验(需要长期培养,别无它法)和策略的名称判断出是ftpd_full_access–> off策略规则导致了操作失败。接下来修改该策略规则,并且在设置时使用-P参数让修改过的策略永久生效,确保在服务器重启后依然能够顺利写入文件。
[root@linuxprobe ~]# setsebool -P ftpd_full_access=on
或:关闭SELinux
# vi /etc/selinux/config
将 SELINUX=XXX -->XXX 代表级别
改为
SELINUX=disabled
然后重启系统,或者执行命令:setenforce 0。
现在便可以顺利执行文件创建、修改及删除等操作了。
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): anonymous
331 Please specify the password.
Password:此处敲击回车即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir files
257 "/pub/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> bye
221 Goodbye.
相较于匿名开放模式,本地用户模式要更安全,而且配置起来也很简单。如果大家之前用的是匿名开放模式,现在就可以将它关了,然后开启本地用户模式。针对本地用户模式的权限参数以及作用如下表所示。
本地用户模式使用的权限参数以及作用:
参数 | 作用 |
---|---|
anonymous_enable=NO | 禁止匿名访问模式 |
local_enable=YES | 允许本地用户模式 |
write_enable=YES | 设置可写权限 |
local_umask=022 | 本地用户模式创建文件的umask值 |
userlist_deny=YES | 启用“禁止用户名单”,名单文件为ftpusers和user_list |
userlist_enable=YES | 开启用户作用名单文件功能 |
**快捷方法:**直接向vsftpd服务程序的主配置文件(/etc/vsftpd/vsftpd.conf)中添加下面的配置参数,原本的参数都删了。
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=NO
2 local_enable=YES
3 write_enable=YES
4 local_umask=022
5 dirmessage_enable=YES
6 xferlog_enable=YES
7 connect_from_port_20=YES
8 xferlog_std_format=YES
9 listen=NO
10 listen_ipv6=YES
11 pam_service_name=vsftpd
12 userlist_enable=YES
13 tcp_wrappers=YES
在vsftpd服务程序的主配置文件中正确填写参数,然后保存并退出。还需要重启vsftpd服务程序,让新的配置参数生效。在执行完上一个实验后还原了虚拟机的读者,还需要将配置好的服务添加到开机启动项中,以便在系统重启自后依然可以正常使用vsftpd服务。
[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
按理来讲,现在已经完全可以本地用户的身份登录FTP服务器了。但是在使用root管理员登录后,系统提示如下的错误信息:
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): root
530 Permission denied.
Login failed.
ftp>
可见,在我们输入root管理员的密码之前,就已经被系统拒绝访问了。这是因为vsftpd服务程序所在的目录中默认存放着两个名为“用户名单”的文件(ftpusers和user_list)。不知道大家是否已看过一部日本电影“死亡笔记”(刘遄老师在上学期间的最爱),里面就提到有一个黑色封皮的小本子,只要将别人的名字写进去,这人就会挂掉。vsftpd服务程序目录中的这两个文件也有类似的功能—只要里面写有某位用户的名字,就不再允许这位用户登录到FTP服务器上。
[root@linuxprobe ~]# cat /etc/vsftpd/user_list
1 # vsftpd userlist
2 # If userlist_deny=NO, only allow users in this file
3 # If userlist_deny=YES (default), never allow users in this file, and
4 # do not even prompt for a password.
5 # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
6 # for users that are denied.
7 root
8 bin
9 daemon
10 adm
11 lp
12 sync
13 shutdown
14 halt
15 mail
16 news
17 uucp
18 operator
19 games
20 nobody
[root@linuxprobe ~]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
1 root
2 bin
3 daemon
4 adm
5 lp
6 sync
7 shutdown
8 halt
9 mail
10 news
11 uucp
12 operator
13 games
14 nobody
果然如此!vsftpd服务程序为了保证服务器的安全性而默认禁止了root管理员和大多数系统用户的登录行为,这样可以有效地避免黑客通过FTP服务对root管理员密码进行暴力破解。如果您确认在生产环境中使用root管理员不会对系统安全产生影响,只需按照上面的提示删除掉root用户名即可。
我们也可以选择ftpusers和user_list文件中没有的一个普通用户尝试登录FTP服务器:
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): linuxprobe (普通用户)
331 Please specify the password.
Password:此处输入该用户的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
550 Create directory operation failed.
新增ftp用户 vftpuser:
#/usr/sbin/adduser -d /mnt/ftp -g ftp -s /sbin/nologin vftpuser
新增用户vftpuser,用户的主目录是/mnt/ftp 目录,用户组是ftp,不能登录的账户。
设置vftpuser密码:
#passwd vftpuser
回车后输入密码.。
修改/mnt/ftp/的目录权限:
#chmod 755 /mnt/ftp/
重启vsftp服务:
#/sbin/service vsftpd restart
查看SElinux策略内ftp相关权限,并修改。
[root@linuxprobe ~]# getsebool -a | grep ftp
ftp_home_dir --> off
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
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off
[root@linuxprobe ~]# setsebool -P ftpd_full_access=on
或:关闭SELinux:
# vi /etc/selinux/config
将 SELINUX=XXX -->XXX 代表级别改为:
SELINUX=disabled
然后重启系统,或者执行命令:setenforce 0。
在实验课程和生产环境中设置SELinux域策略时,一定记得添加-P参数,否则服务器在重启后就会按照原有的策略进行控制,从而导致配置过的服务无法使用。
在配置妥当后再使用本地用户尝试登录下FTP服务器,分别执行文件的创建、重命名及删除等命令。操作均成功!
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): linuxprobe
331 Please specify the password.
Password:此处输入该用户的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
257 "/home/linuxprobe/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> bye
221 Goodbye.
最后讲解的虚拟用户模式是这三种模式中最安全的一种认证模式,当然,因为安全性较之于前面两种模式有了提升,所以配置流程也会稍微复杂一些。
第1步:
创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。例如,我们分别创建出zhangsan和lisi两个用户,密码均为redhat:
[root@linuxprobe ~]# cd /etc/vsftpd/
[root@linuxprobe vsftpd]# vim vuser.list
zhangsan
redhat
lisi
redhat
但是,明文信息既不安全,也不符合让vsftpd服务程序直接加载的格式,因此需要使用db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件,并且降低数据库文件的权限(避免其他人看到数据库文件的内容),然后再把原始的明文信息文件删除。
[root@linuxprobe vsftpd]# db_load -T -t hash -f vuser.list vuser.db
[root@linuxprobe vsftpd]# file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
[root@linuxprobe vsftpd]# chmod 600 vuser.db
[root@linuxprobe vsftpd]# rm -f vuser.list
第2步:
创建vsftpd服务程序用于存储文件的根目录(/var/ftproot)以及虚拟用户映射的系统本地用户(virtual)。FTP服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认位置。
由于Linux系统中的每一个文件都有所有者、所属组属性,例如使用虚拟账户“张三”新建了一个文件,但是系统中找不到账户“张三”,就会导致这个文件的权限出现错误。为此,需要再创建一个可以映射到虚拟用户的系统本地用户。简单来说,就是让虚拟用户默认登录到与之有映射关系的这个系统本地用户的家目录中,虚拟用户创建的文件的属性也都归属于这个系统本地用户,从而避免Linux系统无法处理虚拟用户所创建文件的属性权限。
为了方便管理FTP服务器上的数据,可以把这个系统本地用户的家目录设置为/var目录(该目录用来存放经常发生改变的数据)。并且为了安全起见,我们将这个系统本地用户设置为不允许登录FTP服务器,这不会影响虚拟用户登录,而且还可以避免黑客通过这个系统本地用户进行登录。
[root@linuxprobe ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@linuxprobe ~]# ls -ld /var/ftproot/
drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/
[root@linuxprobe ~]# chmod -Rf 755 /var/ftproot/
第3步:
建立用于支持虚拟用户的PAM文件。
PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的API把系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。要想把PAM功能和作用完全讲透,至少要一个章节的篇幅才可以(对该主题感兴趣的读者敬请关注本书的进阶篇,里面会详细讲解PAM)。
通俗来讲,PAM是一组安全机制的模块,系统管理员可以用来轻易地调整服务程序的认证方式,而不必对应用程序进行任何修改。PAM采取了分层设计(应用程序层、应用接口层、鉴别模块层)的思想,其结构如下图所示:
新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:
[root@linuxprobe ~]# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
第4步:
在vsftpd服务程序的主配置文件中通过pam_service_name参数将PAM认证文件的名称修改为vsftpd.vu,PAM作为应用程序层与鉴别模块层的连接纽带,可以让应用程序根据需求灵活地在自身插入所需的鉴别功能模块。当应用程序需要PAM认证时,则需要在应用程序中定义负责认证的PAM配置文件,实现所需的认证功能。
例如,在vsftpd服务程序的主配置文件中默认就带有参数pam_service_name=vsftpd,表示登录FTP服务器时是根据/etc/pam.d/vsftpd文件进行安全认证的。现在我们要做的就是把vsftpd主配置文件中原有的PAM认证文件vsftpd修改为新建的vsftpd.vu文件即可。该操作中用到的参数以及作用如下表所示。
利用PAM文件进行认证时使用的参数以及作用:
参数 | 作用 |
---|---|
anonymous_enable=NO | 禁止匿名开放模式 |
local_enable=YES | 允许本地用户模式 |
guest_enable=YES | 开启虚拟用户模式 |
guest_username=virtual | 指定虚拟用户账户 |
pam_service_name=vsftpd.vu | 指定PAM文件 |
allow_writeable_chroot=YES | 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求 |
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=NO
2 local_enable=YES
3 guest_enable=YES
4 guest_username=virtual
5 allow_writeable_chroot=YES
6 write_enable=YES
7 local_umask=022
8 dirmessage_enable=YES
9 xferlog_enable=YES
10 connect_from_port_20=YES
11 xferlog_std_format=YES
12 listen=NO
13 listen_ipv6=YES
14 pam_service_name=vsftpd.vu
15 userlist_enable=YES
16 tcp_wrappers=YES
第5步:
为虚拟用户设置不同的权限。虽然账户zhangsan和lisi都是用于vsftpd服务程序认证的虚拟账户,但是我们依然想对这两人进行区别对待。比如,允许张三上传、创建、修改、查看、删除文件,只允许李四查看文件。这可以通过vsftpd服务程序来实现。只需新建一个目录,在里面分别创建两个以zhangsan和lisi命名的文件,其中在名为zhangsan的文件中写入允许的相关权限(使用匿名用户的参数):
[root@linuxprobe ~]# mkdir /etc/vsftpd/vusers_dir/
[root@linuxprobe ~]# cd /etc/vsftpd/vusers_dir/
[root@linuxprobe vusers_dir]# touch lisi
[root@linuxprobe vusers_dir]# vim zhangsan
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
然后再次修改vsftpd主配置文件,通过添加user_config_dir参数来定义这两个虚拟用户不同权限的配置文件所存放的路径。为了让修改后的参数立即生效,需要重启vsftpd服务程序并将该服务添加到开机启动项中:
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/vusers_dir
[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service
第6步:
设置SELinux域允许策略,然后使用虚拟用户模式登录FTP服务器。相信大家可以猜到,SELinux会继续来捣乱。所以,先按照前面实验中的步骤开启SELinux域的允许策略,以免再次出现操作失败的情况:
[root@linuxprobe ~]# getsebool -a | grep ftp
ftp_home_dir –> off
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
sftpd_anon_write –> off
sftpd_enable_homedirs –> off
sftpd_full_access –> off
sftpd_write_ssh_home –> off
tftp_anon_write –> off
tftp_home_dir –> off
[root@linuxprobe ~]# setsebool -P ftpd_full_access=on
此时,不但可以使用虚拟用户模式成功登录到FTP服务器,还可以分别使用账户zhangsan和lisi来检验他们的权限。
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): lisi
331 Please specify the password.
Password:此处输入虚拟用户的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
550 Permission denied.
ftp> exit
221 Goodbye.
[root@linuxprobe ~]# ftp 192.168.10.10
Connected to 192.168.10.10 (192.168.10.10).
220 (vsFTPd 3.0.2)
Name (192.168.10.10:root): zhangsan
331 Please specify the password.
Password:此处输入虚拟用户的密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir files
257 "/files" created
ftp> rename files database
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir database
250 Remove directory operation successful.
ftp> bye
221 Goodbye.
转自 https://www.cnblogs.com/guohongwei/p/10848698.html
NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
最早由sun公司开发,是类unix系统间实现磁盘共享的一种方法。
缺点:
1.nfs属于本地文件系统,在高并发场景和大存储量下,需要使用分布式存储mfs, FastDFS, tfs(taobao)等。
2.客户端的数据都是通过明文传送。客户端没有用户认证机制,安全性能一般,所以建议一般在局域网内使用。
3.容易发生单点故障,即server服务器宕机所有的客户端都不能访问。
使用场景:
web集群中NFS服务器主要用于存储用户上传的信息,方便集群中机器获取用户数据。如图片、附件、头像、视频、音频。
NFS服务依赖于RPC(Remote Procedure Call)服务。nfsd默认端口2049,实际使用过程中因为需要提供不同的服务,因此NFS启动时还会随机调用系统的空闲端口。在centos5.x中默认调用1024以下端口,centos6.x后默认调用的端口号一般较大,30000以上。因为NFS随机端口的原因所以需要RPC服务来和client端确认传输端口等。
因为NFS服务启动时需要向RPC注册端口信息,所以RPC要在NFS服务启动之前启动。
在NFS server上创建用于共享的目录/data,client用mount将/data挂载到自己本地一个目录上,挂载目录可以和/data名称不同。将挂载信息写入本机开机启动文件里 如 /etc/rc.local
客户端无需启动NFS服务,但需要启动RPC服务。
1、安装软件
NFS server需要至少安装两个软件nfs-utils 和rpcbind。客户端只要安装rpcbind。
rpm -qa nfs-utils rpcbind
安装完nfs服务一般会自动生成配置文件exports,如果没有就自己创建一个 /etc/exports
yum install -y nfs-utils rpcbind
cat /etc/exports
创建共享目录,将文件所有者指定为nfsnobody。nfsnobody用户在安装nfs时会自动创建。
如果不指定共享用户,则nfs系统在分配权限时会以用户uid为主,客户端如果用root账户会在服务器被自动降级至nfsnobody。
mkdir -p /data/nfs
chown -R nfsnobody:nfsnobody /data/nfs
2、server配置文件
格式:共享目录 指定共享对象(共享参数)
例: /data 192.168.1.0/24(rw,sync)
将 /data 共享给192.168.1.x ,客户端权限rw
其中共享对象可以用通配符,比如 * 代表所有地址。
配置参数:
rw: 读写 ro :只读 sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:是大数据时使用,是先写到缓存区,必要时再写到磁盘里。 all_squash:所有访问用户都映射为匿名用户或用户组;
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
root_squash(默认):将来访的root用户映射为匿名用户或用户组;
no_root_squash:来访的root用户保持root帐号权限;
wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
no_wdelay:若有写操作则立即执行,应与sync配合使用; subtree_check
:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check(默认):即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
配置server参数:
# nfs dir /data/nfs
/data/nfs 192.168.1.0/24(rw)
/data/nfs 192.168.86.131(rw)
也可以写成一行:
/data/nfs 192.168.1.0/24(rw) 192.168.86.131(rw,sync)
启动服务:注意先启动rpcbind再启动nfs:
[root@localhost data]# service rpcbind start
Starting rpcbind: [ OK ]
[root@localhost data]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
查询nfs挂载,showmount -e 192.168.1.240 后面可以接ip来查看。
[root@localhost data]# showmount -e
Export list for localhost:
/data/nfs 192.168.1.0/24,192.168.86.131
NFS服务开启后,查看共享目录参数:
[root@localhost data]# cat /var/lib/nfs/etab
/data/nfs 192.168.86.131(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)
/data/nfs 192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)
让nfs服务开机启动:
[root@localhost ~]# chkconfig rpcbind on
[root@localhost ~]# chkconfig nfs on
[root@localhost ~]# chkconfig --list rpcbind
rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# chkconfig --list nfs
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
3、客户端配置
安装rpcbind和nfs,启动rpcbind,nfs可以不启动。
客户端挂载nfs共享目录:
mount -t nfs 192.168.1.240:/data/nfs /nfs #挂载nfs server的/data/nfs 到/nfs
[root@centos68 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.5G 2.0G 7.1G 22% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 33M 147M 19% /boot
/dev/sdb1 4.8G 11M 4.6G 1% /data
192.168.1.240:/data/nfs
2.9G 2.7G 126M 96% /nfs # nfs挂载信息
注:一般不将nfs挂载信息写入fstab,因为nfs依赖于rpc服务,rpc服务启动晚于fstab时会出错。可以将挂载信息写入 /etc/rc.local
vim /etc/rc.local
#mount nfs_data
mount -t nfs 192.168.1.240:/data/www/image/ /data/www/image/
mount -t nfs 192.168.1.240:/data/www/user/ /data/www/user/
关于默认账户:
nfs客户端写数据除了nfs配置文件要有rw权限,对于目录也要有对应操作权限。
如果/data/nfs目录没有给写入权限,即使exports里设置了rw也是没有权限写入的。客户端默认操作账户为nfsnobody。
[root@localhost ~]# cat /var/lib/nfs/etab
/data/nfs 192.168.86.131(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)
/data/nfs 192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)
查看/var/lib/nfs/etab其中 anonuid=65534,anongid=65534 为默认账户uid,即nfsnobody的默认uid。
查看已挂载设备挂载参数 cat /proc/mounts:
[root@localhost ~]# cat /proc/mounts |grep 192
192.168.1.240:/data/nfs /mnt nfs4 rw,noexec,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.240,minorversion=0,local_lock=none,addr=192.168.1.240 0 0
客户端挂载优化参数
noatime 不更新文件的inode访问时间戳,文件很多时此参数可以提高效率。
nodiratime 不更新目录的访问时间戳,同上。
nosuid 关闭挂载目录的suid
noexec 不允许执行二进制文件。shell脚本无法直接使用,但是用sh xxx.sh依然可以调用。
rsize 系统每次读取的最大字节,centos6.5默认131072,此参数过小会影响系统的I/O效率.
wsize 系统每次写入的最大字节,同上
defaults 使用默认的选项。默认选项为rw、suid、dev、exec、anto nouser与async。
例: mount -o nosuid noexec noatime -t nfs 192.168.1.240:/data/nfs /mnt
卸载挂载点,如果提示 /mnt: device is busy ,可以用lf参数强制卸载:
umount -lf /mnt
转自 https://www.cnblogs.com/sunny18/p/8287934.html
DNS是计算机域名系统(Domain Name System 或Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,一个IP地址可以有多个域名,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器通常为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。提供DNS服务的就是DNS服务器。DNS服务器可以分为三种,高速缓存服务器(Cache-only server)、主服务器(Primary Name server)、辅助服务器(Second Name Server)。
一般运作中的域名最好有两台或以上的DNS服务器,一台称为主域名服务器,而另一台称为从域名服务器。第二个DNS服务器通常用于故障转移:如果一台宕机,另外一台就激活成为DNS服务器。
最大域就是根域,用.表示接下来就是一级域,也就是顶级域。注:根域和顶级域是特殊的,不能由个人指定。
然后就是二级域三级域等,直到最后的主机(这些是可以由公司、组织、个人申请使用的)。
1、安装
yum –y install bind #安装DNS 服务
yum install bind-utils –y #安装DNS 检测工具
2、 编辑配置文件
vi /etc/named.conf
named-checkconf
4、编辑配置文件
vi /etc/named.rfc1912.zones
cd /var/named
cp -p named.localhost hello.com.zone #编辑正向区域数据配置文件,注意复制配置文件时,要保持源文件权限
vi hello.com.zone //编辑正向区域数据配置文件内容
cp -p hello.com.zone hello.com.local #复制反向区域数据配置文件
vi hello.com.local
service named restart #重新启动服务
vi /etc/resolv.conf #添加新的DNS nameserver 192.168.73.160
nslookup www.hello.com #正向测试DNS
nslookup 192.168.73.160 #反向测试DNS
转自 https://www.cnblogs.com/yueshang/p/9447456.html