关于iptables--基础知识

什么是iptables?

常见于linux系统下的应用层防火墙工具


常见人员:

系统管理人员、网络工程师、安全人员


iptables的作用:

一、如何用iptables搭建一套如何企业实际使用的防火墙规则

二、如何用iptables进行防***

三、如何利用iptables进行数据包准啊发

四、明白iptables的强大及实际使用意义



什么是Netfilter:

Netfilter是Linux操作系统核心层内部的一个数据包处理模块


什么是Hook point?

数据包在Netfilter中的挂载点

(PRE_ROUTING、INPUT、OUTPUT、FORDWARD、POST_ROUTING)



IPTABLES的四表五链

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


五条链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING


四表

filter:用于包过滤

nat:网络地址转发

mangle:对特定数据包修改

raw:不做数据包链接跟踪


五链

INPUT 本机数据包入口

OUTPUT 对特定数据包修改

FORWARD 进过本机转发的数据包

PREOUTING 防火墙之前,修改目的地址(DNAT)

POSTROUTING 防火墙之后,修改源地址(SNAT)


iptables的规则组成

数据包访问控制:ACCEPT、DROP、REJECT


数据包改写:SNAT、DNAT


信息记录:LOG


模块

state    包状态,有四个:NEW、RELATED、ESTABLISHED、INVALID

mac      源MAC地址

limit    包速率限制

multiport    多端口

iprange      端口范围

场景模拟

场景一:

规则一、对所有地址开放本机的tcp(80、22、10-21)端口访问

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

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

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


规则二、允许所有的地址开放本机的基于ICMP协议的数据包访问

iptables -I INPUT -p ICMP -j ACCEPT


规则三、其他未被允许的端口则禁止访问 

iptables -A INPUT -j REJECT


场景一、存在的问题

1、本机无法访问本机

iptables -I INPUT -i lo -j ACCEPT(允许数据包通过lo地址访问)

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

iptables -I INPUT -m state --state  ESTABLISHED,RELATED -j ACCEPT(建立这两种状态的数据监听时则允许)



补充:在场景一的基础上,修改只允许192.168.1.1的主机访问httpd服务

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


主动模式和被动模式的区别(数据链路和命令链路)


场景二:

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

一、ftp连接的默认模式为被动模式


二、vsftpd服务支持主动模式需要注意配置选项

port_enabled=yes

connect_from_port_20=YES


三、iptables需要开启21端口的访问权限

#iptables -I INPUT -p tcp -dport 21 -j ACCEPT



2、ftp被动模式下iptables的规则配置 

方法1、为vsftpd指定数据端口,并且通过iptables开放相应需要传输的端口段

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


vim /etc/vsftpd/vsftpd.conf

pasv_max_port=60000

pasv_min_port=50000


iptables -I INPUT -p tcp --dport 50000:60000 -j ACCEPT


方法二、

iptables -I INPUT -i lo -j ACCEPT

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

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

modprobe nf_conntrack_ftp


永久修改配置(vim /etc/sysconfig/iptables-config)

IPTABLES_MOUDULES="nf_connectrack_ftp"


场景三:

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


要求二、当员工出差在上海,通过***链接到公司,外网(员工)==拨号到==》***服务器==》内网FTP、SAMBA、NFS、SSH


要求三、公司有一个门户网站需要允许公网访问



常见端口梳理

常见允许外网访问的端口

网站wwwhttp80/tcp

https443/tcp

邮件mailsmtp25/tcp

smtps465/tcp

pop3110/tcp

pop3s995/tcp

imap 143/tcp


一些常见不允许外网访问的服务

文件服务器NFS123/udp

SAMBA137,138,139/tcp,445/tcp

FTP20/tcp,21/tcp

远程管理 SSH22/tcp

数据库MYSQL3306/tcp

ORACLE1521/tcp


配置规则的基本思路

ACCEPT允许本地访问

允许已监听状态数据包通过

允许规则中的允许的数据包通过【注意开放ssh远程登陆端口】


DENY拒绝未被允许的数据包

iptables 规则保存成配置文件


/etc/init.d/iptables save


利用iptables防cc***


connlimit模块


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


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


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


Limit模块


作用:限速,控制流量


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


--limit-burst 默认值为5


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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章