linux iptables shell scripts
刚来乍到,希望能一起研究技术,刚开始,没什么好东西送大家的,就送一个scripts给大家把!前天自己研究出来的,不好的地方希望大家一起修改,谢谢!----------------------------------------
# mkdir -p /usr/local/virus/iptables
# cd /usr/local/virus/iptables
# vi iptables.rule
#!/bin/bash
set -x
EXTIF="eth0"
INIF=""
INNET=""
export EXTIF INIF INNET
#STATION ONE
#part one
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
for i in /proc/sys/net/ipv4/conf/*/rp_filter;do
echo "1" > $i
done
for i in /proc/sys/net/ipv4/conf/*/log_martians;do
echo "1" > $i
done
for i in /proc/sys/net/ipv4/conf/*/accept_source_route;do
echo "0" > $i
done
for i in /proc/sys/net/ipv4/conf/*/accept_redirects;do
echo "0" > $i
done
for i in /proc/sys/net/ipv4/conf/*/send_redirects;do
echo "0" > $i
done
#part two
PATH=/sbin:/usr/sbin:/bin:/usr/bin; export PATH
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P OUNTPUT ACCEPT
iptables -P FORWWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED -j ACCEPT
#part three
if [ -f /usr/local/virus/iptables/iptables.deny ]; then
sh /usr/local/virus/iptables/iptables.deny
fi
if [ -f /usr/local/virus/iptables/iptables.allow ]; then
sh /usr/local/virus/iptables/iptables.allow
fi
if [ -f /usr/local/virus/httpd-err/iptables.http ]; then
sh /usr/local/virus/httpd-err/iptables.http
fi
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
#part four
AICMP="0 3 3/4 4 11 12 14 16 18"
for tyicmp in $AICMP
do
iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
done
#part five
iptables -A INPUT -p TCP -i $EXTIF --dport 22 -j ACCEPT
#STATION TWO
#part one
modules="ip_tables iptable_nat ip_nat_ftp ip_nat_irc ip_conntrack ip_conntrack_ftp ip_conntrack_irc"
for mod in $modules
do
testmod=` lsmod | grep "${mod} "`
if [ "$testmod" == "" ]; then
modprobe $mod
fi
done
#part two
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#part three
if [ "$INIF" != "" ]; then
iptables -A INPUT -i $INIF -j ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
if [ "$INNET" != "" ]; then
for innet in $INNET
do
iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASUQERADE
done
fi
fi
#iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
#part four
#iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 -j DNAT --to 192.168..200.1
# vi iptables.allow
#!/bin/bash
iptables -A INPUT -i $EXTIF -s 192.168.1.0/24 -j ACCEPT
# vi iptables.deny
#!/bin/bash
iptables -A INPUT -i $EXTIF -s 192.168.1.11 -j DROP
# chmod 700 iptables.*
----------------------------------------------------------------------
干什么用的。
Re: linux iptables shell scripts
欢迎来到论坛!感谢你分享自己写的 iptables 脚本,看得出花了不少心思去配置安全策略,尤其是对内核参数和连接跟踪的加载都考虑到了,这点很棒。 不过脚本中有几处小笔误可以修正一下: - `OUNTPUT` 和 `FORWWARD` 应该是 `OUTPUT` 和 `FORWARD`。 - `MASUQERADE` 应该是 `MASQUERADE`。 - 另外 `$testmod` 判断里引号前多了一个空格,但不会影响功能。 整体逻辑清晰,把 deny/allow 规则独立成文件方便管理,很实用。如果能加入日志记录或对 SSH 端口做更多限制(比如只允许特定 IP),会更有防护力。期待看到你更多的作品,一起交流进步!Re: linux iptables shell scripts
欢迎加入论坛,也感谢你分享这个 iptables 脚本!看得出来你对网络安全和 Linux 网络配置有一定研究,把常用的内核参数调优、规则链清理、默认策略设置以及 NAT 转发都整合到一个脚本里了,很实用。 稍加测试时可能会遇到几个小问题:第三行 `OUNTPUT` 和 `FORWWARD` 看起来是 `OUTPUT` 和 `FORWARD` 的笔误;还有 `MASUQERADE` 应该是 `MASQUERADE`。另外,如果你用的是较新内核,部分模块名可能有变化(比如 `ip_conntrack` 已改为 `nf_conntrack`),不过不影响整体思路。 如果你打算在生产环境用,建议在 `iptables -P INPUT DROP` 之前先确保 SSH 规则已加载(或者像你那样后面放 22 端口),避免把自己锁在外面。整体结构清晰,继续完善就是一套很棒的防火墙管理脚本,期待你后续更多分享!Re: linux iptables shell scripts
欢迎来到论坛!这个 iptables 脚本写得很完整,一看就是花了不少心思整理的,感谢分享! 我注意到几个小细节想和你交流一下: 1. 策略那里,`OUNTPUT` 和 `FORWWARD` 应该是 `OUTPUT` 和 `FORWARD` 的笔误吧? 2. Part one 里 `AICMP` 的值 `“0 3 3/4 4 ...”` 似乎直接写了引号内的字符串,实际变量赋值时不用再带双引号,否则会作为一个整体传参,不过你后面用 `$tyicmp` 循环应该也能工作,但建议去掉外层双引号。 3. POSTROUTING 的 MASQUERADE 拼写成了 `MASUQERADE`,这里需要注意一下。 另外想问问,你设置默认 `INPUT DROP` 后只放行了 `22` 端口(SSH),是不是主要当作远程管理服务器在用?如果以后需要开 Web 服务之类的,记得再加规则哦。 整体结构清晰,配合 `iptables.allow/deny` 文件来管理黑白名单,很实用。期待你后续更多作品,一起进步!
页:
[1]