端口开放

默认防火墙是开放所有端口的,如果拿来做应用服务器,就很危险,所以要把防火墙用起来,只将需要的端口开放,ubuntu用的是iptables防火墙。

iptables处理流程

iptables 由多个 table 组成,每个 table 分多个 chain ,每个 chain 分多个 rule网络packet 按内置的顺序通过 tablechaintable 有4个, filter nat mangle raw ,默认是 filterfilterINPUT FORWARD OUTPUT 三个 chain 。可以自定义 chain ,但是这里不讲。看下图理解 网络packet 通过它们的顺序:

table 的顺序其实并不十分重要,特定的功能只能在特定的 table 中完成, chain 通常只关心 INPUT 是进入流量, output 是外出流量即可。 chainrule 的顺序是用户自己控制的。 rule 由两部分组成 matchtargetmatch 指定了匹配条件,例如: -p tcp --dport 6379 -m connlimit --connlimit-above 5target 指定了 packet 匹配时的操作,常用的有 ACCEPT REJECT DROP LOG 等,有的 target 会终止 chain 匹配后面的 rule ,有的则不会。例如目标是 ACCEPT 会终止 , LOG 则不会。

  1. 对于请求,传入Filter,首先区分是INPUT(从外部主机访问本机)、还是OUTPUT(反之)、FORWARD
  2. 查看相应的Chain规则,从上到下开始匹配,访问的端口的状态
  3. ACCEPT则放行,并退出Chain,DROP则禁止改请求访问
  4. 若访问的规则不在chain的端口规则中,则进行默认的规则处理

iptables 命令

  • 在设置默认的规则处理之前,先把22号端口SSH打开,防止禁止后断开服务器链接
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • 设置默认的端口处理规则,这里将不在Chain规则中的端口禁止其请求。也即打开防火墙
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
  • 放行所有端口访问,关闭防火墙
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
  • 查看iptables,列出所有的规则。
sudo iptables -L -v -n --line-number
  1. -v 输出详细信息
  2. -n 用IP和端口而不是主机名和服务名
  3. --line-number 列出了 rule 对应的编号,用于插入、修改、删除 rule
Chain INPUT (policy DROP 4 packets, 941 bytes)
num pkts bytes target prot opt in out source destination
1 2042 109K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:6379
5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5000
  • 清空iptables,重置规则
sudo iptables -F
  • 保存和恢复iptables
sudo iptables-save > iptables.cfg 保存
sudo iptables-restore < iptables.cfg 恢复
  • 增删改iptables规则
  1. -Achain 的尾部添加 rule
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT
  1. -I 在首部或者指定位置前添加 rule

iptables -I INPUT -p tcp --dport 6378 -j DROP 在链首插入

  1. -R 替换指定的 `rule```

iptables -R INPUT 3 -p tcp --dport 22 -j DROP 发现1中 222端口 写错了,要改成 22端口3rulenum

  1. -D 删除 rule
sudo iptables -D INPUT -p tcp --dport 22 -j DROP
sudo iptables -D INPUT 3

删除第三(num)条规则,对应的numsudo iptables -L -v -n --line-number中查看

相应端口对应功能

端口号 功能
22 SSH
3306 Mysql
6379 Redis
5000 Flask
  • 查看详细指令规则
sudo man iptables

PING命令无法通行问题

ping的运作原理是向目标主机传出一个ICMP echo@要求数据包,并等待接收echo回应数据包。

因此iptables需要对icmp规则进行设置,允许相应的ICMP数据包通行,则可以ping通相应的主机

  • 允许本机ping其他机器的设置(需要root权限)
sudo su # 切换root权限
sudo iptables -A INPUT -p icmp --icmp 0 -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp 0 -j ACCEPT sudo iptables -A INPUT -p icmp --icmp 8 -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp 8 -j ACCEPT

0:回显应答,表示回显自己对别人的请求 8:回显请求,表示回显别人对自己的请求

本机ping外机时,通过output icmp 0,会回显自己对别人的请求 , 当处理完毕后,外机将数据返回, 通过 input icmp 8回显返回的数据

  • ping 域名

ping www.baidu.com 的流程是,首先主机发出 icmp 请求,,对于www.baidu.com 进行DNS转换,将域名转换成IP地址

DNS协议运行在UDP协议之上,使用端口号53,因此在此之前iptables还需要先对53号端口放行

sudo iptables -A INPUT -p udp --sport 53 -j ACCEPT
sudo iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

保存iptables设置及重启自动恢复

 iptables设定的规则,掉电重启会清空。若需要保存,最好是使用iptables-save/restore配合重定向,示例如下( 需要切换到root ):

iptables-save > /etc/network/iptables-config
iptables-restore < /etc/network/iptables-config

最后编辑/etc/network/interfaces文件,在最后插入

pre-up iptables-restore < /etc/network/iptables-config

重启计算机以后,会自动重启恢复防火墙规则

参考资料:

https://zzyongx.github.io/blogs/iptables.html

