Linux 常见服务配置

 笔记所以内容很多,建议选择性看看

SSH

对应服务  sshd

注意:配置文件 配制文件修改需要重启或重载sshd服务才能生效

systemctl sshd reload     # 重载 sshd 配置文件
systemctl sshd restart    # 重启 sshd 服务

客户端配置文件

man ssh_config 可以查看对应说明文档,一般无需更改

/etc/ssh/ssh_config      OpenSSH SSH client configuration files

~/.ssh/known_hosts       记录了登录过的IP和指纹

~/.ssh/config            针对用户的SSH配置

~/.ssh/authorized_keys   记录公钥,用于允许记录公钥的服务器通过指定用户免密登录

服务端配置文件

man sshd_config 可以查看对应说明文档

/etc/ssh/sshd_config    OpenSSH SSH daemon configuration file

主要配置:
    Port 22                    可以自定义sshd服务端口
    ListenAddress 0.0.0.0      定义sshd监听
    PermitRootLogin no         是否允许root登录,默认允许
    Banner /etc/motd           登录后的提示信息
    UseDNS no                  禁用DNS解析,ssh连接会快很多
    UsePAM yes                 加载PAM模块用于用户认证

登录方式

ssh remote_user@ip -p port    # 登录远程的用户,仅IP是用当前用户,不带端口默认22

ssh -t  -o "StrictHostKeyChecking=no"  # 加这俩参数,可以跳过指纹确认,可用于免密登录
    -o  可以带选项
        "StrictHostKeyChecking=no" 跳过指纹确认,自动加入
    -t 强制使用tty会话


scp 也可以用上述参数

man ssh 查看更多

 注意:

  1. UseDNS 配置成yes,ssh会在连接时使用反向地址解析,无法解析时会导致连接很慢,10s?
  2. 如果有编辑/etc/hosts.deny 或者 /etc/hosts.allow ssh连接也会变慢

FTP

FTP工作模式 

主动模式

FTP服务器主动向客户端发起连接请求,因为服务器可以主动连接到客户端,从而减少了延迟

流程:

  1. FTP 客户端先建立与服务端21的连接
  2. 客户端发送PORT 命令告诉服务器客户端的 IP 地址和端口号
  3. 服务器收到 PORT 命令后,服务端就会打开一个数据连接到客户端的 IP 地址和端口号
  4. 客户端随后发送 STOR 命令告知服务端需要的文件
  5. 服务器收到 STOR 命令后,它就会开始向客户端发送数据
  6. 客户端收到数据后,它就会将其写入本地文件
  7. 一旦客户端完成接收数据,它就会关闭与服务器的连接

命令端口:21 用于发送命令和控制文件传输

数据端口:20 数据连接端口

被动模式

FTP 服务器等待客户端发起连接请求( FTP 的默认工作模式)

流程:

  1. FTP 客户端先请求服务端21口,建立连接
  2. 客户端发送 PASV 命令告诉服务器让它打开一个数据连接
  3. 服务器收到 PASV 命令后会向客户端发送数据连接信息,通常包括服务器的 IP 地址和端口号
  4. 客户端打开一个数据连接到服务器的 IP 地址和端口号
  5. 客户端随后发送 STOR 命令告诉服务器它要上传一个文件
  6. 服务器收到 STOR 命令后,它就会开始向客户端发送数据
  7. 客户端收到数据后,它就会将其写入本地文件
  8. 一旦客户端完成接收数据,它就会关闭与服务器的连接

命令端口:21 用于发送命令和控制文件传输

数据端口:由服务器动态分配,通常在 49152-65535 范围内

服务

vsftpd( very secure ftp daemon,非常安全的 FTP 守护进程)

软件

vsftpd

       认证模式

                匿名开放模式 不认证 不安全

                本地用户模式 通过本地账户认证 不太安全

                虚拟用户模式 FTP服务器创建用户数据库,提供用户认证

ftp  Linux 系统中以命令行界面的方式来管理 FTP 传输服务的客户端工具

lftp 功能更多的客户端

配置文件
/etc/vsftpd/vsftpd.conf   主配置文件
/etc/vsftpd/user_list     FTP特定的本地用户列表,能否登录取决于userlist_deny=NO/YES
/etc/vsftpd/ftpusers      不允许登录FTP的用户列表
/etc/vsftpd/xxx.db        应该是虚拟用户的账号文件
/etc/vsftpd/xxx_dir       这里可能有虚拟用户权限设置,以用户名命名的文件,里面是权限 

