SELinux安全机制
SELinux安全机制是美国NSA国家安全局主导开发,一套增强Linux系统安全的强制访问控制体系。SELinux监视着inux系统的运行内容,如果有不符合ESLinux运行规则的进程直接kill。
SELinux的3种运行模式:
- enforcing:强制模式,该模式下SElinux的所有规则都生效
- permissive:宽松模式,该模式下SELinux的20%的规则生效
- disabled:彻底禁用模式,该模式下SELinux的规则不生效
任何模式切换到disabled模式
,都必须经历重启
系统。
查看当前系统SELinux状态:
getenforce
[root@localhost ~]# getenforce
Disabled
修改SELinux状态:
-
临时修改:
setenforce 0|1
- setenforce 1 : 设置为强制模式
- setenforce 0 :设置为宽松模式
-
永久修改:修改配置文件
/etc/selinux/config
即可:vim /etc/selinux/config
修改
SELINUX=
enforcing(强制模式) / permissive(宽松模式)/ disabled(禁用模式)
用户自定义指令alias
- 使用方法:
alias 别名=‘实际命令’
alias hello=‘echo hello’
- 定义自定义命令
- 影响指定用户的bash解释环境:在
~/.bashrc
文件中配置,每次开启bash终端时生效 - 影响所有用户的bash解释环境:在
/etc/bashrc
文件中配置,每次开启bash终端时生效
- 影响指定用户的bash解释环境:在
注意配置完成之后需要在新的终端窗口才可以使用。
防火墙
防火墙严格控制谁可以进入,谁可以离开linux系统,相当于linux的守卫。
构建web服务
web服务:提供页面的服务。常见的web服务:httpd 、ftp服务器、 nginx(并发访问量更高) 、 tomcat
httpd
-
安装httpd
yum -y install httpd
-
重启httpd
systemctl restart httpd
-
设置开机自启httpd
systemctl enable httpd
-
防火墙
默认情况下防火墙拒绝所有外部访问
内部web资源,但是可以自己访问自己 -
访问httpd的web服务
终端执行:firefox 192.168.152.144
,弹出如下页面说明部署成功:
-
编写网页
可以自己编写网页,显示页面内容:
网页的存储路径:/var/www/html/
网页的名称:index.html
编写如下内容:<!DOCTYPE html> <html lang="en"> <body> <marquee><h1 style="color: coral">Hello</h1></marquee> </body> </html>
再次访问网站:
ftp服务器
-
安装ftp
yum -y install vsftpd
-
重启ftp
systemctl restart vsftpd
-
设置开机自启ftp
systemctl enable vsftpd
-
防火墙
默认情况下防火墙拒绝所有外部访问
内部web资源,但是可以自己访问自己 -
访问httpd的web服务
终端执行:firefox ftp://192.168.152.144
,弹出如下页面说明部署成功:
-
编写文件
可以添加自己编写的网页,显示页面内容:
文件的存储路径:/var/ftp/
添加文件:
[root@localhost ~]# touch /var/ftp/test1.txt
[root@localhost ~]# touch /var/ftp/test2.txt
[root@localhost ~]# touch /var/ftp/test3.txt
[root@localhost ~]# firefox ftp://192.168.152.144
防火墙概述
上面启动的两个服务,只能通过本机访问,外界网络访问的话会报错:为了解决这个问题我们需要关闭防火墙。
防火墙的作用是隔离
,从而保护主机安全。
防火墙严格过滤入站请求,允许出站请求。
主机自己访问自己的时候是不需要经过防火墙的。
防火墙分类
- 硬件防火墙:贵,操作简单,防护能力强。
- 软件防火墙:本机防火墙,用于保护本机的。任何访问本机的请求都必须通过防火墙的规则验证。
软件防火墙firewalld
linux默认安装了提供软件防火墙的工具firewalld
-
firewalld
的管理工具有:firewall-cmd
、firewall-config
-
firewalld
规则的配置方式
不是直接将规则写在防火墙里,防火墙划分为不同的区域,不同的区域对应着不同的规则。请求访问主机的时候,先选择所属区域,然后进入该区域对应的规则判断是否符合规则。
- public:仅允许访问本机的
sshd、dhcp、ping
服务。 - trusted:允许任何访问,即没有任何规则都可以访问。
- block:阻塞任何来访请求,任何请求都不可以访问,有明确回应的。
- drop:丢弃任何来访的数据包,直接丢弃任何请求,并且不给任何请求,优点是节省资源,比轿常用。
- public:仅允许访问本机的
-
请求匹配到制定防火墙区域的原则:
请求访问主机的时候具体分发到哪一个区域是需要匹配一定的规则的,需要根据请求的数据包进行匹配,数据包括如下信息:源IP地址 目标IP地址 数据 目标端口
,匹配规则如下:-
查看数据包中源IP地址,然后查询所有区域中规则,哪一个区域中有该源IP地址的规则,则进入哪一个区域
-
如果都没有就进入默认区域(public)
默认区域可以修改:firewall-cmd --set-default-zone=block #设置默认防火请区域 firewall-cmd --get-default-zoneblock # 获取默认防火墙区域
-
-
在区域中添加协议
-
查看防火墙区域的规则
firewall-cmd --zone=区域名 --list-all
[root@localhost ~]# firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
-
添加防火墙区域的访问协议,配置service选项可以控制哪些协议可以访问,service选项中配置的内容是
协议名
firewall-cmd --zone=区域名 --add-service=协议名
添加完成之后就可以使用对应协议的规则访问主机
但是这只是临时添加,我们可以使用--permanent
选项,将规则添加到配置文件中达到永久添加的效果。
对于使用--permanent
添加完的规则我们需要使用firewall-cmd --reload
命令重启。 -
添加防火墙区域的可访问IP,配置sources选项可以控制哪些IP可以访问,sources选项中配置的内容是
IP地址
firewall-cmd --zone=区域名 --add-sources=IP地址
添加完之后该IP就遵循该区域的规则。
一个IP只能在一个区域中。
-
-
在区域中删除协议
firewall-cmd --zone=区域名 --remove-service=协议名
firewall-cmd --zone=区域名 --remove-sources=协议名
-
两种常用设置模式:
- 宽松:默认区域为trsuted,单独拒绝的源IP地址写入block
- 严格:默认区域为block,单独允许的源IP地址写入trsuted
实现本机的端口映射
- 端口:一台机器可以部署多个程序,每个程序有自己对应的端口。
- 端口映射:端口映射值的是如果用户访问端口1,可以通过自动映射将请求转发到端口2.
一个程序可以有多个多个端口,通过端口映射实现。
firewall实现端口映射
firewall-cmd--permanent --zone=区域名
--add-forward-port=port=源端口:proto=tcp:toport=目标端口
如:
firewall-cmd--permanent --zone=public
--add-forward-port=port=5423:proto=tcp:toport=80
如果访问piblic区域的5423端口,就会重定向到80端口,但是页面上显示的还是5423
常见的9种协议
- http:超文本传输协议, 默认端口:80
- https:安全超文本传输协议, 默认端口:443
- FTP:文件传输协议, 默认端口:21
- TFTP:简单的文件传输协议, 默认端口:69
- telnet:远程管理协议, 默认端口:23
- DNS:域名解析协议, 默认端口:53
- snmp:简单的网络管理协议, 默认端口:161
- smtp:邮件协议(发邮件), 默认端口:25
- pop3:邮件协议(收邮件), 默认端口:110