防火墙

硬件防火墙: 次要是进攻DDOS攻打, 流量攻打. 兼顾数据包过滤.

软件防火墙: 次要解决数据包的过滤.

  • iptables
  • firewalld

包过滤防火墙

应用层防火墙

iptables

CentOS 6 默认防火墙, 次要是包过滤防火墙, 对 ip, 端口, tcp, udp, icmp 协定管制.

配置清晰, 很简单.

属于包过滤防火墙

iptables [选项]选项    -n --numeric      # 数字输入。IP地址和端口会以数字的模式打印。默认状况下,程序试显 示主机名、网络名或者服务(只有可用)    -v --verbose      # 让 -L 显示更具体的    -L -list <规定链>  # 显示所选链的所有规定。如果没有抉择链,所有链将被显示。也能够和z选项一起 应用,这时链会被主动列出和归零。准确输入受其它所给参数影响。        -t <规定表=filter>        # 要操作的匹配包的表(默认是操作 filter)

规定"表"

  • filter 过滤

    ip, 端口, tcp,udp,icmp协定
  • nat 网络地址转换
  • mangle
  • raw
罕用, 需重点学习的: filter 和 nat

不同的表有本人的默认规定, eg. Chain INPUT (policy ACCEPT) 示意若未匹配任意规定则默认承受

规定"链"

  • INPUT (C->S 方向)规定链
  • OUTPUT (S->C 方向)规定链
  • FORWARD 转发规定链
  • PREROUTING 路由前转换(扭转指标地址)规定链
  • POSTROUTING 路由后转换(管制源地址)规定链

filter 表操作

默认操作的是 filter 表, 因而个别书写时能够省略.filter [-t filter] <命令> <规定链> <规定>命令    -L -list            # 查看状态    -I -insert            # 增加规定(插入到最后面), 留神规定的程序是有优先级的(排在后面的优先级高)    -A -append             # 增加规定(追加到最初面), 留神规定的程序是有优先级的(排在后面的优先级高)        -D -delete <规定序号或具体规定>        # 删除某一条规定    -F -flush            # 清空所有规定(默认的Policy规定不会扭转)        -P -policy            # 设置默认规定        自定义规定链    -N -new-chain        # 创立自定义规定链    -X -delete-chain    -E -rename-chain    规定链    INPUT    OUTPUT规定    -s -source [!] address[/mask]            # 指定源地址 ip                                            # eg. 10.0.0.0                                            # eg. 10.0.0.0/24    -d --destination [!] address[/mask]        # 指定指标地址 ip, 用于 INPUT 没意义    -i -in-interface [!] [name]                # 进入的网络接口(网卡)    -o --out-interface [!][name]            # 进来的网络接口(网卡)    -p -protocal [!]protocol                # 协定: tcp, udp, icmp        -j --jump <target>                        # 指定规定的指标(动作)tcp协定相干选项    --sport, --source-port [!] [port[:port]]            # 起源端口或端口范畴    --dport, --destionation-port [!] [port:[port]]        # 指标端口或端口范畴    udp协定相干选项    --sport, --source-port [!] [port[:port]]            # 起源端口或端口范畴    --dport, --destionation-port [!] [port:[port]]        # 指标端口或端口范畴icmp协定相干选项动作(target) -j    ACCEPT     # 容许    DROP    # 禁止    QUEUE    RETURN    示例    iptables -vnL    # 查看filter表具体状态, 可不便查看以后的所有规定    iptables -t filter -A INPUT -s 10.0.0.1 -j ACCEPT    # 容许来自 10.0.0.1 的包进入    iptables -t filter -A INPUT -s 10.0.0.2 -j DROP    # 容许来自 10.0.0.1 的包进入        iptables -D INPUT -s 10.0.0.2 -j DROP    # 删除匹配的规定    iptables -t filter -D INPUT 3            # 删除第3条规定(第1条的序号是1)        iptables -P INPUT DROP        # 批改INPUT规定链的默认规定为 DROP        iptables -t filter -A INPUT -i eth0 -s 10.0.0.2 -p tcp --dport 80 -j ACCEPT        # 容许从 eth0 网卡进入, 来自10.0.0.2的包拜访本地的80端口.

