先来一句:好记性不如烂笔头!

1、iptables简介

iptables是基于包过滤的防火墙,它主要工作在osi模型的2,,4层,也可以工作在7层(iptables + squid)

2、原理

防火墙是一层一层过滤的。按照配置的规则的顺序从上到下,从前到后。
如果匹配上规则既明确表明是阻止还是通过,此时数据包就不再向下匹配新规则了。
如果所有规则都没有匹配上,就会一直向下匹配,直到匹配上默认规则得到明确的阻止还是通过

注释:规则表的先后顺序:raw→mangle→nat→filter

3、表和链

iptables有4张表filter nat mangle raw ,常用的是filter表和nat表

表(tables

链(chains

INPUT

OUTPUT

FORWARD

PREROUTING

POSTROUTING

Filter*

Nat*

Mangle

注:filter三个链,真正的防火墙功能;Nat三个链表 input和后边两个 负责数据包改写、端口映射

INPUT: 对进入主机的数据包进行过滤。
OUTPUT: 对流出的数据包进行过滤。
FORWARD: 对流经的数据包进行过滤。转发数据包的功能。
PREROUTING: 在数据包到达防火墙时,进行路由判断之前执行的规则。改变数据包的目的地址和端口等,映射端口或者是ip。
POSTROUTING: 在数据包离开防火墙时,进行路由判断之前的规则。改变数据包的源地址和源端口。局域网共享上网。

规则链的先后顺序

入站顺序:PREROUTING→INPUT
出站顺序:OUTPUT→POSTROUTING
转发顺序:PREROUTING→FORWARD→POSTROUTING

4、iptables的安装

Centos7开始已经没有iptables了,默认使用的是Firewalld

  4.1、关闭firewalld

systemctl status firewalld.service #检测是否开启了firewall
systemctl stop firewalld.service #关闭firewall
sytsemctl disable firewalld.service #禁止firewall开机自启

  4.2、安装iptables

yum install iptables-services -y
systemctl start iptables.service
systemctl enable iptables.service service iptables save #所有新加的规则要先保存后再重启,要不会丢配置

iptables-save

5、常用命令

   5.1、清空已有的规则

iptables -F  清除用户自定义的规则
iptables -X 清除用户自定义的链
iptables -Z 清除链的计数器

  5.2、查看所有的规则

iptables -nL

  5.3、查看版本

iptables -V

5.4 基本操作

CentOS 配置防火墙操作实例(启、停、开、闭端口):
查询防火墙状态    :   service   iptables status
停止防火墙   :    service   iptables stop
启动防火墙   :   service   iptables start
重启防火墙   :    service   iptables restart
永久关闭防火墙    :   chkconfig   iptables off
永久关闭后启用    :   chkconfig   iptables on

6、filter配置示例

  6.1、删除指定规则

[root@redis3 ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num target prot opt source destination
DROP tcp -- 0.0.0.0/ 0.0.0.0/ tcp dpt: [root@redis3 ~]# iptables -D INPUT

注释:最好选ACCEPT和DROP 因为拒绝会给客户信息   -t filter 一般不添加,默认就是filter

  6.1、开放一个端口

iptables -A INPUT -p tcp -m tcp --dport  -j ACCEPT

  6.2、允许某个IP或段链接本机

iptables -A INPUT -s 10.100.0.158/ -p tcp -j ACCEPT
iptables -A INPUT -s 10.100.0.158/32 -p all -j ACCEPT(内网适合)

  6.3、允许某个IP连接某个端口

iptables -A INPUT -s 10.88.89.11/ -p tcp -m tcp --dport  -j ACCEPT

  6.4、插入一个规则

iptables -I INPUT  -p tcp --dport  -j DROP    # 在序号1后插入一条规则

  6.5、匹配端口范围

iptables -I INPUT -p tcp -m multiport --dport ,, -j ACCEPT
iptables -I INPUT -p tcp --dport : -j DROP

  6.6、取反

除网络是192.168.0./24的网络外 都允许访问。
[root@test ~]# iptables -t filter -I INPUT ! -s 192.168.0.0/ -j ACCEPT
只要主机不是10.0.0.1的都允许访问80端口
[root@test ~]# iptables -A INPUT ! -s 10.0.0.1 -p tcp --dport -j ACCEPT iptables -t filter -A INPUT -i etho ! -s 10.0.0.200 -j DROP

  6.7、匹配网络状态(不是必须的)

-m state --state

NEW: 已经或将启动的新连接

ESTBILISHED: 已建立的连接

RELATED: 正在启动的新连接

INVALID: 非法或无法识别的连接

# 允许关联的包(一般的包不需要,ftp比较特殊)

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  6.8、允许ICMP类型协议通过

iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT

ipttables -A INPUT -p icmp -s 10.0.0./24 -m icmp --icmp-type any -j ACCEPT

  6.9、封外部IP

iptables -I INPUT -S 10.0.0.200 -j DROP

iptables -I INPUT -p tcp -s 10.0.0.200 --dport -j DROP (细化拒绝) 

  6.10、一个防DDOS工具脚本(来自于老男孩)

#!/bin/bash
# name wangfei
# qq
# mail wangfei1000@yeah.net
# version 2.1 function CelIp(){
CleTime=""
NowTime=`date +%H%M`
YDenyIpFile="/tmp/deny_ip_`date +%F -d "-1days"`.log"
if [ "$CleTime" == "$NowTime" ] ;then
if [ -f "$YDenyIpFile" ];then
while read line
do
iptables -D INPUT -s $line -j DROP
done<$YDenyIpFile
mv $YDenyIpFile $YDenyIpFile.bak
sleep
fi
fi
} function DenyIp(){
IpList=($(awk -F "[ :/]+" '{ip[$3]=ip[$3]+1}END{for(k in ip) print k,ip[k]}' access.log_06|awk '$2>30{print $1}'))
for ip in ${IpList[@]}
do
if [ `iptables -nL|grep $ip|wc -l` -lt ];then
echo $ip>>/tmp/deny_ip_$(date +%F).log
iptables -I INPUT -s $ip -j DROP && echo "deny $ip success."
fi
done
} while :
do
CelIp
DenyIp
sleep
done

7、net配置示例

一定要在安装防火墙模块后重启iptables后再配置

modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state

1、代理服务器设置

# 需要开启linux内核转发
[root@test ~]# sed -i 's@net.ipv4.ip_forward =.*@net.ipv4.ip_forward =1@g' /etc/sysctl.conf
[root@test ~]# sysctl -p
[root@test ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/ -o eth1 -j SNAT --to-source 10.0.0.55 #要代理的网段 指定外网IP地址
如果是映射到多个ip上,可这样
iptables -t nat -I POSTROUTING -s 172.16.1.0/ -j SNAT --to-source 10.0.0.99-10.0.0.155 # 适用于外网ip不固定的情况(ADSL)
[root@test ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/ -j MASQUERADE
多外网IP地址或没有固定的外网IP地址的时候可以自动选择合适的外网网卡使用
注意:
不仅需要nat设置,还需要将iptables的Forward设置为 ACCEPT

2、客户端

内网客户端需要将网关指向代理服务器的内网IP 

1、映射端口或IP

注意:
1、 代理端需要打开系统内核转发。
2、 客户端的内网网关需要指向代理服务器的内网IP。
3、 客户端如果是测试环境需要关闭外网网卡。
iptables -t nat -A PREROUTING -d 10.0.0.5 -p tcp --dport  -j DNAT --to-destination 172.16.1.52:

实现外部10.0.0. 对映射到172.16.1.5上,如下操作即可。
iptables -t nat -A PREROUTING -d 10.0.0.99 -j DNAT --to-destination 172.16.1.5
iptables -t nat -A POSTROUTING -s 172.16.1.5 -j SNAT --to-source 10.0.0.99

写的很好的博客: https://blog.csdn.net/chengxuyuanyonghu/article/details/64441374

           https://www.cnblogs.com/alwu007/p/6693822.html

iptables简单规则记录的更多相关文章

  1. [转] Linux下防火墙iptables用法规则详及其防火墙配置

    from: http://www.cnblogs.com/yi-meng/p/3213925.html 备注: 排版还不错,建议看以上的链接. iptables规则 规则--顾名思义就是规矩和原则,和 ...

  2. Iptables防火墙规则使用梳理

    iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能 ...

  3. Iptables防火墙规则使用

    iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能 ...

  4. Linux iptables:规则组成

    <Linux iptables:规则原理和基础>介绍了iptables的四表五链,简单说就是不同的网络层数据包会经过哪几个挂载点,在每个挂载点可以在哪张表进行规则定义. 本篇沿着这个思路, ...

  5. Linux iptables:规则原理和基础

    什么是iptables? iptables是Linux下功能强大的应用层防火墙工具,但了解其规则原理和基础后,配置起来也非常简单. 什么是Netfilter? 说到iptables必然提到Netfil ...

  6. Linux下防火墙iptables用法规则详及其防火墙配置

    转:http://www.linuxidc.com/Linux/2012-08/67952.htm iptables规则 规则--顾名思义就是规矩和原则,和现实生活中的事情是一样的,国有国法,家有家规 ...

  7. iptables中规则的关系——以只允许某些IP段访问为例

    最近遇到一个问题:服务器被全球的IP频繁试图通过ssh登录. 于是想到通过iptables防火墙限制访问,达到:仅允许指定ip段访问ssh服务(22端口). 关于iptables添加规则的文章有很多, ...

  8. iptables简单配置

    iptables简单配置 分类: Linux 安全2010-10-20 16:56 4241人阅读 评论(0) 收藏 举报 input防火墙tcpfilterubuntuservice # iptab ...

  9. iptables常用规则:屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链

    iptables常用规则:屏蔽IP地址.禁用ping.协议设置.NAT与转发.负载平衡.自定义链 时间 -- :: IT社区推荐资讯 原文 http://itindex.net/detail/4772 ...

随机推荐

  1. Android源码博客目录

    每次都找不到,干脆每个部分都开个目录,方便找 0. 杂项 一些Android的博客,没事翻翻 1. 构建相关 linux和Android的Makefile和android.mk android 目录下 ...

  2. c# 键值对照表

    虚拟键值表 虚拟键 十六进制值 十进制值 相应键盘或鼠标键 VK_LBUTTON 1 1 鼠标左键 VK_RBUTTON 2 2 鼠标右键 VK_CANCEL 3 3 Ctrl-Break键 VK_M ...

  3. Ionic国际化解决方案

    1.     核心内容 使用Angular2的国际化(i18n)库:ngx-translate 官网地址:http://www.ngx-translate.com/ GitHub地址:https:// ...

  4. include,forward和param指令

  5. MySQL 批量删除相同前缀的表

    sql 命令批量生成drop命令 需要批量删除表,而MySQL又没有提供相关的功能:一般我们建表也都会使用相同前缀,那么,在不使用工具的情况下可以选择使用sql生成批量删除命令: 如删除以 " ...

  6. Recommend ways to overwrite hashCode() in java

    Perface In the former chapter, I talk about topics about hashCode, And I will continue to finish the ...

  7. vue.js 项目打包

    vuejs是个前端框架,npm run dev的目的在于前端开发的时候可以实时调试.所以npm run dev 只是开发时期会用到,在生产环境中我们应该使用nginx,apahce tomcat等应用 ...

  8. hexo的next主题个性化教程:打造炫酷网站

    看到有些next主题的网站很炫酷,那么是怎么配置的呢?接下来我会讲一讲如何实现一些炫酷的效果 主要有以下32种: 在右上角或者左上角实现fork me on github 添加RSS 添加动态背景 实 ...

  9. CSS 的介绍

    第一章 的介绍 1.CSS:“层叠样式表”,它是cascading style sheets的缩写,作用就是给HTML标签加表现形式(样式-显示),如:字体,图片,列表,位置等. 在浏览器中可以看到部 ...

  10. c#如何禁用win7的任务管理器

    以前制作的桌面锁屏软件虽然也禁用过任务管理器,但是采取的是比较笨的方法,而且对操作系统还有一定的危害.因为任务管理也是一个窗体也就是说它中也是一个独立进程,所以只需要强制性关闭这个进程即可以关闭任务管 ...