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 服务已成功启动、设置开机自启并重启。"
相关推荐
渗透测试老鸟-九青2 分钟前
面试经验分享 | 成都渗透测试工程师二面面经分享
服务器·经验分享·安全·web安全·面试·职场和发展·区块链
m0_5557629010 分钟前
QT 动态布局实现(待完善)
服务器·数据库·qt
极客柒1 小时前
RustDesk 开源远程桌面软件 (支持多端) + 中继服务器伺服器搭建 ( docker版本 ) 安装教程
服务器·docker·开源
共享家95271 小时前
深入剖析Linux常用命令,助力高效操作
linux·运维·服务器
Zfox_2 小时前
【C++项目】从零实现RPC框架「四」:业务层实现与项目使用
linux·开发语言·c++·rpc·项目
吃旺旺雪饼的小男孩2 小时前
Ubuntu 22.04 安装和运行 EDK2 超详细教程
linux·运维·ubuntu
IT小馋猫2 小时前
Linux 企业项目服务器组建(附脚本)
linux·服务器·网络
阿政一号2 小时前
Linux进程间通信:【目的】【管道】【匿名管道】【命名管道】【System V 共享内存】
linux·运维·服务器·进程间通信
又过一个秋3 小时前
【sylar-webserver】7 定时器模块
linux·c++
啊哦1113 小时前
配置防火墙和SELinux(1)
linux·服务器·网络