SELinux 安全机制
SELinux状态:
enforcing 强制
permissive 宽松(百分之80策略失效,但是会记录其他软件的 危险行为,启用强制安全机制后会收拾以前违法的软件行为)
disabled 彻底禁用
查看SELinux状态:getenforce
临时设置SELinux状态:setenforce 1|0 # 只能强制和宽松之间切换
永久设置SELinux状态:/etc/selinux/config文件
找到SELINUX=enforcing
改为自己想要的状态 SELINUX=disabled
系统下次启动后生效
构建Web服务
web服务器:httpd(古老) Nginx Tmcat
httpd
1.安装httpd
yum install -y httpd
rpm -q httpd
2.重启httpd
systemctl restart httpd
# 重启
systemctl enable httpd
# 设置为开机自启
3.本机测试
firefox 127.0.0.1
4.书写页面文件
存放位置:/var/www/html/
网页文件名字:index.html
vim /var/www/html/index.html
随便写点东西(Hello World)其实按照html规范写就行了
安装ftp
FTP服务:文件传输
1.安装软件vsftpd
yum info vsftpd
yum -y install vsftpd
2.重启服务
systemctl restart vsftpd
# 重启
systemctl enable vsftpd
# 设置为开机自启
3.本机测试
firefox ftp://127.0.0.1
4.ftp共享路径
/var/ftp/ # 文件可以放在这里
安装防火墙
-
防火墙firewall和SELinux的区别是:SELinux是系统自带的,firewall是需要下载的
-
防火墙 firewalld和iptables区别:firewalld 是对 iptables 的 新的封装,所以firewalld 本身使用的还是iptables ;
在linux 中 firewalld 与 iptables 是共存的;
对于支持 firewalld 的系统中,建议使用firewalld,因为firewalld的一个十分方便的功能是可以动态添加防火墙规则,而直接生效,这在iptables中不不行的;这点对系统安全来讲十分重要;比如:当开发者的程序运行时判断一个IP是规则或者是危险的,可以动态的添加到防火墙的黑名单,从而更好的保护服务器;要知道攻击的来源IP并不是无限的,这样会造成攻击者的成本大幅升高;从而放弃攻击;
但是仍要注意无论是firewalld,还是 iptables 其实都不是真正的防火墙,只是一个防护规则而已,并不能抵抗规则以外的攻击,比如CC攻击,以及其他暴力破解等;
1、安装firewalld
root执行 # yum install firewalld firewall-config
2、运行、停止、禁用firewalld
启动:# systemctl start firewalld
查看状态:# systemctl status firewalld 或者 firewall-cmd --state
停止:# systemctl disable firewalld
禁用:# systemctl stop firewalld
防火墙策略
防火墙:隔离
严格过滤入站,允许出站
硬件防火墙:对服务器集群,比较贵,可以对出入站进行限制,比如说 不让你玩B站
软件防火墙:对本机的保护
firewalld服务基础
系统服务:firewalld
管理工具:firewall-cmd 、firewall-config
- 根据所在的网络区分,预设保护规则集
- public : 仅允许访问本机的sshd、dhcp、ping服务
- trusted : 允许访问任何访问
- block : 阻塞任何来访请求(明确拒绝)
- drop : 丢弃任何来访的数据包(不给客户端回应,节省资源)
数据包: 源IP地址 目标IP地址 数据
防火墙匹配原则:匹配及停止
1. 查看数据包中源IP地址,然后查询所有区域中规则,哪一个区域中有该源IP地址的规则,则进入哪一个区域
2. 进入默认区域(public)
查看防火墙默认区域:
firewall-cmd --get-default-zone
修改防火墙默认区域:
firewall-cmd --set-default-zone=block
区域中添加协议
互联网中常见协议:
http:超文本传输协议 默认端口80
https:安全超文本传输协议 默认端口443
FTP:文件传输协议 默认端口21
TFTP:简单的文件传输协议 默认端口69
telnet:远程管理协议(主要是管理路由器交换机) 默认端口23
DNS:域名解析协议 默认端口53
snmp:简单的网络管理协议 默认端口161
smtp:邮件协议(发邮件) 默认端口25
pop3:邮件协议(收邮件) 默认端口110
查看防火墙区域内的协议
firewall-cmd --zone=public --list-all
现在查看的 public ,如需查看其他的把public改为对应的区域即可
向防火墙区域添加协议
# 向public防火墙区域添加协议
firewall-cmmd --zone=public --add-service=http
# 查看防火墙public区域的协议
firewall-cmd --zone=public --list-all
永久配置策略
上面的配置,关机后会重置
# 永久配置(permanent)
# 向public防火墙区域添加协议(写入配置文件中)
firewall-cmmd --permanent --zone=public --add-service=http
# 重新加载防火墙策略
firewall-cmd --reload
# 查看防火墙public区域的策略
firewall-cmd --zone=public --list-all
拓展,拦截IP
了解:区域中添加源IP地址
单独拒绝一个机器desktop,所有的访问
将服务器desktop的源IP地址,写入区域block
firewall-cmd --zone=block --add-source=172.25.0.10
block区域为:阻塞任何来访请求(明确拒绝)
将源IP地址添加进此区域,可以起到一个拦截效果
# 查看防火墙block区域的策略
firewall-cmd --zone=block --list-all
block
interfaces:
sources:172.25.0.10
services:(这里是放协议的地方:http,ftp)
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
宽松:默认区域为trsuted,单独拒绝的源IP地址写入block(例如web服务器)
严格:默认区域为block,单独拒绝的源IP地址写入trsuted(例如数据库服务器)
端口映射
什么是端口:协议或程序的编号
数据包: 源IP地址 目标IP地址 数据 目标端口
实现本机的端口映射
- 本地应用的端口重定向(端口1–>端口2)
- 从客户机访问端口1的请求,自动映射到本机端口2
- 比如,访问以下两个地址可以看到相同的页面:
http://172.25.0.11:5423 --> http://172.25.0.11:80
http://172.25.0.11
端口映射命令
firewall-cmd --permanent --zone=public
–add-forward-port=port=5423:proto=tcp:toport=80
# –add-forward-port=port=5423 添加协议,端口为5423
# proto=tcp 类型为tcp协议
# toport=80 重定向到80端口
# 5423,tcp,80都是可以自定义的
# 重新加载防火墙策略
firewall-cmd --reload
# 查看防火墙public区域的策略
firewall-cmd --zone=public --list-all
# 浏览器输入http://172.25.0.11:5423 查看
删除策略
想删除什么策略就在-remove-后面跟什么策略
firewall-cmd --zone=block --remove-source=172.25.0.10
firewall-cmd --zone=block --remove-service=ftp
参考文章:
linux 防火墙 firewalld和iptables区别https://blog.youkuaiyun.com/qianjiu/article/details/121335742
selinux及防火墙讲解https://blog.youkuaiyun.com/qq_43417559/article/details/95074204