linux 中iptables的基础和常规配置

iptables的结构:iptables -> Tables -> Chains -> Rules. 简单地讲,tables由chains组成,而chains又由rules组成。如下图所示。

一、iptables的表与链  用我的话说是[45]

1. Filter

Filter表示iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:

·       INPUT – 处理来自外部的数据。

·       OUTPUT – 处理向外发送的数据。

·       FORWARD – 将数据转发到本机的其他网卡设备上。

2. NAT

NAT表有三种内建链:

·       PREROUTING – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ipaddress),通常用于DNAT(destination NAT)。

·       POSTROUTING – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ipaddress),通常用于SNAT(source NAT)。

·       OUTPUT – 处理本机产生的数据包。

3. Mangle

Mangle表用于指定如何处理数据包。它能改变TCP头中的QoS位。Mangle表具有5个内建链:

·       PREROUTING

·       OUTPUT

·       FORWARD

·       INPUT

·       POSTROUTING

4. Raw

Raw表用于处理异常,它具有2个内建链:

·       PREROUTING chain

·       OUTPUT chain

二、IPTABLES 规则(Rules)

·       Rules包括一个条件和一个目标(target)

·       如果满足条件,就执行目标(target)中的规则或者特定值。

·       如果不满足条件,就判断下一条Rules。