罕用策略

  • 默认ACCEPT, 配置特定规定 DROP

    罕用于测试
  • 默认 DROP, 配置特定规定 ACCEPT

    常见于生产环境

输入字段解释

                以后的默认策略是ACCEPT                    ????Chain INPUT (policy ACCEPT 501 packets, 33820 bytes) pkts bytes target     prot            opt in     out     source               destination    0     0 ACCEPT     all            --  *      *       10.0.0.1             0.0.0.0/0                  ????       ????                ????        ????            ????                    ????               策略         协定                进入网卡 进来网卡    起源地址              目标地址                    (tcp,udp,icmp)    

nat 表操作

NAT表 - 网络地址转换表

filter -t nat <命令> <规定链> <规定>规定链    PREROUTING        # 路由前转换 - 目标地址转换    POSTROUTING        # 路由后转换 - 管制源地址动作(target) -j    DNAT规定    --to-destination <ip>[/<mask>]    # 批改目标地址    --to-source <ip>[/<mask>]        # 批改源地址示例    iptables -t nat -vnL    # 查看nat表具体状态        # 假如 iptables 所在主机ip为 114.115.116.117, 此处配置外网拜访该地址(eth0网卡)时将拜访tcp协定且是80端口的数据包目标地址转换内网主机    iptables -t nat -A PREROUTING -i eth0 -d 114.115.116.117 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.1    # 另内网拜访该地址(eth1网卡)时将数据包源地址转换成iptables所在主机ip 114.115.116.117    iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j SNAT --to-source 114.115.116.117
可用于: 端口转发

配置文件

iptables 配置文件 /etc/sysconfig/iptables

在 CentOS 6 中, 治理 iptables:

service iptables save|start|stop|restart命令    save        # 将以后内存中的配置保留为配置文件 /etc/sysconfig/iptables                # 理论执行了 iptables-save > /etc/sysconfig/iptables                # 下次启动时 iptables-restore < /etc/sysconfig/iptables
在CentOS 7 中, 须要装置该服务 yum install iptables-services 才能够应用该命令

留神:

  • iptables 的命令是写在内存中, 重启后生效.

firewalld

CentOS 7 在 iptables 上又封装了一层, 也就是 firewalld , 应用更简洁(底层应用 netfilter).

属于包过滤防火墙

firewalld 的特点

  • 反对区域 "zone" 概念

    即 iptables 的自建规定链
  • firewall-cmd 管制防火墙

firewalld 服务治理

systemctl start|stop|enable|disable firewalld.serivce
留神: firewalld 与 iptables 服务是抵触的.

firewall-cmd

firewall-cmd [选项]选项    状态选项    --state                # 查看firewalld以后状态    --reload            # 从新加载配置        --zone=public        # 指定区域, 不指定时默认就是 public            Zone选项    --get-zones            # 查看所有的区(除了public外还有一些iptables默认规定链一样)    --get-default-zone    # 查看默认的区    --get-active-zone    # 查看激活的zone            永久性选项    --permanent            # 设置选项写入配置, 须要 reload 能力失效         批改和查问zone的选项    --list-all            # 查看具体状态(蕴含以下内容)         --list-interfaces    # 查看某一项状态 - 网卡接口    --list-ports        # 查看某一项状态 - 端口    --list-services        # 查看某一项状态 - 服务端口        --add-service <服务>        # 增加service端口    --add-port <端口/协定>       # 增加指定协定指定端口, eg. 81/tcp    --add-source <源ip[/网段]>    # 增加源地址    --add-interface <网卡接口>        --remove-service <服务>    --remove-port <端口/协定>    --remove-source <源ip[/网段]>    --remove-interface <网卡接口>

