Tag Archive: iptables

七月 17th, 2018

#!/bin/bash
export PATH=/sbin:/usr/sbin:/bin:/usr/bin

iptables -F
iptables -X
iptables -Z

#远程SSH登陆,我们要开启22端口
iptables -A INPUT -p tcp –dport 22 -j ACCEPT

#WEB服务器,开启80端口
iptables -A INPUT -p tcp –dport 80 -j ACCEPT

#邮件服务器,开启25,110端口.
iptables -A INPUT -p tcp –dport 110 -j ACCEPT
iptables -A INPUT -p tcp –dport 25 -j ACCEPT

#FTP服务器,开启20,21端口

iptables -A INPUT -p tcp -m multiport –dport 21,60000:60050 -j ACCEPT
#如果做了DNS服务器,开启53端口

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p udp –sport 53 -j ACCEPT
iptables -A INPUT -p udp –dport 53 -j ACCEPT
#对PING做设置
#iptables -A INPUT -p icmp –icmp-type 8 -s 0/0 -j DROP
#所以对别人的请求丢弃应该就可以达到别人无法PING的
#iptables -A OUTPUT -p icmp –icmp-type 0 -s localip -j DROP
#其实可以不要 包都丢弃了 还怎么会发出响应的包呢

iptables -A INPUT -p icmp –icmp-type 8 -s 0/0 -j ACCEPT
iptables -A INPUT -p icmp –icmp-type 0 -s 0/0 -j ACCEPT
iptables -A OUTPUT -p icmp –icmp-type 0 -s $FW_IP -j ACCEPT
iptables -A OUTPUT -p icmp –icmp-type 8 -s $FW_IP -j ACCEPT

#开放本机对外部80端口
iptables -A INPUT -p tcp ! –syn -s any/0 –sport 80 –dport 1024:65535 -j ACCEPT
iptables -P INPUT DROP

/etc/rc.d/init.d/iptables save
service iptables restart

TAGS:
七月 16th, 2018

CentOS6.5查看防火墙的状态:
# service iptable status
Redirecting to /bin/systemctl status iptable.service
iptable.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead) –表示防火墙已经关闭

CentOS 6.5关闭防火墙
# servcie iptables stop –临时关闭防火墙
# chkconfig iptables off –永久关闭防火墙

CentOS 7.2关闭防火墙
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤

firewall-cmd –state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

# firewall-cmd –state
not running

检查防火墙的状态:

从centos7开始使用systemctl来管理服务和程序,包括了service和chkconfig。
#systemctl list-unit-files|grep firewalld.service
–防火墙处于关闭状态

firewalld.service disabled

# systemctl status firewalld.service
firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)

关闭防火墙:
# systemctl stop firewalld.service #停止firewall
# systemctl disable firewalld.service #禁止firewall开机启动

# systemctl stop firewalld.service
# systemctl disable firewalld.service

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
查看已启动的服务列表:systemctl list-unit-files|grep enabled

Centos 7 firewall 命令:
查看已经开放的端口:
firewall-cmd –list-ports

开启端口
firewall-cmd –zone=public –add-port=80/tcp –permanent

命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

重启防火墙
firewall-cmd –reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd –state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

CentOS 7 以下版本 iptables 命令
如要开放80,22,8080 端口,输入以下命令即可
/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 8080 -j ACCEPT

然后保存:
/etc/rc.d/init.d/iptables save

查看打开的端口:
/etc/init.d/iptables status

关闭防火墙
永久性生效,重启后不会复原

开启: chkconfig iptables on
关闭: chkconfig iptables off

即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop

查看防火墙状态: service iptables status

下面说下CentOS7和6的默认防火墙的区别
CentOS7默认使用的是firewall作为防火墙,使用iptables必须重新设置一下

1、直接关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

2、设置 iptables service
yum -y install iptables-services

如果要修改防火墙配置,如增加防火墙端口3306
vi /etc/sysconfig/iptables

增加规则
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
保存退出后

systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
最后重启系统使设置生效即可。

systemctl start iptables.service #打开防火墙
systemctl stop iptables.service #关闭防火墙

