2018.8.25笔记

安全增强型Linux(security-Enhanced Linux)简称selinux,它是一个Linux内核模块,也是Linux的一个安全子系统。SELinux主要由美国国家安全局开发。2.6及以上版本的Linux内核已经集成了SELinux模块。SELinux的结构及配置十分复杂,而且有大量概念性的东西,要学精难度较大。很多Linux系统管理眼嫌麻烦都把SELinux关闭。

关闭selinux
执行完 ls -l 的权限之后,发现在9为权限的后面,还有个点。这个点的意思是受控于SELlinux,关闭SELinux之后,创建的文件就不会出现这个点。

1.查看 SElinux 的状态
[root@localhost ~]# getenforce
Enforcing    //开启状态

2.修改为宽松状态。立即生效,重启失效。
修改为宽松状态,setenforce 0。宽松状态也是开启状态,也会有那个点。
改回开启状态 setenforce 1。
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive

3.关闭selinux,重启生效。
vim /etc/selinux/config
把 SELINUX=enforcing  改为  SELINUX=disabled
[root@localhost ~]# init 6
[root@localhost ~]# getenforce
Disabled

Linux防火墙-netfilter

netfilter的5个表
 filter表用于过滤包,最常用的表,有INPUT、FORWARD、OUTPUT三个链
 nat表用于网络地址转换,有PREROUTING、OUTPUT、POSTROUTING三个链
 managle表用于给数据包做标记,几乎用不到
 raw表可以实现不追踪某些数据包,阿铭从来不用

filter表应用
不指定iptables表的类型,默认使用filter表,用来做访问控制的防火墙。

例如:
只允许192.168.1.0/24这个网段来访问22端口,开发 80 和 21 端口。

# vim iptables.sh
#! /bin/bash
ips="/usr/sbin/iptables"    #定义变量
$ips -F    #清空规则
$ips -P INPUT DROP    #修改默认策略
$ips -P OUTPUT ACCEPT
$ips -P FORWARD ACCEPT
$ips -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT    #额外的连接,和保持连接的请求允许连接
$ips -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT    #这个网段的22端口允许连接
$ips -A INPUT -p tcp --dport 80 -j ACCEPT    #开放 80 和 22 端口
$ips -A INPUT -p tcp --dport 21 -j ACCEPT

例2:
如果不接受ping的请求,别的机器就会ping不通的需求如何实现。
# iptables -I INPUT -p icmp --icmp-type 8 -j DROP

icmp 就是 ping 的类型。禁止之后就会ping不通。

firewalld、iptables和netfilter之间的关系

在centos6上,我们用的是iptables服务,而在centos7上,我们用的是firewalld服务。 同样的,centos6上安装的是iptables包,而centos7上安装的是firewalld包。

不管是centos6还是centos7,核心其实都是netfilter,netfilter是linux的一个内核模块,iptables命令是linux内核自带的。 centos6上的iptables服务和centos7上的firewalld服务,其实都是用来定义防火墙规则功能的防火墙管理工具。 它们都是将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙功能, 所以其实在配置规则的思路上是完全一致的

iptables

CentOS7默认使用的时Firewalld工具,学些iptables前需要将Firewalld关闭并设置开机不启动。

[root@yuzaoqian ~]# systemctl disable firewalld #先禁止firewalld开机自启动 Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@yuzaoqian ~]# systemctl stop firewalld #再关闭firewalld服务。

 

CentOS7默认是没有安装iptables服务的。需要安装iptables服务才能使用iptables。

[root@yuzaoqian ~]# yum install -y iptables-services

 

设置开机自启动iptables服务,并启动iptables服务

[root@yuzaoqian  ~]# systemctl enable iptables && systemctl start iptables Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.

 

查看iptables服务是否正常开启。

[root@yuzaoqian ~]# systemctl status iptables
鈼[0m iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
   Active: active (exited) since Tue 2018-08-28 09:14:52 CST; 10s ago
  Process: 15776 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
 Main PID: 15776 (code=exited, status=0/SUCCESS)

Aug 28 09:14:52 yuzaoqian systemd[1]: Starting IPv4 firewall with iptables...
Aug 28 09:14:52 yuzaoqian iptables.init[15776]: iptables: Applying firewall rules: [  OK  ]
Aug 28 09:14:52 yuzaoqian systemd[1]: Started IPv4 firewall with iptables.

netfilter5表5链介绍

1.filter表——三个链:INPUT、FORWARD、OUTPUT 作用:过滤数据包 内核模块:iptables_filter. 2.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT 作用:用于网络地址转换(IP、端口) 内核模块:iptable_nat 3.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD 作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS 内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它) 4.Raw表——两个链:OUTPUT、PREROUTING 作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw 5.Security表——三个链:INPUT、OUTPUT和FORWARD 作用:Security表在centos6中并没有,用于强制访问控制(MAC)的网络规则 内核模块:iptable_security

 

