简单开启22号端口
1 2 3
| iptables -t filter -A INPUT -j DROP -s 172.0.0.1 -p 22 iptables -t filter -A INPUT -j ACCEPT -s 172.16.0.0/16 -d 172.16.100.1 -p tcp --dport 22 iptables -t filter -A OUTPUT -j ACCEPT -s 172.16.100.7 -d 172.16.0.0/16 -p tcp --sport 22
|
state模块使用例程
禁止向外打开新的tcp连接
1 2 3
| iptables -A OUTPUT -m state --state NEW -p tcp -s 172.16.0.107 -j DROP iptables -t filter -A INPUT -p tcp --dport 22 -d 172.16.0.107 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --sport 22 -s 172.16.0.107 -j ACCEPT
|
允许ping自己
1 2 3 4
| iptebles -P INPUT DROP iptebles -P OUTPUT DROP iptables -t filter -A INPUT -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -d 172.16.0.107 -j DROP iptebles -t filter -A OUTPUT -p icmp --icmp-type 0 -m state --state ESTABLISHED -s 172.16.0.107 -j ACCEPT
|
防止反弹shell
1
| iptables -t fliter -A OUTPUT -m state -s 172.16.0.107 --state ESTABLISHED -j ACCEPT
|
ftp协议的特殊性
因为ftp很特殊,ip_nat_ftp ip_conntrack_ftp 模块需要先装载
配置文件在/etc/sysconfig/iptables-config,在IPTABLES_MODULES后面填上ip_nat_ftp 和 ip_conntrack_ftp 即可,因为ip_nat_ftp依赖ip_conntrack_ftp 所以只需要装载ip_nat_ftp
1
| iptables -t filter -A OUTPUT -p tcp -s 172.16.0.107 -m state --state RELATED -j ACCEPT
|
ip_conntrack是很重要的,但是高访问的情况下可能会阻断一部分的传入连接
ip_conntrack内核控制(旧版内核)
1 2
| /proc/sys/net/ipv4/netfilter/ip_conntrack_[protocol] /proc/sys/net/ipv4/ip_conntrack_max
|
nf_conntrack内核控制
1 2 3
| /proc/sys/net/netfilter/nf_conntrack_[protocol] /proc/sys/net/netfilter/nf_conntrack_max /proc/sys/net/nf_conntrack_max
|
显式扩展
-m state //状态 -m iprange //ip区段 -m multiport //离散端口,最多15个 -m connlimit //最大连接数 -m limit //流量控制 traffic control(流量控制) token bucket filter -m string //匹配字符串 -m recent //定义规则 防止ddos
设置连接约束
1 2 3 4
| iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP //约束最大连接数 iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH //设置新连接 //不会拦截,因为没有目标,但是会更新记录 iptables -A INPUT -p tcp --dport 22 -m state --state NEW --update --second 300 --hitcount 3 --name SSH -j DROP //检查记录是否符合条件
|
--dnat
--snat
-j target 【target译作动作】
-j ACCEPT DROP RESPECT LOG 自定义链 MASQUERADE //ppp拨号,外网地址是动态获取的时候使用
从主链转发到自定义链
iptables -A INPUT -j 自定义链
从自定义链返回主链
iptables -A 自定义链 -j RETURN
抓包
tcpdump -i 网卡 -nn -X icmp
对nat表的操作
| Source | destination | port |
| 源地址转换 | 目标地址转换 | 端口地址转换 |
1 2
| iptables -t nat -A PREROUTING -p tcp -d 172.16.100.107 -j SNAT --to-source 更换的源地址:端口 iptables -t nat -A PREROUTING -p tcp -d 172.16.100.107 -j DNAT --to-destination 更换的目标地址:端口
|
DMZ 区域 非军事化区 服务器使用nat做跳板访问
创建自定义链
1
| iptables -t filter -N Docker
|