目录
4. 总结PAM配置文件格式,总结相关示例, nologin.so, limits,等模块的使用。
9. 总结DNS服务器类型,解析答案,正反解析域,资源记录定义。
14. 总结iptable 5表5链, 基本使用,扩展模块。
16. 总结NAT转换原理, DNAT/SDNAT原理,并自行设计架构实现DNAT/SNAT。
17. 使用REDIRECT将90端口重定向80,并可以访问到80端口的服务
编辑19. 通过ntftable来实现暴露本机80/443/ssh服务端口给指定网络访问
20. 总结关系型数据库相关概念,关系,行,列,主键,惟一键,域。
21. 总结关联类型,1对1,1对多,多对多关系。可以自行设计表进行解释。
23. 总结Mysql多种安装方式,及安全加固,并总结mysql配置文件。
1. 总结openssh服务安全加固
建议使用非默认端口
禁止使用protocol version 1
限制可登录用户
设定空闲会话超时时长
利用防火墙设置ssh访问策略
仅监听特定的IP地址
基于口令认证时,使用强密码策略,比如: tr -dc A-Za-z0-9_</dev/urandom | head -c 12 | xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
经常分析日志(lastb)
2. 总结sudo配置文件格式,总结相关示例。
配置文件:/etc/sudo.conf
授权规则配置文件:
/etc/sudoers
/etc/suders.d
安全编辑授权规则文件和语法检查工具:/usr/sbin/visudo
sudoers授权规则格式
用户 登入主机=(代表用户) 命令
user host=(runas) command
vim /etc/sudoers.d/test #创建配置文件中子文件,易于修改删除
#root授权gao执行挂载光盘和取消挂载命令
gao ALL= /usr/bin/mount /dev/cdrom /mnt/,/usr/bin/umount /dev/cdrom /mnt/
#定义别名以root身份授权2个用户进行创建用户,修改用户权限,修改用户密码且不能修改root账号密码
User_Alias ADMIMUSER = adminuser1,adminuser2
Cmnd_Alias ADMINCMD = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/passwd [a-zA-Z]*, !/usr/bin/passwd root
ADMINUSER ALL=(root) NOPASSWD:ADMINCMD, PASSWD:/usr/sbin/userdel
3. 总结PAM架构及工作原理
3.1PAM架构
PAM:Pluggable Authentication Modules,插件式的验证模块,PAM只关注如何为服务验证用户的API,通过提供一些动态链接库和一套统一的的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证。
PAM提供了对所有服务进行认证的中央机制,适用于本地登录,远程登录,系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;应用程序开发者通过服务程序中使用 PAM API来实现对认证方法的调用;而PAM服务模块的开发者则利用PAM SPI来编写模块,供PAM接口库调用,将不同的认证机制加入到系统中,PAM接口库则读取配置文件,将应用程序和相应的PAM服务模块联系起来。
3.2PAM工作原理
PAM认证一般遵循这个的顺序:Service(服务)> PAM(配置文件)>pam_*.so
PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/sercurity下)进行安全认证
PAM认证过程实例
1.使用者执行/usr/bin/passwd程序,并输入密码
2.passwd开始调用 PAM模块,PAM模块会搜寻/etc/pam.d/passwd此设置文件
3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证
4.将验证结果回传到passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作
4. 总结PAM配置文件格式,总结相关示例, nologin.so, limits,等模块的使用。
PAM配置文件格式说明
模块类型(module-type)
Auth账户的认证和授权
Account账户的有效性,与账号管理相关的非认证类的功能
Password 用户修改密码时密码复杂度检查机制等功能
Session 用户会话期间的控制
-type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
Control
required:一票否决,表示本模块必须返回成功才通过验证,但是如果该模块返回失败,失败也不会立即通知用汉语,而是要等到同一type中所用模块全部执行完毕,再将失败的结果返回给应用程序,即为必要条件
requisite :一票否决,一票否决,表示本模块必须返回成功才通过验证,但是如果该模块返回失败,将不会执行同一type中任何模块,而是直接将控制权返回给应用程序,即为必要条件
sufficient: 一票通过,表示本模块返回成功则通过身份认证的要求,不必执行同一type内其他模块,但如果返回失败可忽略,即为充分条件,优先于required和requisite
optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略
include :调用其他配置文件中定义的配置信息
module-path:
模块文件所在绝对路径
模块文件所在相对路径:/lib64/security目录下模块可使用相对路径;如pam_limits.so
有些模块有自己专有的配置文件,在/etc/security/*.conf
pam_nologin.so模块
功能:如果/etc/nologin文件存在,将导致非root用户不能登录,当该用户登陆时,会显示/etc/nologin文件内容,并拒绝登录。
pam_limits.so
配置文件格式:
<domain> <type> <item> <value>
格式说明
domaim 应用对象
Username 单个用户
@group 组内所有用户
* 所有用户
% 仅用于限制 maxlogins limit ,可以使用%group语法,只用%相当于 * 对所有用户maxsyslogins limit限制, %group 表示限制此组中的所有用户总的最大登录数
限制类型
Soft 软限制
Hard 硬限制
- 二者同时限定
item 限制的资源
nofile 所能够同时打开的最大文件数量
nproc 所能够同时运行的进程的最大数量
value 指定具体值
范例:
vim /etc/security/limits.conf
* - core unlimited
* - nproc 1000000
* - nofile 1000000
* - memlock 32000
* - msgqueue 8192000
5. 实现私有时间服务器
#服务器端配置
vim /etc/chrony.conf
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#pool 2.centos.pool.ntp.org iburst
server time2.cloud.tencent.com iburst
server ntp.aliyun.com iburst
server ntp.ntsc.ac.cn iburst
# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 0.0.0.0/0
# Serve time even if not synchronized to a time source.
local stratum 10
systemctl restart chronyd
客户端配置
vim /etc/chrony.conf
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 10.0.0.8 iburst
systemctl restart chronyd
6. 总结DNS域名三级结构
根域:全球根服务器节点只有13个,10个在美国,1个在荷兰,1个瑞典,1个日本
一级域名: 三类:组织域、国家域、反向域
二级域名: magdu.com
三级域名: www.magedu.com
7. 总结DNS服务工作原理,涉及递归和迭代查询原理
递归查询
是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果,如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。
一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS 服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。
递归算法:客户端向LocalDNS发起域名查询->localDNS不知道域名对应的IP->但它知道谁知道->它代为客户端去查找->最后返回最终结果
迭代查询
是指DNS服务器在收到用户发起的请求时,并不直接回复结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。
一般情况下本地的DNS服务器向其他DNS服务器的查询属于迭代查询
迭代算法:客户端向LocalDNS发起域名查询=>localDNS不知道域名对应的IP=>但它知道谁知道并推荐客户端应该找谁=>客户端自己去找它
8. 实现私有DNS, 供本地网络主机作DNS递归查询。
yum -y install bind
vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; #注释掉这两行
// allow-query { localhost; };
vim /etc/named.rfc1912.zones
#添加以下内容
zone "magedu.org" {
type master;
file "magedu.org.zone";
};
vim /var/named/magedu.org.zone
$TTL 1D
@ IN SOA master admin.magedu.org ( 1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.48
www A 10.0.0.68
chmod 640 /var/named/magedu.org.zone
chgrp named /var/named/magedu.org.zone
systemctl start named
9. 总结DNS服务器类型,解析答案,正反解析域,资源记录定义。
9.1DNS类型
主DNS服务器
管理和维护负责解析的域内解析库的服务器
从DNS服务器
从主服务器或从服务器“复制”(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列号递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
区域传输:
完全传输:传输整个解析库
增量传输:传递解析库变化的部分内容
9.2正反向解析域
负责本地域名的正向和反向解析库
正向区域
反向区域
解析形式
正向: FQDN(Full Qualifiled Domain Name)-->IP
反向:IP-->FQDN
9.3解析答案
肯定答案:存在对应的查询结果
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:直接由存有此结果的DNS服务器(权威服务器)返回的答案
非权威答案:由其他非权威服务器返回的查询答案
9.3解析资源记录
区域解析库:有众多资源记录RR(Resource Record)组成
记录类型:A,AAAA,PTR,SOA,NS,CNAME,MX
SOA:Start Of Authority,起始授权记录:一个区域解析库有且仅有一个SOA记录,必须位于解析库的第一条记录
A:internet Address,作用 :FQDN-->IP
AAAA: FQDN --> IPv6
PTR: PoinTeR , IP-->FQDN
NS: Name Server ,专用于标明当前区域的DNS服务器
CNAME: Canonical Name ,别名记录
MX : Mail eXchanger ,邮件交换器
TXT: 对域名进行标识和说明的一种方式,一般做验证记录会使用此项
资源记录定义的
name [TTL] IN rr_type value
注意:
TTL可从全局继承
使用“@”符号可引用当前区域的域名
同一个名字可以通过多条记录定义多个不同的值,此时DNS服务器会以轮询方式访问
同一个值也可能由多个不同的定义名字,通过多个不同的名字指向同一个值进行定义。
SOA记录
name:当前区域的名字
value:由多部分组成
注意:
主从服务区域传输相关定义以及否定答案的统一的TTL
当前区域管理员的邮箱地址,地址中不能用@,一般用“.”替换
范例:
$TTL 1D
@ IN SOA master admin.magedu.org ( 1 ; serial #序列号
1D ; refresh #刷新时间
1H ; retry #重试时间
1W ; expire #过期时间
3H ) ; minimum #否定答案的TTL值
10. 实现DNS主从同步
#10.0.0.48实现主服务器DNS
yum -y install bind
vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; #注释掉这两行
// allow-query { localhost; };
allow-transfer { 10.0.0.58; };
vim /etc/named.rfc1912.zones
#添加以下内容
zone "magedu.org" {
type master;
file "magedu.org.zone";
};
vim /var/named/magedu.org.zone
$TTL 1D
@ IN SOA master admin.magedu.org ( 1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master A 10.0.0.48
slave A 10.0.0.58
www A 10.0.0.68
chmod 640 /var/named/magedu.org.zone
chgrp named /var/named/magedu.org.zone
systemctl start named
#10.0.0.58实现从服务器DNS
vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
allow-transfer { none;};
vim /etc/named.rfc1912.zones
zone "magedu.org" {
type slave;
masters { 10.0.0.48;};
file "slaves/magedu.org.slave";
};
systemctl start named
ls /var/named/slaves/magedu.org.slave
11. 实现DNS子域授权
#10.0.0.38实现父域DNS
vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
vim /etc/named.rfc1912.zones
zone "org" {
type master;
file "org.zone";
};
vim /var/named/org.zone
$TTL 1D
@ IN SOA master admin ( 1 1D 1H 1W 3D )
NS master
magedu NS mageduns1
magedu NS mageduns2
master A 10.0.0.38
mageduns1 A 10.0.0.48
mageduns2 A 10.0.0.58
systemctl start named
#10.0.0.48实现子域DNS
yum -y install bind
vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; #注释掉这两行
// allow-query { localhost; };
allow-transfer { 10.0.0.58; };
vim /etc/named.rfc1912.zones
#添加以下内容
zone "magedu.org" {
type master;
file "magedu.org.zone";
};
vim /var/named/magedu.org.zone
$TTL 1D
@ IN SOA master admin.magedu.org ( 1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master A 10.0.0.48
slave A 10.0.0.58
www A 10.0.0.68
chmod 640 /var/named/magedu.org.zone
chgrp named /var/named/magedu.org.zone
systemctl start named
12. 基于acl实现智能DNS
准备2台虚拟机 ,每台虚拟机2块网卡,一块NAT,一块仅主机模式,NAT模式是10.0.0.0/24网段,仅主机模式192.168.10.0/24网段,配置如下
#10.0.0.48上配置两块网卡
eth0:10.0.0.48
eth1:192.168.10.103
[root@localhost named]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:6a:63:af brd ff:ff:ff:ff:ff:ff
inet 10.0.0.48/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe6a:63af/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:6a:63:b9 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.103/24 brd 192.168.10.255 scope global noprefixroute dynamic eth1
valid_lft 1134sec preferred_lft 1134sec
inet6 fe80::31a9:312d:9e83:2225/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@localhost named]#vim magedu.org.zone.bj
$TTL 1D
@ IN SOA master admin.magedu.org. ( 1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.48
www A 1.1.1.1
[root@localhost named]#vim magedu.org.zone.sh
$TTL 1D
@ IN SOA master admin.magedu.org. ( 1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.0.48
www A 2.2.2.2
[root@localhost named]#vim /etc/named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html
acl beijingnet {
10.0.0.0/24;
};
acl shanghainet {
192.168.10.0/24;
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh
[root@localhost named]#vim /etc/named.rfc1912.zones.bj
zone "magedu.org" {
type master;
file "magedu.org.zone.bj";
[root@localhost named]#vim /etc/named.rfc1912.zones.sh
zone "magedu.org" {
type master;
file "magedu.org.zone.sh";
[root@localhost named]#vim /etc/named.conf #最下面写这两段
view beijingview {
match-clients { beijingnet; };
include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview {
match-clients { shanghainet; };
include "/etc/named.rfc1912.zones.sh";
};
named-checkconf
rndc reload
#10.0.0.7上配置2块网卡
[root@Centos network-scripts]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:f3:9d:3c brd ff:ff:ff:ff:ff:ff
inet 10.0.0.7/24 brd 10.0.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fef3:9d3c/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:f3:9d:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.101/24 brd 192.168.10.255 scope global noprefixroute dynamic eth1
valid_lft 993sec preferred_lft 993sec
inet6 fe80::dadb:fb13:ad60:a97a/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@Centos network-scripts]#dig www.magedu.org
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.magedu.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6117
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.magedu.org. IN A
;; ANSWER SECTION:
www.magedu.org. 86400 IN A 1.1.1.1
;; AUTHORITY SECTION:
magedu.org. 86400 IN NS master.magedu.org.
;; ADDITIONAL SECTION:
master.magedu.org. 86400 IN A 10.0.0.48
;; Query time: 0 msec
;; SERVER: 10.0.0.48#53(10.0.0.48)
;; WHEN: Thu Nov 17 09:25:00 CST 2022
;; MSG SIZE rcvd: 96
[root@Centos network-scripts]#dig www.magedu.org @192.168.10.103
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> www.magedu.org @192.168.10.103
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3275
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.magedu.org. IN A
;; ANSWER SECTION:
www.magedu.org. 86400 IN A 2.2.2.2
;; AUTHORITY SECTION:
magedu.org. 86400 IN NS master.magedu.org.
;; ADDITIONAL SECTION:
master.magedu.org. 86400 IN A 10.0.0.48
;; Query time: 0 msec
;; SERVER: 192.168.10.103#53(192.168.10.103)
;; WHEN: Thu Nov 17 09:25:19 CST 2022
;; MSG SIZE rcvd: 96
13. 总结防火墙分类
按保护范围划分:
主机防火墙:服务范围为当前一台主机
网络防火墙:服务范围为防火墙一侧的局域网
按实现方式划分:
硬件防火墙:在专业硬件级别实现部分功能的防火墙,另一部分功能基于软件实现
软件防火墙:运行于硬件平台之上的防火墙的应用软件。
按网络协议划分:
网络层防火墙:OSI模型下四层,又称包过滤防火墙
应用层防火墙/代理服务器:proxy代理网关,OSI模型七层
14. 总结iptable 5表5链, 基本使用,扩展模块。
三种报文类型
流入本机: PREROUTING--> INPUT -->用户空间进程
流出本机:用户空间进程--> OUTPUT --> POSTRONTING
转发: PRERONTING --> FORWARD --> POSTRONTING
5个内置链chain:
INPUT , OUTPUT , FORWARD , PREROUTING , POSTRONTING
5个表
table:filter ,nat , mangle , raw ,security
优先级从高到低: security --> raw --> mangle --> nat --> filter
filter:过滤规则表
nat:network address translation 地址转换规则表
mangle:修改数据标记位规则表
raw: 关闭启用的连接跟踪机制,加快封包超越防火墙速度
security: 用于强制访问控制(MAC)网络规则,由Linux安全模块实现
基本使用及拓展模块
基本使用
iptables -A INPUT -s 10.0.0.0/24 -j DROP #抛弃10.0.0.0网段的包
iptables -A INPUT -s 10.0.0.0/24 -j REJECT #拒绝10.0.0.0网段的包
iptables -I INPUT -s 10.0.0.1 -j ACCEPT #在第一条插入允许10.0.0.1机器访问
iptables -D INPUT 2 #删除INPUT第二条策略
iptables -F #清空所有策略
iptables -A INPUT ! -s 10.0.0.0/24 -j REJECT #除了10.0.0.0网段都拒绝
iptables -S #把已经定义的链以命令行直接显示
iptables --list --line-numbers #查看防火墙规则带行号
iptables -nvL #查看防火墙规则
iptables -N web chain #创建自定义链
iptables -E webchain WEB #改名
iptables -I INPUT 3 -j WEB #调用自定义链
#删除自定义链步骤
iptables -D INPUT 3 #从INPUT中删除WEB自定义链
iptables -F WEB #清除防火墙规则
iptables -X WEB #删除自定义链
扩展模块
iptables -R INPUT 3 -p tcp -m multiport --dports 443,80 -j ACCEPT #合并策略
iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 4 -p icmp --icmp-type 0 -j ACCEPT #实现单向通信
iptables -I INPUT 4 -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -i lo -j ACCEPT #允许本地网卡
iptables -I INPUT -p icmp -j ACCEPT #只允许icmp协议
15. 总结iptables规则优化实践,规则保存和恢复。
15.1iptables规则优化实践
1.安全放行所有入站和出站的状态为ESTBALISHED状态连接,建议放在第一条 ,效率更高
2.谨慎放行入站的新请求
3.有特殊目的限制访问功能,要在放行规则之前加以拒绝
4.同类规则,匹配范围小的放前面
5.不同类规则,匹配范围大的放在前面,效率更高
6.应该将那些可以由一条规则能够描述的多个规则合并为一条,减少规则数量,提高检查效率
7.设置默认策略,建议白名单
规则的最后定义规则为默认策略
15.2规则保存和恢复
#保存规则
iptables-save > /data/iptables.rules
#恢复规则
iptables-restore < /data/iptables.rules
vim /etc/rc.local
iptables-restore < /data/iptables.rules
chmod +x /etc/rc.local
#保存规则
yum -y install iptables-services
iptables -A INPUT -s 10.0.0.1 -j ACCEPT
iptables-save > /etc/sysconfig/iptables
systemctl enable iptables.service
#恢复规则
iptables -F
iptables-save > /etc/sysconfig/iptables
16. 总结NAT转换原理, DNAT/SDNAT原理,并自行设计架构实现DNAT/SNAT。
NAT:network address translation ,支持PRERONTING ,INPUT ,OUTPUT ,POSTROUTING
请求报文:修改源/目标IP,由定义如何修改
回复报文:修改源/目标IP,根据跟踪机制自动实现
16.1SNAT/DNAT原理
SNAT:source NAT,支持POSTROUTING ,INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP
DNAT:destination NAT支持PRERONTING ,OUTPUT,让本地网络中的主机上的某服务开放给外部网络访问,但隐藏真实,请求报文:修改目标IP
PNAT:port nat,端口和IP都修改
16.2实现DNAT/SNAT
eth0:192.168.10.200仅主机模式 #公网机器
eth0:10.0.0.8 NAT #防火墙
eth1:192.168.10.8 仅主机模式
vim /etc/sysctl.conf #启用转发
net.ipv4.ip_forward = 1
sysctl -p #配置生效
10.0.0.7 NAT模式 #公司的机器
#10.0.0.8 防火墙规则
[root@firewall ~]#iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE #SNAT
[root@firewall ~]#iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * * 10.0.0.0/24 !10.0.0.0/24
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
[root@firewall ~]#iptables -t nat -A PREROUTING -d 192.168.10.8 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.7:80 #DNAT
[root@firewall ~]#iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 192.168.10.8 tcp dpt:80 to:10.0.0.7:80
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
16 1200 MASQUERADE all -- * * 10.0.0.0/24 !10.0.0.0/24
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
[root@firewall ~]#iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT tcp -- * * 0.0.0.0/0 192.168.10.8 tcp dpt:80 to:10.0.0.7:80
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
16 1200 MASQUERADE all -- * * 10.0.0.0/24 !10.0.0.0/24
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
17. 使用REDIRECT将90端口重定向80,并可以访问到80端口的服务
iptables -t NAT -A PREROUTING -d 10.0.0.7 -p tcp --dport 80 -j REDIRECT --to-ports 90
18. firewalld常见区域总结。
trusted:允许所有流量访问
public:拒绝除和传出流量相关的,以及ssh预定义服务之外的其他所有传入流量,新加的网卡默认属于public
19. 通过ntftable来实现暴露本机80/443/ssh服务端口给指定网络访问
[root@firewall ~]#nft add table inet test_table
[root@firewall ~]#nft list table inet test_table
table inet test_table {
}
[root@firewall ~]#nft add chain inet test_table test_chain
[root@firewall ~]#nft list table inet test_table
table inet test_table {
chain test_chain {
}
}
[root@firewall ~]#nft add rule inet test_table test_chain ip saddr 10.0.0.18 tcp --dport 80 accept^C
[root@firewall ~]#nft add rule inet test_table test_chain reject
[root@firewall ~]#nft list table inet test_table
table inet test_table {
chain test_chain {
reject
}
}
[root@firewall ~]#nft insert rule inet test_table test_chain index 0 ip saddr 10.0.0.18 tcp dport 80 accept
[root@firewall ~]#nft list table inet test_table
table inet test_table {
chain test_chain {
ip saddr 10.0.0.18 tcp dport 80 accept
reject
}
}
[root@firewall ~]#nft insert rule inet test_table test_chain index 0 ip saddr 10.0.0.18 tcp dport 443 accept
[root@firewall ~]#nft list table inet test_table
table inet test_table {
chain test_chain {
ip saddr 10.0.0.18 tcp dport 443 accept
ip saddr 10.0.0.18 tcp dport 80 accept
reject
}
}
[root@firewall ~]#nft insert rule inet test_table test_chain index 0 ip saddr 10.0.0.18 tcp dport ssh accept
[root@firewall ~]#nft list table inet test_table
table inet test_table {
chain test_chain {
ip saddr 10.0.0.18 tcp dport 22 accept
ip saddr 10.0.0.18 tcp dport 443 accept
ip saddr 10.0.0.18 tcp dport 80 accept
reject
}
}
20. 总结关系型数据库相关概念,关系,行,列,主键,惟一键,域。
关系Relational: 关系就是二维表
行row: 表中每一行,又称为一条记录record
列column:表中每一列,称为属性,字段,域field
主键Primary key: PK, 一个字段或多个字段组合,用于唯一确定一个记录的字段,一个表只有一个主键,主键字段不能为空NULL
唯一键Unique key:一个字段或多个字段组合,用于唯一确定一个记录的字段,一个表可以有多个UK,且UK字段可以为NULL
域domain:属性的取值范围
21. 总结关联类型,1对1,1对多,多对多关系。可以自行设计表进行解释。
一对一联系(1:1),在表A中创建一个字段,存储另一个表的主键值
ID | 姓名 | 身份证号码 |
1 | 刘 | 3422 |
2 | 王 | 2344 |
身份证号 | 地址 | 性别 |
3422 | 北京 | 男 |
2344 | 上海 | 男 |
一对多联系(1:n):外键
员工ID | 姓名 | 部门ID |
1 | 张伟 | 1 |
2 | 王三 | 2 |
部门ID | 部门名称 | 位置 |
1 | 销售 | 101 |
2 | 宣传 | 203 |
多对多联系(m:n):增加第三张表
22. 总结mysql设计范式
第一范式:1NF
无重复的列,每一列都是不可分割个基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的列,确保每一列的原子性,除去同类型的字段,就是无重复的列
说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
第二范式:2NF
第二范式必须先满足第一范式,属性完全依赖于主键,;要求表中每个行必须可以被唯一的区分,通常为表加上每行的唯一标识主键PK,非PK的字段需要与整个PK有直接相关性,即非PK的字段不能依赖于部分主键
第三范式:3NF
满足第三范式必须满足第二范式属性,非主键属性不依赖于其他非主键属性,第三范式要求一个数据表中不包含已在其他表中已包含的非主键信息,非PK字段间不能有从属关系
23. 总结Mysql多种安装方式,及安全加固,并总结mysql配置文件。
Mysql安装方式
1.程序包管理器管理的程序包
2.源代码编译安装
3.二进制格式的程序包,
安全加固
设置数据库管理员root口令
禁止root远程登录
禁止anonymous登录
删除test数据库
mysql配置文件
[root@firewall ~]#vim /etc/my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
[client] #客户端自动登录
user=root
password=123456
[mysql] #永久修改提示符格式
prompt=(\\u@\\h) [\\d]>\\_
[mysqld] #服务器禁止远程连接
skip-networking=1
bind_address=127.0.0.1