待整顿的示例

# 只容许某个IP段拜访3306firewall-cmd --permanent --zone=public --add-rich-rule 'rule family=“ipv4” source address=“192.168.0.4/24” port port protocal=“tcp” port=“3306” accept'

firewall-cmd --list-all 输入字段解释

#public区域    激活状态#  ????          ????public (active)  target: default                # ????  icmp-block-inversion: no  interfaces: eth0                # ???? public区域绑定了 eth0 网卡  sources:                        # 容许拜访的源ip  services: ssh dhcpv6-client    # 容许拜访的服务端口  ports:                        # 容许拜访的端口  protocols:  masquerade: no  forward-ports:  source-ports:  icmp-blocks:  rich rules:

telnet 服务

telnet 是明文传输, 危险, 因而不能利用于远程管理.

装置服务

## telnet 是客户端工具## telnet-server 是服务端服务## xinetd 是因为 telnet-server 无奈自启动, 因而须要应用它来治理 telnet-server 的启动yum install telnet telnet-server xinetd -y

启动服务

 systemctl start xinetd systemctl start telnet.socket 
telnet 不负责端口的监听, 只负责解决传过来的数据.

端口监听工作交由 xinetd 负责, xinetd 负责端口监听并将申请转发给 telnet

root 用户无奈用于telnet 近程登录

SSH 服务

客户端配置文件 /etc/ssh/ssh_config

服务配置文件 /etc/ssh/sshd_config

Port 22                                            # 服务端口号(默认是22)PermitRootLogin yes                                # 是否容许root登录AuthorizedKeysFile  .ssh/authorized_keys        # 密钥验证的公钥存储文件. 默认是放在 ~/.ssh/authorized_keys

使配置失效

systemctl restart sshd.service

ssh 命令

ssh 选项 [<user>@]<host>选项    罕用    -p <port>        # 指定连贯端口    -4              # 强制 ssh 只应用 IPv4 地址    -f              # 要求 ssh 在执行命令前退至后盾.        端口转发    -N                      # 不执行近程命令. 用于转发端口.    -L port:host:hostport    # local, 将本地机(客户机)的某个端口转发到远端指定机器的指定端口                            # 工作原理是这样的, 本地机器上调配了一个 socket 侦听 port 端口, 一旦这个端口上有了连贯, 该连贯就通过平安通道转发进来, 同时近程主机和 host 的 hostport 端口建设连贯. 能够在配置文件中指定端口的转发.                             # 只有 root 能力转发特权端口.  IPv6 地址用另一种格局阐明: port/host/hostport    -R port:host:hostport    # remote, 将近程主机(服务器)的某个端口转发到本地端指定机器的指定端口                            # 工作原理是这样的, 近程主机上调配了一个 socket 侦听 port 端口, 一旦这个端口上有了连贯, 该连贯就通过平安通道转向进来, 同时本地主机和 host 的 hostport 端口建设连贯.                            # 能够在配置文件中指定端口的转发. 只有用 root 登录近程主机 能力转发特权端口. IPv6 地址用另一种格局阐明: port/host/hostport                                                        示例    ssh -fNL 27117:127.0.0.1:27017 <近程主机地址>        # 建设local隧道, 将来自27117的连贯通过<近程主机>转发至127.0.0.1(其实还是<近程主机>)的27017端口                                                    # 通常实用于<近程主机>未对外开放27017端口                                                        ssh -fNR 2222:127.0.0.1:22 <近程主机地址>            # 建设remote隧道(也叫反向隧道), 将来自<近程主机>2222端口的连贯通过本机转发给127.0.0.1(实际上还是本机)                                                    # 通常实用于外网拜访内网服务

示例: 配置拜访特定主机时应用特定的私钥文件

  • 以后主机存在多个私钥文件
  • 拜访特定主机时需应用特定私钥文件(非默认)
