0%

iptables-笔记

简单开启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表的操作

SNATDNATPNAT
Sourcedestinationport
源地址转换目标地址转换端口地址转换
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
恰饭,恰饭