开头:资料来源网上搜索,整理成自己的笔记形式

一.IPTABLES服务状态的检查:

命令:service iptables status

情形1:防火墙服务已安装,但还未运行

[root@woxplife ~]# service iptables status

iptables: Firewall is not running.

情形2:如图表示防火墙服务已安装且已开启,但还是未配置状态。

wKiom1de2bTxloGFAAAk7E8EJj0979.png

情形3:表示防火墙服务尚未安装

wKioL1de29XC8sruAAAPNpOynIA219.png

二.IPTABLES服务的安装与开启等维护方式:

  1. 安装:(此处以yum为例) yum install -y iptables

2.开启: service iptables start 与此相应的关闭: service iptables stop

三.IPTABLES的基础配置知识

I:常见的参数:

-A 附加在末尾

-I 插入指定位置

-d 目的地址

-D 删除某条规则 比如:iptables -D INPUT 8

-n 只显示IP地址和端口号,不将ip解析为域名

-R 替换某条规则 比如: iptables -R INPUT 1 -s 192.168.0.1 -j DROP 把第一条规则替换为 指定源IP:192.168.0.1 不允许登录

-i 指定网卡名称如eth0 #指定进入接口,要在INPUT链上定义

-o 指定网卡名称如eth0 #指定传出接口,要在OUTPUT链上定义

-m模块调用 模块选项加载iptables功能模块

-L 查看规则的配置信息 常与 --line-numbers 选项连用, 显示规则的序号信息

II.常见的操作:

  1. 清空所有规则: iptables -F

  2. 情况自定义的所有规则: iptables -X

  3. 屏蔽IP段:

形如:

#屏蔽整个段(A类地址)即从192.0.0.1到192.255.255.254,则添加以下规则。

-IINPUT-s192.0.0.0/8-jDROP

#封IP段(B类地址)即从192.168.0.1到192.168.255.254,则添加以下规则。

-IINPUT-s192.168.0.0/16-jDROP

#封IP段(C类地址)即从192.168.200.1到192.168.200.254,则添加以下规则。

-IINPUT-s192.168.200.0/24-jDROP

4.指定物理地址访问:-m mac --mac-source

形如iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT

5.匹配数据包的字段内容:-mstring --string "想要匹配的数据包中字串"

形如:

iptables -A FORWARD -p udp --dport 53 -m string --string "tencent"--algo kmp -j DROP

#通过UDP协议并匹配关键字

#--algo指定字符串模式匹配策略,支持KMP和BM两种字符串搜索算法,二者中任意指定一个即可。

6.网口转发配置

对于用作防火墙或网关的服务器,一个网口连接到公网,其他网口的包转发到该网口实现内网向公网通信,假设eth0连接内网,eth1连接公网,配置规则如下:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

7.端口转发配置

对于端口,我们也可以运用iptables完成转发配置:

iptables -t nat -A PREROUTING -p tcp -d 192.168.0.1 --dport 80 -j DNAT --to 192.168.1.1:8080

以上命令将源IP:192.168.0.1的80端口的包转发到192.168.1.1的8080端口

8.指定网卡同时配置连续端口规则:iptables -A INPUT -i eth0 -p tcp -s 192.168.140.0/24 --dport 137:139 -j ACCEPT #允许访问137到139端口 备注:多端口的配置另外一种方式:通过逗号分隔端口。如iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -j ACCEPT

四.规则保存:

1.service iptables save 或 iptables-save

另存为的方式: service iptables save > /指定目录

iptables-save > /指定目录

备注: 防火墙规则在没保存之前,重启后是不生效的

2.#添加到自启动chkconfig
chkconfigiptableson

3.还原规则的方式:

service iptables start 或 iptables-restore < /规则保存路径

备注:注意规则表的保存方式与还原方式是对应的,采用了什么方式的保存,就需要用什么方式进行还原。