netfilter的5个链

PREROUTING:数据包进入路由表之前 INPUT:通过路由表后目的地为本机 FORWARD:通过路由表后,目的地不为本机

OUTPUT:由本机产生,向外发出 POSTROUTING:发送到网卡接口之前

数据包的传输过程:

iptables语法

iptables一般语法格式:

iptables的命令格式较为复杂,一般的格式如下: iptables [-t table] 命令 [chain] [rules] [-j target] 格式说明: table————指定表名,iptables内置包括filter表、nat表、mangle、raw表和security表。 命令—————对链的操作命令 chain————链名 rules————匹配规则 target————动作如何进行

 

操作命令选项说明

命令 说明 -P或–policy <链名>:定义默认策略 -L或–list <链名>:查看iptables规则列表 -A或—append <链名>:在规则列表的最后增加1条规则 -I或–insert <链名>:在指定的位置插入1条规则 -D或–delete <链名>:从规则列表中删除1条规则 -R或–replace <链名>:替换规则列表中的某条规则 -F或–flush <链名>:删除表中所有规则 -Z或–zero <链名>:将表中数据包计数器和流量计数器归零

 

规则选项说明

-i或–in-interface <网络接口名>:指定数据包从哪个网络接口进入,如ppp0、eth0和eth1等 -o或–out-interface <网络接口名>:指定数据包从哪块网络接口输出,如ppp0、eth0和eth1等 -p或—proto协议类型 < 协议类型>:指定数据包匹配的协议,如TCP、UDP和ICMP等 -s或–source <源地址或子网>:指定数据包匹配的源地址 –sport <源端口号>:指定数据包匹配的源端口号,可以使用“起始端口号:结束端口号”的格式指定一个范围的端口 -d或–destination <目标地址或子网>:指定数据包匹配的目标地址 –dport <目标端口号>:指定数据包匹配的目标端口号,可以使用“起始端口号:结束端口号”的格式指定一个范围的端口

 

动作选项说明

ACCEPT:接受数据包 DROP:丢弃数据包 REDIRECT:与DROP基本一样,区别在于它除了阻塞包之外, 还向发送者返回错误信息。 SNAT:源地址转换,即改变数据包的源地址 DNAT:目标地址转换,即改变数据包的目的地址 MASQUERADE: IP伪装,即是常说的NAT技术, MASQUERADE只能用于ADSL等拨号上网的IP伪装,也就是主机的IP是由ISP分配动态的; 如果主机的IP地址是静态固定的,就要使用SNAT LOG日志功能,将符合规则的数据包的相关信息记录在日志中,以便管理员的分析和排错

iptables常用操作示例:

查看iptables规则:

命令:iptables -nvL 选项说明: n:数字输出。IP地址和端口会以数字的形式打印 v:详细输出。这个选项让list命令显示接口地址、规则选项等信息 L -list:显示所选链的所有规则。如果没有选择链,则会显示所有链的所有规则

[root@yuzaoqian ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   29  3146 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 27 packets, 12788 bytes)
 pkts bytes target     prot opt in     out     source               destination 

清空iptables规则:

命令:iptables -F 选项说明: F:清空iptables的规则。

[root@yuzaoqian ~]# iptables -F
[root@yuzaoqian ~]# iptables -nvL
Chain INPUT (policy ACCEPT 5 packets, 316 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 5 packets, 1062 bytes)
 pkts bytes target     prot opt in     out     source               destination 

注:这里清空的只是当前iptables中设置的规则,不会清空以及保存的规则。 重启iptables服务即可恢复保存过的规则。 [root@yuzaoqian ~]# systemctl restart iptables #重启iptables服务

保存iptables规则:

命令:service iptables save 说明:执行这条命令会把当前iptables的所有规则保存到/etc/sysconfig/iptables文件中。

[root@yuzaoqian ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]
[root@yuzaoqian ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Tue Aug 28 09:20:39 2018
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8:1268]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Tue Aug 28 09:20:39 2018

以上这些就是iptables最初的规则了。

数据包计数器清零

命令:iptables -Z 选项说明: Z选项可以清空所有规则相关的数据包数量

[root@yuzaoqian ~]# iptables -Z
[root@yuzaoqian ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    4   264 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 3 packets, 292 bytes)
 pkts bytes target     prot opt in     out     source               destination  

转载于:https://my.oschina.net/u/3856250/blog/1934970

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值