netfileter:防火墙内核态
ip tables:防火墙用户态(管理防火墙规则)

iptables的表和链
表包括不同的链,链包括大量的规则
4个表:
raw,mangle,nat,filter
5种链(一般在nat表里用):
INPUT(入站数据),OUTPUT(出站数据),FORWARD(转发数据),
PREROUTING(路由选择前),POSTROUTING(路由选择后)

iptables基本用法:
iptables -t 表名 -选项 链名 条件匹配 -j 操作类型

常见选项:
-A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则
-L:列出所有的规则条目
-n:以数字形式显示地址,端口等信息
--line-numbers:查看规则时,显示规则的序号
-D:删除链内指定序号(或内容)的一条规则
-F:清空所有的规则
-P:为指定的链设置默认规则

条件匹配类型:
通用匹配:独立使用
-p:指定协议
-s:源地址
-d:目标地址
-i:入站网卡
-o:出站网卡
隐含匹配:依赖于某种通用匹配
--sport:源端口
--dport:目标端口
--icmp-type:
--tcp-flags:
扩展匹配:-m 模块名

扩展条件的方法
前提条件:有对应的防火墙模块支持
基本用法:
-m 扩展模块 --扩展条件 条件值
示例:-m mac --mac-source 00:0C:29:74:BE:21

简化服务开启规则
一条规则开放多个端口
比如web,ftp,mail,ssh等
[root@hydra]# iptables -A INPUT -p tcp -m multiport --dports 20:22,25,80,110,143,16501:16800 -j ACCEPT
根据ip范围封锁主机:
ssh登陆的ip范围控制
允许192.168.1.10-192.168.4.20登陆
静止从192.168.4.0/24网段其他主机登陆
[root@hydra]# iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.4.10-192.168.4.20 -j ACCEPT
[root@hydra]# iptables -A INPUT -p tcp --dport 22 -s 192.168.4.0/24 -j DROP

——————————————————————————————————————————————————————————
nat表典型应用
SNAT源地址转换(Source Network Address Translation)
修改数据包的源地址
仅用于nat表的POSTROUTING链

DNAT目标地址转换(Destination Network Address Translation)
修改数据包目标地址(ip,端口)
仅用于nat表的PREROUTING,OUTPUT链

配置SNAT共享上网
配置的关键策略:
选择出去的包,针对来自局域网,
即将从外网接口发出去的包,将源ip地址修改为网关的公网ip地址
[root@gw1 ~]# iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j SNAT --to-source 174.16.16.1
(192.168.4.0/24局域网网段地址,eth1外网接口,174.16.16.1外网接口的ip地址)

地址伪装策略
共享动态公网ip地址实现上网:
主要针对外网接口ip地址不固定的情况,
将SNAT改为MASQUERADE即可
对于ADSL宽带拨号连接,网络接口可写为ppp+
iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j MASQUERADE

——————————————————————————————————————————————————————
案例准备:
gw1:192.168.4.1 174.16.16.1
svr:192.168.4.2
pc174.16.16.120
在svr上准备dns服务,web服务,网页内容hydra 提供解析记录:www.Anonymous.cn ——》174.16.16.1
从pc上能够访问以下地址:
http://174.16.16.1
http://www.Anonymous.cn

[root@svr ~]# vim /var/named/Anonymous.cn.zone
@ NS svr.Anonymous.cn.
svr A 192.168.4.2
www A 174.16.16.1

[root@svr ~]# vim /etc/named.conf
zone "Anonymous.cn" IN {
type master;
file "Anonymous.cn.zone";
};
[root@svr ~]# vim /var/www/html/test.html
hydra!

