准备两台centos 7服务器
一台用来做dns服务 另一台做samba和ftp服务
要求:服务需求 DNS服务器
为公司局域网内各主机提供域名解析
各主机均能通过域名访问FTP及Samba服务器
FTP服务器:
为公司员工提供图片存储和访问服务
公司UI设计师能够上传下载图片
外包人员能够上传浏览图片
Samba服务器:
为公司员工提供文件共享服务
可以直接修改服务器上的文件
安全需求:
加强系统账号安全
加强系统引导和登录安全
下面是配置dns的脚本:
#!/bin/bash
#function: 搭建主域名服务器脚本
#author: 20250325 IT小旋风
# 判断是否是root用户
if [ "$USER" != "root" ]; then
echo "不是root用户,无法进行安装操作"
exit 1
fi
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld && echo "防火墙已经关闭"
sed -i 's/SELINUX=*/SELINUX=disabled/g' /etc/selinux/config && setenforce 0 && echo "关闭selinux"
# 安装bind服务
yum install bind bind-utils -y
# 测试是否安装成功
if [ $? -eq 0 ]; then
echo "bind安装成功"
else
echo "bind安装失败,即将退出"
exit 0
fi
# 提示用户输入信息
read -p "请输入主服务器的 IP 地址: " MASTER_IP
read -p "请输入域名: " DOMAIN
# 提取 IP 地址的网络段
NETWORK=$(echo $MASTER_IP | cut -d '.' -f 1-3)
REVERSE_NETWORK=$(echo $NETWORK | awk -F. '{print $3"."$2"."$1}')
# 配置主服务器的 named.conf
cat << EOF > /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; $MASTER_IP; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "$DOMAIN" IN {
type master;
file "$DOMAIN.zone";
};
zone "$REVERSE_NETWORK.in-addr.arpa" IN {
type master;
file "$REVERSE_NETWORK.rev";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
EOF
# 创建正向区域文件
cat << EOF > /var/named/$DOMAIN.zone
\$TTL 86400
@ IN SOA ns1.$DOMAIN. admin.$DOMAIN. (
$(date +%Y%m%d01) ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN NS ns1.$DOMAIN.
ns1 IN A $MASTER_IP
www IN A $MASTER_IP
EOF
# 创建反向区域文件
MASTER_LAST_OCTET=$(echo $MASTER_IP | cut -d '.' -f 4)
cat << EOF > /var/named/$REVERSE_NETWORK.rev
\$TTL 86400
@ IN SOA ns1.$DOMAIN. admin.$DOMAIN. (
$(date +%Y%m%d01) ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN NS ns1.$DOMAIN.
$MASTER_LAST_OCTET IN PTR ns1.$DOMAIN.
EOF
# 修改文件权限
chown named:named /var/named/$DOMAIN.zone
chown named:named /var/named/$REVERSE_NETWORK.rev
# 启动并设置开机自启
systemctl start named
systemctl enable named
echo "主服务器配置完成!"
脚本完成图:
添加以下解析
[root@localhost ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.168.133
nameserver 192.168.168.2
验证:
部署ftp服务
下面是部署的脚本
#!/bin/bash
# 1. 安装 Vsftpd 服务
yum install vsftpd -y
# 2. 创建 vsftpd 使用的系统用户,主目录为 /home/vsftpd,禁止 ssh 登录, 创建之后所有虚拟用户使用这个系统用户访问文件
useradd vsftpd -d /vsftpd -s /bin/false
# 3. 创建虚拟用户主目录,比如虚拟用户叫 ftp1 和 ftp2
mkdir -p /vsftpd/ftp1/
mkdir -p /vsftpd/ftp2/
chown -R vsftpd.vsftpd /vsftpd/*
# 4. 创建虚拟用户
echo "ftp1" > /etc/vsftpd/loginusers.conf
echo "123456" >> /etc/vsftpd/loginusers.conf
echo "ftp2" >> /etc/vsftpd/loginusers.conf
echo "456789" >> /etc/vsftpd/loginusers.conf
# 5. 创建数据库文件
db_load -T -t hash -f /etc/vsftpd/loginusers.conf /etc/vsftpd/loginusers.db
chmod 600 /etc/vsftpd/loginusers.db
chmod 600 /etc/vsftpd/loginusers.conf
# 6. 启用数据库文件
echo -e "auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers\naccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers" > /etc/pam.d/vsftpd
# 7. 创建虚拟用户配置文件
mkdir -p /etc/vsftpd/userconf
echo -e "local_root=/vsftpd/ftp1\nwrite_enable=YES" > /etc/vsftpd/userconf/ftp1
echo -e "local_root=/vsftpd/ftp2\nwrite_enable=YES" > /etc/vsftpd/userconf/ftp2
# 8. 修改主配置文件
cat << EOF > /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
#网络与端口
listen=NO
listen_ipv6=YES
pasv_min_port=40000
pasv_max_port=40010
listen_port=21
#超时与并发
idle_session_timeout=300
data_connection_timeout=600
max_clients=3000
max_per_ip=3000
#虚拟用户
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/userconf
virtual_use_local_privs=YES
#日志与传输
xferlog_enable=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
#其他配置
use_localtime=YES
ftpd_banner=Welcome to blah FTP service.
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
dirmessage_enable=YES
connect_from_port_20=YES
async_abor_enable=YES
EOF
# 9. 重启服务使配置生效
systemctl restart vsftpd
echo "Vsftpd 服务配置完成!"
验证:
部署samba服务
1. yum install samba -y
2. mkdir -p /samba
chmod -R 777 /samba
3. useradd -M samba #创建系统用户不创建属主目录
smbpasswd -a samba #为其设置samba密码
4. vim /etc/samba/smb.conf
[samba]
comment = IMMENGXIN ##共享的描述性注释
path = /samba ##共享目录的实际路径
public = yes ##表明允许未授权的用户访问该共享
browseable = yes ##表示这个共享在网络中是可见的
read only = no ##意味着客户端对该共享目录具备读写权限
5.
systemctl start smb nmb ##开启smb服务
systemctl enable smb nmb ##开机自启
systemctl restart smb nmb ##重新启动
6.验证 smbclient //samba.hch.com/samba -U samba
samba脚本如下:
#!/bin/bash
# 1. 安装 Samba
yum install samba -y
if [ $? -ne 0 ]; then
echo "Samba 安装失败,请检查网络和软件源。"
exit 1
fi
echo "Samba 安装成功。"
# 2. 创建共享目录并设置权限
mkdir -p /samba
chmod -R 777 /samba
if [ $? -ne 0 ]; then
echo "创建共享目录或设置权限失败,请检查磁盘空间和权限。"
exit 1
fi
echo "共享目录创建并设置权限成功。"
# 3. 创建系统用户并设置 Samba 密码
useradd -M samba
if [ $? -ne 0 ]; then
echo "创建系统用户失败,请检查用户名是否已存在或权限问题。"
exit 1
fi
echo "请输入 samba 用户的 Samba 密码:"
smbpasswd -a samba
if [ $? -ne 0 ]; then
echo "设置 Samba 密码失败,请重试。"
exit 1
fi
echo "Samba 用户密码设置成功。"
# 4. 配置 Samba 共享
if [ -f /etc/samba/smb.conf ]; then
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
fi
cat << EOF >> /etc/samba/smb.conf
[samba]
comment = IMMENGXIN
path = /samba
public = yes
browseable = yes
read only = no
EOF
if [ $? -ne 0 ]; then
echo "修改 Samba 配置文件失败,请检查权限。"
exit 1
fi
echo "Samba 配置文件修改成功。"
# 5. 启动、设置开机自启并重启 Samba 服务
systemctl start smb nmb
if [ $? -ne 0 ]; then
echo "启动 Samba 服务失败,请检查配置文件是否正确。"
exit 1
fi
systemctl enable smb nmb
if [ $? -ne 0 ]; then
echo "设置 Samba 服务开机自启失败,请检查相关服务状态。"
exit 1
fi
systemctl restart smb nmb
if [ $? -ne 0 ]; then
echo "重启 Samba 服务失败,请检查配置文件是否正确。"
exit 1
fi
echo "Samba 服务已成功启动、设置开机自启并重启。"