解决主机不能访问虚拟机CentOS中的站点
前阵子在虚拟机上装好了CentOS6.2,并配好了apache+php+mysql,但是本机就是无法访问。一直就没去折腾了。

具体情况如下

1. 本机能ping通虚拟机
2. 虚拟机也能ping通本机
3.虚拟机能访问自己的web
4.本机无法访问虚拟机的web

后来发现是防火墙将80端口屏蔽了的缘故。

检查是不是服务器的80端口被防火墙堵了,可以通过命令:telnet server_ip 80 来测试

解决方法如下:
/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT

然后保存:
/etc/rc.d/init.d/iptables save

重启防火墙
/etc/init.d/iptables restart

CentOS防火墙的关闭,关闭其服务即可:
查看CentOS防火墙信息:/etc/init.d/iptables status
关闭CentOS防火墙服务:/etc/init.d/iptables stop

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138979.htm

九月 28th, 2017

IPTables 包括一组内置和由用户定义规则的「链」,管理员可以在「链」上附加各种数据包处理规则。

  • FILTER 默认过滤表,内建的链有:
    • INPUT:处理流入本地的数据包
    • FORWARD:处理通过系统路由的数据包
    • OUTPUT:处理本地流出的数据包
  • NAT 实现网络地址转换的表,内建的链有:
    • PREROUTING:处理即将接收的数据包
    • OUTPUT:处理本地产生的数据包
    • POSTROUTING:处理即将传出的数据包
  • MANGLE 此表用于改变数据包,共 5 条链:
    • PREROUTING:处理传入连接
    • OUTPUT:处理本地生成的数据包
    • INPUT:处理报文
    • POSTROUTING:处理即将传出数据包
    • FORWARD:处理通过本机转发的数据包

接下来我们将由简入难介绍 25 条 Linux 管理员最常会用到的 IPTables 规则。

1、启动、停止和重启IPTables

虽然 IPTables 并不是一项服务,但在 Linux 中还是可以像服务一样对其状态进行管理。

基于SystemD的系统

systemctl start iptables
systemctl stop iptables
systemctl restart iptables

基于SysVinit的系统

 /etc/init.d/iptables start
/etc/init.d/iptables stop
/etc/init.d/iptables restart
2、查看IPtables防火墙策略

你可以使用如下命令来查看 IPtables 防火墙策略:

 iptables -L -n -v

以上命令应该返回数据下图的输出:

20条IPTables防火墙规则用法!20条IPTables防火墙规则用法!

以上命令是查看默认的 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 链的最后追加本条规则。(IPTables 中的规则是从上到下匹配的,一旦匹配成功就不再继续往下匹配)

如果你只想屏蔽 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

阻止特定的传入连接:

iptables -A INPUT -p tcp --dport xxx -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。

原文来自:https://www.sysgeek.cn/iptables-firewall-rules-examples/

本文地址:http://www.linuxprobe.com/20iptables.html

三月 15th, 2017

操作系统环境:CentOS Linux release 7.0.1406(Core) 64位
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤。

1、关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd –state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

2、iptables防火墙(这里iptables已经安装,下面进行配置)
vi/etc/sysconfig/iptables #编辑防火墙配置文件
# sampleconfiguration for iptables service
# you can edit thismanually or use system-config-firewall
# please do not askus to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT[0:0]
:OUTPUT ACCEPT[0:0]
-A INPUT -m state–state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -jACCEPT
-A INPUT -i lo -jACCEPT
-A INPUT -p tcp -mstate –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -jACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 8080-j ACCEPT
-A INPUT -j REJECT–reject-with icmp-host-prohibited
-A FORWARD -jREJECT –reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出

备注:这里使用80和8080端口为例。***部分一般添加到“-A INPUT -p tcp -m state –state NEW -m tcp–dport 22 -j ACCEPT”行的上面或者下面,切记不要添加到最后一行,否则防火墙重启后不生效。
systemctlrestart iptables.service #最后重启防火墙使配置生效
systemctlenable iptables.service #设置防火墙开机启动

十二月 19th, 2016

CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下

1、直接关闭防火墙

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

2、设置 iptables service

yum -y install iptables-services

如果要修改防火墙配置,如增加防火墙端口3306

