8-25上课补充内容
1,SELINUX
安全增强型 Linux(SecurityEnhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。SELinux 的结构及配置非常复杂,而且大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。
临时关闭SELINUX
setenforce 0
查看关闭状态getenforce
配置文件 /etc/selinux/config
改成disabled之后已经强制关闭,
2,firewalld、iptables和netfilter之间的关系
在centos6上,我们用的是iptables服务,而在centos7上,我们用的是firewalld服务。同样的,centos6上安装的是iptables包,而centos7上安装的是firewalld包。不管是centos6还是centos7,核心其实都是netfilter,netfilter是linux的一个内核模块,iptables命令是linux内核自带的。 centos6上的iptables服务和centos7上的firewalld服务,其实都是用来定义防火墙规则功能的防火墙管理工具。它们都是将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能,
所以其实在配置规则的思路上是完全一致的。
常用的命令
systemctl disable firewalld //禁止firewalld开机自启动
systemctl stop firewalld //关闭firewalld服务
yum install y iptablesservices 安装iptables服务
启动iptables服务
systemctl enable iptables && systemctl start iptables
netfilter5表5链介绍
1.filter表——三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包
内核模块:iptables_filter.
2.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口)
内核模块:iptable_nat
3.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)
4.Raw表——两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理
内核模块:iptable_raw
5.Security表——三个链:INPUT、OUTPUT和FORWARD
作用:Security表在centos6中并没有,用于强制访问控制(MAC)的网络规则
内核模块:iptable_security
netfilter的5个链
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARD:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外发出
POSTROUTING:发送到网卡接口之前
iptables语法(重点内容)
iptables [t table] 命令 [chain] [rules] [j target]
格式说明:
table————指定表名,iptables内置包括filter表、nat表、mangle、raw表和security表。
命令—————对链的操作命令 chain————链名 rules————匹配规则 target————动作如何进行
操作命令选项说明
命令 说明 P或–policy <链名>:定义默认策略 L或–list <链名>:查看iptables规则列表 A或—append <链名>:在规则列表的最后增加1条规则 I或–insert <链名>:在指定的位置插入1条规则 D或–delete <链名>:从规则列表中删除1条规则 R或–replace <链名>:替换规则列表中的某条规则 F或–flush <链名>:删除表中所有规则 Z或–zero <链名>:
Iptables的参数说明
i或–ininterface <网络接口名>:指定数据包从哪个网络接口进入,如ppp0、eth0和eth1等
-o或–outinterface <网络接口名>:指定数据包从哪块网络接口输出,如ppp0、eth0和eth1等
-p或-proto协议类型 < 协议类型>:指定数据包匹配的协议,如TCP、UDP和ICMP等
-s或–source <源地址或子网>:指定数据包匹配的源地址 –sport <源端口号>:指定数据包匹配的源端口号,可以使用“起始端口号:结束端口号”的格式
指定一个范围的端口 d或–destination <目标地址或子网>:指定数据包匹配的目标地址 –dport <目标端口号>:指定数据包匹配的目标端口号,可以使用“起始端口号:结束端口号”的
iptables常用操作
查看iptables规则:
命令:iptables nvL
选项说明:
n:数字输出。IP地址和端口会以数字的形式打印
v:详细输出。这个选项让list命令显示接口地址、规则选项等信息
L list:显示所选链的所有规则。如果没有选择链,则会显示所有链的所有规则
命令:iptables F选项说明:F:清空iptables的规则。
命令:service iptables save说明:执行这条命令会把当前itables的所有规则保存到/etc/fi/itables文件中 保存iptables规则
命令:iptables Z选项说明:Z选项可以清空所有规则相关的数据包数量 数据包计数器清零
iptables规则的操作 "增删改查"
iptables 增加规则(注意点:添加规则时,规则的顺序非常重要)
a.在指定表的指定链的尾部添加一条规则,-A选项表示在对应链的末尾添加规则,省略-t选项时,表示默认操作filter表中的规则
systemctl restart iptables #重启iptables服务
service iptables save
说明:执行这条命令会把当前iptables的所有规则保存到/etc/sysconfig/iptables文件中
[root@localhost ~]# iptables –Z 清零
[root@localhost ~]# iptables -nvL
Iptables的增加规则:
例如丢弃来自172.19.11.18的icmp协议数据包。可以使172.19.11.18这个台主机ping不通服务器。
iptables -A INPUT -i ens33 s 172.19.11.18 p icmp j DROP
删除有两种方法,一是直接删掉编号,二是直接删除增加的条
删除刚才添加的那一条规则
iptables -A INPUT -s 172.19.11.18 -p icmp -j DROP
这里也可以用-I指定网口,不在继续。
这时候从电脑上ping则ping不通了
修改规则(注意点:如果使用-R选项修改规则中的动作,那么必须指明原规则中的原匹配条件,例如源IP,目标IP等)
方法二
查看规则编号的选项是 linenumbers
iptables nvL INPUT linenumbers
例如只允许到服务器的22tcp端口访问
iptables -A INPUT -p tcp dport 22 -j ACCEPT
案例在之前已经处理做过,不在格外说明,贴上案例操作:
案例说明:
iptables nat表应用
配置了之后,多出了一个ens37
B设备配置成192.168.101.33,并且配置成lan区段
这时候看AB两个设备是互通的
说明,网络上网使用的是172的网段,B地址为192.168.101.33
接下来
(route add default gw 192.168.100.2 #设置一个默认网关
echo "nameserver 223.5.5.5" > /etc/resolv.conf #添加一个临时的DNS服务器)
笔者这里配置了完整的ip这一步省略。
在A机器上设置路由转发
cat /proc/sys/net/ipv4/ip_forward
在A上执行iptables
iptables -t nat -A POSTROUTING -s 192.168.101.2/24 -o ens34 -j MASQUERADE
再从B上面ping www.baidu.com 发现已经可以ping通了,说明策略有效
案例需求2:端口转发
目的让PC能远程登录test01
添加规则1,将访问172.19.0.18:22222端口的数据包转发给192.168.101.33:22端口
iptables -t nat -A PREROUTING -d 172.19.0.18 -p tcp --dport 22222 -j DNAT --to 192.168.101.33:22
这样子给172.19.0.18:2222的包送到了 192.168.101.33:22上
下面这条可以不用
如需使用可以将B的包发出来的地址做一下nat映射
添加规则2,将来源于192.168.100.100的数据包的源地址转换为10.1.1.25
[root@long0000 ~]# iptables t nat A POSTROUTING s 192.168.100.1 j SNAT to 10.1.1.25
扩展内容;icmp协议,也就是常说的ping协议,可以百度搜索到对应的文件,常用来检测网络是否畅通。
ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1.