煮酒听雨
首页
PHP
MYSQL
WEB
Linux
关于本站
登陆
注册
Centos6中iptables防火墙规则设置
编辑时间:2019-12-05
编辑:忘尘
阅读:527
管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受攻击。它帮助管理员配置网络流量的传入、传出规则列表。 ####一、iptables简介 centos6防火墙iptables是基于内核的防火墙,功能非常强大,iptables内置了filter、nat、mangle三张表。其中filter负责过滤数据包;nat则涉及到网络地址转换;mangle表则主要应用在修改数据包内容上,用来做流量整形的。 - FILTER 默认过滤表,内建的链有: - INPUT:处理流入本地的数据包 - FORWARD:处理通过系统路由的数据包 - OUTPUT:处理本地流出的数据包 - NAT 实现网络地址转换的表,内建的链有: - PREROUTING:处理即将接收的数据包 - OUTPUT:处理本地产生的数据包 - POSTROUTING:处理即将传出的数据包 - MANGLE 此表用于改变数据包,共 5 条链: - PREROUTING:处理传入连接 - OUTPUT:处理本地生成的数据包 - INPUT:处理报文 - POSTROUTING:处理即将传出数据包 - FORWARD:处理通过本机转发的数据包 ####二、iptables主要参数 注意:所有链名必须大写,表明必须小写,动作必须大写,匹配必须小写 ``` -A 向规则链中添加一条规则,默认被添加到末尾 -T指定要操作的表,默认是filter -D从规则链中删除规则,可以指定序号或者匹配的规则来删除 -R进行规则替换 -I插入一条规则,默认被插入到首部 -F清空所选的链,重启后恢复 -N新建用户自定义的规则链 -X删除用户自定义的规则链 -p用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号, -s指定源地址 -d指定目的地址 -i进入接口 -o流出接口 -j采取的动作,accept,drop,snat,dnat,masquerade --sport源端口 --dport目的端口,端口必须和协议一起来配合使用 ``` ####Linux centos6常用到的 IPTables 规则 注意:iptables 中的规则是从上到下匹配的,一旦匹配成功就不再继续往下匹配 #####1、启动、停止和重启IPTables ``` service iptables status service iptables start service iptables stop service iptables restart ``` 或 ``` /etc/init.d/iptables start /etc/init.d/iptables stop /etc/init.d/iptables restart ``` #####2、查看IPtables防火墙策略 ``` iptables -L -n -v ``` 以上命令应该返回数据输出: ``` Chain INPUT (policy ACCEPT 0 packets, 0 bytes) ......(略) Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) ..... Chain OUTPUT (policy ACCEPT 241M packets, 48G bytes) ...... Chain RH-Firewall-1-INPUT (3 references) .... ``` 以上命令是查看默认的 FILTER 表,如果你只希望查看特定的表,可以在 -t 参数后跟上要单独查看的表名。例如只查看 NAT 表中的规则,可以使用如下命令: ``` iptables -t nat -L -v –n ``` #####3、屏蔽某个IP地址 如果你发布有某个 IP 向服务器导入攻击或非正常流量,可以使用如下规则屏蔽其 IP 地址: ``` iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP ``` 注意需要将上述的 XXX 改成要屏蔽的实际 IP 地址,其中的 -A 参数表示在 INPUT 链的最后追加本条规则。 如果你只想屏蔽 TCP 流量,可以使用 -p 参数的指定协议,例如: ``` iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP ``` #####4、解封某个IP地址 要解封对 IP 地址的屏蔽,可以使用如下命令进行删除: ``` iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP ``` 其中 -D 参数表示从链中删除一条或多条规则。 #####5、使用IPtables关闭/开启特定端口 很多时候,我们需要阻止某个特定端口的网络连接,可以使用 IPtables 关闭特定端口。 阻止特定的传出连接: ``` iptables -A OUTPUT -p tcp --dport xxx -j DROP #禁止所有IP对本机80端口的访问 iptables -I INPUT -p TCP --dport 80 -j DROP ``` 阻止特定的传入连接: ``` iptables -A INPUT -p tcp --dport xxx -j DROP ``` 允许xxx对80端口的访问 ``` iptables -I INPUT -s xxx -p TCP --dport 80 -j ACCEPT ``` #####6、使用Multiport控制多端口 使用 multiport 我们可以一次性在单条规则中写入多个端口,例如: ``` iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT ``` #####7、在规则中使用 IP 地址范围 在 IPtables 中 IP 地址范围是可以直接使用 CIDR 进行表示的,例如: ``` iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT ``` #####8、配置端口转发 有时我们需要将 Linux 服务器的某个服务流量转发到另一端口,此时可以使用如下命令: ``` iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525 ``` 上述命令会将所有到达 eth0 网卡 25 端口的流量重定向转发到 2525 端口。 #####9、屏蔽HTTP服务Flood攻击 有时会有用户在某个服务,例如 HTTP 80 上发起大量连接请求,此时我们可以启用如下规则: ``` iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT ``` 上述命令会将连接限制到每分钟 100 个,上限设定为 200。 #####10、禁止PING 对 Linux 禁 PING 可以使用如下规则屏蔽 ICMP 传入连接: ``` iptables -A INPUT -p icmp -i eth0 -j DROP ``` #####11、允许访问回环网卡 环回访问(127.0.0.1)是比较重要的,建议大家都开放: ``` iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT ``` #####12、屏蔽指定MAC地址 使用如下规则可以屏蔽指定的 MAC 地址: ``` iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP ``` #####13、限制并发连接数 如果你不希望来自特定端口的过多并发连接,可以使用如下规则: ``` iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT ``` 以上规则限制每客户端不超过 3 个连接。 #####14、清空IPtables规则 要清空 IPtables 链可以使用如下命令: ``` iptables -F ``` 要清空特定的表可以使用 -t 参数进行指定,例如: ``` iptables -t nat –F ``` #####15、保存IPtables规则 默认情况下,管理员对 IPtables 规则的操作会立即生效。但由于规则都是保存在内存当中的,所以重启系统会造成配置丢失,要永久保存 IPtables 规则可以使用 `iptables-save` 命令: ``` iptables-save > ~/iptables.rules ``` 保存的名称大家可以自己改。 #####16、还原IPtables规则 有保存自然就有还原,大家可以使用 `iptables-restore` 命令还原已保存的规则: ``` iptables-restore < ~/iptables.rules ``` #####17、允许建立相关连接 随着网络流量的进出分离,要允许建立传入相关连接,可以使用如下规则: ``` iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT ``` 允许建立传出相关连接的规则: ``` iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT ``` #####18、丢弃无效数据包 很多网络攻击都会尝试用黑客自定义的非法数据包进行尝试,我们可以使用如下命令来丢弃无效数据包: ``` iptables -A INPUT -m conntrack --ctstate INVALID -j DROP ``` #####19、IPtables屏蔽邮件发送规则 如果你的系统不会用于邮件发送,我们可以在规则中屏蔽 SMTP 传出端口: ``` iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT ``` #####20、阻止连接到某块网卡 如果你的系统有多块网卡,我们可以限制 IP 范围访问某块网卡: ``` iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP ``` 源地址可以是 IP 或 CIDR。
来说两句吧
提交评论
最新评论
我的标签
函数
面试
REDIS
LNMP
验证
时间
JS
LINUX
CPA
常量
MYSQL
备份
微信
文件
压缩
优化
SVN
PHP
集合
数组
HTML
收藏
NGINX
配置
日志
性能
加密
下载
FORM
WEB
样式
SQL
表单
配置,面试,REDIS
编码
ARRAY
替换
截取
密码
版本
进程
定时
测试
事务
数据
权限
安全
防火墙
索引
设计模式
安全,面试
缓存
热文排行
LNMP状态管理命令
navicat for mysql 导入xlsx,
(置顶)开发中常用功能知识点笔记
(置顶)收藏优秀分享文章集合
PHP加密解密算法(Discuz!经典代码)
PHP 获取数组第一个元素或最后一个值
Nginx配置 nginx.conf 文件中常用配
MySQL错误日志 [Warning] IP ad
Redis持久化:快照(RDB)和AOF简解
浅析SQLmap
随机文章
友情链接
官方手册
thinkphp
php扩展
Linux命令
lnmp
PHP中文网
鸟哥Linux私房
Nginx中文文档
json格式化
Redis手册
composer中文文档
CentOS下载
流程图
VPN代理
菜鸟网
奇淼教程
首页
PHP
MYSQL
WEB
Linux
关于本站
登陆
注册