【linux】Ubuntu上的防火墙iptables的基本配置与使用
2015-06-01 18:47
706 查看
关于防火墙firewall,从字面上理解,就是防止非法的数据包进入的一道墙,合法的数据从门里进来,不合法的数据被墙挡在外面。而到底哪些是合法哪些是不合法的数据呢,这个是由墙里面的设备或者人给的配置决定的。如果是人为设置的,配置得好,自然好,配置得不好,等于防火墙是个摆设。对于我们在进行学习时,当然防火墙可以关掉,如在linux下使用telnet部署web这篇文章中的做法,以便于我们的数据包可以自由出入。但互联网中到处存在着不良的数据,所以学会配置它还是有一定的好处的。
以linux下的防火墙iptables为例。
(2)按INPUT,OUTPUT,FORWARD三个类查看访问规则 iptables -S
INPUT是从外头进入本机的数据包
OUTPUT是从本机出去的数据包
FORWARD是经过本机的数据包,用在路由器等中转设备上,对于终端设备,不常用。
iptables -P INPUT ACCEPT/DROP
iptables -P OUTPUT ACCEPT/DROP
iptables -P FORWARD ACCEPT/DROP
缺省规则是给予设置有很大的方便,比如说,你要设置只允许别人访问本机的http服务,那么可以设置INPUT和OUTPUT缺省为DROP,拒绝接收,设置一条从外部通过http访问的规则为ACCEPT即可。反过来,如果你要设置除了telnet服务,其他任何服务都允许访问,那么可以设置INPUT和OUTPUT缺省为ACCEPT,设置一条从外部通过telnet访问的规则为DROP即可。
iptables -A INPUT -p tcp --dport 23 -j DROP
-A代表append添加规则,后面带INPUT代表这种数据包,-p代表使用的协议为tcp,--dport代表端口为23,-j代表使用DROP还是ACCEPT,DROP为拒绝
这句话的意思为拒绝tcp协议端口为23的数据包进入,而默认时telnet使用tcp23端口,所以此时其他机器telnet访问本机时被拒绝,这里例子里使用本机访问本机。
(2)添加OUTPUT链的规则,格式为
iptables -A OUTPUT -p tcp --dport 80 -j DROP
-A代表append添加规则,后面带OUTPUT代表这种数据包,-p代表使用的协议为tcp,--dport代表端口为80,-j代表使用DROP还是ACCEPT,DROP为拒绝
这句话的意思为拒绝tcp协议端口为80的数据包进入,而通常http使用的端口为80,所以此时本机访问http服务80时被拒绝。
(3)FORWARD和前两种方式一样,只不过是经过的数据包。
当然以上缺省规则为INPUT/OUTPUT/FORWARD为ACCEPT时。
(4)自定义链的规则
存入文件iptables .up.rules中了,当电脑重启时再使用命令iptables-restore <存储文件名
如果觉得麻烦当然也可以在配置文件中加入sudo gedit /etc/network/interfaces
iptables -F
运行此后,所有的规则链(包括自定义链和三种链)都被清空
(2)清除预设表filter中使用者自定链(即除了INPUT/OUTPUT/FORWARD链)中的规则
iptables -X
(3)清除单条规则和前面第三节的添加规则相同,这里把-A添加改为-D即可删除已经设置了的规则
iptables -D OUTPUT -p tcp --dport 80 -j DROP
以linux下的防火墙iptables为例。
1.查看iptables配置
(1)按列表查看访问规则 iptables -L(2)按INPUT,OUTPUT,FORWARD三个类查看访问规则 iptables -S
2.设置iptables的缺省规则
未设置其他的规则时的INPUT/OUTPUT/FORWARD数据包设置为ACCEPT是允许接收,设置为DROP是拒绝接收。INPUT是从外头进入本机的数据包
OUTPUT是从本机出去的数据包
FORWARD是经过本机的数据包,用在路由器等中转设备上,对于终端设备,不常用。
iptables -P INPUT ACCEPT/DROP
iptables -P OUTPUT ACCEPT/DROP
iptables -P FORWARD ACCEPT/DROP
缺省规则是给予设置有很大的方便,比如说,你要设置只允许别人访问本机的http服务,那么可以设置INPUT和OUTPUT缺省为DROP,拒绝接收,设置一条从外部通过http访问的规则为ACCEPT即可。反过来,如果你要设置除了telnet服务,其他任何服务都允许访问,那么可以设置INPUT和OUTPUT缺省为ACCEPT,设置一条从外部通过telnet访问的规则为DROP即可。
3.添加iptables的规则
(1)添加INPUT链的规则,格式为iptables -A INPUT -p tcp --dport 23 -j DROP
-A代表append添加规则,后面带INPUT代表这种数据包,-p代表使用的协议为tcp,--dport代表端口为23,-j代表使用DROP还是ACCEPT,DROP为拒绝
这句话的意思为拒绝tcp协议端口为23的数据包进入,而默认时telnet使用tcp23端口,所以此时其他机器telnet访问本机时被拒绝,这里例子里使用本机访问本机。
(2)添加OUTPUT链的规则,格式为
iptables -A OUTPUT -p tcp --dport 80 -j DROP
-A代表append添加规则,后面带OUTPUT代表这种数据包,-p代表使用的协议为tcp,--dport代表端口为80,-j代表使用DROP还是ACCEPT,DROP为拒绝
这句话的意思为拒绝tcp协议端口为80的数据包进入,而通常http使用的端口为80,所以此时本机访问http服务80时被拒绝。
(3)FORWARD和前两种方式一样,只不过是经过的数据包。
当然以上缺省规则为INPUT/OUTPUT/FORWARD为ACCEPT时。
(4)自定义链的规则
4.存储与恢复iptables的规则
因为上面设置规则后,重启则规则失效,所以要将其存储起来。使用命令 iptables-save >存储文件名存入文件iptables .up.rules中了,当电脑重启时再使用命令iptables-restore <存储文件名
如果觉得麻烦当然也可以在配置文件中加入sudo gedit /etc/network/interfaces
5.清除iptables的规则
(1)清除预设表中的所有规则链的规则iptables -F
运行此后,所有的规则链(包括自定义链和三种链)都被清空
(2)清除预设表filter中使用者自定链(即除了INPUT/OUTPUT/FORWARD链)中的规则
iptables -X
(3)清除单条规则和前面第三节的添加规则相同,这里把-A添加改为-D即可删除已经设置了的规则
iptables -D OUTPUT -p tcp --dport 80 -j DROP
相关文章推荐
- linux debain systemd 开机启动 nodejs 兼容原initd启动 forever 开机自启
- Linux内核编译、管理以及kickstart和引导镜像制作
- linux下 的文件解压
- linux下使用scp在服务器之间拷贝文件
- Linux 系统下文件信息的查询
- Linux系统下文件的复制和移动命令
- 你一定要知道的关于Linux文件目录操作的12个常用命令
- Linux安装ImageMagick与JMagick完成过程及配置
- linux下php的mysqli扩展安装
- linux 命令 which whereis find locate
- Linux 内核优化
- linux find命令
- linux查看外网IP
- Linux下阻塞与非阻塞IO
- Linux 命令
- Linux下局域网同步时间
- linux的常见命令
- linux线程切换问题
- Ubuntu 下计划任务使用(crontab)
- VxWorks、μClinux、μC/OS-II和eCos实时操作系统大对比