(二)防火墙配置

一、主要流程

  1. 首先查看当前系统的所有iptables规则:sudo iptables –L
  2. 查看每个链的默认规则:sudo iptables –S
  3. 如果iptables里面已经有规则了,想取消并重新配置的话,可以清空:sudo iptables –F
    “-F”不会清空默认策略。为了防止ssh被阻断,可以先将INPUTOUTPU恢复到默认的ACCEPT粗略:
sudo iptables –P INPUT ACCEPT
sudo iptables –P OUTPUT ACCEPT
sudo iptables –F

在配置好允许SSH连接后,再讲INPUTOUTPUT链的默认规则改为DROP即可。

  1. 创建自己的iptables规则
    由于INPUT链会处理所有连接到服务器的入站数据包,因此我们所有的操作都与INPUT链油管。现在先来配置服务器允许SSH连接:
    sudo iptables –A INPUT –m conntrack --ctstate ESTABLISHED,RELATED –j ACCEPT
    -A INPUT:将这条规则追加到INPUT链的最后
    -m conntrackiptables除了自己的核心功能外,还有使用的扩展和模块,这个参数表明添加conntrack模块提供的能力(可以根据先前的连接来确定数据包之间的关系)。
    -ctstate:该参数为conntrack模块提供,它可以确定如何用现在的数据包去匹配先前获得的数据包。ESTABLISHED值将自动允许现有连接的数据包,RELATED值将允许已建立连接的相关数据包。(这样就与SSH会话特性相匹配上了)
    -j ACCEPT:指定匹配的数据包的目标。表示接受和允许符合标准的上述数据包通过。
  2. 配置后可以看一下规则:
    sudo iptables –L
  3. 接受其他必要连接
    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    sudo iptables –A INPUT –p tcp --dport 80 –j ACCEPT
    sudo iptables –A INPUT –p tcp --dport 3306 –j ACCEPT

为保证我们的VPS能够正常运行,我们需要添加一条允许规则。通常,计算机上的服务都会发送网络数据包以保持彼此之间的通信。这种通信会利用到一个名叫lookback的伪网卡将流量引导回自己。因此,我们还需要为lookback网卡添加一条允许规则。
sudo iptables –I INPUT 1 –i lo –j ACCEPT
7 实时drop规则
前面讲的内容都是基于一个前提假设的,但事先我们需要先把防火墙的两种常用模式说明一下。一种是明确定义允许通过防火墙的规则,不匹配的都丢弃。另一种是明确定义拒绝通过防火墙的规则,其余的都允许。我们采用的是第一种方式,这样匹配起来相对简单,规则也较少,也更加安全。
前面我们已经为INPUT链接定义了一些允许规则,但默认INPUT链是允许所有包,所以我们现在需要将INPUT链的默认规则更改为“DROP”即丢弃:
sudo iptables –P INPUT DROP默认accept才能通

  1. 查看和保存配置
    sudo iptables –L --line-numbers
    虽然iptables执行这些命令后会立即生效,但生效过程是临时的,系统在重启之后便会丢失。因此,我们还需要将这些配置添加到配置文件当中,以保证系统在下次重启后会自动载入我们的规则。
    sudo apt-get update
    sudo apt-get install iptables-persistent
    总结:
    设置防火墙规则了,端口也被监听了,但也有可能不起效果。因为端口开放语句不能在prohibited的后面。
    图片.png

    如果返回404/403错误,说明是nginx的配置等因素。
    如果显示无法连接,通常是防火墙或nginx未启动的因素。
    ubuntu中不存在/etc/sysconf/iptables文件,所以无法使用service启动iptables,需要用modprobe命令:sudo modprobe ip_tables
    sudo iptables –L –n --line-number:显示端口开放情况(filter表)

二、这些看看命令就好,可能有些不正确

Ubuntu 14.04配置iptables防火墙:

Ubuntu默认安装时没有开启任何防火墙的。
当使用service iptables status时发现提示:iptables:unrecognized service。意思为无法识别的服务。

(二)防火墙配置_第1张图片
图片.png

1.查看系统是否安装防火墙
sudo whereis iptables
图片.png

