debian下iptables输入命令后即时生效,但重启以后配置就会消失,可用iptables-save快速保存配置,由于Debian上iptables是不会保存规则的,而后在开机自动的时候让iptables自动加载刚刚导出的配置文件,方法以下:
若要中止iptables,iptables -F清空全部配置效果等同于中止。
whereis iptables 查找iptables 所在的路径。
一、将iptables配置保存到/etc/iptables,这个文件名能够本身定义,与下面的配置一致便可
iptables-save > /etc/iptables
二、建立自启动配置文件,并授于可执行权限
iptables-save > /etc/iptables
三、编辑该自启动配置文件,内容为启动网络时恢复iptables配置
vi /etc/network/if-pre-up.d/iptables
内容为:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables
保存并退出。这样重启以后iptables就自动加载规则了。
##注意:在下次修改iptables规则以后要从新导出配置文件。
#清空配置
iptables -F
iptables -X
iptables -Z
#配置,禁止进,容许出,容许回环网卡
iptables -P INPUT DROP
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
#容许ping
iptables -A INPUT -p icmp -j ACCEPT
#容许ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#容许ftp
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#容许ftp被动接口范围,在ftp配置文件里能够设置
iptables -A INPUT -p tcp --dport 20000:30000 -j ACCEPT
#学习felix,把smtp设成本地
iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT -s 127.0.0.1
iptables -A INPUT -p tcp -m tcp --dport 25 -j REJECT
#容许DNS
iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
#容许http和https
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 容许已创建的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#禁止其余未容许的规则访问
iptables -A INPUT -j REJECT #(注意:若是22端口未加入容许规则,SSH连接会直接断开。)
iptables -A FORWARD -j REJECT
#保存配置
iptables-save > /etc/iptables
因为Debian安装iptables后默认不是服务提示service iptables提示unrecognized service,须要添加脚本到/etc/init.d/,脚本以下
建议将其保存为/etc/init.d/iptables,而后chmod +x /etc/init.d/iptables 添加运行权限。
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: iptables
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop iptables firewall
# Description: Start, stop and save iptables firewall
### END INIT INFO
PATH=”/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin”
IPTABLES=/sbin/iptables
IPTABLES_SAVE=/sbin/iptables-save
IPTABLES_RESTORE=/sbin/iptables-restore
IPTABLES_CONFIG=/etc/iptables.conf
[ -x $IPTABLES ] || exit 0
. /lib/lsb/init-functions
case "$1" in
start)
log_action_begin_msg "Starting firewall"
type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
;;
stop)
log_action_begin_msg "Saving current firewall configuration"
if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
log_action_begin_msg "Flushing ALL firewall rules from chains!"
if $IPTABLES -F ; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
log_action_begin_msg "Deleting ALL firewall chains [Warning: ACCEPTING ALL PORT SERVICES!]"
if $IPTABLES -X ; then
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;
save)
log_action_begin_msg "Saving current firewall configuration"
if $IPTABLES_SAVE > $IPTABLES_CONFIG ; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;
force-reload|restart)
log_action_begin_msg "Reloading firewall configuration [Warning: POTENTIAL NETWORK INSECURITY DURING RELOAD]"
$IPTABLES -F
$IPTABLES -X
if $IPTABLES_RESTORE < $IPTABLES_CONFIG ; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;
*)
echo "Usage: /etc/init.d/iptables {start|stop|save|restart|force-reload}"
exit 1
;;
esac
exit 0
网络