selinux 防火墙

getenforce		查看防火墙状态
setenforce 0 	临时关闭   (0关闭 1开启)

#状态
enforcing:强制模式,代表 SELinux 运作中,且已经正确的开始限制 domain/type 了;
permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;
disabled:关闭,SELinux 并没有实际运作。

关闭SELinux的方法:
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
如果不想重启系统,使用命令setenforce 0

注:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux

firewalld 、netfilter

firewalld  、netfilter  这两个 统称 iptables

注: centos7 之前使用的是netfilter  centos7之后使用的firewalld

centos7上默认使用的firewalld  netfilter是默认没有开启的
如何在centos7上使用netfilter
例:
systemctl disable firewalld     	关闭开机启动firewalld服务
systemctl stop firewalld			关闭firewalld服务
yum -y install iptables-services	安装iptables 安装后会产生一个服务
systemctl enable iptables			设置iptables服务开启自启动
systemctl start iptables 			启动iptables服务 (即开启了netfilter)
iptables -nvL						可以查看iptables的默认规则

(可理解为firewalld 和 netfilter 名字是防火墙,iptables只是一个工具)

netfilter常用的两个表

filter表用于过滤包,最常用的表,有INPUT、FORWARD、OUTPUT三个链
nat表用于网络地址转换,有PREROUTING、OUTPUT、POSTROUTING三个链

防火墙-netfilter

iptables -nvL 			    查看规则 如图所示
cat /etc/sysconfig/iptables 查看这个文件可看到默认规则保存的信息  如图二所示

image.png

image.png

iptables -F   清空所有规则 
使用iptables -nvL 查看默认规则不会再有,当时查看/etc/sysconfig/iptables文件
文件中保存的规则还是存在
service iptables restart  重启服务之后 还是会把它加载出来
service iptables save     保存规则至/etc/sysconfig/iptables文件中
(iptables防火墙规则以/etc/sysconfig/iptables文件中保存的为准,重启之后就会加载该文件信息)

iptables -t nat     	  -t指定nat表
iptables -Z  (大写的Z)    清零计数器

image.png

iptables -A INPUT -s 192.168.44.128 -p tcp --sport 123 -d 192.168.44.131 --dport 80 -j DROP
指定规则 不加-t指定 默认是filter表 
-A 增加一个规则  (放到后面去)   或者使用-I 表示插入 -D 删除
INPUT 表示针对的是 INPUT 链
-s 指定来源ip -p指定协议(这里是tcp协议)(tcp、udp……)
--sport  来源ip的端口 123
-d 指定目标ip --dport 目标ip的端口 80
-j 指定DEOP  或者 REJECT

iptables -nvL  查看  如图所示

image.png

快捷方便删除iptables规则的方法

iptables -nvL --line-numbers     列出所有规则的序号  如图所示
iptables -D INPUT 1              使用数字进行删除
iptables -P OUTPUT ACCEPT 		 大写的-P指定 OUTPUT表为 ACCEPT

image.png

 icmp示例
 iptables -I INPUT -p icmp --icmp-type 8 -j DROP 
使用这条命令可以让别人无法ping通自己这个ip地址(禁ping)



需求:放行80、21、22端口 且22端口指定一个IP段都能访问别的ip无法访问。
以shell脚本形式完成


#!/bin/bash
a="/usr/sbin/iptables"       	定义变量                             
$a -F							清空亏则
$a -P INPUT DROP				禁掉 INPUT 表
$a -P OUTPUT ACCEPT 			指定OUTPUT FORWARD表为ACCEPT
$a -P FORWARD ACCEPT
$a -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  使用-m指定 state(状态)指定 --state RELATED,ESTABLISHED 为ACCEPT状态
$a -A INPUT -s 192.168.44.0/24 -p tcp --dport 22 -j ACCEPT  -s放行这个ip段 访问22端口
$a -A INPUT -p tcp --dport 80 -j ACCEPT						放行80、21端口	
$a -A INPUT -p tcp --dport 21 -j ACCEPT

执行脚本如图所示

image.png

iptables 规则备份和恢复

iptables-save > beifen.txt       
表示将/etc/sysconfig/iptables 文件中的iptables规则导入到 beifen.txt
iptables-restore < beifen.txt   使用restore  恢复