11 日常运维2

10.12 firewalld和netfilter

1. 临时关闭selinux(防火墙) : setenforce 0

[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce

2. 永久关闭selinux(防火墙),编辑...config配置文件 :(好多服务,受限于selinux,关闭selinux也不会有太大的安全问题)

[root@localhost ~]# vi /etc/selinux/config #更改:SELINUX=disabled

3. 禁止开机启动firewalld服务(centos7默认防火墙) ,firewalld(关闭centos7默认防火墙):
(firewalld默认是centos7的防火墙,可以关闭掉这个,用centos6上的防火墙
netfilter

[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

4. 关掉(停止)firewalld服务(centos7默认防火墙) :

[root@localhost ~]# systemctl stop firewalld

5. 安装netfilter服务(centos6或centos5默认防火墙) :netfilter(开启centos6默认防火墙) 注意:(iptablesnetfiltel防火墙的工具

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

6. 启用iptables服务 :

[root@localhost ~]# systemctl enable iptables

7. 开启iptables服务 :

[root@localhost ~]# systemctl start iptables

8. 查看iptables默认规则 :

[root@localhost ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   22  1636 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 17 packets, 1632 bytes)
 pkts bytes target     prot opt in     out     source               destination

 

10.13 netfilter5表5链介绍

Linux防火墙-netfilter:netfilter的5个表
• filter表用于过滤包,最常用的表,有INPUT、FORWARD、OUTPUT三个链
• 
nat
表用于网络地址转换,有PREROUTING、OUTPUT、POSTROUTING三个链
• 
managle表用于给数据包做标记,几乎用不到
• 
raw表可以实现不追踪某些数据包,阿铭从来不用
• 
security表在Centos6中并没有,用于强制访问控制(MAC)的网络规则,阿铭老师没用过

参考文章 http://www.cnblogs.com/metoy/p/4320813.html

数据包流向与netfilter的5个链:其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。
PREROUTING:数据包进入路由表之前
INPUT
:通过路由表后目的地为本机
FORWARD:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外发出
POSTROUTING:发送到网卡接口之前

10.14 iptables语

iptables命令的管理控制选项

-P 设置指定链的默认策略(policy) #默认不写入,优先级最低???
-F 清空(flush)临时清空
-X 删除指定表中用户自定义的规则链(delete-chain)
-N 新建(new-chain)一条用户自己定义的规则链
-E 重命名用户定义的链,不改变链本身
-Z 将所有表的所有链的字节和数据包计数器清零
-A 在指定链的末尾添加(append)一条新的规则
-I 在指定链中插入(insert)一条新的规则,默认在第一行添加

-R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除

-L 列出(list)指定链中所有的规则进行查看
-n 使用数字形式(numeric)显示输出结果
-v 查看规则表详细信息(verbose)的信息
-V 查看版本(version)
-h 获取帮助(help)

-p               指定协议为tcp  
-s               指定来源ip
--sport        指定来源端口
-d               指定目标ip
--dport        指定目标端口
-i                 指定网卡
-t nat          指定  nat表 ;不加-t :       默认指定filter
-j DROP     扔掉;

防火墙处理数据包的四种方式

ACCEPT 允许数据包通过
DROP 直接丢弃数据包,不给任何回应信息
REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则
REDIRECT 与DROP基本一样,区别在于它除了阻塞包之外
SNAT 源地址转换,即改变数据包的源地址
DNAT 目标地址转换,即改变数据包的目标地址

1. 查看iptables默认规则配置文件,查看iptables默认规则:

[root@localhost ~]# cat /etc/sysconfig/iptables
[root@localhost ~]# iptables -nvL #查看iptables默认规则
[root@localhost ~]# iptables -nvL --line-number
num   pkts bytes target     prot opt in     out     source               destination         
1     1161  101K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0        state RELATED,ESTABLISHED ...

[root@localhost ~]# iptables -t nat -nvL #查看指定表
[root@localhost ~]# iptables -t filter -nvL #查看指定表
 

2. 保存iptables规则(当前规则,保存到配置文件):

[root@localhost ~]# service iptables save

3. 清空iptables规则:

[root@localhost ~]# iptables -F #临时清空
[root@localhost ~]# service iptables save #执行一下为完全清空

4. 重启iptables规则

[root@localhost ~]# service iptables restart

8. 把表的计数器清零:(因为每时每刻都是在通信,数据清零一会又会有数据)

[root@localhost ~]# iptables -Z ; iptables -nvL

9. 增加规则增加最后面-A 增加一条规则,添加在最后;-I 插入一条规则,添加在最前;(排在最前的规则,优先过滤前面的,再过滤下面的规则)

iptables -A(增加一条规则) INPUT(链) -s 来源ip -p tcp(协议)  --sport 来源端口 -d 目标ip --dport 目标端口 -j DROP(扔掉)

[root@localhost ~]# iptables -A INPUT -s 192.168.223.1 -p tcp --sport 1234 -d 192.168.223.128 --dport 80 -j DROP

10. 删掉规则

iptables -D(删除一条规则) INPUT(链) -s 来源ip -p tcp(协议) --sport 来源端口 -d 目标ip --dport 目标端口 -j DROP(扔掉)

[root@localhost ~]# iptables -D INPUT -s 192.168.223.1 -p tcp --sport 1234 -d 192.168.223.128 --dport 80 -j DROP

11. 插入规则添加最前面

iptables -I(插入一条规则) INPUT(链) -p tcp(协议) --dport 目标端口 -j DROP(扔掉)

[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j DROP;iptables -nvL

12. 插入规则添加最前面并指定网卡-i 指定网卡

iptables -I(插入一条规则) INPUT(链)  -s 来源IP/24 -i 网卡名称 -j ACCEPT(扔掉)

[root@localhost ~]# iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

13. 删掉 设定的规则(自己记得规则怎么写的,要不没法指定删除哦):

[root@localhost ~]# iptables -D INPUT -p tcp --dport 80 -j DROP

14. 打印出规则序列号编号:

[root@localhost ~]# iptables -nvL --line-number

15. 删除指定规则:iptables -D INPUT 规则序列号编号

[root@localhost ~]# iptables -D INPUT 2

•更改默认规则(不常用慎用):iptables -P OUTPUT DROP 
如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。

•恢复默认规则:iptables -P OUTPUT ACCEPT #默认规则优先级最低

10.15 iptables filter表小案例

iptables表小案例

需求:
对filter表开放22端口、80端口、 21端口;
INPUT链:DROP;

OUTPUT链和FORWARD链:ACCEPT;
22端口只针对192.168.136.0/24开通;
所有网段开发80端口、 21端口。

1. 创建iptables.sh脚本:

[root@localhost ~]# vim /usr/local/sbin/iptables.sh

脚本内容添加:

#! /bin/bash
ipt="/usr/sbin/iptables" #定义变量iptables
$ipt -F #清空规则,
(没有-t,默认是执行的filter)
$ipt -P INPUT DROP #进来数据默认策略
$ipt -P OUTPUT ACCEPT #出去数据默认策略
$ipt -P FORWARD ACCEPT #转发数据默认策略
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #允许所有已经建立的连接,表现为本机可以ping其他主机,但是其他主机无法ping本机
$ipt -A INPUT -s 192.168.223.0/24 -p tcp --dport 22 -j ACCEPT #增加规则(192.168.223网段访问22端口的数据包放行)
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT #
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

解释说明:

 

 

$ipt -A INPUT -s 192.168.223.0/24 -p tcp --dport 22 -j ACCEPT增加规则(192.168.223网段访问22端口的数据包放行)

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT增加规则(80端口数据包方行)

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT增加规则(21端口数据包放行)

2. 执行iptables.sh脚本:

[root@localhost ~]# sh /usr/local/sbin/iptables.sh

3. 查看iptables.sh规则:

[root@localhost ~]# iptables  -nvL

 

4. 恢复默认规则(重启了iptables服务,因为刚刚设定的规则没有保存到配置文件!)

[root@localhost ~]# service iptables restart

filter表小案例

1. 本机可以ping通外网别人ping不通本机(禁ping) :

[root@localhost ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP

2. 删除禁ping的规则:

[root@localhost ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP

 

猜你喜欢

转载自blog.csdn.net/xiaoyuerp/article/details/82049278