服务器端配置

1、清理防火墙
iptables -F
service iptables save
2、编辑配置文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
3、常用参数
listen=[YES|NO]             是否以独立运行的方式监听服务
listen_address=IP 地址         设置要监听的 IP 地址
listen_port=21 设置 FTP         服务的监听端口
download_enable= [YES|NO]     是否允许下载文件
userlist_enable=[YES|NO]    设置用户列表为“允许”还是“禁止”操作
userlist_deny=[YES|NO]

max_clients=0                     最大客户端连接数, 0 为不限制
max_per_ip=0                     同一 IP 地址的最大连接数, 0 为不限制
anonymous_enable=[YES|NO]         是否允许匿名用户访问
anon_upload_enable=[YES|NO]         是否允许匿名用户上传文件
anon_umask=022                     匿名用户上传文件的 umask 值
anon_root=/var/ftp                 匿名用户的 FTP 根目录
anon_mkdir_write_enable=[YES|NO]   是否允许匿名用户创建目录
anon_other_write_enable=[YES|NO]   是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)
anon_max_rate=0                     匿名用户的最大传输速率(字节/秒), 0 为不限制
local_enable=[YES|NO]                 是否允许本地用户登录 FTP
local_umask=022                     本地用户上传文件的 umask 值
local_root=/var/ftp                 本地用户的 FTP 根目录
chroot_local_user=[YES|NO]          是否将用户权限禁锢在 FTP 目录,以确保安全
local_max_rate=0                    本地用户最大传输速率(字节/秒), 0 为不限制
 4、配置模式

匿名模式 2.3.5后,增加安全检查,会有报错,暂未解决

vim /etc/vsftpd/vsftpd.conf 添加如下配置
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
allow_writeable_chroot=YES 
重启vsftpd 服务

将FTP设置的根目录拥有者设置成ftp用户或者vsftpd

用户名:anonymous 密码:空

本地用户模式 实测成功

vim /etc/vsftpd/vsftpd.conf 进行如下配置
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES

重启vsftpd 服务

本地用户登录进入自己的家目录
注意:
本地用户的逻辑是,需要改用户可以登录,要先进行登录认证才进行是否有权限访问的认证
winscp 默认超时时长15s,如有需要可以增加时长

虚拟用户模式 测试成功

1、创建用于进行 FTP 认证的用户数据库文件(奇数行为账户名,偶数行为密码)
    vi /etc/vsftpd/vuser.list
    zhangsan
    redhat
    lisi
    redhat

2、加密明文用户数据库
    cd /etc/vsftpd
    db_load -T -t hash -f vuser.list vuser.db
    file vuser.db   查看文件类型
        书里:vuser.db: Berkeley DB (Hash, version 9, native byte-order)
        实测:vuser.db: , created: Thu Jan  1 00:34:08 1970
    chmod 600 vuser.db
    rm -f vuser.list

3、创建 vsftpd 服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户
    useradd -d /var/ftproot -s /sbin/nologin virtual
    ls -ld /var/ftproot/
    chmod -Rf 755 /var/ftproot/

4、建立用于支持虚拟用户的 PAM 文件
    4.1 新建一个用于虚拟用户认证的 PAM 文件 vsftpd.vu
        vim /etc/pam.d/vsftpd.vu
        auth required pam_userdb.so db=/etc/vsftpd/vuser
        account required pam_userdb.so db=/etc/vsftpd/vuser
        其中 PAM 文件内的“db=”参数为使用 db_load 命令生成的账户密码
        数据库文件的路径,但不用写数据库文件的后缀

5、设置pam_service_name 参数,定义PAM认证文件
    vim /etc/vsftpd/vsftpd.conf 编辑如下内容
    anonymous_enable=NO
    local_enable=YES
    guest_enable=YES
    guest_username=virtual
    allow_writeable_chroot=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    pam_service_name=vsftpd.vu
    userlist_enable=YES

    解释:
        默认就带有参数 pam_service_name=vsftpd,会使用/etc/pam.d/vsftpd
    进行认证,现在需要修改成上面新建的认证文件
        guest_username=virtual 指定了虚拟用户登录进来时使用的用户

6、为虚拟用户设置不同的权限
    6.1  创建文件,写入权限
        mkdir /etc/vsftpd/vusers_dir/
        cd /etc/vsftpd/vusers_dir/
        touch lisi
        vim zhangsan
            anon_upload_enable=YES
            anon_mkdir_write_enable=YES
            anon_other_write_enable=YES
        不建同名文件,就是默认的权限,就是没权限
    6.2 修改配置文件
        vim /etc/vsftpd/vsftpd.conf 编辑如下内容
        user_config_dir=/etc/vsftpd/vusers_dir
    
    6.3 重启vsftpd