# 假如私钥文件门路: ~/.ssh/xxx_id_rsacat > ~/.ssh/config <<'EOF'Host 192.168.0.143    PubkeyAuthentication yes    IdentityFile ~/.ssh/xxx_id_rsaEOF# 留神 config 文件和私钥文件的权限都必须是 600chmod 600 ~/.ssh/config

公钥认证

ssh-keygen 命令

生成密钥对ssh-keygen [选项]选项    -t <密钥类型=rsa>         # 指定密钥类型: dsa|ecdsa|ed25519|rsa|rsa1    -C <comment=$USER@$HOSTNAME>            #  正文(追加在公钥文件最初)

留神:

  • 生成密钥对肯定是在客户端上做, 而后再将公钥传给服务端.
  • 默认生成的文件

    • ~/.ssh/id_rsa
    • ~/.ssh/id_rsa.pub

ssh-copy-id 命令

将公钥(通过ssh)拷贝到指标主机ssh-copy-id 选项 [user@]hostname选项    -n                                            # dry-run, 不真正执行命令    -i <identity_file=~/.ssh/id_rsa.pub>        # 手动指定公钥文件    -p port    -o ssh_option

留神:

  • 指标主机的公钥存储文件 ~/.ssh/authorized_keys, 600 权限

scp 命令

近程文件复制scp [选项] <src> <dest>选项    -C      容许压缩    -r      递归复制整个目录    -P         portsrc 和 dest 能够是以下任意的    [<user>@]<host>:/remote/path    # 指定近程文件或目录    /local/path                        # 指定本地文件或目录    示例    scp a.txt 192.168.0.16:/tmp/    # 拷贝本地的 a.txt 到近程的 /tmp/ 目录下
传递大文件更举荐用 rsync(断点续传, 压缩)

rsync 命令

疾速、通用的近程和本地文件传输工具语法    # 本地复制    rsync [选项] <src> <dest>        # 通过 ssh 近程复制    Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]    Push: rsync [OPTION...] SRC... [USER@]HOST:DEST        # 通过 rsync 服务    Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]             rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]    Push: rsync [OPTION...] SRC... [USER@]HOST::DEST          rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST        选项    # 罕用    -P                         # 断点续传(保留那些因故没有齐全传输的文件,以便放慢随后的再次传输), 等同于 --partial --progress    -z, --compress             # 对备份的文件在传输时进行压缩解决, 放慢传输    -e, --rsh=<COMMAND>     # 以ssh形式进行数据传输, -e "ssh -p2222" 指定连贯2222端口, 如果是ssh形式默认应用22端口    --bwlimit                # 限速, 字节/秒    -r,--recursive             # 对子目录以递归模式解决    --progress                 # 显示传输进度    --partial                # 断点续传    -c, --checksum             # 关上校验开关,强制对文件传输进行校验。(而不是基于文件的批改工夫及大小)    --delete                 # 删除那些 DEST 中 SRC 没有的文件。    --delete-before            # rsync 首先读取 src 和 dest 的文件列表, 并删除那些 DEST 中 SRC 没有的文件, 之后再执行同步操作。                            # 因为分两步骤执行, 因而须要更多的内存耗费以及工夫耗费. 因而仅在 dest 的可用空间较小时用这种形式.    --delete-excluded        # 除了删除 DEST 中 SRC 没有的文件外, 还会一并移除 dest 中 --exclude 或 --exclude-from 指定的文件/目录.    -u, --update            # 如果 DEST 中的文件比 SRC 新(指批改工夫), 就不会对该文件进行同步.        --exclude=PATTERN         # 指定排除不须要传输的文件, 比方 --exclude="logs" 会过滤掉文件名蕴含 "logs" 的文件或目录, 不对齐同步.    --include=PATTERN         # 指定不排除而须要传输的文件模式。    -v, --verbose             # 具体模式输入。    -q, --quiet             # 精简输入模式。            -a, --archive             # 归档模式,示意以递归形式传输文件,并放弃所有文件属性,等于-rlptgoD    -t, --list              # list the contents of an archive    -l, --links                # 保留软链    -L, --copy-links        # 同步软链时, 以理论的文件来代替    -p, --perms             # 放弃文件的权限属性    -o, --owner             # 保留文件的属主(super-user only)    -g, --group             # 保留文件的属组    -D                        # 放弃设施文件信息, 等同于 "--devices --specials"    -t, --times                # 放弃文件的工夫属性    示例    rsync -P -z -r root@xx.xx.xx.xx:/data/transfer/archive.zip /data/archive.zip    rsync -P -e "ssh -p2222" --bwlimit=200 root@xx.xx.xx.xx:/data/transfer/archive.zip /data/archive.zip
当带宽足够大时, 应用 -z 反而会拖慢速度.

