SELinux 、防火墙(firewall 、iptables)

#一、SELinux
一套强化linux安全的MAC扩展模块,由美国国家安全局主导开发,集成在内核中(2.6及以上),操作系统提供可定制的策略,管理工具。
安全保护模型:
DAC 自主访问控制 (Discretionary access control 所有者对自己的资源负责)
典型的DAC应用:
9位权限码(rwx); ACL 策略
MAC 强制访问控制
MAC 可以针对特定的进程与特定的文件资源进行权限的控制。
Mandatory Access Control 管理员对所有的资源负责
典型MAC应用:TCSEC 标准定义的MLS多级安全;SELinux
1、红帽的selinux 策略集
selinuxtype=targeted —推荐,仅保护最常见/关键的网络服务,其他不限制
主要的软件包:selinux-policy 、selinux-policy 、libselinux-utils 、libselinux-utils 、coreutils 、policycoreutils;
2、selinuxtype=mls --提供多层次、全面的安全防护策略--------需要的扩展软件包:selinux-policy-mls ;mcstrans;
policycoreutils-newrole
3、 selinux 配置文件是:/etc/selinux/config #cat /etc/selinux/config
查看selinux的策略policy用 :sestatus;
#sestatus 【-v b】:-v 检查列出/etc/sestatus.cof内的文件与程序的安全上下文;
-b 将目前规则布尔值列出
4、 selinuxenabled 检查selinux是否开启?配合echo$?,传回值位0位开启,1位关闭。
#selinuxenabled #echo $?
5、安全上下文(security context ,安全上下文 为文件/目录/设备标记访问控制属性)
查看进程 #ps aux -Z #ps -aux -Z |grep -i 进程名
查看文件安全上下文 #ls -lZ 文件
查看目录安全上下文:#ls -ldZ 目录名
查看用户上下文:#id -Z
安全上下文的组成:indentify 身份识别、role 角色、type 类型
常见的访问类型:bin_t 二进制执行文件
etc_t 系统配置文件
fsadm_exec_t 文件系统管理
admin_home_t 管理员账户的宿主目录
user_home_t 普通用户的宿主目录
httpd_sys_content_t httpd网站的内容
身份识别:—root :root身份;-----system_u :表示系统程序方面的标识,通常是进程;
-----user_u :一般用户账号;
角色role: object_r :代表的是文件或者目录等文件系统; system_r :代表进程。
6、修改安全上下文 :
使用chcon工具:
---- -t : 指定访问类型;
---- -u 、 -r 分别用来指定用户、角色
---- -R 递归修改
一般规律:—移动的文件,原有的上下文属性不变;----复制的文件,自动继承目标位置的上下文。
---- 创建新文件,新文件继承父目录的安全上下文。
重置安全上下文:使用 restorecon 工具
-----恢复为所在位置的默认上下文属性;
---- -R 递归修改;
-v :将过程显示在屏幕上;
脚本 ./ autorelabel 文件 : 指的是下次重启后全部重置
7、调整 selinux布尔值(功能开关)
使用getsebool查看 -a 可列出所有布尔值;
使用setsebool设置: -P 永久更改,重启后任然有效;=0|1 :重启/关闭 ; on | off : 重启 |关闭 ;
例子:启用selinux 后修改网站服务使用的端口号为8090?
#vim /etc/httpd/conf/httpd.conf
listen 8090
#systemctl restart httpd 重启失败
通过selinux日志程序记录报错信息指导修改
#semanage port -a -t http_port_t -p tcp 8090
#systemctl restart httpd 成功
#netstat -antulp |grep httpd
__________________________________________________
8、启用selinux 日志程序记录报错信息?
日志程序:setroubleshoot
通常情况下,系统日志程序会把没有单独日志文件的服务的日志放到/var/log/message
#rpm -qa |grep -i shoot
#cat /var/log/message | grep -n -i setroubleshoot | tail -1
如何开机的时候启动就启动setroubleshoot ?
#chkconfig --list setroubleshoot (只有是3或者5就表示已启动,centos6版本用chkconfig)
#chkconfig setroubleshoot on 或 systemctl enabled setroubleshoot
]# grep setroubleshoot /var/log/messages //查看日志,会给出 run xxxxx 的提示
_____________________________________________
9、查看默认目录的安全上下文查询及修改
semanage {login | user | port |interface |fcontext |translation } -l (主要用fcontext)
semanage fcontext -{a |d |m } [-f r s t ] file_spec
---- -l 查询;
fcontext :主要用在安全上下文方面;
----- -a 增加;
----- -m 修改;
----- -d 删除;
例子:# semanage fcontext -l |grep -i ‘/var/www/html/’
要求:设置/srv/sabam目录的默认安全上下文为:public_content_t
( #mkdir /srv/samba
# ll -Zd /srv/samba
#semanage fcontext -l |grep ‘/srv/samba’
#semanage fcontext -l |grep ‘/srv’
#semanage fcontext -a -t public_content_t ‘/srv/samba(/.)?
#semanage fcontext -l |grep ‘/srv/samba’
#cat /etc/selinux/targeted/contexts/files/file_contexts.local #已经写入档案,有默认值了
#restorecon -Rv /srv/samba
以后可以用restorecon恢复
#ll -Zd /srv/samba)
10、selinux 三种模式:enforcing 强制;permissive 宽松; disabled 彻底禁止
查看当前的模式:getenfoce
enforcing 和 permissive 临时切换 用: setenforce 1 |0 (1 为强制,0为宽松)
永久修改,修改配置文件:/etc/selinux/config SELINUX=permissive
二、防火墙(firewall 、 iptables)
RHEL 7 默认使用firewalld 作为防火墙,RHEL 6默认iptables 为防火墙;
防火墙的作用:— 切割被信任与不信任的网段; ----- 划分出可提供Internet 的服务与必须受保护的服务;
------- 分析出可接收与不可接收的数据包;(隔离,过滤入站、允许出站)
2.1 服务 :firewalld
管理工具: firewall-cmd 、firewall-config(图形工具)
使用方法:#firewall-cmd --help
预设安全区域:
–public 仅允许访问本机的sssd 、DHCP、ping 少数几个服务;
–trusted 允许任何访问
–block 阻塞任何来访请求,明确拒绝
–drop 丢弃任何来访的数据包,节省资源
启动服务:# systemctl start firewalld
停用服务:# systemctl stop firewalld
禁用服务:# systemctl disable firewalld
查看默认区域:# firewall-cmd --get-default-zone
修改默认区域:# firewall-cmd --set-default-zone=trusted /public/block/drop
查看区域规则:# firewall-cmd --zone=public --list-all
# firewall-cmd --zone=trusted --list-all
# firewall-cmd --zone=block --list-all
添加服务:# firewall-cmd --zone=public --add-service=http
# firewall-cmd --zone=public --list-all
查看服务状态:# firewall-cmd --state
running:运行时,仅当前有效,重载防火墙后失效;
permanent:永久有效,静态配置,需要重新加载防火墙才能生效
重新加载防火墙配置:# firewall-cmd --reload
添加端口转发:(实现端口映射)
# firewall-cmd --permanent -zone=public --add-forward-port=5423:proto=tcp:toport=80
工作过程中读特殊IP设置防火墙:# firewall-cmd --zone=block --add-source=172.25.0.01
严格:默认区域设为drop,把允许的IP单独放入trusted;
宽松:默认区域设为trusted,把拒绝的IP单独放入drop;
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
怎么开启一个端口呢?
添加 #firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,没有此参数重启后失效)
重新载入 #firewall-cmd --reload
查看 #firewall-cmd --zone= public --query-port=80/tcp
删除 ##firewall-cmd --zone= public --remove-port=80/tcp --permanent
__________________________________________________________________
2.2 iptables
2.2.1 基础知识:
iptables用来衡量tcp/ip报文的属性:源ip、目标ip、源端口、目标端口;
tcp标志位: syn、syn+ack、ack、 fin、urg、psh、rst ;
netfilter主要工作在tcp/ip协议栈上的,主要集中在tcp报文首部和udp报文首部。
类别:单一主机型:数据包过滤型的Netfilter; 依据服务软件程序作为分析的TCP Wrappers
网路型:数据包过滤型的Netfilter; 利用代理服务器(proxy server)
规律:一般proxy 主机通常只开放port 80、21、20等www、ftp 的端口;
过滤式防火墙主要分析OSI七层中的2,3,4层
2.2.2 启用服务
centos 7以上系统使用iptables前,禁用firewalld服务:
# systemctl disable firewalld
或者# systemctl stop firewalld,# systemctl mask firewalld
# yum -y install iptables
# yum -y install iptables-services (一定要安装这个,不然会提示无文件)
# systemctl restart iptables.service
# systemctl enableiptables.service
# systemctl status iptables.service
# ls /etc/sysconfig/iptables-config 查看配置文件已存在;
2.2.3 iptables 表、链结构
iptables默认有四个表:
----nat 地址转换表; – -- 用来管理后端主机的;
----filter 数据过滤表; -----管理本机进出的;
----raw 状态跟踪表; -----跟踪数据表规则表
----mangle 包标记表 -----管理特殊标志使用的mangle(将报文拆开来并修改报文标识位,最后封装起来)
filter 过滤器(过滤本机的数据包):三条链
INPUT: (入站规则)
OUTPUT:(出站规则)
FORWARD:(转发规则,与NAT的table相关性高)
NAT 地址转换:用来进行来源与目标地址的IP或PORT转换
(snat :源地址转换 ; dnat :目标地址转换 ; pnat :目标端口转换)
—三条链名:
PREROUTING :进行路由判断之前的规则
POSTROUTING:路由判断之后的规则
OUTPUT:与发送出去的数据包有关
注意:—如果iptables只是用来保护主机本身,则不需要NAT规则,直接设置为开放就行;
–如果用来管理LAN内其他主机,则要针对filter的FORWARD和NAT表中3个链进行额外的规则设置。
-----规则匹配原则:匹配即终止;若无任何匹配,则按该链的默认策略处理。
2.2.4 iptables基本用法
管理程序的文件位置:/var/sbin/iptables
iptables如何查看表和链?每一个链都有默认策略:policy ACCEPT
iptables [-t 表] 大写选项子命令 [规则号] 链名 匹配标准 -j 目标(规则)
(大写字母选项:可以实现某种功能,比如添加删除清空规则链;小写字母选项:用来匹配及其他)
-t : 指定表 -t{fillter|nat|mangle|raw};
-v : 显示详细信息 观察规则的匹配情况
-n :数字格式显示ip和端口,不进行IP和HOSTNAME的反查,显示速度更快;
-L: 列出目前的table的规则
-F :清空链
-P:设定默认策略,为指定链设置默认策略
-N:新建自定义链;
-p:协议名和协议号
-X : 删除自定义空链,如果链内有”规则,则无法删除
-Z :清空防火墙数据表统计信息
-E :重命名自定义链
- - line-numbers :查看规则时,显示规则的行号
iptables管理规则:
-A :append附加规则,将新增的规则添加到链的尾部
- I [n] :插入为第n条规则
-D : 删除第n条规则
-R[n] : 替换第N条
清空nat表中的input链,#iptables-t nat -F INPUT
清空fllter表所有链:#iptables-F
设置fllter表input链的默认规则为丢弃 :iptables-t fllter -P INPUT DROP
查看规则:# iptables -L -n
触发动作:
DROP : 丢弃数据包
REJECT : 拒绝数据包通过
ACCEPT : 允许数据包通过
RETURN : 返回主链继续匹配
REDIRECT: 端口重定向
MASQUERADE :地址伪装
DNAT : 目标地址转换
SNAT :源地址转换
MARK :打标签
LOG :记录日志,然后传给下一条规则
注意事项:1–可以不指定表,默认认为filter表;
2–可以不指定链,默认认为对应表的所有链;
3–除非设置默认策略,否则必须指定匹配条件;
4–选项/链名/目标操作用大写字母,其余为小写;
5–对于数据包被分割成片段发送出去,为了匹配不同的分割数据片,加"-f’ 选项。
6-- 防止收到大量无效数据包的攻击,限制每秒钟接收数据包的个数,用 “–limit” 扩展功能。
7-- 通过"–string" 设置关键词限制网络连接。
# iptables -t nat -L -n (target prot opt source destination)
target 代表进行的操作;
prot 代表使用的数据包协议;
opt 代表额外的选项
source 来源IP
destination 目标IP
2.2.5 针对不同的要求设置对应的规则
1、IP、网络及接口设备对比:
iptables [-A I 链名] 【- i o 网络接口】【-p 协议】【-s 来源IP/网络】【-d 目标IP/网络】
-j【ACCEPT /DROP /REJECT /LOG】
-A I 链名 : A 增加;I 插入;
- i 、o 网络接口: i 数据包进入的那个网路接口; o 数据包出去的网络接口;
-p 协议 :tcp udp icmp all
-s 来源IP/网络: 不接受则用 -s !
-d 目标IP/网络 :不接受则用 -d !
2、TCP UDP的规则比对:针对端口设置
iptables [-A I 链名] 【- i o 网络接口】【-p 协议】【-s 来源IP/网络】【–sport 来源端口范围】【-d 目标IP/网络】
【–dport 目标端口范围】 -j【ACCEPT /DROP /REJECT /LOG】
注意:必须加上-p tcp或者udp 因为只有tcp /udp数据包具有端口号;
3、iptables 外挂模块 :mac 和 state
用状态模块分析这个想要进入的数据包是否为刚刚发出去的响应。
iptables -A INPUT 【-m state】【–state 状态】
-m : state (状态模块,还有limit、string等扩展模块),
–state :一些数据包的状态:
(INVALID:无效数据包; ESTABLISHED:已经连接成功的连接状态;
NEW:想要新建连接的数据包状态;RELATTE:最常用,表示这个数据包是与主机发送出去的数据包有关)
–mac -source :就是来源主机的mac地址 mac(网卡硬件地址)
4、ICMP 数据包规则的比对:针对是否响应ping来设计
iptables -A INPUT 【-p icmp】【–icmp -type 类型】 -j ACCEPT
echo -request 代表本机ping 别人
注意:如果主机是作为局域网的路由器,建议ICMP数据包全部放行,因为客户端检测网路时,会用ping来测试。
5、最简单的防火墙设置
–1、规则归零 iptables -F
–2、默认策略 :除了把INPUT设为DROP外,其他默认为ACCEPT
–3、信任本机 (lo 必须为信任设备)
–4、回应数据包:让本机通过主动向外发出请求而响应的数据包可以进入本机(ESTABLISHED、RELATED)
2.2.6注意事项:
1、IPV4的内核管理功能:/proc/sys/net/ipv4/*
防火墙作为网关、路由的必要条件:
—echo ‘net.ipv4.ip_forword=1’ >> /etc/sysctl.conf
或者
—echo 1 > /proc/sys/net/ipv4/ip_forward
2、避免SYN Floding 的阻断式DOS攻击,启用内核SYNCookie模块
即:#echo “1” > /proc/sys/net/ipv4/tcp_syncookies
3、内核取消ping回应值
# echo “1” > /proc/sys/net/ipv4/icmp_echo_ignore_broadcaste
4、内核针对不同的网路接口有不同参数设置
/proc/sys/net/ipv4/conf/网络接口(eth0、eth1)/


防火墙的备份与还原
工具:i[tables-save 备份 和iptables-restore 还原
防火墙的默认规则存储在/etc/sysconfig/iptables 中,iptables-save将规则保存至该文件中,计算机重启后会加载该文件。
iptables-restore 将备份文件直接导当前防火墙规则。
]# iptables-save > /etc/sysconfig/iptables
]# iptables-save > firewall.bak
]# iptables-restore < firewall.bak


案例:作为路由器上的防火墙规则建立的脚本 iptables.rule 、iptables.deny 、iptables.allow(未完,待续!!)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值