防火墙分为内核态和用户态:

iptables为用户态的

netfilter为内核态的



iptables综合语法:

iptables -t 表名 [选项]  链名 条件 -j  动作

iptables  -t  raw/mangle/nat/filter  -AI/-DFX/-Lvn--line-numbers INPUT/OUTPUT/FORWARD/PREROTING/POSTROUTING  条件  -j   DROP/ACCEPT/REJECT/LOG



个人电脑设置:

/etc/init.d/iptables  stop   ##清空所有规则,包括默认规则

iptables -I INPUT -i lo -j ACCEPT

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

iptables -P INPUT DROP

iptables -P FORWRAD DROP

/etc/init.d/iptables save


服务器防火墙设置:httpddnsdhcpvsftpdpostfixdovecotmysqlsmbssh

/etc/init.d/iptables  stop

iptables -I INPUT -m multiport -p tcp --dport 20,21,22,25,53,80,110,139,445,50000:510000 -j ACCEPT

iptables -I INPUT -m multiport -p udp  --dports 53,67 -j  ACCEPT

iptables -I INPUT -i lo -j ACCEPT

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

iptables -P INPUT DROP

iptables -P FORWRAD DROP

/etc/init.d/iptables save


SNAT修改源端口  共享一个公网ip使局域网内的所有主机都能上网,可以控制局域网哪个网段可以上网,哪个不可以上

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -A FORWARD -s/-d 内网网段 -j ACCEPT

vi /etc/sysctl.conf--->net.ipv4-forword=1--->sysctl -p #开启路由功能

iptables -T NAT -A POSTRUTING -S 192.168.100.0/24 -O eth0 -j SNAT --to-source 公网ip

iptables -T NAT -A POSTRUTING -S 192.168.100.0/24 -O eth0 -j MASQUERADEL(伪装)

内网主机在/etc/resolv.conf中加入公网DNS

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

/etc/init.d/iptables save


 

 

DNAT修改目的ip,发布内网服务器,必须结合SNAT才能实现

iptables -t NAT -A PREROUTING -i eth0 -d 公网ip -P tcp --dport 80 -j DNAT --to-destination 内网web服务器IP地址:80

iptables -t NAT -A PREROUTING -i eth0 -d 公网ip -P tcp --dport 123423 -j DNAT --to-destination 内网IP地址:22    #外面连接是用公网ip加连接端口号123423


特殊设置:


设置防火墙入站:

iptables -I INPUT -s 192.168.100.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

iptables -I INPUT -i lo -j ACCEPT

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

iptables -I INPUT -s 192.168.100.0/24 -p icmp --icmp-type 8 -m limit --limit 1/m --limit-burst 5 -j ACCEPT

iptables -P INPUT DROP


设置防火墙转发:

iptables -I FORWARD -p tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT ##屏蔽 SYN_RECV 的连接

iptables -A FORWARD -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT  ##限制IP碎片,每秒钟只允许100个碎片,用来防止DoS***

iptables -A FORWARD -p icmp -m limit --limit 1/sec --limit-burst 10 -j ACCEPT  ##限制ping包每秒一个,10个后重新开始

iptables -A FORWARD -p icmp -m icmp --icmp-type 8 -m limit --limit 1/sec -j ACCEPT  ##限制ICMP包回应请求每秒一个

iptables -A FORWARD -i eth0 -o eth1 -s 192.168.100.0/24 -j ACCEPT  ##允许192.168.100.0/24出站(从eth0到eth1)转发

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT  ##允许内网数据回路

iptables -P FORWARD DROP