linux中防火墙的基本配置(二)

接防火墙配置上篇
显式扩展:
 -m limit 
   --limit 3/min 速率
   --limit-burst 30 峰值
用法示例:
 [root@localhost ~]# iptables -A INPUT -p icmp -m limit --limit 5/minute --limit-burst 8 -j ACCEPT
 [root@localhost ~]# iptables -A OUTPUT -p icmp -m limit --limit 5/minute --limit-burst 8 -j ACCEPT
 
 通过-m limit模块实现远程登录控制
 [root@localhost ~]# iptables -A INPUT  -d 192.168.0.7 -p tcp --dport 22 -m state --state NEW -m limit --limit 2/minute --limit-burst 2 -j ACCEPT
 [root@localhost ~]# iptables -A INPUT -d 192.168.0.7 -p tcp --dport 22 -m state --state ESTABLISHED -j ACCEPT
 [root@localhost ~]# iptables -A INPUT -d 192.168.0.7 -p tcp --dport 22 -j DROP
 
 -m connlimit 限定最大连接数(每个IP)
  [!] --connlimit-above n
  多于n个表示满足条件,若条件为=<n,则前面加!
 -m iprage IP范围
  --src-range ip-ip
  --dst-range ip-ip
例如:
  -m iprange --src-range 172.16.100.1-172.16.100.100
 -m mac  限定源mac地址
例如:
  --mac-source XX:XX:XX:XX:XX:XX
 -m string 做字符串匹配
  --algo {bm|kmp} 指定匹配算法
  --string "PATTERN" 指定匹配模式
用法示例:
 [root@localhost ~]# iptables -I INPUT 1 -d 192.168.0.6 -p tcp --dport 80 -m string --algo kmp --string "sex" -j DROP
 [root@localhost ~]# iptables -I OUTPUT 1 -s 192.168.0.6 -p tcp --dport 80 -m string --algo kmp --string "sex" -j DROP
 
 -m recent
  --name  创建存放IP的列表
  --set 将符合条件的地址添加到列表中
  --rcheck 
  --update 重新设定禁锢时间
  --remove 从列表中释放
  --seconds seconds 指定禁锢时间
  --hitcount 某种行为达到几次,添加至指定列表
  --update 是指每次建立连接都更新列表
  --seconds必须与--rcheck或者--update同时使用
  --hitcount必须与--rcheck或者--update同时使用
 
  -j  TARGET
   ACCEPT 接受
   DROP 丢弃
   REJECT 拒绝 可以跟选项表明拒绝原因
   REDIRECT 重定向(端口)
   DNAT 目标地址转换
   SNAT 源地址转换
   MASQUERADE 地址伪装
   LOG  记录日志
   RETURN 从自定义链返回到主链
 
保存规则:
service iptables save 使用系统自带的脚本保存,保存位置一般为/etc/sysconfig/iptables
没有脚本的情况下保存:
iptables-save > /etc/sysconfig/iptables.3(自己定义,可以保存任何位置)
iptables-restore < /etc/sysconfig/iptables.3(从哪一个保存规则的文件中恢复)
 
自定义链的用法:
[root@localhost ~]# iptables -N come_in 创建自定义链
iptables -A clean_in -d 172.16.255.255 -p icmp -j DROP 向自定义链中添加规则,同向系统链中添加规则一样
iptables -A INPUT -d 172.16.100.1 -j clean_in 调用自定义链
iptables -A clean_in -d 172.16.100.1 -j RETURN 返回主链
 
 
源地址和目标地址转换:
VMnet0(桥接):实现虚拟机与外网通信,虚拟机与虚拟机通信,虚拟机与物理机通信(直接通过虚拟交换机连接到物理网卡上)
VMnet1:实现虚拟机与物理机通信,虚拟机与虚拟机通信,虚拟机不能与外网通信
VMnet8:nat模式
同一台虚拟机上两块网卡不能配置位于同一网段内的地址
linux地址属于主机不属于网卡
源地址转换:
 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 172.16.3.1 将源地址为192.168.0.0网段的IP地址都转换为172.16.3.1
查看:iptables -t nat -L -n -v
实现NAT转换,必须打开路由转发功能
查看转发功能是否打开: cat /proc/sys/net/ipv4/ip_forward,0表示关闭,1表示打开
打开转发功能:echo 1 > /proc/sys/net/ipv4/ip_forward
关闭转发功能:echo 0 > /proc/sys/net/ipv4/ip_forward
放行到外网的80端口访问:
iptables -P FORWARD DROP将默认策略设置为拒绝
iptables -A FORWARD -s 192.168.0.0/24 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

DNAT:
打开web服务并记录日志
iptables -t nat -A PREROUTING -d 1.2.3.1 -p tcp --dport 80 -j LOG --log-prefix "iptables (web) --"
iptables -t nat -A PREROUTING -d 1.2.3.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.6
开打FTP服务
iptables -t nat -A PREROUTING -d 1.2.3.1 -p tcp --dport 21 -j DNAT --to-destination 192.168.0.7
iptables -t nat -A PREROUTING -d 1.2.3.1 -p tcp -m -state --state NEW -j DNAT --to-destination 192.168.0.7
iptables -t nat -A PREROUTING -d 1.2.3.1 -p tcp -m state --state RELATED,ESTABLISHED -j DNAT --to-destination 192.168.0.7
 如果开放FTP服务,必须开启RELATED状态
 
开打路由转发功能
iptables -P FORWARD DROP
放行web服务
iptables -A FORWARD -d 192.168.0.6 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.0.6 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
放行FTP服务:
iptables -A FORWARD -d 192.168.0.6 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.0.6 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED -j ACCEPT

你可能感兴趣的:(防火墙,iptables,NAT)