什么是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