A-A+

Linux的iptables介绍

2016年06月06日 Linux 暂无评论 阅读 3,483 views 次

iptables介绍: Linux系统下的应用层防火墙工具

iptables攻防实例:

并发请求(压力测试)命令:ab

yum install httpd-tools

#ab -n 1000000 -c 40 http://127.0.0.1/index.php

查看当前多少个访问在监听

netstat -an|grep 80|grep 127.0.0.2 |grep EST -c

防止的策略

iptables -I INPUT -p tcp --dport 80 -s 127.0.0.2 -m connlimit --connlimit-above 10 -j reject

意义:

1、使用iptables搭建一套实际使用的防火墙规则。

2、使用iptales进行防工具;

3、利用iptables进行数据报转发;

Netfilter和iptables

Netfilter是linux系统核心层内部的一个数据包处理模块;

Hook point:数据包通过网卡层后在Netfilter的五个挂载点:pre_routing、input、output、forward、post_routing

netfilter&iptables

他们的关系其实就是:iptables操作netfileter,netfileter操作网卡设备驱动。

iptables数据表流程

iptables组成部分:四张表 + 五条链(hook point) + 规则

四张表:filter表、nat表、mangle表、raw表

五条链:pre_routing、input、output、forward、post_routing

五条链分别装在四张表里面。

filter表:访问控制、规则匹配

nat表:地址转发

数据表通过四张表、五条链的数据流向:

数据包在规则表链配置的流程

iptables规则组成

数据包访问控制:ACCEPT (接收、允许通过)、DROP(丢弃,无反馈信息)、REJECT(拒绝,有反馈信息)

数据表改写:SNAT(对发起端地址改写)、DNAT(对目标地址改写)

信息记录:LOG (访问记录日志)

iptables规则组成

iptables配置:

场景一:

目标1:对所有的地址开放本机的tcp(80、22、10-21)端口的访问;

目标2:允许对所有的地址开放本机的基于ICMP协议的数据包访问;(允许ping)

目标3:其他未被允许的端口则禁止访问;

查看当前

#netstat -luntp

#iptables -L -n

#iptables -F     //清理之前的规则

允许单个tcp端口访问:

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

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

允许一段tcp端口访问:

iptables -I INPUT -p tcp --dport 10:21 -j ACCEPT

允许icmp协议(ping):

iptables -I INPUT -p icmp -j ACCEPT

除了已设置的允许的协议,其他的均拒绝:

iptables -A INPUT -j REJECT

禁止某个单独端口:

iptables -A INPUT -p tcp --dport 3333 -j REJECT

端口扫描命令:

nmap -sS -p 0-1000 127.0.0.1

以上的策略存在的问题:

1、本机无法访问本机(远程电脑可以访问);

解决办法:开放lo回环设备

iptables -I INPUT -i lo -j ACCEPT

2、本机无法访问其他主机;

解决办法:

iptables -I INPUT -m state --state ESTABLISH,RELATED -j ACCEPT

设置只有特定IP的主机才能访问:

iptables -D INPUT -p tcp --dport 80 -j ACCEPT

iptables -I INPUT -p tcp -s 127.0.0.2 --dport 80 -j ACCEPT

场景二:

要求1、ftp主动模式下iptables的规则配置

要求2:ftp被动模式下iptables的规则配置

ftp主动模式与被动模式的介绍与不同

ftp主动模式

ftp被动模式

iptables在centos默认配置文件位置:/etc/sysconfig/iptables

配置参考:

# Generated by iptables-save v1.4.7 on Tue Jun 7 11:26:26 2016

*raw

:PREROUTING ACCEPT [568276:834903570]

:OUTPUT ACCEPT [228933:16732536]

COMMIT

# Completed on Tue Jun 7 11:26:26 2016

# Generated by iptables-save v1.4.7 on Tue Jun 7 11:26:26 2016

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [1:152]

-A INPUT -i lo -j ACCEPT

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

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

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

-A INPUT -p tcp -m tcp --dport 3306 -j DROP

-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

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

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

-A INPUT -p tcp -m tcp --dport 20000:30000 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 11211 -j DROP

-A INPUT -p udp -m udp --dport 11211 -j DROP

COMMIT

# Completed on Tue Jun 7 11:26:26 2016

# Generated by iptables-save v1.4.7 on Tue Jun 7 11:26:26 2016

*nat

:PREROUTING ACCEPT [449:26643]

:POSTROUTING ACCEPT [316:20515]

:OUTPUT ACCEPT [316:20515]

COMMIT

# Completed on Tue Jun 7 11:26:26 2016

# Generated by iptables-save v1.4.7 on Tue Jun 7 11:26:26 2016

*mangle

:PREROUTING ACCEPT [568276:834903570]

:INPUT ACCEPT [568276:834903570]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [228933:16732536]

:POSTROUTING ACCEPT [228933:16732536]

COMMIT

# Completed on Tue Jun 7 11:26:26 2016

3、iptables配置——场景三(公司常用简单iptables规则)

要求一:

员工在公司内部(10.10.155.0/24,10.10.188.0/24)能访问服务器上的任何服务;

要求二:

当员工出差,通过VPN链接到公司外网。(员工-》vpn服务器-》内网FTP\SAMBA\NFS\SSH)

要求三:

公司有一个门户网站需要允许公网访问;

常见端口介绍:

网站:(www):

http    80/tcp

http    443/tcp

邮件(mail):

smtp    25/tcp

smtps    465/tcp

pop3    110/tcp

pop3s    995/tcp

imap    143/tcp

iptables -F

iptables -I INPUT -i lo -j ACCEPT

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

iptables -A INPUT -s 10.10.155.0/24 -j ACCEPT    //允许公司内部的网段访问任何服务

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

iptables -A INPUT -p tcp --dport  1723 -j ACCEPT     //开启vpn端口

iptables -I INPUT -p icmp -j ACCEPT

iptables -A INPUT -j REJECT     //拒绝没配置的其他数据

/etc/init.d/iptables  save

vi /etc/sysconfig/iptables

设置iptables开机启动:

chkconfig iptables on

或者把配置的操作history保存为.sh文件开机执行

加入开机执行:

vim /etc/rc.local

加入执行脚本

/bin/sh /opt/iptables_rules.sh      //执行方式

iptables防火墙nat表规则配置

分类          功能                             作用链

SNAT        源地址转换              出口,POSTROUTING

DNAT       目标地址转换           进口,PREROUTING

iptables防止CC攻击

 

 

使用iptables防止异常的访问和大规模连接数的攻击

connlimit模块:

作用:限制每一个客户端ip的并发连接数。

参数:--connlimit-above n        #限制并发个数为n

例:iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT

 

 

Limit模块:

作用:限速,控制流量

例:iptables -A INPUT -m limit --limit 3/hoour

例如限制ping的量:

iptables -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT

iptables -A INPUT -p icmp -j DROP

意思是:一个客户初始能ping 10次,之后每分钟1次。

 

标签:

给我留言