首页 > 代码库 > iptables防火墙(二)

iptables防火墙(二)

1.SNATSource Network Address Translation源地址转换):是Linux防火墙的一种地址转换操作

原理:根据指定条件修改数据包的源     IP地址

应用环境:局域网主机共享单个公网IP地址接入Internet

 

2.导出(备份)规则——iptables-save

[root@crushlinux ~]# iptables-save
# Generated by iptables-save v1.4.7 on Thu Apr  6 20:17:56 2017
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [100:8965]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT
# Completed on Thu Apr  6 20:17:56 2017
[root@crushlinux /]# iptables-save > /opt/a.txt

3.导入(还原)规则——iptables-restore

[root@crushlinux /]# iptables-restore < /opt/a.txt

4.自启动防火墙规则

[root@crushlinux /]# iptables-save > /etc/sysconfig/iptables
[root@crushlinux /]# chkconfig --level 2345 iptables on
[root@crushlinux /]# chkconfig --list iptables
iptables           0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭

[root@crushlinux /]# service iptables start

5.清空所有防火墙规则

[root@crushlinux /]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter                    [确定]
iptables:清除防火墙规则:                                 [确定]
iptables:正在卸载模块:                                   [确定]
[root@crushlinux /]# service iptables status
iptables:未运行防火墙。

6.防火墙脚本的构成

定义基本变量

[root@crushlinux /]# vi /opt/myipfw.sh
#!/bin/bash 
INET_IF= "eth0"                                       //外网接口
INET_IP="218.29.30.31"                                //外网接口地址
LAN_IF="eth1"                                       //内网接口
LAN_IP= "192.168.1.1"                                 //内网接口地址
LAN_NET="192.168.1.0/24"                             //内网网段
LAN_WWW_IP="192.168.1.6"                           //网站服务器的内部地址
IPT="/sbin/iptables"                                   //iptables命令的路径
MOD="/sbin/modprobe"                               //modprobe命令的路径
CTL="/sbin/sysctl“                                     //sysct1命令的路径

加载内核模块

……
$MOD ip_tables 
$MOD ip_conntrack 
$MOD ipt_REJECT 
$MOD ipt_LOG 
$MOD ipt_iprange 
$MOD xt_tcpudp 
$MOD xt_state 
$MOD xt_multiport 
$MOD xt_mac 
$MOD ip_nat_ftp 
$MOD ip_conntrack_ftp 
支持FTP访问的地址转换、连接状态跟踪

调整/proc参数

……
$CTL -w net.ipv4.ip_forward=1 
$CTL -w net.ipv4.ip_default_ttl=128 
$CTL -w net.ipv4.icmp_echo_ignore_all=1 
$CTL -w net.ipv4.icmp_echo_ignore_broadcasts 
$CTL -w net.ipv4.tcp_syncookies=1 
$CTL -w net.ipv4.tcp_syn_retries=3 
$CTL -w net.ipv4.tcp_synack_retries=3 
$CTL -w net.ipv4.tcp_fin_timeout=60 
$CTL -w net.ipv4.tcp_max_syn_backlog=3200 
优化TCP响应能力

具体的防火墙规则

按表、链分别设置规则,包括默认策略

……
$IPT -t filter -X 
$IPT -t nat -X 
$IPT -t filter -F                //清空原有规则
$IPT -t nat -F
$IPT -P INPUT DROP            //设置默认策略
$IPT -P FORWARD DROP 
$IPT -P OUTPUT ACCEPT 
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP   //其他具体规则
$IPT -t nat -A PREROUTING -i $INET_IF -d $INET_IP -p tcp --dport 80 -j DNAT --to-destination $LAN_WWW_IP 

 

iptables防火墙(二)