Debian下配置防火墻iptables
debian下iptables輸入命令后即時生效,但重啟之后配置就會消失,可用iptables-save快速保存配置,因為Debian上iptables是不會保存規(guī)則的,然后在開機自動的時候讓iptables自動加載剛剛導(dǎo)出的配置文件,方法如下:
若要停止iptables,iptables -F清空所有配置效果等同于停止。
whereis iptables 查找iptables 所在的路徑。
1、將iptables配置保存到/etc/iptables,這個文件名可以自己定義,與下面的配置一致即可
iptables-save > /etc/iptables
2、創(chuàng)建自啟動配置文件,并授于可執(zhí)行權(quán)限
iptables-save > /etc/iptables
3、編輯該自啟動配置文件,內(nèi)容為啟動網(wǎng)絡(luò)時恢復(fù)iptables配置
vi /etc/network/if-pre-up.d/iptables
內(nèi)容為:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables
保存并退出。這樣重啟之后iptables就自動加載規(guī)則了。
##注意:在下次修改iptables規(guī)則之后要重新導(dǎo)出配置文件。
#清空配置
iptables -F
iptables -X
iptables -Z
#配置,禁止進,允許出,允許回環(huán)網(wǎng)卡
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配置文件里可以設(shè)置
iptables -A INPUT -p tcp --dport 20000:30000 -j ACCEPT
#學(xué)習(xí)felix,把smtp設(shè)成本地
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
# 允許已建立的或相關(guān)連的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#禁止其他未允許的規(guī)則訪問
iptables -A INPUT -j REJECT #(注意:如果22端口未加入允許規(guī)則,SSH鏈接會直接斷開。)
iptables -A FORWARD -j REJECT
#保存配置
iptables-save > /etc/iptables
由于Debian安裝iptables后默認不是服務(wù),service iptables會提示unrecognized service,需要添加腳本到/etc/init.d/,腳本如下
建議將其保存為/etc/init.d/iptables,然后chmod +x /etc/init.d/iptables 添加運行權(quán)限。
#!/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
原文出處:https://my.oschina.net/u/2404183/blog/509676?p=1

浙公網(wǎng)安備 33010602011771號