防火墙分为内核态和用户态:
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
服务器防火墙设置:httpd、dns、dhcp、vsftpd、postfix、dovecot、mysql、smb、ssh
/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