企业常用Linux服务搭建

服务需求

DNS服务器 为公司局域网内各主机提供域名解析 各主机均能通过域名访问

部署DNS服务

基于 BIND DNS 服务器

  1. 编辑区域文件
    • 找到rzy.com对应的区域文件。假设在/etc/named.conf中配置如下:
zone "rzy.com" IN {
    type master;
    file "rzy.com.zone";
};

用文本编辑器打开rzy.com.zone文件,添加以下两条 A 记录:

ftp.com. IN A 10.10.10.143
samba.com. IN A 10.10.10.143
  1. 检查语法并重启 BIND 服务3:
    • 执行named-checkzone rzy.com /var/named/rzy.com.zone命令检查区域文件语法。
    • 若语法无误,使用systemctl restart named命令(CentOS 系统)或service bind9 restart命令(Ubuntu 系统)重启 BIND 服务。

如果现实中centos 7 服务器上没有配置DNS侧需要从新开始做,我这个是基于已经有DNS服务的过程

测试解析域名

FTP服务器 为公司员工提供图片存储和访问服务 公司UI设计师能够上传下载图片 外包人员能够上传浏览图片

部署FTP服务

定时备份文件

通过tar命令压缩成log.tgz文件,放置到FTP服务器的/var/ftp/pub目录内,并设置定时任务,每天晚上十点备份一次

1. 使用tar命令压缩文件 假设你要压缩的文件或目录名为logs(你可以根据实际情况修改),使用以下tar命令将其压缩成log.tgz文件:

tar -czvf log.tgz logs

• -c:创建新的归档文件。

• -z:通过 gzip 压缩算法对归档文件进行压缩。

• -v:显示压缩过程中的详细信息。

• -f:指定归档文件名,这里是log.tgz

2. 将压缩文件上传到 FTP 服务器 可以使用lftp或ftp命令行工具将文件上传到 FTP 服务器的/var/ftp/pub目录。以下以lftp为例

lftp -u <username> <ftp_server_ip> << EOF
cd /var/ftp/pub
put log.tgz
bye
EOF

请将<username>替换为你的 FTP 用户名,<ftp_server_ip>替换为实际的 FTP 服务器 IP 地址。

3. 设置定时任务 使用crontab来设置每天晚上十点备份一次的定时任务。执行以下命令编辑当前用户的crontab文件:

crontab -e

 在打开的编辑器(通常是vi或nano)中,添加以下一行内容

0 22 * * * /bin/bash -c 'tar -czvf /path/to/log.tgz /path/to/logs && lftp -u <username> <ftp_server_ip> << EOF
cd /var/ftp/pub
put /path/to/log.tgz
bye
EOF'

 请将/path/to/log.tgz替换为实际的压缩文件保存路径,/path/to/logs替换为实际要备份的文件或目录路径,<username>替换为 FTP 用户名,<ftp_server_ip>替换为 FTP 服务器的 IP 地址。

访问FTP服务器

 要求员工A是公司的UI设计师,其画出的图片通过访问域名ftp.abc.com存储在FTP服务器上/data目录下,员工A对FTP服务器具备图片上传下载权限 另外公司由于业务繁忙、任务量大,还有一个外包人员B,其对FTP服务器仅具备上传图片和浏览图片的权限,不具备图片下载权限

搭建过程

1 安装Vsftpd服务

yum install vsftpd -y

vsftp虚拟用户是为了保证FTP服务器的安全性,由vsftpd服务器提供的非系统用户账号,

相对于FTP的本地用户来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP

服务器所提供的资源。虚拟用户FTP登录后将把指定的目录作为FTP根目录。虚拟用户与本

地用户具有类似的功能,由于虚拟用户账号具有较高的安全性,可以替代本地用户账号使用。

2 创建vsftpd使用的系统用户,主目录为/home/vsftpd,禁止ssh登录, 创建之后所有

虚拟用户使用这个系统用户访问文件

# useradd vsftpd -d /vsftpd -s /bin/false

# ls -ld /vsftpd/

drwx------ 2 vsftpd vsftpd 62 Feb 2 15:34 /vsftpd/

3 创建虚拟用户主目录,比如虚拟用户叫ftp1

# mkdir -p /vsftpd/ftp1/

# mkdir -p /vsftpd/ftp2/

# chown -R vsftpd.vsftpd /vsftpd/*

# ls -l /vsftpd/

total 0

drwxr-xr-x 2 vsftpd vsftpd 6 Feb 2 15:35 ftp1

drwxr-xr-x 2 vsftpd vsftpd 6 Feb 2 15:35 ftp2

4 创建虚拟用户

# vi /etc/vsftpd/loginusers.conf

ftp1

123456

ftp2

456789

这样就创建了ftp1这个虚拟用户,密码为 123456

这样就创建了ftp2这个虚拟用户,密码为 456789

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 启用数据库文件

# vi /etc/pam.d/vsftpd # 注释掉所有内容后,增加下面的内容

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/loginusers

7 创建虚拟用户配置文件

# mkdir -p /etc/vsftpd/userconf

这里的文件名称必须与虚拟用户名一致

# vi /etc/vsftpd/userconf/ftp1