7、测试可用性
    ftp ftpip
    输入用户名密码
8、使用
    ftp>user username 切换用户,好像虚拟用户切换不支持,不过好像成功了一次
    ftp>exit 退出
9、报错
    可能服务器重启服务了
        421 Service not available, remote server has closed connection 
    ls没看到文件
        很大可能是当前目录没有文件,尝试建一个试试

NFS 

软件

nfs-utils (一般会默认安装,如果没安装,无法挂载NFS)

有多个版本,每个版本的同步方式,数据一致性以及性能都有所区别

服务

nfs-server

服务端搭建步骤

1、清除防火墙策略 (一般没有)
iptables -F
service iptables save
2、建立共享目录
mkdir /nfsfile
chmod -Rf 777 /nfsfile
echo "welcome to nfs" > /nfsfile/readme
3、编辑配置文件
vi /etc/exports 
ro              只读
rw              读写
root_squash     当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户
no_root_squash  当 NFS 客户端以 root 管理员访问时, 映射为 NFS 服务器的 root 管理员
all_squash      无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户
sync            同时将数据写入到内存与硬盘中,保证不丢失数据
async           优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

文件内容 请注意, NFS 客户端地址与权限之间没有空格
/nfsfile 192.168.x.x(rw,sync,root_squash)

共享目录 允许访问的主机IP(配置项1,配置项2...)

exportfs -v 查看当前的配置
exportfs -r 重新导入配置
4、启动并启用NFS服务程序
systemctl restart rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server

注意:

  • 在使用 NFS 服务进行文件共享之前,需要RPC( Remote Procedure Call,远程过程调用)服务将 NFS 服务器的 IP 地址和端口号等信息发送给客户端
  • NFS在创建文件时,网络包会附带UID到NFS服务器上面,所以建议所有客户端的UID尽量保持一致,避免出现创建文件后,不同客户端属主不同的情况

客户端配置步骤

1、showmount 查看NFS远程共享信息

showmount -e 192.168.x.x

参数:
    -e 显示 NFS 服务器的共享列表
    -a 显示本机挂载的文件资源的情况

2、挂载NFS

yum install -y mount.nfs nfs-utils
mkdir /nfsfile
mount -t nfs 192.168.x.x:/nfsfile /nfsfile

3、如果需要长期挂载

方式一 编辑/etc/fstab 
    192.168.x.x:/nfsfile /nfsfile nfs defaults 0 0
方式二 编辑/etc/rc.local
    mount -t nfs 192.168.x.x:/nfsfile /nfsfile

客户端解除挂载

umount.nfs 挂载点
或
umount 挂载点

遇到问题

1)umount.nfs: /nfsfile: device is busy 是由于该目录在使用或者工作目录在这个目录下

处理办法:可以使用lsof 或 fuser 排查正在使用的文件的相关进程,退出挂载目录,并清理仍在访问NFS的进程后,再进行卸载即可

2)如果服务端的NFS异常,客户端会出现df 命令卡住的情况,可以mount命令查看挂载情况

处理办法:先解决服务端问题,然后卸载后重新挂载即可


mail

本地mail相关文件

        /etc/aliases 邮件用户别名文件,修改后执行newaliases更新,可以代收别名邮件

        /etc/mail.rc 本地邮件配置文件

        /var/spool/mail/username  邮件存储文件

mail命令

        echo "mail content" |mail -s "mail title" mail_address/user

HTTP

不常用

Apache服务:httpd

Apache软件:httpd

配置文件
    服务目录 /etc/httpd
    主配置文件 /etc/httpd/conf/httpd.conf
    网站数据目录 /var/www/html
    访问日志 /var/log/httpd/access_log
    错误日志 /var/log/httpd/error_log

配置文件参数:

cat /etc/httpd/conf/httpd.conf
    ServerRoot 服务目录
    ServerAdmin 管理员邮箱
    User 运行服务的用户
    Group 运行服务的用户组
    ServerName 网站服务器的域名
    DocumentRoot 网站数据目录
    Directory 网站数据目录的权限
    Listen 监听的 IP 地址与端口号
    DirectoryIndex 默认的索引页页面
    ErrorLog 错误日志文件
    CustomLog 访问日志文件
    Timeout 网页超时时间,默认为 300 秒