vi /etc/sysconfig/iptables

增加规则

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

保存退出后

systemctl restart iptables.service #重启防火墙使配置生效

systemctl enable iptables.service #设置防火墙开机启动

最后重启系统使设置生效即可。

 

原文链接:http://www.cnblogs.com/silent2012/archive/2015/07/28/4682770.html

九月 16th, 2016

对于cpanel安装完成后,但是WHM/cpanel却无法登陆.检查这个问题,有以下三个思路:

<1>cpanel是否正常运行中.

#service cpanel status  ==>查看cpanel的状态.

若为stop,则重新启动下即可!

#service cpanel start/restart  ==>启动/重启

 

<2>若cpanel正常启动中,仍然存在无法登陆,则检查cpanel是否授权.

cpanel授权查看链接: http://verify.cpanel.net/index.cgi?

输入cpanel安装时确认的公网IP.

即可查看到cpanel授权情况和到期时间等信息.

 

<3>第三步,则需要检查端口,往往WHM/cpanel无法登陆均由此问题导致.

WHM/cpanel登陆需要开启2086 2087 2082 2083 这四个端口

可以先做以下测试:

#service iptables stop ==>关闭防火墙

然后测试是否可以正常登陆WHM/cpanel.若正常登陆,则检查iptables是否开启相应的端口.

 

端口添加方法:

vi /etc/sysconfig/iptables

%e5%9b%be%e7%89%871

保存退出

 

重启iptables生效.

#service iptables restart

 

九月 14th, 2016

很多时候,明明cpanel安装没有问题且服务运行也是正常.检查cpanel的授权情况也是正常的.但是WHM/cpanel均无法登陆呢?

这是我们可以尝试关闭防火墙测试下,service iptables stop.
往往这时候你会发现可以正常登陆WHM/cpanel 面板了.这就是端口未开启的原因导致的.

那接下了如何在防火墙开启的状态下,能够登陆WHM/cpanel呢?
如下操作:
vi /etc/sysconfig/iptables

如上添加 2086 2087 2082 2083 WHM/cpanel的端口
:wq  保存退出

然后重启iptables : service iptables restart

这样你会发现,就可以在iptables 开启的情况下能够登陆WHM/cpanel了.

六月 20th, 2016

ping是一个通信协议,是ip协议的一部分,tcp/ip 协议的一部分。利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障。应用格式为:Ping IP地址。但服务启用ping有时候会造成很多麻烦。

因此有时候根据需要(如防止攻击),Linux服务器管理员可限制服务器禁止其它用户Ping。同时又保证Linux服务器又可以Ping其它服务器.

下面介绍几种linux服务器下禁止ping的方法:

 

<1>临时的禁ping方法:

以下2种方式都是临时有效,重启服务器设置将失效.

 

首先登陆服务器终端以下执行:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

或者

sysctl -w net.ipv4.icmp_echo_ignore_all=1

这样就可以禁ping了;

 

如果想恢复ping可以执行以下命令:

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

或者

sysctl -w net.ipv4.icmp_echo_ignore_all=0

 

以上修改后,均可以通过查看以下文件来查看设置

vi /proc/sys/net/ipv4/icmp_echo_ignore_all

但是,该文件不能直接修改!

 

<2>永久禁ping方法

若想永久实现禁ping,可以修改/etc/sysctl.conf文件,如下:

vi /etc/sysctl.conf

net.ipv4.icmp_echo_ignore_all = 1   //默认设置为0.

 

以上操作,还是有前提的,若主机本身自带防火墙iptables中INPUT、OUTPUT默认策略为ACCEPT,那么主机默认是允许ping.则可以直接做以上修改,即可起到临时或永久禁ping效果.

若iptables中INPUT、OUTPUT默认策略均为DROP时,那么主机本身默认已经禁ping,则无需做以上修改了.

同样,若需要开启ping,则需要添加相应的策略.

如下:

若iptables中INPUT、OUTPUT均为DROP话,则需要添加:

iptables -A INPUT -p icmp –icmp-type echo-request -j ACCEPT

iptables -A OUTPUT -p icmp –icmp-type echo-reply -j ACCEPT