local_root=/vsftpd/ftp1

write_enable=YES

anon_umask=022

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

# vi /etc/vsftpd/userconf/ftp2

local_root=/vsftpd/ftp2

write_enable=YES

anon_umask=022

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

8 修改主配置文件

配置/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=vsftpduser

user_config_dir=/etc/vsftpd/vconf

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

9 重启服务使配置生效

systemctl restart 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
               systemctl enable smb nmb
                systemctl restart smb nmb

6.验证           smbclient //192.168.17.128/samba -U samba

验证服务连接情况

安全需求

加强系统账号安全 清理无用的账号,锁定长期不用的账号,

锁定账号配置文件 设置用户密码的过期时间为90天

配置保持历史命令10条 配置闲置超时时间为600秒

加强系统引导和登录安全 为GRUB菜单设置密码,限制更改GRUB引导参数

禁止root用户从tty5、tty6登录 检测弱口令账号 使用John the Ripper检查所有服务器的弱口令

根据弱口令检测检测结果分别重设口令,提高口令复杂度

脚本运行

#!/bin/bash

# 清理无用的账号
# 这里只是示例,实际使用时需要根据具体情况判断哪些账号是无用的
# 假设无用账号列表为 useless_users,可根据实际情况修改
useless_users=("testuser1" "testuser2")
for user in "${useless_users[@]}"; do
    user_exists=$(id -u "$user" >/dev/null 2>&1; echo $?)
    if [ $user_exists -eq 0 ]; then
        userdel -r "$user"
        echo "已删除无用账号: $user"
    else
        echo "账号 $user 不存在,无需删除"
    fi
done

# 锁定长期不用的账号
# 假设90天未使用的账号视为长期不用,这里只是示例,实际需根据情况调整
# 注意:此部分需要结合系统的账号使用记录等信息来准确判断,以下只是简单示例
# 查找90天内未修改密码的用户
inactive_users=$(chage -l $(cut -d: -f1 /etc/passwd) | grep "Password last set" | awk '{print $NF}' | while read -r date; do
    last_change=$(date -d "$date" +%s)
    current_time=$(date +%s)
    diff=$(( (current_time - last_change) / (60 * 60 * 24) ))
    if [ $diff -gt 90 ]; then
        user=$(grep "Password last set.*$date" <(chage -l $(cut -d: -f1 /etc/passwd)) | head -n1 | awk '{print $1}')
        echo "$user"
    fi
done)
for user in $inactive_users; do
    passwd -l "$user"
    echo "已锁定长期不用的账号: $user"
done

# 锁定账号配置文件
chattr +i /etc/passwd /etc/shadow
echo "已锁定账号配置文件 /etc/passwd 和 /etc/shadow"

# 设置用户密码的过期时间为90天
# 遍历所有用户设置密码过期时间
while read -r user; do
    chage -M 90 "$user"
done < <(cut -d: -f1 /etc/passwd)
echo "已将所有用户密码过期时间设置为90天"

# 配置保持历史命令10条
# 修改用户的.bashrc 文件(针对bash shell),可根据实际情况修改
# 这里只是示例,实际可能需要对所有用户或特定用户组进行操作
while read -r user; do
    user_home=$(getent passwd "$user" | cut -d: -f6)
    if [ -d "$user_home" ]; then
        echo "HISTSIZE=10" >> "$user_home/.bashrc"
        echo "已为用户 $user 配置历史命令保留10条"
    fi
done < <(cut -d: -f1 /etc/passwd)

# 配置闲置超时时间为600秒
# 修改 /etc/profile 文件,对所有用户生效
echo "TMOUT=600" >> /etc/profile
echo "已配置闲置超时时间为600秒"

# 为GRUB菜单设置密码
# 生成GRUB密码哈希值,这里需要手动输入密码
password=$(grub2-mkpasswd-pbkdf2)
# 假设GRUB配置文件为 /etc/default/grub
sed -i 's/^GRUB_CMDLINE_LINUX=".*"/GRUB_CMDLINE_LINUX="password_pbkdf2 root '$password'"/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
echo "已为GRUB菜单设置密码"

# 禁止root用户从tty5、tty6登录
# 修改 /etc/securetty 文件
sed -i '/tty5/d' /etc/securetty
sed -i '/tty6/d' /etc/securetty
echo "已禁止root用户从tty5、tty6登录"

# 检测弱口令账号
# 假设John the Ripper已安装且在PATH中
# 这里只是示例,实际使用时需要确保有足够的权限读取 /etc/shadow 文件
john --wordlist=/path/to/wordlist.txt /etc/shadow
echo "已使用John the Ripper检测弱口令账号"

# 根据弱口令检测结果分别重设口令,提高口令复杂度
# 这里只是示例,实际需要根据John the Ripper的输出结果来判断哪些账号是弱口令账号
# 假设弱口令账号列表为 weak_users,可根据实际情况修改
weak_users=("user_with_weak_password1" "user_with_weak_password2")
for user in "${weak_users[@]}"; do
    new_password=$(openssl rand -base64 12)  # 生成一个12位的随机密码
    echo "$user:$new_password" | chpasswd
    echo "已为重设弱口令账号 $user 的密码"
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值