Ubuntu系统iptables安全防护整改计划的更多相关文章

  1. Ubuntu系统iptables规则的查看和清除

    系统不支持service iptables restart,service iptables status,如何查看与清除iptable的规则呢? 一 iptables查看基本语法 iptables ...

  2. 感悟:搞了整整一天,拯救一个Ubuntu系统

    最开始,我在windows平台上,准备打开计算机组成原理的实验工程,突然来了一个想法:每次要用windows的时候,都要切换系统(win8以上的系统必须在关闭快速开机的状态下才能正常在Linux平台下 ...

  3. windows10开启内置ubuntu系统,使用xshell连接

    windows安装配置ubuntu系统内置子系统 官方文档:https://docs.microsoft.com/zh-cn/windows/wsl/about https://www.jianshu ...

  4. Linux(Ubuntu)系统下使用crontab定期执行任务

    安装cron(Ubuntu系统自带) apt-get install cron 开启crontab日志 默认情况下的日志是没有开启的,我们需要找到 /etc/rsyslog.d/50-default. ...

  5. 解决Ubuntu系统下 mysql 远程连接失败的问题 ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xx.xx' (110)

    如果远程连不上mysql.cnf 里面也修改了:bind注销掉了127.0.0.1 等所有的 但是telnet xxx.xxx.xx.xx 3306 端口 不通:那么 就是防火墙的问题了 1.修改Ub ...

  6. Ubuntu系统---安装“搜狗拼音法”导致桌面打不开

    Ubuntu系统---安装“搜狗拼音法”导致桌面打不开 ubuntu系统中文版,安装完后,自带中文输入法.中文用着好好的,用一段时间后,就会莫名的出现,切换不过来,中文输入不好用了.只是简单想装一个搜 ...

  7. ubuntu系统下如何修改host

    Ubuntu系统的Hosts只需修改/etc/hosts文件,在目录中还有一个hosts.conf文件,刚开始还以为只需要修改这个就可以了,结果发现是需要修改hosts.修改完之后要重启网络.具体过程 ...

  8. 如何查看当前Ubuntu系统的版本

    如何查看当前Ubuntu系统的版本 说来也惭愧,用Ubuntu差不多快1个月了,双系统是让朋友安的,只知道自己使用的是什么12版本的,具体怎么看还不知道,下面写一下查看当前Linux系统的版本的方法 ...

  9. ubuntu系统虚拟机下共享文件夹

    一般情况 1.安装: sudo apt-get install open-vm-dkms     2.挂载: sudo mount -t vmhgfs .host:/ /mnt/hgfs 用以上命令安 ...

随机推荐

  1. 几个i的幂的累加公式1^2+2^2+3^2 2~5

    1^2+2^2+3^2+--+n^2=n(n+1)(2n+1)/6 1^3+2^3+3^3+...+n^3=(1+2+3+...+n)^2 =[n(n+1)/2]^2 1^4+2^4+3^4+--+n ...

  2. 【洛谷】P4555 [国家集训队]最长双回文串

    P4555 [国家集训队]最长双回文串 题源:https://www.luogu.com.cn/problem/P4555 原理:Manacher 还真比KMP好理解 解决最长回文串问题 转化为长度为 ...

  3. Jmeter监控平台搭建:JMeter+InfluxDB+Grafana

    背景 平时一般用Jmeter的Gui模式,添加对应的插件,查看每秒线程数.TPS.响应时间等曲线,其实高并发是不建议这么看的. 解决方案 可以搭配InfluxDB+Grafana工具,使Jmeter异 ...

  4. css兼容问题集锦

    BEGIN; 1.文本框很大,导致里面的内容不居中.以及内容为数字时,不支持text-indent属性 解:line-height: K px; (值为文本框的height值). 2.文本框有背景图片 ...

  5. HTML续集

    计算机中PC:电脑 移动端:智能手机/智能电脑 html:超文本标记语言 图片标签<img src=" "> 图片的格式类型都有哪些? jpg,peg,gif(动图) ...

  6. 接口测试框架实战(一) | Requests 与接口请求构造

    1080×388 33.4 KB Requests 是一个优雅而简单的 Python HTTP 库,其实 Python 内置了用于访问网络的资源模块,比如urllib,但是它远不如 Requests ...

  7. 一文读懂原子操作、内存屏障、锁(偏向锁、轻量级锁、重量级锁、自旋锁)、Disruptor、Go Context之上半部分

    我不想卷,我是被逼的 在做了几年前端之后,发现互联网行情比想象的差,不如赶紧学点后端知识,被裁之后也可接个私活不至于饿死.学习两周Go,如盲人摸象般不知重点,那么重点谁知道呢?肯定是使用Go的后端工程 ...

  8. 有意思的CVE-2022-0337复现

    前言 前两天在刷tw,看到了个比较有意思的一个CVE漏洞,价值奖励是10000美刀,比较好奇的是价值10000美刀的漏洞是什么样子的,漏洞利用就是需要在浏览器中进行用户交互才能触发该漏洞,但由于 Wi ...

  9. XCTF练习题---CRYPTO---wtc_rsa_bbq

    XCTF练习题---CRYPTO---wtc_rsa_bbq flag:flag{how_d0_you_7urn_this_0n?} 解题步骤: 1.观察题目,下载附件 2.下载后是一个文件,不清楚格 ...

  10. python数据可视化-matplotlib入门(5)-饼图和堆叠图

    饼图常用于统计学模块,画饼图用到的方法为:pie( ) 一.pie()函数用来绘制饼图 pie(x, explode=None, labels=None, colors=None, autopct=N ...