Linux centos 7 常用服务器搭建

准备两台centos 7服务器

一台用来做dns服务 另一台做samba和ftp服务

要求:服务需求 DNS服务器

为公司局域网内各主机提供域名解析

各主机均能通过域名访问FTP及Samba服务器

FTP服务器:

为公司员工提供图片存储和访问服务

公司UI设计师能够上传下载图片

外包人员能够上传浏览图片

Samba服务器:

为公司员工提供文件共享服务

可以直接修改服务器上的文件

安全需求:

加强系统账号安全

加强系统引导和登录安全

下面是配置dns的脚本:

bash 复制代码
#!/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 "主服务器配置完成!"

脚本完成图:

添加以下解析

bash 复制代码
[root@localhost ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.168.133
nameserver 192.168.168.2

验证:

部署ftp服务

下面是部署的脚本

bash 复制代码
#!/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

  1. useradd -M samba #创建系统用户不创建属主目录

smbpasswd -a samba #为其设置samba密码

  1. vim /etc/samba/smb.conf
bash 复制代码
[samba]
        comment = IMMENGXIN        ##共享的描述性注释
        path = /samba                          ##共享目录的实际路径
        public = yes                               ##表明允许未授权的用户访问该共享
        browseable = yes                      ##表示这个共享在网络中是可见的
        read only = no                           ##意味着客户端对该共享目录具备读写权限
bash 复制代码
systemctl start smb nmb                ##开启smb服务           
systemctl enable smb nmb               ##开机自启
 systemctl restart smb nmb             ##重新启动

6.验证 smbclient //samba.hch.com/samba -U samba

samba脚本如下:

bash 复制代码
#!/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 服务已成功启动、设置开机自启并重启。"
相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux