日常运维 2

 

firewalld和netfilter

 

getenforce命令获取当前SELinux的状态。Enforcing(开启)/Permissive(关闭)

selinux 临时关闭 使用命令setenforce 0

永久关闭需要更改配置文件/etc/selinux/config ,将SELINUX后面的enforcing改为disabled ,重启系统后方可生效。

 

在之前的centos6防火墙叫netfilter ,而在centos7中叫firewalld 都是使用工具iptables

systemctl disable firewalld 禁止firewalld 开机启动

systemctl stop firewalld 是关闭该服务 因为centos7默认是firewalld

 

netfilter

下载iptables

yum install -y iptables-services 下载命令

安装完后开启服务

systemctl enable iptables

systemctl start iptables

 

iptables -nvL 查看默认规则

 

netfilter5表5链介绍

 

1. netfilter的5个表

在centos6中只有4个表,没有security 常用的是前两个

 

1 · filter

这个表主要用于过滤包的,是系统预设的表,这个表也是阿铭用的最多的。内建三个链INPUT、OUTPUT以及FORWARD。INPUT作用于进入本机的包;OUTPUT作用于本机送出的包;FORWARD作用于那些跟本机无关的包

 

2. nat

主要用处是网络地址转换,也有三个链。PREROUTING 链的作用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前改变其源地址。

 

3 · mangle

此表用于专门的包更改。直到内核2.4.17有两个内置的链:预发布(用于在崩溃前改变传入的包?ing)和输出(在路由之前改变本地生成的数据包)。自内核2.4.18,也支持其他三种内置链:输入(用于包?ets己进入这个盒子本身),向前(用于改变被路由的数据包通过盒子)和postr郊游(为了改变它们即将要去的数据包出)。

 

4 · raw

此表主要用于对连接跟踪的豁免权进行配置 与NOTRACK目标相结合。它在netfilter钩子上注册具有更高的优先级,因此在ipconntrack或任何其他IP之前调用表格。它提供以内置的链:预发布(用于包通过任何网络接口到达)输出(对于由本地专业人员生成的数据包流程)

 

5 · security

此表用于强制访问控制(MAC)网络规则,例如 由SECMARK和CONNSECMARK实现的目标。强制访问控制 是由诸如SELinux这样的Linux安全模块实现的。安全表在过滤表之后调用,允许任意的访问控制 (DAC)规则在过滤表中,在MAC规则之前生效。这个表提供以下内置的链:输入(用于进入盒内的信息包它本身),输出(在路由之前改变本地生成的数据包), 转发(用于更改通过该框路由的数据包)。

 

规则链:

1.INPUT——进来的数据包应用此规则链中的策略

2.OUTPUT——外出的数据包应用此规则链中的策略

3.FORWARD——转发数据包时应用此规则链中的策略

4.PREROUTING——对数据包作路由选择前应用此链中的规则

(记住!所有的数据包进来的时侯都先由这个链处理)

5.POSTROUTING——对数据包作路由选择后应用此链中的规则

(所有的数据包出来的时侯都先由这个链处理)

iptables传输数据包的过程

① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。

② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。

③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

 

 

iptables语法

 

iptables -nvL 查看默认规则 默认针对的是filter表

默认规则保存在 cat /etc/sysconfig/iptables 配置文件中

 

iptables -F 清空规则

 

重启后 systemctl restart iptables 回复默认规则

/etc/sysconfig/iptables该文件保存着默认规则 ,如果想把当前的规则保存到配置文件里面,需要执行 service iptables save

 

iptables -Z 可以把计数器清零 (写脚本用)

pkts 表示多少包 bytes 表示多少字节

iptables -t nat -nvL 查看nat表的规则

 

 

添加一条规则,默认filter表

iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP

-A/-D :增加删除一条规则;

-I :插入一条规则,其实跟-A的效果一样;

-p :指定协议,可以是tcp,udp或者icmp;

--dport :跟-p一起使用,指定目标端口;

--sport :跟-p一起使用,指定源端口;

-s :指定源IP(可以是一个ip段);

-d :指定目的IP(可以是一个ip段);

-i :指定网卡(不常用,但有时候能用到);

-j :后跟动作,其中ACCEPT表示允许包,DROP表示丢掉包,REJECT表示拒绝包;

 

 

插入一条规则

 

-I 选项表示插入一条规则,插入到最前面最先执行 效果与A一样

iptables -I INPUT -p tcp --dport 80 -j DROP 简写规则插入到最前面

-D 删除一条规则

iptables -D INPUT -p tcp --dport 80 -j DRO 删除规则

 

 

iptables -nvL --line-number 查看规则编号

iptables -D INPUT 6 按编号删除

 

-P 修改链的默认策略

iptables -P OUTPUT DROP/ACCEPT 没有需要不要随便改动

 

 

iptables filter表脚本小案例

 

需求把80 端口、22与21端口放行,其中22端口需要指定IP段(只有该IP段的IP,访问时才能访问到。其他段的IP 一概拒绝)。以上操作需要脚本来实现

