什么是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:地址转发
iptables的规则组成
数据包访问控制:ACCEPT、DROP、REJECT
数据包改写:SNAT、DNAT
信息记录:LOG
场景模拟
场景一:
规则一、对所有地址开放本机的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)能访问服务器上的任何服务
要求二、当员工出差在上海,通过VPN链接到公司,外网(员工)==拨号到==》VPN服务器==》内网FTP、SAMBA、NFS、SSH
要求三、公司有一个门户网站需要允许公网访问
常见端口梳理
常见允许外网访问的端口
网站 www http 80/tcp
https 443/tcp
邮件 mail smtp 25/tcp
smtps 465/tcp
pop3 110/tcp
pop3s 995/tcp
imap 143/tcp
一些常见不允许外网访问的服务
文件服务器 NFS 123/udp
SAMBA 137,138,139/tcp,445/tcp
FTP 20/tcp,21/tcp
远程管理 SSH 22/tcp
数据库 MYSQL 3306/tcp
ORACLE 1521/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
本文出自 “Linux系统运维” 博客,请务必保留此出处http://mbb97.blog.51cto.com/13129388/1959187
原文地址:http://mbb97.blog.51cto.com/13129388/1959187