五.进阶知识

  1. 规则表知识:

    五个规则表nat,mangle,filter,raw,security 通过-t选项指定,默认为 filter。规则表的功能介绍:

    nat :拥有 Prerouting 和 postrouting 两个规则链,主要功能为进行一对一、一对多、多对多等网址转译工作(SNATDNAT),由于转译工作的特性,需进行目的地网址转译的封包,就不需要进行来源网址转译,反之亦然,因此为了提升改写封包的速率,在防火墙运作时,每个封包只会经过这个规则表一次。如果我们把封包过滤的规则定义在这个数据表里,将会造成无法对同一包进行多次比对,因此这个规则表除了作网址转译外,请不要做其它用途。
    mangle:拥有 Prerouting、FORWARD 和 postrouting 三个规则链。
    除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定 MARK(将封包作记号,以进行后续的过滤),这时就必须将这些工作定义在 mangle 规则中,由于使用率不高,我们不打算在这里讨论 mangle 的用法。
    filter这个规则表是预设规则表,拥有 INPUT、FORWARD 和 OUTPUT 三个规则链,这个规则表顾名思义是用来进行封包过滤的处理动作(例如:DROP、 LOG、 ACCEPT 或 REJECT),我们会将基本规则都建立在此规则表中。

    nat:用于配置数据包,raw中的数据包不会被系统跟踪。

    security:用于强制访问控制网络规则。

2.规则链:

表由链组成,链是一些按顺序排列的规则的列表。

iptables一共有INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING五个规则链。对应的规则链可表述为:

INPUT:网络数据包流向服务器

OUTPUT:网络数据包从服务器流出

FORWARD:网络数据包经服务器路由

PREROUTING,(prerouting,pre-route,预路由,到达前)网络数据包到达服务器时可以被修改

POSTROUTING,(postrouting,post-route,流出前) 网络数据包在即将从服务器发出时可以被修改

3.规则表中的常用的处理动作:ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK:

ACCEPT: 将封包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链(natostrouting)。
REJECT: 拦阻该封包,并传送封包通知对方,可以传送的封包有几个选择:ICMP port-unreachable、ICMP echo-reply 或是tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接 中断过滤程序。简单示例如下:

iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset

DROP: 丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。

REDIRECT: 将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将 会继续比对其它规则。这个功能可以用来实作通透式porxy 或用来保护 web 服务器。例如:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

LOG: 将封包相关讯息纪录在 /var/log 中,详细信息可以查阅 /etc/syslog.conf 组态档,进行完此处理动作后,将会继续比对其规则。例如:
iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
SNAT: 改写封包来源 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将直接跳往下一个规则(mangleostrouting)。对于snat,不管是几个地址,必须明确的指定要snat的IP。假如我们的计算机使用ADSL拨号方式上网,那么外网IP是动态的,这时候我们可以考虑使用MASQUERADE 相应的范例如下:
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000

iptables -t nat-APOSTROUTING-s10.8.0.0/255.255.255.0-oeth0-jMASQUERADE

MASQUERADE:改写封包来源 IP 为防火墙 NIC IP,可以指定 port 对应的范围,进行完此处理动作后,直接跳往下一个规则(mangleostrouting)。这个功能与 SNAT 略有不同,当进行 IP 伪装时,不需指定要伪装成哪个 IP,IP 会从网卡直接读,当使用拨接连线时,IP 通常是由 ISP 公司的 DHCP 服务器指派的,这个时候 MASQUERADE 特别有用。范例如下:
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000

DNAT: 改写封包目的地 IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将会直接跳往下一个规炼(filter:input 或 filter:forward)。范例如下:
iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination
192.168.1.1-192.168.1.10:80-100
MIRROR: 镜射封包,也就是将来源 IP 与目的地 IP 对调后,将封包送回,进行完此处理动作后,将会中断过滤程序。
QUEUE: 中断过滤程序,将封包放入队列,交给其它程序处理。透过自行开发的处理程序,可以进行其它应用,例如:计算联机费.......等。
RETURN:结束在目前规则炼中的过滤程序,返回主规则炼继续过滤,如果把自订规则炼看成是一个子程序,那么这个动作,就相当提早结束子程序并返回到主程序中。
MARK:将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续比对其它规则。范例如下:

iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2

4.参考链接:

I:http://beginman.cn/python/2015/09/08/linux-firewall/ II:https://wiki.archlinux.org/index.PHP/Iptables_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

III:https://wiki.centos.org/zh/HowTos/Network/IPTables

centos 防火墙与其一些规则设置的更多相关文章

  1. ios – Xcode上传错误:无法打开ssh会话. (16)

    注意:我们终于上传了该应用程序,但是我们并没有真正解决这个问题,所以如果有人可以分享一些有关这个问题的宝贵意见或经验,我将不胜感激.我也检查了以下2个类似的问题,但这些没有帮助:>Erroruploadingiosapplicationtoitunesconnect“failedtoopensshsession(16)”>AppStoresubmission/distributionerror“f

  2. 与Swift 2中的防火墙指针

    我正在尝试检查用户是否具有互联网连接,部分过程涉及使用UnsafePointer调用。与Swift2.x中的防火墙指针一起使用的正确方法是什么?

  3. Swift游乐场和模拟器错误(ipc / mig)服务器死机,无法启动iOS模拟器

    您的防火墙阻止调试器,您需要允许它连接:TCP出127.0.0.1:63748或者允许调试服务器进程打开访问.一旦启用它,并重新启动Xcode,所有的应该像一个魅力一样工作.注意/更新:如果您无法找到或允许调试服务器,只需暂时尝试禁用防火墙并重新启动xcode.操场是否奏效?哦,不要忘了确保你的助理视图打开,输出框显示.

  4. android – Google Cloud Messaging无法在公司网络上使用4.1.2设备

    我已经实现了一个简单的GCM客户端和服务器.客户端使用currentGCMclientAPIs(而不是deprecatedhelperlibrary).服务器(C#和.NET)遵循相应的serverguidelines(使用HTTP).我的服务器在公司域内的计算机上运行,因此我将客户端设备连接到公司网络内的Wi-Fi接入点,但可以访问Internet.简而言之,我的问题是4.3手机上收到通知,但连

  5. android – 不再需要ActivityManager – 不是服务问题

    我正在开发一个开源应用程序(droidwallfork),我遇到的问题之一是当系统重新启动时iptables规则未正确应用.它适用于大多数Android版本.但是在某些特定的ROMS(CM10.1)上,它提供了以下logcat我的代码工作如下,你可以找到我的Api.java类here.解决方法12-2608:39:27.116I/ActivityManager(582):Nolongerwantd

  6. android – 谷歌GCM推送通知服务器的IP范围?

    想知道有没有人在这里碰巧知道google的gcm服务器的ip范围?

  7. android – SDK管理器未知主机dl-ssl.google.com

    我无法在SDK管理器中更新软件包,它显示下载中断:未知主机dl-ssl.google.com.我没有使用任何代理,我的Comodo防火墙也被关闭了.我还尝试使用管理员权限运行SDK.有谁知道如何解决这个问题?

  8. android – Eclipse:无法初始化Monitor Thread:无法建立回送连接

    我的EclipseIndigo安装在Win764位,安装了ADT插件和AndroidSDK.当我的模拟器打开并且我尝试启动我的测试应用程序时,会发生错误:我已经研究了这个错误,它通常看起来是一个防火墙问题,但防火墙已关闭,我仍然收到错误.与我安装另一个基于Eclipse的IDE有什么关系吗?到目前为止我已经尝试过的事情>关闭防火墙>将ddms端口更改为8601>checklocalhost设置为127.0.01我没有想法,所以任何建议的帮助将不胜感激.解决方法不需要禁用IPV6.只需强制Eclipse使用

  9. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  10. centos+php+coreseek+sphinx+mysql之一coreseek安装篇

    这篇文章主要介绍了centos+php+coreseek+sphinx+mysql之一coreseek安装篇的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部