FTP 服务

ftp 协定

ftp 协定: 文件传输协定

  • 须要同时建设命令链路(21端口, 先建设, 传输命令)和数据链路(传输文件名称, 目录名称, 文件数据)
  • 数据链路

    • 被动模式

      命令链路建设后, 服务端(应用20端口)被动向客户端发动建设数据链路申请(理论可能会被客户端防火墙之类的挡住, 导致无响应)
    • 被动模式(理论罕用)

      命令链路建设后, 服务端会凋谢大于1024的端口被动等客户端连贯.

vsftpd 服务

# 装置必要软件## vsftpd 是服务端## ftp 是客户端yum install vsftpd ftp# 启动 vsftpd 服务systemctl start vsftpd.service && systemctl enable vsftpd.service

通过 man 5 vsftpd.conf 能够查看配置文件详解.

留神

  • 默认提供匿名账号: ftp
  • 默认以后零碎的账号

vsftpd 配置文件

  • /etc/vsftpd/vsftpd.conf 主配置文件
  • /etc/vsftpd/ftpusers 用户相干
  • /etc/vsftpd/user_list 用户黑白名单, 比方禁止 root 登录

vsftpd.conf 配置

anonymous_enable=YES        # 是否容许匿名用户(ftp)local_enable=YES            # 是否容许零碎本地用户账号登录. 同时会受到 SELinux(ftp_home_dir 项)的影响write_enable=YES            # 本地用户是否可写connect_from_port_20=YES    # 是否容许开启被动模式(不会影响被动模式)userlist_enable=YES            # 是否启用用户黑白名单userlist_deny=YES            # 管制用户列表是黑名单还是白名单, YES 示意黑名单.                             # 仅在 userlist_enable=YES 时失效                                                        # 虚构用户配置相干guest_enable=YES            # 容许虚构用户进行验证guest_username=<零碎用户名>     # 指定登录身份为某个零碎用户user_config_dir=/etc/vsftpd/<零碎用户名>config        # 指定虚构用户权限管制文件所在目录allow_writeable_chroot=YES        # 虚构用户是否可写pam_service_name=vsftpd.vuser    # 虚构用户的"可插拔验证模块(pam)"对应文件名称
YESNO 必须是大写的.

能够应用 man 5 vsftpd.conf 来查看该配置文件的帮忙

强制访问控制对 ftpd 的影响

# 查看 SELinux 中和 ftpd 相干的布尔配置项getsebool -a | grep ftpd# 批改## -P    同时写入配置文件## 0     示意 off, 敞开## 1    示意 on, 关上setsebool -P <配置项名> 1|0

默认匿名账号

  • 账号: ftp
  • 明码: 空
  • 默认目录: /var/ftp/

一般账号

  • 账号: 零碎账号
  • 明码: 零碎账号的明码
  • 默认目录: ~
  • 能拜访一般账号的 home 目录

ftpusers 配置

vsftp 虚构用户

示例: 新增3个虚构用户

