CentOS5防火墙iptables设定
来源:互联网 发布:android 淘宝搜索 编辑:程序博客网 时间:2024/05/22 12:02
LAN=eth0
# 取得内网的Netmask
LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d`
# 取得内网地址
LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '`
LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK
# 停止防火墙(清除所有规则)
/etc/rc.d/init.d/iptables stop
# 默认规则设定
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# 允许本机访问
iptables -A INPUT -i lo -j ACCEPT
# 允许所有内部访问
iptables -A INPUT -s $LOCALNET -j ACCEPT
# 允许内部发起的访问所引起的应答访问
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 启用SYN Cookies
# 防止TCP SYN Flood攻击
sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
# 来自广播地址的ping不做回应
# 防止Smurf攻击
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null
sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.conf
echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf
# 拒绝ICMP Redirect包
sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc/sysctl.conf
done
# 拒绝Source Routed包
sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_source_route=0" >> /etc/sysctl.conf
done
# 不记录碎片包
iptables -A INPUT -f -j LOG --log-prefix '[IPTABLES FRAGMENT] : '
iptables -A INPUT -f -j DROP
# 和外部的NetBIOS相关访问不做记录
# 防止记录没用的LOG
iptables -A INPUT ! -s $LOCALNET -p tcp -m multiport --dports 135,137,138,139,445 -j DROP
iptables -A INPUT ! -s $LOCALNET -p udp -m multiport --dports 135,137,138,139,445 -j DROP
iptables -A OUTPUT ! -d $LOCALNET -p tcp -m multiport --sports 135,137,138,139,445 -j DROP
iptables -A OUTPUT ! -d $LOCALNET -p udp -m multiport --sports 135,137,138,139,445 -j DROP
# 1秒钟4回以上的的ping不做记录
# 防止Ping of Death攻击
iptables -N LOG_PINGDEATH
iptables -A LOG_PINGDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT
iptables -A LOG_PINGDEATH -j LOG --log-prefix '[IPTABLES PINGDEATH] : '
iptables -A LOG_PINGDEATH -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j LOG_PINGDEATH
# 所有地址的数据包不做记录
# 防止记录没用的LOG
iptables -A INPUT -d 255.255.255.255 -j DROP
iptables -A INPUT -d 224.0.0.1 -j DROP
# 113端口不做应答(IDENT)拒绝访问
# 防止邮件主机反应迟钝
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
#----------------------------------------------------------#
# 以下针对协议进行端口开放,请根据需要自行定义 #
#----------------------------------------------------------#
# TCP22端口(SSH)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# TCP/UDP53端口(DNS)
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
# TCP80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# TCP443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# TCP21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# PASV端口(FTP-DATA)
# 假定使用端口60000:60030
iptables -A INPUT -p tcp --dport 60000:60030 -j ACCEPT
# TCP25端口(SMTP)
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
# TCP465端口(SMTPS)
iptables -A INPUT -p tcp --dport 465 -j ACCEPT
# TCP110端口(POP3)
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
# TCP995端口(POP3S)
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
# TCP143端口(IMAP)
iptables -A INPUT -p tcp --dport 143 -j ACCEPT
# TCP993端口(IMAPS)
iptables -A INPUT -p tcp --dport 993 -j ACCEPT
# UDP1194端口(OpenVPN)
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
# VPN用的防火强设定
[ -f /etc/openvpn/openvpn-startup ] && /etc/openvpn/openvpn-startup
# 丢弃以上规则定义的访问记录
iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : '
iptables -A INPUT -j DROP
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES FORWARD] : '
iptables -A FORWARD -j DROP
# 保存规则,主机重启后以上规则也有效
/etc/rc.d/init.d/iptables save
# 启动防火墙
/etc/rc.d/init.d/iptables start
在我们使用CentOS系统的时候,CentOS防火墙有时是需要改变设置的。CentOS防火墙默认是打开的,设置CentOS防火墙开放端口方法如下:
打开iptables的配置文件:
vi /etc/sysconfig/iptables
修改CentOS防火墙时注意:一定要给自己留好后路,留VNC一个管理端口和SSh的管理端口
下面是一个iptables的示例:
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
COMMIT
修改CentOS防火墙需要注意的是,你必须根据自己服务器的情况来修改这个文件。
举例来说,如果你不希望开放80端口提供web服务,那么应该相应的删除这一行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
全部修改完之后重启iptables:
service iptables restart
你可以验证一下是否规则都已经生效:iptables -L
这样,我们就完成了CentOS防火墙的设置修改。
- CentOS5防火墙iptables设定
- 常见 iptables 防火墙设定配置问题
- Linux下IPTABLES防火墙的设定
- iptables查看防火墙当前开放端口和规则设定
- iptables 防火墙
- 防火墙(iptables)
- iptables 防火墙
- iptables 防火墙
- iptables防火墙
- Iptables防火墙
- iptables防火墙
- iptables 防火墙
- iptables 防火墙
- 防火墙---iptables
- iptables 防火墙
- iptables防火墙
- iptables防火墙
- iptables防火墙
- 利用Poderosa建立SSH远程操作
- Linux 下安装wireshark
- 用“魔法师”调整分区
- 开发琐事11.24
- chrome源码解析系列
- CentOS5防火墙iptables设定
- C#的多线程
- CoCreateInstance 使用及参数说明
- OGRE嵌入QT运行不了....
- Ext.grid 复制
- vmware官方推荐的几种VMware ESXi备份方案
- 开发琐事 11.22
- C#启动exe文件
- fstab