linux日常管理(三)--iptables概念、语法

10.11 Linux网络相关
10.12 firewalld和netfilter
10.13 netfilter5表5链介绍
10.14 iptables语法
扩展(selinux了解即可)
1.selinux教程 http://os.51cto.com/art/201209/355490.htm
2.selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK
3.netfilter参考文章 http://www.cnblogs.com/metoy/p/4320813.html

网络相关

ifconfig是比较老的工具了,用来查看网卡ip。它在net-tools包中:yum install net-toolsifconfig只显示当前工作的网卡,选项-a可以显示所有的,包括关掉的网卡。

ifup ens33ifdown ens33 这俩命令很好理解,分别是开启ens33网卡和关闭网卡。主要用在更改指定网卡后单独重启网卡。注意down后不要把自己坑了:如果只有着一个能连接的网卡请小心操作。

设定虚拟网卡的思路是拷贝一个ens33:1配置文件,然后修改避免与原网卡配置冲突,最后重启网卡即可。设定虚拟网卡在keeplived会用到。

mii-tool ens33 查看网卡是否物理连接,如果反馈“link ok”表示连接正常。也可以用另外一个工具:ethtool ens33,反馈“link detected:ok”表示连接正常。

更改主机名:hostnamectl set-hostname xxx,xxx是新的主机名。这个命令在centos6上不支持,主要是centos7开始使用systemd工具。两个系统都可以手动修改etc/hostname来更改主机名。

DNS是用来解析网址为ip的服务,具体概念不难,可以搜索关键字了解相关知识。在这里说以下自己关于网址、ip服务的理解:操作系统本地有host文件(和hostname无关,这是两个概念)、DNS文件,当我们要访问一个网址,操作系统首先在hosts文件中查找是否有对应网址ip的匹配,如果没有就去DNS文件中找。DNS文件里有本地记录的,也有网络服务商提供的服务器(远程记录),操作系统本地查找无果就去服务器中找。以上就是DNS的优先级。

linux上DNS配置文件是/etc/resolv.conf。这个文件是有netmanagerment生成的。我们直接在etc/sysconfig/network-scripts/ifcfg-ens33修改。上面说/etc/hosts文件只在当下有用,系统重启后hosts文件会重置。

防火墙

linux里有丰富的安全配制。selinux是红帽强大的安全机制,但是大多数公司都会关掉这个功能。因为其配置比较复杂,对后续服务影响较多,工作量较大。selinux临时关闭命令:setenforce 0。selinux永久关闭:vi /etc/selinux/config然后修改selinux一行。getenforce可以查看selinux运行状态。

关于防火墙,centos7之前使用netfilter防火墙,centos7开始使用firewalld防火墙。两个工具机制不一样,但是内部的使用的iptables都一样。现在centos6使用率还是挺多的。所以下面先介绍netfilter。

在centos7,首先要关闭firewalld,然后开启netfilter:

systemctl stop firewalld #关掉firewalld
systemctl disable firewalled #关闭firewalld开机启动
yum install -y iptables-services #安装iptables-services,这样就可以使用之前版本的iptables了
systemctl enable iptables #设置开机启动
systemctl start iptables #启动服务

netfilter五个表

netfilter有5个表,实现防火墙规则配置。则五个表常用的是filter、nat两个表:

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

配置防火墙的工作就是添加、修改和删除一些网络包处理规则。这些规则存储在上面五个表中,分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。

linux日常管理(三)--iptables概念、语法_第1张图片
数据包流向图

数据包流向与netfilter的5个链:

  • PREROUTING:数据包进入路由表之前
  • INPUT:通过路由表后目的地为本机
  • FORWARD:通过路由表后,目的地不为本机
  • OUTPUT:由本机产生,向外发出
  • POSTROUTING:发送到网卡接口之前

链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。

规则链之间的优先顺序:
第一种情况:入站数据流向
从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包 的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通 过等),通过以后再交给系统上层的应用程序(比如Apache服务器)进行响应。

第二冲情况:转发数据流向
来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网 关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地 址等)进行处理。

第三种情况:出站数据流向
防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,然后传递给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

规则表之间的优先顺序:Raw——mangle——nat——filter

iptables操作

语法格式:iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]

说明:表名、链名用于指定 iptables命令所操作的表和链,命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;条件匹配用于指定对符合什么样条件的数据包进行处理;目标动作或跳转用于指定数据包的处理方式,比如允许通过、拒绝、丢弃、跳转给其它链处理。

iptables命令选项:

-A  在指定链的末尾添加(append)一条新的规则
-D  删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I  在指定链中插入(insert)一条新的规则,默认在第一行添加
-R  修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L  列出(list)指定链中所有的规则进行查看
-E  重命名用户定义的链,不改变链本身
-F  清空(flush)
-N  新建(new-chain)一条用户自己定义的规则链
-X  删除指定表中用户自定义的规则链(delete-chain)
-P  设置指定链的默认策略(policy)
-Z  将所有表的所有链的字节和数据包计数器清零
-n  使用数字形式(numeric)显示输出结果
-v  查看规则表详细信息(verbose)的信息
-V  查看版本(version)
-h  获取帮助(help)

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

ACCEPT 允许数据包通过
DROP   直接丢弃数据包,不给任何回应信息
REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
LOG    在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

以下是iptables语法简图:


linux日常管理(三)--iptables概念、语法_第2张图片
iptables语法图

下面是范围匹配可选项:


linux日常管理(三)--iptables概念、语法_第3张图片
iptables范围匹配图

以下是一些比较有代表性的iptables语句,可以参照上面语法熟悉以下:

iptables -nvL #查看iptables规则
iptables -F #清空规则
service iptables save #保存规则
iptables -t nat #-t指定表
iptables -Z  #可以把计数器清零
iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 
iptables -I/-A/-D INPUT -s 1.1.1.1 -j DROP
iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
iptables -nvL --line-numbers #查看iptables规则,并在前面标号
iptables -D INPUT 1 #删除标号为1的规则
iptables -P INPUT DROP #input链默认规则执行drop动作

你可能感兴趣的:(linux日常管理(三)--iptables概念、语法)