# 1. 建设一个实在零碎账号## 指定 /data/ftp 为该用户的home目录## 指定该用户不可登录到零碎useradd -d /data/ftp -s /sbin/nologin vuser# 2. 编写存储虚构用户账号和明码的临时文件## 该文件格式是: 一行虚构用户名, 一行对应明码cat <<'EOF' > /etc/vsftpd/vuser.tmpu1123456u2123456u3123456EOF# 3. 将上述临时文件转成数据库专用格局db_load -T -t hash -f /etc/vsftpd/vuser.temp /etc/vsftpd/vuser.db# 4. 创立可插拔验证模块配置cat <<'EOF' > /etc/pam.d/vsftpd.vuserauth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuseraccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserEOF# 5. 批改 /etc/vsftpd/vsftp.conf 确保其中相干配置如下    guest_enable=YES    guest_username=vuser    user_config_dir=/etc/vsftpd/vuserconfig    allow_writeable_chroot=YES    pam_service_name=vsftpd.vuser    # 正文掉以下语句后, 就不再反对匿名和本地用户登录了    #pam_service_name=vsftpd    # 6. 创立虚构用户配置所在目录mkdir /etc/vsftpd/vuserconfig# 7. 在虚构用户配置目录中创立和所要创立虚构用户名同名的配置文件## 此处创立 u1, u2, u3 的配置文件## 省略 u2 的...## 省略 u3 的...cat <<'EOF' > /etc/vsftpd/vuserconfig/u1local_root=/data/ftp            # 用户登录后进入的目录write_enable=YES                # 可写anon_umask=022anon_world_readable_only=NO        # 可写?anon_upload_enable=YES            # 可上传anon_mkdir_write_enable=YES        # 可创立目录?anon_other_write_enable=YES        # 可写?download_enable=YES                # 可下载EOF# 8. 重启 vsftpd 服务systemctl restart vsftpd.service

ftp 命令

ftp客户端ftp <地址>选项
如果提醒"没有到主机的路由", 个别是因为被防火墙挡住.

相干命令

ls            # 在近程执行 ls!ls            # 在本地执行 lspwd            # 在近程执行 pwd!pwd        # 在本地执行 pwdcd            # 切换近程目录lcd            # 切换本地目录put    <file>        # 上传文件, 若提醒无权限则应查看 "write_enable" 配置项get <file>        # 下载文件

samba 服务

samba 服务

  • 应用 smb 协定
  • 应用 cifs 文件系统
  • /etc/samba/smb.conf 配置文件
smb 协定是微软持有的版权, 用于windows之间的共享.

而samba则是模仿这种协定, 次要用于共享给windows.

若是 Linux 之间的共享则倡议应用 nfs

# 装置yum install samba# 服务systecmtl start|stop|restart|reload smb.service

配置文件

配置文件 /etc/samba/smb.conf 局部格局阐明

[global]                        # 全局设置    workgroup = SAMBA    security = user    passdb backend = tdbsam    printing = cups    printcap name = cups    load printers = yes    cups options = raw[share]                        # 共享名    comment = my share    path = /data/share        # 共享门路    read only = No            # 是否只读, No 示意可写
man 5 smb.conf 可查看该配置文件的帮忙文档

smbpasswd 命令

samba 用户的创立和删除smbpasswd [选项]选项    -a         # 增加用户(零碎中必须有一个同名的用户, samba 用户拜访权限是参考零碎同名用户的)    -x        # 删除用户        -s        # silent, 从规范输出上读取原口令和新口令, 罕用于脚本解决smb
新创建的用户默认会间接共享出本人的home目录, 也就是 /home/用户名 这个目录.

pdbedit 命令

samba 用户查看pdbedit [选项]选项    -L        # 查看用户

示例