出现上述提示,表示已经安装 iptables,如果没有安装,则可以通过以下命令安装:
sudo apt-get install iptables
2.查看防火墙配置信息
sudo iptables –L
(二)防火墙配置_第2张图片
图片.png

3.新建规则文件
mkdir /etc/iptables #先新建目录,本身无此目录
vi /ect/iptables/rules.v4
或: mkdir /etc/iptables & vi /etc/iptables/rules.v4
添加以下内容:
(二)防火墙配置_第3张图片
图片.png

4.使防火墙生效:
iptables-restore < /etc/iptables/rules.v4
5.创建文件,添加以下内容,使防火墙开机启动
vi /etc/network/if-pre-up.d/iptablesiptablesj
#!/bin/bash
iptables-restore < /etc/iptables/rules.v4
6.添加执行权限:
chmod +x /etc/netwoek/if-pre-up.d/iptables
7.查看规则是否生效:
iptables –L –n
启动防火墙:
ubuntu中不存在 /etc/init.d/iptables文件,所以无法使用 service等命令来启动 iptables,需要用 modprobe命令。
sudo modprobe ip_tables
关闭防火墙:
ubuntu并没有关闭命令,所以要通过变通方法解决防火墙。
(二)防火墙配置_第4张图片
图片.png

(在这过程中,xshell突然连接不上远程虚拟主机。然后在阿里云界面 云服务器ECS 实例里面的远程连接,登录服务器账号进行连接即可。然后xshell就可以连接了。原始密码是288320,改后密码:556699。也有可能(就是)是因为22端口没开,在阿里云重启一下服务器就可以了。)

建立文件 /etc/sysconfig/iptables
输入最下页配置内容。
执行:sudo service iptables start;显示:iptables:unrecognized service
原因一:执行命令对应的路径不对
原因二:ubuntu中不存在/etc/sysconf/iptables文件,所以无法使用service启动iptables,需要用modprobe命令:sudo modprobe ip_tables

ubuntuiptables的配置文件放在了ufw里面,而不是在/etc/sysconfig/iptables里面(有说新安装的防火墙是默认被禁掉的,所以也没有配置过任何策略-错);更改或添加配置,直接用iptables命令修改,然后sudo iptables-save即可保存并查看配置文件信息。有说改动的信息被保存在了/etc/sysconfigiptables文件中(并没有,不知道保存到哪了)。

(二)防火墙配置_第5张图片
图片.png

iptables相关命令:

(删除了上面创建的所有文件和文件夹,重启服务器,查看iptables时,出现原始界面)
iptables –F –n --line-number

图片.png

查看每个表的默认规则: iptables –S
图片.png

  1. 添加filter
    iptables (–t filter)–A INPUT –p tcp –m tcp --dport 21 –j ACCEPT // 开放21端口
  2. 添加nat
    iptables –t nat –A POSTROUTING –s 192.168.10.0/24 –j MASQUERADE
    将源地址为192.168.10.0/24的数据包进行地址伪装
  3. –A默认插到尾部,-I插入到指定位置;A:append;I:insert
    iptables –I INPUT 3 –p tcp –m tcp –dport 21 –j ACCEPT
  4. filterINPUT链第3条规则的动作改为DROP;R:replace
    iptables –R INPUT 3 –j DROP
  5. 删除iptables规则
    iptables –D INPUT 3 //删除input的第三条规则(filter表)
    iptables –t nat –D POSTROUTING 1 //删除natpostrouting第一条规则
    iptables –F INPUT //清空filterINPUT所有规则
    iptables –F //清空所有规则
    iptables –t nat –F POSTROUTING //清空natPOSTROUTING所有规则
  6. 查看端口开放情况:sudo lsof –i
    sudo iptables –L –n --line-number:显示端口开放情况(filter表)
    sudo iptables –L –n --line-number |grep 80:查看特定端口是否开放(filter表)
    sudo netstat –an|grep 80:查看80端口是否在被监听/sudo netstat -anp
    sudo lsof –i:80:查看80端口占用情况
    sudo iptables –t nat –vnl POSTROUTING –line-number 查看nat
  7. 设置默认规则:sudo iptables –P INPUT DROP //设置filterINPUT默认规则为DROP

你可能感兴趣的:((二)防火墙配置)