DHCP

软件

dhcp 

服务

dhcpd

服务器端配置文件

/etc/dhcp/dhcpd.conf

服务端配置案例

1、配置文件
vim /etc/dhcp/dhcpd.conf
ddns-update-style none;             设置 DNS 服务不自动进行动态更新
ignore client-updates;              忽略客户端更新 DNS 记录
subnet 192.168.10.0 netmask 255.255.255.0 {     作用域为 192.168.10.0/24 网段
range 192.168.10.50 192.168.10.150;  IP 地址池为 192.168.10.50-150(约 100 个 IP 地址)
option subnet-mask 255.255.255.0;   定义客户端默认的子网掩码
option routers 192.168.10.1;        定义客户端的网关地址
option domain-name "aaa.com";    定义默认的搜索域
option domain-name-servers 192.168.10.1;  定义客户端的 DNS 地址
default-lease-time 21600;           定义默认租约时间(单位:秒)
max-lease-time 43200;               定义最大预约时间(单位:秒)
host aaa {                   需要绑定MAC地址的主机名,此段可以忽略
hardware ethernet 00:0c:29:27:c6:12;    网卡MAC地址
fixed-address 192.168.10.88;            绑定的IP
}
}
2、启动服务
systemclt enable dhcpd
systemctl start dhcpd
3、测试

网卡配置dhcp模式,就会自己在局域网中寻找可用DHCP服务器,无需客户端额外配置

4、日志文件

使用系统日志文件:/var/log/messages,会包含分配的地址和获取IP的MAC地址等信息


DNS

客户端配置文件

修改立即生效

/etc/resolv.conf

/etc/hosts 

软件

bind-chroot

服务

named

服务端配置

配置文件

主配置文件( /etc/named.conf )定义 bind 服务程序的运行

区域配置文件( /etc/named.rfc1912.zones )保存域名和 IP 地址对应关系的所在位置

数据配置文件目录( /var/named )保存域名和 IP 地址真实对应关系的数据配置文件

正向解析配置步骤

1、编辑主配置文件

将11行和17行地址改为any,为所有IP提供服务,允许所有IP请求本DNS

listen-on port 53 { any; };
allow-query { any; };

2、编辑区域配置文件

vim /etc/named.rfc1912.zones
zone "aaa.com" IN {
type master;
file "aaa.com.zone";
allow-update {none;};
};

named-checkconf 检查配置文件语法和参数

3、编辑数据配置文件

cd /var/named/
ls -al named.localhost
cp -a named.localhost aaa.com.zone
vim aaa.com.zone
    $TTL 1D #生存周期为 1 天
    @       IN SOA  aaa.com.  root.aaa.com. (
                    DNS区域地址         管理员邮箱
                                            0       ; serial  #更新序列号
                                            1D      ; refresh #更新时间
                                            1H      ; retry   #更新时间
                                            1W      ; expire  #失效时间
                                            3H )    ; minimum #无效解析记录的缓存时间
            NS      ns.aaa.com.    #域名服务器记录
            A       192.168.10.10         #地址记录( ns.aaa.com.)
            AAAA    ::1

named-checkzone 检查数据配置文件语法和参数
systemctl restart named

 4、验证结果

修改/etc/resolv.conf 添加新建DNS地址

nslookup aaa.com 测试正向解析

反向解析配置步骤

1、配置区域配置文件

vim /etc/named.rfc1912.zones
zone "aaa.com" IN {
type master;
file "aaa.com.zone";
allow-update {none;};
};
zone "10.168.192.in-addr.arpa" IN {
type master;
file "192.168.10.arpa";
};
named-checkconf 检查配置文件语法和参数

2、配置数据配置文件

cp -a named.loopback 192.168.10.arpa
vim 192.168.10.arpa
$TTL 1D
@ IN SOA aaa.com. root.aaa.com. (
                                                0;serial
                                                1D;refresh
                                                1H;retry
                                                1W;expire
                                                3H );minimum
NS ns.aaa.com.
ns A 192.168.10.10
10 PTR ns.aaa.com. #PTR 为指针记录,仅用于反向解析
10 PTR mail.aaa.com.
10 PTR www.aaa.com.
20 PTR bbs.aaa.com.
named-checkzone 检查数据配置文件语法和参数
systemctl restart named

3、检查测试

nslookup IP 测试反向解析

你可能感兴趣的:(知识系列,#,知识系列,Linux-基础知识,运维,linux,apache,服务器)