# 1. 创立零碎用户, 此处以 user1 为例useradd user1# 2. 创立同名samba用户echo -e "123456\n123456" | smbpasswd -a user1# 3. 启动samba服务systemctl start smb.service# 4. 应用## windows 客户端能够通过映射网络驱动器或windows共享来应用## Linux 客户端能够通过磁盘挂载应用(将 127.0.0.1 上的 /home/user1 挂载到了以后的 /mnt 目录)### -t cifs 可省略, 由 mount 自行判断### 输出明码后就挂载胜利了### 挂载结束后可通过 df -hT 或 mount | tail -1 查看挂载信息mount -t cifs -o username=user1 //127.0.0.1/user1 /mnt        # 挂载后面在 /etc/samba/smb.conf 里配置的 [share] 共享所指定的目录mount -t cifs -o username=user1 //127.0.0.1/share /mnt2        # 此处举例, 挂载在 /mnt2 文件夹上# 不须要后就卸载掉umount /mntumount /mnt2

nfs 服务

次要用于 Linux 之间的共享服务.

默认已装置

治理

systemctl start|stop|reload nfs.service

/etc/exports 主配置文件

man 5 exports 可查看帮忙

配置格局

<共享目录> <容许起源主机>(权限)...                    ???? 这里不得有空格                    可指定多个共享目录    必须是已存在的目录.容许起源主机    *            # 任意主机    具体ip       # 指定该ip可拜访    权限(用逗号分隔)    rw                # 读写权限    ro                # 只读权限    sync            # (内存)数据同步写入磁盘, 防止失落数据    all_squash        # 应用 nfsnobody 零碎用户    示例/data/share *(rw,sync,all_squash)

若权限设置了 all_squash, 则会应用 nfsnobody 这个用户来做实际操作, 因而须要将该共享目录的属主和属组设为 nfsnobody

chown -R nfsnobody:nfsnobody /data/share/

showmount 命令

显示对于 NFS 服务器文件系统挂载的信息showmount [选项] <host>选项    -e, --exports    # 查看所有共享的目录

挂载

mount 主机:/path/dir /local/path/to/mount示例    mount localhost:/data/share /mnt        # 将localhost上共享的 /data/share 目录挂载到本地的 /mnt 目录

Nginx/OpenResty

  • Nginx(engine X) 是一个高性能的 Web 和反向代理服务器.
  • Nginx 反对 HTTP, HTTPS 和电子邮件代理协定

    Nginx 模块因为是用c/c++编写的, 要增加新模块还须要从新编译.
  • OpenResty 是基于 Nginx 和 Lua 实现的 Web 利用网关,集成了大量的第三方模块.

装置

# 增加 yum 源yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo# 装置 openrestyyum install -y openresty

治理

systemctl start|reload|stop openresty

配置文件

/usr/local/openresty/nginx/conf/nginx.conf

Nginx 配置

/usr/local/openresty/nginx/conf/nginx.conf