目标值(Target Values

下面是你可以在target里指定的特殊值:

·       ACCEPT – 允许防火墙接收数据包

·       DROP – 防火墙丢弃包

·       LOG - /var/log/messages 文件中记录日志信息,然后传递给下一条规则。防火墙规定的匹配即停止的原则对LOG来说是一个例外。LOG是一种辅助动作,没有真正出来数据包。

·       REJECT – 防火墙拒绝数据包通过。并且给数据发送端一个回应的信息

三 、编写防火墙规则

基本语法、控制类型

iptables [-t 表名]  可以省略,默认是filter表 [管理选项](-I、-A、-D、-L)[链名](INPUT、OUTPUT、FORWARD)[匹配条件] [-j 控制类型]

一定要区分大小写

例子:在filter表的INPUT链中插入规则,拒绝发给本机的使用ICMP协议的数据包

iptables -t filter -I INPUT -p icmp -j REJECT

管理选项 -A 在指定的链的末尾追加一条新的规则 -I 在指定的链中插入一条规则。

例子:

在filter表的INPUT链的末尾追加一条防火墙规则

iptables -t filter -A INPUT -p tcp -j ACCEPT

-I

在filter表中插入第1条和第2条规则

iptables -I INPUT -p udp -j ACCEPT

iptabels -I INPUT 2 -p icmp -j ACCPET

查看规则列表

iptables -L INPUT --line-numbers

插入一条策略

iptables -I INPUT 3 -p tcp--dport 22 -j ACCEPT

注释:所有使用TCP协议并且目标端口是22的流量全部允许通过的顺序为3的策略

删除一条策略

iptables -D INPUT 3

删除所有策略(临时生效)

iptables -F 清除预设表filter链中的所有规则

iptables -X 清除预设表filter使用者自定义的规则

iptables -n -F INPUT 查看删除后的效果

iptables -t nat -F

iptables -t mangle -F

开机后自启动防火墙的设定  命令行输入

#ntsysv

[[email protected] ~]# ntsysv

在gui中选上iptables后。确认

设置chain(链)的策略  -P

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT DROP

3.屏蔽指定ip

有时候我们发现某个ip不停的往服务器发包,这时我们可以使用以下命令,将指定ip发来的包丢弃:

BLOCK_THIS_IP="x.x.x.x"iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

以上命令设置将由x.x.x.x ip发往eth0网口的tcp包丢弃。

4.配置服务项

利用iptables,我们可以对日常用到的服务项进行安全管理,比如设定只能通过指定网段、由指定网口通过SSH连接本机:

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLESHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

若要支持由本机通过SSH连接其他机器,由于在本机端口建立连接,因而还需要设置以下规则:

iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state ESTABLESHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

类似的,对于HTTP/HTTPS(80/443)、pop3(110)、rsync(873)、MySQL(3306)等基于tcp连接的服务,也可以参照上述命令配置。

对于基于udp的dns服务,使用以下命令开启端口服务:

iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT

iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

5.网口转发配置

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

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

6.端口转发配置

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

iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22

以上命令将422端口的包转发到22端口,因而通过422端口也可进行SSH连接,当然对于422端口,我们也需要像以上“4.配置服务项”一节一样,配置其支持连接建立的规则。

7.DoS攻击防范

利用扩展模块limit,我们还可以配置iptables规则,实现DoS攻击防范:

iptables -A INPUT -p -tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

--litmit25/minute 指示每分钟限制最大连接数为25

--litmit-burst100 指示当总连接数超过100时,启动 litmit/minute 限制

8.配置web流量均衡

我们可以将一台服务器作为前端服务器,利用iptables进行流量分发,配置方法如下:

iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:80iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.102:80iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.103:80

以上配置规则用到nth扩展模块,将80端口的流量均衡到三台服务器。

9.将丢弃包情况记入日志

使用LOG目标和syslog服务,我们可以记录某协议某端口下的收发包情况。拿记录丢包情况举例,可以通过以下方式实现。

首先自定义一个chain:

iptables -N LOGGING

其次将所有接收包导入LOGGING chain中:

iptables -A INPUT -j LOGGING

然后设置日志前缀、日志级别:

iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

最后将包倒向DROP,将包丢弃:

iptables -A LOGGING -j DROP

另可以配置syslog.conf文件,指定iptables的日志输出。

禁止访问21端口(ftp)和80端口(web)
iptables -A -i eth1 -p tcp --dprot 21 -j DROP

iptables之实现SNAT

1.开启路由转发功能

#echo 1 >/proc/sys/net/ipv4/ip_forward 
#sysctl -a | grep "ip_forward" 
显示“net.ipv4.ip_forward=1”即可表示成功开启,该方法只是临时有效,重启就会失效 
永久生效方式,则需要将“net.ipv4.ip_forwaed=1”写入/etc/sysctl.conf中,“sysctl -p”生效

2.配置iptables的SNAT规则
①外网使用的是静态的ip

iptables -t  nat -A  POSTROUTING -s192.168.1.0/24 -o eth0  -j  SNAT --to-source 202.100.1.1 
语法: 
iptables -t nat -A POSTROUTING -s source_ip  -o  interface_output -jSNAT --to-source ip[-ip]:[port-port]

②如果是动态获取ip+ADSL拨号则使用

iptables -t  nat -A POSTROUTING -s 192.168.1.0/24 -oppp0  -j MASQUERADE

※www-server

yum  install -y  httpd 
echo "jeffery.com‘s home page" > /var/www/html/index.html 
service httpd start 
setenforce 0  ##关闭selinux 
iptables -F    ## 做测试,防火墙可关闭

※w2003只需要配置好ip地址和gw即可

测试:

iptables之实现DNAT

iptables -t  nat -A  PREROUTING -d 202.100.1.1 -p tcp --dport 80 -jDNAT --to-destination 192.168.1.1
在DNAT中可以再发布时修改目标端口。为了提高安全
iptables -t  nat -A  PREROUTING -d 202.100.1.1 -p tcp --dport 8080 -jDNAT --to-destination 192.168.1.1:80

时间: 2024-10-24 05:15:27

linux 中iptables的基础和常规配置的相关文章

linux中iptables详解

linux中iptables详解 一.通用基础知识 1.基本概念 什么是防火墙? 所谓防火墙指的是工作于主机或网络的边缘,对于进出的报文根据事先定义的规则作检查,将那些能够被规则所匹配到的报文作出相应处理的组件. 防火墙是由软件和硬件设备组合而成.在内部网和外部网之间.专用网与公共网之间的界面上构造的保护屏障,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入. 防火墙主要由服务访问规则.验证工具.包过滤和应用网关4个

LINUX中IPTABLES防火墙使用

对于有公网IP的生产环境VPS,仅仅开放需要的端口,即采用ACL来控制IP和端口(Access Control List). 这里可以使用Linux防火墙netfilter的用户态工具 iptables有4种表:raw-->mangle(修改报文原数据)-->nat(定义地址转换)-->filter(定义允许或者不允许的规则) 每个表可以配置多个链: 对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT 对于nat来讲一般也只能做在3个链上:PREROU

Linux中iptables设置详细(转)

无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵... 以下内容是为了防止这种情况发生而写的,当然很初级,不过一般服务器也够用了: 1.首先介绍一下指令和相关配置文件启动指令:service iptables start   重启指令:service iptables restart   关闭指令:service iptables stop     然后是相关配置:/etc/sysconfig/iptables  

Linux中iptables设置详细

自己的示例: -A INPUT -s 192.168.28.68 -p tcp --dport 1000 -j ACCEPT 对内网中的172.168.xx.xx 开放1000这个端口 无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵... 一下内容是为了防止这种情况发生而写的,当然很初级,不过一般服务器也够用了: 1.首先介绍一下指令和相关配置文件 启动指令:service iptables start 重启指令

Linux中iptables基础命令

防火墙(Firewalld)是一种隔离工具,防范与非授权的访问,使主机更安全.它主要工作与网络或主机的边缘,对于进出本网络或主机的通信报文根据事先定义好的规则进行匹配检测:对于能够被规则所匹配到的报文做出相应的处理. 防火墙的分类: 主机防火墙:工作范围是单个主机 网络防火墙:工作范围是整个网络:网络防火墙中还可以包含主机防火墙 防火墙的实现方式: 硬件防火墙:NetScreen.CheckPoint 软件防火墙:iptables 本文所介绍的iptables就是Linux的软防火前的实现. i

运维基础--Linux中bash的基础特性

bash 的基础特性如下: 一.命令的别名--alias 命令 用来定义和显示命令的别名,unalias撤销定义的别名:但是要注意以下几点: 1.alias的效果仅限于当前shell的生命期: 2.如果修改.bashrc配置文件,其中保存的别名不会立即生效,只有在重新加载该文件的内容后,才会生效且永久生效: 3.为了能够保证设置的别名有效,通常两种操作都要做: 二.命令历史 shell进程会其会话中保存此前用户提交执行过的命令,history是shell的内置命令   1.命令语法格式: his

linux中Iptables限制同一IP连接数防CC/DDOS攻击方法

1.限制与80端口连接的IP最大连接数为10,可自定义修改.  代码如下 复制代码 iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP 2.使用recent模块限制同IP时间内新请求连接数,recent更多功能请参考:Iptables模块recent应用.  代码如下 复制代码 iptables -A INPUT -p tcp --dport 80 --syn -m recent --name

linux中sudo的用法和sudoers配置详解

摘自:http://zxf261.blog.51cto.com/701797/748756 sudo 是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等.这样不仅减少了root用户的登陆和管理时间,同样也提高了安全性.Sudo不是对shell的一个代替,它是面向每个命令的.它的特性主要有这样几点:1.sudo能够限制用户只在某台主机上运行某些命令.2.sudo提供了丰富的日志,详细地记录了每个用户干了

Linux中iptables的用法

1 iptables iptables命令用于创建数据过滤与NAT规则,在iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一个链. 1.1 iptables的控制类型 ACCEPT:允许通过 LOG:记录日志信息,然后传给下一条规则继续匹配. REJECT:拒绝通过,必要时给出提示. DROP:直接丢弃,不给出任何回应. 1.2 规则链 规则链依据处理数据包的位置不同而进行分类 PREROUTING:在进行路由选择前处理数据包. INPUT:处理入站的数据包. OUT