一、安装与配置Linux操作系统(CentOS-8)
二、配置网络和使用SSH服务
三、配置与管理防火墙和SELinux
#查看防火墙状态
systemctl status firewalld
#开启/关闭防火墙
systemctl start firewalld # 开启防火墙
systemctl stop firewalld # 关闭防火墙
#开启/关闭端口
firewall-cmd --zone=public --add-port=22/tcp --permanent # 开启SSH端口(22)
firewall-cmd --zone=public --remove-port=22/tcp --permanent # 关闭SSH端口(22)
#查看规则列表
firewall-cmd --list-all
#重新加载防火墙配置
firewall-cmd --reload
配置与管理SELinux
#查看SELinux状态
sestatus
#开启/关闭SELinux
setenforce 0 # 暂时关闭SELinux(需要重启后才生效)
# 永久关闭SELinux
vim /etc/selinux/config # 将 SELINUX=enforcing 改为 SELINUX=disabled
#修改文件上下文
# 查看文件上下文
ls -Z file.txt
# 修改文件上下文
chcon -t httpd_sys_content_t file.txt
#查看SELinux日志
tail -f /var/log/audit/audit.log
四、配置与管理代理服务器
五、配置与管理Samba服务器
#安装Samba
sudo yum install samba
#创建Samba用户
sudo useradd -M -s /sbin/nologin <username>
sudo smbpasswd -a <username>
#-M选项表示不创建用户主目录,
#-s /sbin/nologin选项表示不允许该用户登录系统,
#<username>为你想要创建的Samba账号用户名
#配置Samba服务器
sudo nano /etc/samba/smb.conf
#在文件末尾添加以下内容
[sharename] #<sharename>为你想要共享的目录名,
path = <path_to_share> #<path_to_share>为你想要共享的目录路径
valid users = <username> #<username>为你刚才创建的Samba账号用户名
writable = yes
browseable = yes
#重启Samba服务
sudo systemctl restart smb.service
#配置防火墙
使用以下命令开放Samba服务端口
sudo firewall-cmd --add-service=samba --permanent
然后重启防火墙:
sudo firewall-cmd --reload
六、配置与管理NFS服务器
#安装NFS服务器
sudo dnf install nfs-utils
#配置NFS服务器
sudo vi /etc/exports
#在文件的末尾添加:
/share *(rw,sync,no_subtree_check)
#重启NFS服务器
sudo systemctl restart nfs-server
#配置NFS客户端
sudo dnf install nfs-utils
#使用以下命令挂载NFS共享目录:
sudo mount nfs-server-ip:/share /mnt/nfs
#管理NFS服务器
#查看NFS共享的目录
sudo showmount -e
#显示当前NFS会话
sudo nfsstat -c
#显示当前NFS操作的统计信息:
sudo nfsstat -o
七、配置与管理DHCP服务器
#安装 DHCP 软件包:
sudo yum install -y iputils isc-dhcp-server
#启动并启用 DHCP 服务:
sudo systemctl start dhcpd
sudo systemctl enable dhcpd
#配置 DHCP 服务器:
# 声明作用域
ddns-update-style none;
default-lease-time 86400;
max-lease-time 31536000;
# 定义地址池
subnet 10.115.223.0 255.255.255.0 {
range 10.115.223.10 10.115.223.100;
declare ddns-domain-name "example.com";
};
#配置排除地址:
exclude-address 10.115.223.10, 10.115.223.20;
#重启 DHCP 服务
sudo systemctl restart isc-dhcp-server
#验证 DHCP 服务:
ls -la /var/state/dhcp/
#还可以使用dhclient命令查询客户端的 IP 地址:
sudo dhclient -v
八、配置与管理DNS服务器
#服务端
yum install -y bind bind-chroot
systemctl start named
systemctl enable named
#主配置文件
vim /etc/named.conf
options {
@! listen-on port 53 { any; };
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";
@! allow-query { any; };
recursion yes;
dnssec-enable yes;
@! dnssec-validation no;
/* Path to ISC DLV key */
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";
};
@! include "/etc/named.zones"; #指定区域配置文件(与区域配置文件关联)
include "/etc/named.root.key";
#区域配置文件
vi /etc/named.zones
zone "long60.cn" IN {
type master;
file "long60.cn.zone";
allow-update { none; };
};
zone"1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "11.168.192.in-addr.arpa" IN {
type master;
file "21.10.168.192.zone";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "long60.cn" IN {
type master;
file "long60.cn.zone";
allow-update { none; };
};
#创建正向解析区域声明文件
#(named.localhost是正向区域解析文件的样本文件)
cp -p /var/named/named.localhost long60.cn.zone
vi /var/named/long60.cn.zone
$TTL 1D
@ IN SOA @ root.long60.cn. (
2023112101 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
#第一列为三级域名
@ IN NS dns.long60.cn.
@ IN MX 5 mail.long60.cn.
dns IN A 192.168.11.21
mail IN A 192.168.11.22
slave IN A 192.168.11.23
www IN A 192.168.11.24
ftp IN A 192.168.11.25
web IN CNAME www.long60.cn.
#@:代表域名本身。
#IN:代表Internet。
#MX:代表Mail Exchange,邮件交换记录。
#NS:代表Name Server,域名服务器记录。
#A:代表Address,IP地址记录。
#CNAME:代表Canonical Name记录,CNAME记录被使用来给一个域名指定一个规范化的名称,这个规范化的名称可以是一个IP地址或者一个域名。这样做可以使得DNS服务器能够将多个域名解析为同一个IP地址,以避免重复的配置。例如,将www.example.com指向example.com,这样访问www.example.com时会自动跳转到example.com。
#创建反向解析区域声明文件
#(named.loopback是反向区域解析文件的样本文件)
cp -p /var/named/named.loopback /var/named/21.10.168.192.zone
vi /var/named/21.10.168.192.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
2023112101 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
#第一列为主机名/IP地址
@ IN NS dns.long60.cn.
@ IN MX 5 mail.long60.cn.
21 IN PTR dns.long60.cn.
22 IN PTR mail.long60.cn.
23 IN PTR slave.long60.cn.
24 IN PTR www.long60.cn.
25 IN PTR ftp.long60.cn.
#PTR通常表示"Pointer",指针的意思。在计算机编程中,指针是一种变量类型,它存储了内存地址的值,可以用于访问和操作变量、数组、结构体等数据类型。在网络领域中,PTR有时也可以表示"Pointer Record",用于指向域名对应的IP地址
cd /var/named
#设置主配置文件与正、反向解析区域声明文件的数组为named
chgrp named /etc/named.conf /etc/named.zones
chgrp named long60.cn.zone 21.11.168.192
firewalld-cmd --permanent --add-service=dns
firewalld-cmd --reload
systemctl restart named
systemctl enable named
#客户端
#注意网网络模式以及网段
yum install -y bind-untils
vi /etc/resolv.conf
# Generatea by etworkManager
rkManager
nameserver 192.168.11.21
nameserver 192.168.11.22
nameserver 192.168.11.23
search long60.cn
nslookup
server
www.long60.cn
192.168.11.21
九、配置与管理Apache服务器
#服务目录 /etc/httpd
#主配置文件 /etc/httpd/conf/httpd.conf
#网站数据目录 /var/www/html
#访问日志 /var/log/httpd/access_log
#错误日志 /var/log/httpd/error_log
DocumentRoot: 定义 web 服务器文档根目录。例如:DocumentRoot /var/www/html
ServerAdmin 管理员邮箱
ServerName: 定义 web 服务器的域名。例如:ServerName www.example.com
Listen: 定义 web 服务器侦听的 IP 地址和端口。例如:Listen 80
ErrorLog: 定义 web 服务器错误日志的路径。例如:ErrorLog /var/log/httpd/error_log
CustomLog: 定义 web 服务器自定义日志的路径。例如:CustomLog /var/log/httpd/access_log combined
DirectoryIndex: 定义 web 服务器默认的索引文件。例如:DirectoryIndex index.html index.htm index.php
Options: 定义 web 服务器可用选项。例如:Options FollowSymLinks
AllowOverride: 定义 web 服务器是否允许 .htaccess 文件。例如:AllowOverride All
Require: 定义 web 服务器的访问权限。例如:Require all granted
SSLCertificateFile: 定义 SSL 证书文件的路径。例如:SSLCertificateFile /etc/pki/tls/certs/server.crt
dnf install -y httpd
rpm -qa | grep httpd
systemctl start httpd
systemctl enable httpd
firewalld-cmd --list-all
firewalld-cmd --permanent --add-service=http
firewalld-cmd --reload
firewalld-cmd --list-all
setenforce 0
getenforce
systemctl start httpd
systemctl enable httpd
curl http://127.0.0.1
#!SElinux关闭
setenforce 0
echo "welcome to myweb" > /var/www/html/index.html
mkdir /home/www
echo "aaa" > /home/www/myweb.html
#主配置文件
vi /etc/httpd/conf/httpd.conf
DocumentRoot "/home/www"
<Directory "/home/www">
AllowOverride None
#Allow open access
Require all granted
<Directory>
<IfModule dir_module>
DirectoryIndex index.htnl myweb.html
<IfModule>
firewalld-cmd --permanent --add-service=http
firewalld-cmd --reload
firewalld-cmd --list-all
setenface 0
systemctl restart httpd
#用户个人主页
useradd long
passwd long
chmod 705 /home/long
mkdir /home/long/public_html
cd /home/long/public_html
echo "aaa" > index.html
#开启个人用户主页
vi /etc/httpd/conf.d/userdir.conf
#UserDir disabled #注释掉
变为UserDir public_html
systemctl restart httpd
#setenface 1
#setsebool -P httpd_enable_homedirs=on
#虚拟目录
mkdir -p /virdir/
cd /virdir/
echo "aaa" > index.html #虚拟目录首页文件
chmod 705 index.html
vi /etc/htttpd/conf/httpd.conf
Alias /test "/virdir"
<Directory "/virdir">
AllowOverride None
#Allow open access
Require all granted
<Directory>
#selinux,firewalld放行
systemctl stop firewalld
setenforce 0
systemctl restart httpd
#配置基于IP的虚拟主机
#ens33设置两个IP地址(192.168.153.51 192.168.153.52)
mkdir /var/www/ip1 /var/www/ip2
echo "192.168.153.51" > /var/www/ip1/index.html
echo "192.168.153.52" > /var/www/ip2/index.html
vi /etc/httpd/conf.d/vhost.conf
<Virtualhost 192.168.153.51>
DocumentRoot /var/www/ip1
<Virtualhost>
<Virtualhost 1192.168.153.52>
DocumentRoot /var/www/ip2
<Virtualhost>
vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/ip1">
AllowOverride None
#Allow open access
Require all granted
<Directory>
<Directory "/var/www/ip2">
AllowOverride None
#Allow open access
Require all granted
<Directory>
#配置基于域名的虚拟主机
mkdir /var/www/www1 /var/www/www2
echo "www1.long60.cn de web" > /var/www/www1/index.html
echo "www2.long60.cn de web" > /var/www/www2/index.html
vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/">
AllowOverride None
#Allow open access
Require all granted
#...
<Directory>
vi /etc/httpd/conf.d/vhost.conf
<Virtualhost 192.168.153.51>
DocumentRoot /var/www/www1
ServerName www1.long60.cn
<Virtualhost>
<Virtualhost 192.168.153.51>
DocumentRoot /var/www/www2
ServerName www2.long60.cn
<Virtualhost>
在DNS中添加www1,www2
vi /var/named/long60.cn.zone
STTL 1D
@ IN SOA dns.long60.cn. mail.long60.cn. (
0
1D
1H
1W
3H
)
@ IN NS dns.long60.cn
@ IN MX 10 mail.long60.cn
dns IN A 192.168.153.51
www1 IN A 192.168.153.51
www2 IN A 192.168.153.51
#基于端口的虚拟主机
mkdir /var/www/8088 /var/www/8089
echo "8088" > /var/www/8088/index.html
echo "8089" > /var/www/8089/index.html
vi /etc/httpd/conf/httpd.conf
Listen 80
Listen 8088
Listen 8089
...
...
<Directory "/var/www/">
AllowOverride None
#Allow open access
Require all granted
#...
<Directory>
<Directory "/var/www/">
AllowOverride None
#Allow open access
Require all granted
#...
<Directory>
vi /etc/httpd/conf.d/vhost.conf
<Virtualhost 192.168.153.51:8088>
DocumentRoot /var/www/8088
<Virtualhost>
<Virtualhost 192.168.153.51:8089>
DocumentRoot /var/www/8089
<Virtualhost>
#允许防火墙通过端口
firewalld-cmd --permanent --zone=public --add-port=8088/tcp
firewalld-cmd --permanent --zone=public --add-port=8089/tcp
firewalld-cmd --reload
firewalld-cmd --list-all
十、配置与管理FTP服务器
#安装 vsftpd: 使用 yum 软件包管理器安装 vsftpd
sudo yum install vsftpd -y
#配置 vsftpd 服务
sudo nano /etc/vsftpd/vsftpd.conf
anonymous_enable YES
local_enable YES
write_enable YES
passwd_file /etc/vsftpd/passwd
#其中,passwd_file 需要自行创建,后续步骤会详细说明。
sudo mkdir /etc/vsftpd/passwd
sudo echo "user1:password1" > /etc/vsftpd/passwd
#配置防火墙以允许 FTP 流量: 如果您的系统已启用防火墙,请确保允许 FTP 端口(21)的流量。
sudo firewall-cmd --permanent --zone=public --add-port=21/tcp
sudo firewall-cmd --reload
#启动 vsftpd 服务
sudo systemctl start vsftpd
#验证 vsftpd 服务
sudo systemctl status vsftpd
#如果一切正常,您应该能看到以下输出:
#vsftpd (pid 12345) is running
#配置 vsftpd 开机自启动: 为了让 vsftpd 服务在系统启动时自动运行,请确保在 /etc/systemd/system/multi-user.target.wants/ 目录下存在对应的单元文件。您可以使用以下命令创建:
sudo ln -s /usr/lib/systemd/system/vsftpd.service /etc/systemd/system/multi-user.target.wants/
#设置 vsftpd 服务日志
sudo nano /etc/vsftpd/vsftpd.log
#在配置文件中,设置以下选项:
log_file /var/log/vsftpd.log
log_pid /var/run/vsftpd.pid
#创建日志文件和 PID 文件
sudo mkdir /var/log/vsftpd
sudo touch /var/log/vsftpd/vsftpd.log
sudo mkdir /var/run
sudo touch /var/run/vsftpd.pid
十一、配置与管理postfix(邮件)服务器
#安装 Postfix:
sudo yum install postfix -y
#配置 Postfix 服务
sudo nano /etc/postfix/main.cf
#在配置文件中,设置以下选项:
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
#启动 Postfix 服务:
sudo systemctl start postfix
#配置防火墙以允许邮件流量:
sudo firewall-cmd --permanent --zone=public --add-port=25/tcp
sudo firewall-cmd --permanent --zone=public --add-port=110/tcp
sudo firewall-cmd --permanent --zone=public --add-port=143/tcp
sudo firewall-cmd --reload
#启动 Postfix 服务:
sudo systemctl status postfix
#如果一切正常,您应该能看到以下输出:
postfix (pid 12345) is running
#配置 Postfix 开机自启动:
sudo ln -s /usr/lib/systemd/system/postfix.service /etc/systemd/system/multi-user.target.wants/
#设置 Postfix 服务日志:
sudo nano /etc/syslog.conf
#在配置文件中,添加以下行:
postfix/[email protected]
#重启 syslog 服务以应用更改
sudo systemctl restart syslog
#创建一个单独的 Postfix 日志文件
sudo mkdir /var/log/postfix
sudo
touch /var/log/postfix/postfix.log