worker_processes  1;        # 配置多少个worker过程, 最大值倡议不大于CPU外围数error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;pid        logs/nginx.pid;events {    # use epoll;    worker_connections  1024;        # 每个worker容许的并发连贯, 超过会返回 503 Service Unavailable 谬误}http {# 此处的配置会对上面所有 server 失效    # 拜访日志格局定义    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" '                      '"$http_user_agent" "$http_x_forwarded_for"';        # 拜访日志记录文件及采纳的格局配置    access_log  logs/access.log  main;    # sendfile 和 tcp_nopush 是在内核层面上优化传输链路    sendfile        on;            # 传输文件时的优化: 间接在内核中将文件数据拷贝给socket.    tcp_nopush     on;            # 仅sendfile启用时失效, 将http头和实体一起返回, 缩小报文段数量    keepalive_timeout  65;        # HTTP 协定的 keepalive, 建设长连贯, 重用TCP连贯        gzip  on;                    # 传输时启用 gzip 压缩, 节俭带宽, 造成CPU额定耗费.    server {        listen       80;            # 监听端口        server_name  localhost;        # 域名(虚拟主机)                location / {            root   html;            index  index.html index.htm;        }    }}
上述配置中的相对路径是基于编译nginx时指定的特定门路, 个别是nginx所在目录, 对应此处是 `/usr/local/openresty/nginx/

LNMP

MySQL

  • mariadb 是 MySQL 的社区版
# 装置# mariadb 是客户端# yum install mariadb mariadb-server

批改配置文件 /etc/my.cnf

[mysqld]character_set_server=utf8init_connect='SET NAMES utf8'
或者是采纳 utf8mb4 编码, 兼容4字节的unicode, 须要存emoji表情的话应应用 utf8mb4

PHP

yum install php-fpm php-mysqlsystemctl start php-fpm.service
默认源的版本是 5.4, 须要更高的能够用 webtatic 源

此处仅作示范

Nginx

server {    location ~ \.php$ {        root           html;        fastcgi_pass   127.0.0.1:9000;        fastcgi_index  index.php;        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;        include        fastcgi_params;    }}
通过 fastcgi 协定将申请转发给 php-fpm

DNS 服务

DNS 服务介绍

  • DNS(Domain Name System) 域名零碎
  • FQDN(Full Qualified Domain Name) 齐全限定域名
  • 域分类: 根域、顶级域(TLD)
  • 查问形式: 递归、迭代
  • 解析形式: 正向解析(主机 -> ip)、反向解析(ip -> 主机)
  • DNS 服务器的类型: 缓存域名服务器、主域名服务器(master)、从域名服务器(salve)
www.baidu.com.????        ????      ????主机名     域名      根域.com    顶级域.        根域

BIND 软件

提供 DNS 服务

# 装置## bind 提供服务的软件包## bind-utils DNS服务的相干工具yum install bind bind-utils# 服务治理systemctl start named.service

主配置文件: /etc/named.conf

options {    listen-on port 53 { any; };        // 监听端口及对应网卡    ...        allow-query     { any; };        // any    容许任何人查问}// 根域zone "." IN {    type hint;    file "named.ca";                // /var/named/named.ca};

named-checkconf

确认配置文件是否正确named-checkconf

...........DNS 本节课后续略过, 看不下去

NAS

NAS(Network attached storage)网络从属存储

反对的协定:

  • nfs
  • cifs
  • ftp

个别是通过创立磁盘阵列RAID后, 再通过上述协定共享.

创立步骤

假如此处提供了2个新硬盘

  • /dev/sde
  • /dev/sdf

1. 创立共享空间

# 磁盘分区fdisk /dev/sdefdisk /dev/sdf# 创立 RAID## 此处创立 RAID1 级别的磁盘阵列mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sd{e,f}1# 长久化 RAID 配置信息mdadm --detail --scan --verbose > /etc/mdadm.conf# 通过逻辑卷的形式以不便后续扩容## 初始化物理卷pvcreate /dev/md0## 创立卷组vgcreate vg1 /dev/md0## 创立逻辑卷### 此处示例, 因而只创立个 200M 的逻辑卷lvcreate -L 200M -n nas vg1# 分区格式化mkfs.xfs /dev/vg1/nas# 分区挂载mkdir /sharemount /dev/vg1/nas /share

2. 通过协定共享

# 创立专用用户 shareuseruseradd shareuser -d /share/shareuserecho 123456 | passwd --stdin shareuser# 1. 配置ftp共享 - 通过 shareuser 用户登录ftp并拜访home目录 (也能够用虚构用户)确认 /etc/vsftpd/vsftpd.conf 配置    pam_service_name=vsftpd    local_enable=YES    write_enable=YESsystemctl restart vsftpd.service# 2. 配置samba服务echo -e "123456\n123456" | smbpasswd -a shareusersystemctl restart smb.service# 3. 配置nfs服务## 配置为 ro (nfs因为没有用户级别的限度, 因而这种状况下不举荐设置为 rw)echo '/share/shareuser *(ro)' >> /etc/exportssystemctl restart nfs.service## 配置为 rw (配合 facl 权限访问控制列表)echo '/share/shareuser *(rw,sync,all_squash)' >> /etc/exportssetfacl -d -m u:nfsnobody:rwx /share/shareusersetfacl -m u:nfsnobody:rwx /share/shareuser