iptables firewall selinux
centos 6中常用iptables
iptables用于过滤数据包,属于网络层防火墙,设置iptables后需要重启iptables,会破坏数据链接,可能需要重新启动程序。配置文件/etc/sysconfig/iptables
service iptables [ stop | start | status | restart ]
chkconfig iptables off | on #开机不自启和自启
iptables -L #查看防火墙设置
iptables -A INPUT -p tcp --dport ssh -j #允许ssh端口传入数据
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #开放端口
iptables -A INPUT -p tcp --dport 22 -j DROP #关闭端口
iptables -A INPUT -p udp --dport 30001:30004 -j ACCEPT #添加多个端口
iptables -A INPUT -s 192.168.12.12 -j #禁止某个IP地址访问
iptables -D INPUT 3 #删除第3条规则
iptables -vnL #查看禁用的IP
iptables -F #清除所有添加的防火墙规则
service iptables save #将iptables规则写入文件保存/etc/sysconfig/iptables
-p 设置默认策略
-F 清空策略链
-L 查看规则链
-A 在规则链的末尾加入新的规则
-I 在规则链的头加入新的规则
-D 删除某一条规则链
-s 匹配来源地址IP/MASK,加!表示除这个之外
-d 匹配目标地址
-i 网卡名,匹配这块网卡流入的数据
-o 网卡名,匹配这块网卡流出的数据
-p 匹配协议,如tcp、udp、icmp
常用显示匹配:
多端口匹配:
-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
IP范围匹配:
-m iprange --src-range IP范围
MAC地址匹配:
-m mac -macl-source MAC地址
状态匹配:
-m state --state 连接状态
centos7中默认使用firewall,取代iptables
yum install iptables-services #安装iptables使用
vim /etc/sysconfig/iptables-config #iptables配置文件
systemctl restart iptables.service #重启
systemctl enable iptables.service #开机自启
[start | restart | stop | status | disable | enable] #开启,重启,停止,状态,关闭自启,开机自启
firewall可以允许哪些服务可用,端口可用,底层使用iptables进行数据过滤,建立在iptables之上,动态防火墙,修改配置不会破坏已有数据链接
yum install firewall
yum install firewall-config #图形界面安装
firewall-cmd command #命令模式
firewall-config #进入图形模式
firewall-cmd --state #查看状态
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动 [ start | restart | stop | status | disable | enable ]
firewall-cmd --reload #重新加载firewall配置
firewall-cmd --completely-reload #更新规则,重启服务
firewall-cmd --list-all
firewall-cmd --get-service #查看所支持的服务,服务之间以空格隔开
firewall-cmd --get-active-zones #查看已激活的zone信息
zone值指定:
drop 丢弃所有进入的包,不给出任何响应
block 拒绝所有外部发起的连接,允许内部发起连接
public 允许指定的进入连接
external 允许指定连接,对伪装的进入连接,一般由路由转发
dmz 允许受限制的进入连接
work 允许受信任的计算机被限制的进入连接
trusted 信任所有连接
firewall-cmd --zone=public --add-port=80/tcp --permanent #开启80端口 --permanent表示永久生效,不加表示临时有效
firewall-cmd --zone=public --remove-port=80/tcp --permanent #删除80端口
firewall-cmd --permanent --zone=public --add-port=100-500/tcp #添加多个端口
firewall-cmd --zone=public --add-service=https --permanent #开启https服务
firewall-cmd --zone=public --remove-service=https --permanent #关闭https
firewall-cmd --zone=public --list-ports #查看所有开启的端口
firewall-cmd --zone=public --list-services #查看所有开启的服务
firewall-cmd --zone-public --add-forward-port=port=22:proto=tcp:toport=80 #将tcp22端口转发至80
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.1 #将22端口数据转发到另一个ip相同的端口上
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=90:toaddr=192.168.1.2 #将22端口数据转至另一IP的90端口上
firewall-cmd --panic-on #开启应急模式阻断所有网络连接
firewall-cmd --panic-off #关闭应急模式
firewall-cmd --query-panic #查看应急模式的状态
# 针对某个 IP开放端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="6379" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.233" accept"
# 删除某个IP
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.51" accept"
# 针对一个ip段访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"
selinux对于强制访问控制的实现
配置文件/etc/selinux/config,另一个链接文件/etc/sysconfig/selinux
使用config文件配置selinux(状态永久修改,系统重启才生效)
SELINUX=enforcing #状态
enforcing启用 disabled关闭,直接在文件中修改
SELINUXTYPE=targeted #定义使用什么策略模块保护系统,默认政策,针对网络服务限制较多,仅针对本机限制较少
SELINUXTYPE=minimum #针对选择的程序来保护
SELINUXTYPE=mls #完整的SELinux限制,限制比较严格
常用命令
#sestatus #查询selinux工作状态
#selinuxenabled
#echo $? #检查selinux是否开启,返回值0为开启,1关闭
#getenforce #查看selinux状态
#setenforce 0 #设定运行状态0或1,enforce开启(1)permissive关闭(0)
ls -Z 查询文件或目录的安全上下文
例:system_u : object_r : public_content_t : s0
用户 角色 类型 级别
restorecon 将文件或目录安全上下文恢复到默认值
-v 打印过程
-R 递归操作
semanage fcontext -l | grep /var/ftp 查询ftp服务selinux默认目录的安全上下文
chcon 修改文件的安全上下文
-u 修改安全上下文件的用户字段
-r 修改安全上下文的角色字段
-t 修改安全上下文的类型字段
-l 修改安全上下文的级别字段
--reference 修改与指定文件或目录一致的安全上下文
-R 递归
-h 修改软连接安全上下文,不加则修改软连接对应文件
chcon -t public_context_t -R /document 临时修改
semanage fcontext –a –t 安全上下文 /目录"(/.*)?" 添加目录的默认安全上下文
restorecon 恢复selinux文件属性的安全上下文
-i 忽略不存在的文件
-e 排除目录
-F 强制恢复文件安全语境