firewall
简介
1、firewall是rhel7引入与netfilter内核模块交互的新方法;
2、firewall将所有网络流量分为多个区域,根据数据包ip地址或传入网络接口等条件,流量 将转入相应区域防火墙规则。每个区域都有对应打开的服务和列表。
3、若网络接口未与某个区域关联,则使用默认区域public;
配置
1、图形化firewall-config
服务、端口、伪装、端口映射、ICMP过滤、富规则
———持久、重载
2、命令行firewall-cmd
区域:block、dmz、drop、external、home、external、public、trusted、work
#firewall-cmd --get-default-zone //查询当前默认区域
--permanent(持久)--set-default-zone=<..> //设置默认区域
--get-zones //列出所有区域
--get-active-zones //列出当前区域详细信息
--list-all-zones //列出所有区域的所有信息
--add-service= //允许服务通过;--remove-service=
--add-port=<port/协议>[--zone=]//允许端口 --change(add)-interface= [--zone=]//网卡接口到区域 #firewall-cmd --reload //重新加载防火墙生效
SELinux
简介
1、SELinux是一个额外的安全层,主要防止已泄露的系统服务访问用户数据。基于对象添加复杂规则控制,称为强制访问控制。
2、SELinux是确定哪个进程可以访问哪个文件、目录和端口的一组安全规则。
三种类型
主配置文件/etc/selinux/config
强制模式enforcing
查询当前模式getenforce
1、类型字段不匹配
#ls -Z
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
类型上下文通常_t结尾,httpd_sys_content_t
2、端口
端口上下文也是http_port_t
#semanage port -l | grep http //查询端口类型
http_port_t tcp 80
#semanage port -a -t(端口类型) http_port_t -p(协议类型) tcp 80
3、布尔值
布尔值是改变SELinux策略行为开关,有选择的调整策略;
#getenforce //显示SELinux模式
#setenforce 0 //临时将force强制模式关闭;1为开启;
#getsebool -a(列所有)| grep http //列出布尔值开关
#setsebool -P httpd_enable_homedirs on //打开家目录
服务无法启动三级排错
1、服务本身是否启动、配置文件是否正确;
2、防火墙端口是否允许;
3、SELinux影响;
http三种情况对以上诠释
1、不同域名相同ip;
#vim /etc/httpd/conf/httpd.conf //http主配置文件
//#DocumentRoot "/var/www/html" 注释掉主目录
//#ServerName www.example.com:80 注释掉主域名
#cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/ //usr下是模板文件
#vim /etc/httpd/conf.d/http_host.conf //主配置文件失效,修改子配置文件
<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName server0.example.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/virtual" //上层/var/www继承下来控制权限
ServerName www0.example.com
</VirtualHost>
<VirtualHost *:80> //默认没有访问控制
DocumentRoot "/www"
ServerName webapp0.example.com
</VirtualHost>
<Directory "/www"> //给/www设置访问控制
AllowOverride None
Require all granted
</Directory>
#httpd -t //检查语法
#systemctl start httpd
##################都打不开,说明是端口防火墙问题#########
#firewall-cmd --permanent --add-service=http
#firewall-cmd --reload
##########发现第三个网站进不去sentenforce 0 关闭就可以,说明是SELinux#########
#ls -Z //查看文件类型字段
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 www
①#chcon -R -t(类型)httpd_sys_content_t /www
②#semanage fcontext -a(追加)-t(类型)httpd_sys_content_t '/www{/.*}?'
#restorecon -vFR /www
//两种方法给变文件类型字段。
2、不同端口相同ip
#vim /etc/httpd/conf/httpd.conf //http主配置文件
//#DocumentRoot "/var/www/html" 注释掉主目录
//#ServerName www.example.com:80 注释掉主域名
#cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/ //usr下是模板文件
#vim /etc/httpd/conf.d/http_host.conf //主配置文件失效,修改子配置文件
<VirtualHost 172.25.1.11:80>
DocumentRoot "/var/www/html"
ServerName server0.example.com
</VirtualHost>
Listen 808
<VirtualHost 172.25.1.11:808>
DocumentRoot "/var/www/virtual" //上层/var/www继承下来控制权限
ServerName www0.example.com
</VirtualHost>
Listen 8088
<VirtualHost 172.25.1.11:8088> //默认没有访问控制
DocumentRoot "/www"
ServerName webapp0.example.com
</VirtualHost>
<Directory "/www"> //给/www设置访问控制
AllowOverride None
Require all granted
</Directory>
########给防火墙和SELinux注入新加端口规则###########
#firewall-cmd --permanent --add-port=808/tcp //再添加8088
#firewall-cmd --reload
#semanage port -l | grep http
#semanage port -a -t http_t -p tcp 808 //再添加8088
3、查看家目录
#cd /etc/httpd/conf.d
#vim userdir.conf //家目录配置文件
#UserDir disabled ///加注释
UserDir public_html //打开目录
#su - wode ///home/wode/public_html
<wode>#mkdir public_html //index.html
<wode>#cd /home
<wode>#chmod o+rx wode
#exit
#!sys
###访问不到172.25.1.11/~wode 布尔值问题
#getsebool -a | grep http
#setsebool -P htt_enable_homedirs on