vi /usr/local/sbin/iptables //编写一下内容

#!/bin/bash

ipt="/usr/sbin/iptables"

$ipt -F

$ipt -P INPUT DROP

$ipt -P OUTPUT ACCEPT

$ipt -P FORWARD ACCEPT

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

$ipt -A INPUT -s 192.168.217.0/24 -p tcp --dport 22 -j ACCEPT

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

解释说明:

ipt 定义了变量更加方便简洁(写脚本时,应当使用绝对路径)

$ipt -F // 清空之前的规则 默认对象是filter表

$ipt -P INPUT DROP // 定义默认策略 INPUT全部禁止

$ipt -P OUTPUT ACCEPT // OUTPUT 和 FORWARD全部允许

$ipt -P FORWARD ACCEPT

$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //指定状态 ,针对这些状态放行 目的是为了更顺利的让80,22,21端口的数据包连接

$ipt -A INPUT -s 192.168.217.0/24 -p tcp --dport 22 -j ACCEPT

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT

$ipt -A INPUT -p tcp --dport 21 -j ACCEP // 192.168.217.0/24网段的22端口80和21端口三种情况全部放行

sh /usr/local/sbin/iptables.sh 执行脚本看是否生效

 

 

icmp示例

 

让你能ping通外网,但不能ping通本机

iptables -I INPUT -p icmp --icmp-type 8 -j DROP

Windows无法ping通本机了 但本机仍可以ping通外网

iptables -D INPUT -p icmp --icmp-type 8 -j DROP 删除这条规则

 

 

 

iptables nat表应用

需求:有A机器与B机器,其中A机器有2块网卡,一个外网网卡ens33(192.168.217.129)和一个内网网卡ens37(192.168.100.1),而B机器只有一块内网网卡ens37(192.168.100.100) ,和A机器ens37可以通信互联

最终想要的结果是B机器连接外网

 

A机器关机后添加一块网卡 下一步默认确定

 

点击网络适配器2 选择LAN区段添加一个123LAN区段

完成后选择LAN区段123

N区段就相当于将外网网卡连到了一个内网的交换机上,Windows机器是连不上的,A机器与B机器连接到同一内网交换机上,就可以A与B机器通信。(需要添加区段)

 

 

B台机器关机后也添加一块网卡步骤同上 然后在选择之前创建的123LAN区段确定(取消网络适配器1的已连接状态)

 

 

A机器重启会多出一块后给ens37网卡 然后设置IP (临时修改,重启后失效)

永久添加IP需要修改配置文件

ifconfig ens37 192.168.100.1/24

 

B机器重启会多出一块后给ens37网卡 然后设置IP (临时修改,重启后失效)

ifconfig ens37 192.168.100.100/24

 

然后用A机器ping一下B机器的ip看能否ping通 (如果没ping通看一下A机器的ip是否生效如果失效需要重新设置一下)

ping 192.168.100.100

B机器也能ping通A机器

 

在A机器上打开路由转发 (cat /proc/sys/net/ipv4/ip_forward 查看是否开启 ,0表示未开启 ,1表示开启

echo "1" > /proc/sys/net/ipv4/ip_forward

 

iptables -t nat -A POSTROUTING -s 192.168.100.1/24 -o ens33 -j MASQUERADE

写一条nat规则让192.168.100.1/24 网关能上外网

 

B机器上设置网关为192.168.100.1

先用route -n 查看网关Gateway

然后 route add default gw 192.168.100.1 来设置网关

ping 192.168.217.129 A机器的另一个网卡能ping通就表示能上网了

 

 

vi 打开/etc/resolv.conf

添加 : nameserver 119.29.29.29

 

ping 119.29.29.29 试一下dns能否ping通

ping www.qq.com 然后你的B机器就ping通外网了

 

 

 

nat端口映射

需求: C机器只能和A通信,让C机器可以直接连通B机器的22端口

把A机器的192.168.217.129的1122端口映射到192.168.100.100的22端口

 

在A机器上执行

在A机器上打开路由转发 (cat /proc/sys/net/ipv4/ip_forward 查看是否开启 ,0表示未开启 ,1表示开启

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -t nat -D POSTROUTING -s 192.168.100.1/24 -o ens33 -j MASQUERADE

删除之前的nat规则

 

iptables -t nat -A PREROUTING -d 192.168.217.129 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

把进去的包做个端口转发 把192.168.217.129的1122端口转发到192.168.100.100的22端口

iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.217.129

把回来的包做个sant操作

 

给B机器做个网关

 

然后打开远程连接工具

新建会话 192.168.217.129 端口1122 即可登录192.168.100.100

 

 

 

 

iptables规则备份和恢复

service iptables save 会把规则保存到/etc/sysconfig/iptables里面

重启服务会自动加载/etc/sysconfig/iptables 文件里的规则

iptables-save > /tmp/123.txt 备份到另一个文件里

 

iptables-restore < /tmp/123.txt 恢复备份的规则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值