内网web主机能够访问internet,比如SNAT
linux网关服务器开启ip路由转发,将web域名解析为网关的外网ip地址
[root@gw1 ~]# iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j SNAT --to-source 174.16.16.1(nat地址转换)
[root@gw1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1(开启路由转发)

发布web,dns服务器
配置的关键策略:
在路由选择之前,针对从外网接口收到的
访问本机公网地址tcp 80端口的数据包
将其目标地址修改位于内网的web主机的ip地址
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.4.2(允许公网访问)
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p udp --dport 53 -j DNAT --to-destination 192.168.4.2(发布dns服务地址)

发布ssh服务器
执行ssh -p 2345 174.16.16.1时,实际登陆192.168.4.2
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 2345 -j DNAT --to-destination 192.168.4.2:22
ps:sshd访问响应慢的问题,sshd会尝试解析客户机的fqdn,设置了一个不可用的dsn
ssh会gss验证方式
修改客户端的/etc/ssh/ssh_config文件,禁用gss认证
GSSAPIAuthentication no(改为no)

发布ftp服务器
注意事项:加载模块nf_nat_ftp,nf_conntrack_ftp
[root@gw1 ~]# modprobe -a nf_nat_ftp nf_conntrack_ftp
[root@gw1 ~]# iptables -t nat -A PREROUTING -i eth1 -d 174.16.16.1 -p tcp --dport 20:21 -j DNAT --to-destination 192.168.4.2

iptables导出/导入规则
使用iptables-save导出
[root@gw1~]# ipables-save > /root/myiptables.txt(把防火墙规则导入到自定义的文件夹)
使用iptables-restore导入
[root@gw1~]# iptables-restore < /root/myiptables.txt
开机后自动加载亿保存的规则
[root@gw1~]# iptables-save > /etc/sysconfig/iptables
[root@gw1~]# chkconfig iptables on

————————————————————————————————————————————————————————————————————

防火墙脚本
shell脚本的编写:
vim建立代码文件
使用变量
可执行语句的编写【免交互】
添加x权限

针对linux网关编写脚本,提供SNAT共享上网策略
提供DNAT发布web,ftp服务的策略,编写网络型,主机型防护规则。

批量设置防火墙规则
编写脚本文件——》开机时调用/etc/rc.local
防火墙规则的脚本化:
定义基本变量
必要时,内核模块和运行参数调整
防火墙策略设计:
各链的默认规则
按表,链组织的具体规则
运行环境处理
变量及模块整理,
方便脚本的维护,重用,移植
必要的功能模块预备
#!/bin/bash
INET_IF=eth1
INET_IP=174.16.16.1
LAN_NET=192.168.4.0/24
LAN_WWW_IP=192.168.4.2
IPT=/sbin/iptables
... ...
/sbin/modprobe -a nf_nat_ftp nf_conntrack_ftp
... ...

主机型防火墙脚本
以filer表的INPUT链为主OUTPUT链次之
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
... ...
$IPT -P INPUT -p tcp --dport 8 -j ACCEPT
$IPT -P INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
... ...

网络型防火墙脚本
以filter表的FORWRD链为主,网关上会用到nat表
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP
$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $LAN_WWW_IP
$IPT -A FORWARD -d $LAN_NET -i $INET_IF -m state --state ESTABLISHED,RELATED -j ACCEPT

—————————————————————————————————————————————————————————

linux iptables扩展,脚本防火墙的更多相关文章

  1. 实用防火墙(Iptables)脚本分析

    实用防火墙(Iptables)脚本分析 --Redhat,CentOS,Ubuntu等常见Linux发行版中都会预装Iptables防火墙,大多数初学者设置起来由于对这款软件比较陌生,设置起来比较困难 ...

  2. CentOS Linux iptables 防火墙

    快速安装,配置,启动,检查 - 关闭 5002 - 5011 端口开放所有其它 yum install iptables iptables -F iptables -X iptables -Z ipt ...

  3. 在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件。

    原因:在新安装的Linux系统中,防火墙默认是被禁掉的,一般也没有配置过任何防火墙的策略,所有不存在/etc/sysconfig/iptables文件. 解决办法: .随便写一条iptables命令配 ...

  4. linux iptables常用命令之配置生产环境iptables及优化

    在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...

  5. Linux iptables用法与NAT

    1.相关概念 2.iptables相关用法 3.NAT(DNAT与SNAT) 相关概念 防火墙除了软件及硬件的分类,也可对数据封包的取得方式来分类,可分为代理服务器(Proxy)及封包过滤机制(IP ...

  6. Linux shell编写脚本部署pxe网络装机

    Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机  https://www.cnblogs.com/yuzly/p/10582254.html 脚本实 ...

  7. iptables (一) 主机防火墙和网络防火墙

    Firewall : 防火墙,隔离工具:工作于主机或网络的边缘,对于进出本主机或网络的报文根据事先定义好的检测规则作匹配,对于能够被规则所匹配到的报文做出相应处理的组件:有主机防火墙和网络防火墙 Ip ...

  8. Linux iptables

    一.简介 http://liaoph.com/iptables/ 二.操作 1)查看规则 iptables -t filter -L -n iptables -t nat -L -n iptables ...

  9. LINUX系统怎么关闭防火墙?

    所谓防火墙指的是一个由软件和硬件设备组合而成.在内部网和外部网之间.专用网与公共网之间的界面上构造的保护屏障.是一种获取安全性方法的形象说法,它是一种计算机硬件和软件的结合,使Internet与Int ...

随机推荐

  1. nginx配置中root与alias的区别

    nginx指定文件路径有两种方式root和alias,这两者的用法区别,使用方法总结了下,方便大家在应用过程中,快速响应.root与alias主要区别在于nginx如何解释location后面的uri ...

  2. 【转】命令行浏览器 curl 命令详解,Linux中访问url地址

    CURL --- 命令行浏览器 这东西现在已经是苹果机上内置的命令行工具之一了,可见其魅力之一斑 1)二话不说,先从这里开始吧! curl http://www.yahoo.com 回车之后,www. ...

  3. Sql Server的艺术(三) SQL聚合函数的应用

    SQL提供的聚合函数有求和,最大值,最小值,平均值,计数函数等. 聚合函数及其功能: 函数名称 函数功能 SUM() 返回选取结果集中所有值的总和 MAX() 返回选取结果集中所有值的最大值 MIN( ...

  4. math对象与数组对象

    1.math对象 属性 //PI    圆周率 方法 //random    随机数 var num= Math.random();    生成0到1的随机数//round 四舍五入var num2 ...

  5. pwd 的“P”选项

    1.目录是链接目录时,pwd -P  显示出实际路径,而非使用连接(link)路径:pwd显示的是连接路径 例: [root@localhost soft]# cd /etc/init.d [root ...

  6. nongsanli

    之后的内容只能追加,不可以修改,删除. 1.    mysql可以对字段进行MD5加密, 加密插入:INSERT INTO t_user(id,username,PASSWORD) VALUES('5 ...

  7. 将本地目录上传值git仓库

    创建git仓库 以github为例,登录账号建立一个仓库,然后将仓库地址copy下来. 本地目录 初始化 $ git init 添加至版本库 $ git add -A 提交 $ git commit ...

  8. c#监测电脑状态

    public class DeviceMonitor { static readonly PerformanceCounter cpuCounter = new PerformanceCounter( ...

  9. Hibernate之HelloWorld

    1. 步骤 0. 导入相关Jar包. 1. 编写Hibernate的持久化文件 (默认为hibernate.cfg.xml). 2. 编写持久化类. 3. 创建对象 - 关系文件(.htm.xml文件 ...

  10. sublime插件AndyJS2安装教程

    1.下载AndyJS2包,已整理上传,下载AndyJS2.rar,附上网址.(https://github.com/jiaoxueyan/AndyJS2) 2.点击首选项(preference)=&g ...