目录
1. 从Ubuntu 22.04存储库安装VirtualBox安装扩展
2.1 在虚拟机窗口菜单“setting”中设置“双向剪切板”和“双向拖拽”,如下图:
linux下IPTABLES配置详解 INPUT OUTPUT 为DORP的处理方式
sudo时出现unable to resolve host 的解决方法
SELinux、Netfilter、iptables、firewall和UFW五者关系
系统信息命令
# uname -a // # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue // # 查看操作系统版本
# cat /proc/cpuinfo // # 查看CPU信息
# hostname // # 查看计算机名
# lspci -tv // # 列出所有PCI设备
# lsusb -tv // # 列出所有USB设备
# lsmod // # 列出加载的内核模块
# env // # 查看环境变量资源
# free -m // # 查看内存使用量和交换区使用量
# df -h // # 查看各分区使用情况
# du -sh // # 查看指定目录的大小
# grep MemTotal /proc/meminfo // # 查看内存总量
# grep MemFree /proc/meminfo // # 查看空闲内存量
# uptime // # 查看系统运行时间、用户数、负载
# cat /proc/loadavg // # 查看系统负载磁盘和分区
# mount | column -t // # 查看挂接的分区状态
# fdisk -l // # 查看所有分区
# swapon -s // # 查看所有交换分区
# hdparm -i /dev/hda // # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE // # 查看启动时IDE设备检测状况网络
# ifconfig // # 查看所有网络接口的属性
# iptables -L // # 查看防火墙设置
# route -n // # 查看路由表
# netstat -lntp // # 查看所有监听端口
# netstat -antp // # 查看所有已经建立的连接
# netstat -s // # 查看网络统计信息进程
# ps -ef // # 查看所有进程
# top // # 实时显示进程状态用户
# w // # 查看活动用户
# id // # 查看指定用户信息
# last // # 查看用户登录日志
# cut -d: -f1 /etc/passwd // # 查看系统所有用户
# cut -d: -f1 /etc/group // # 查看系统所有组
# crontab -l // # 查看当前用户的计划任务服务
# chkconfig –list // # 列出所有系统服务
# chkconfig –list | grep on // # 列出所有启动的系统服务程序
# rpm -qa // # 查看所有安装的软件包
cat /proc/cpuinfo : // 查看CPU相关参数
cat /proc/partitions :// 查看硬盘和分区
cat /proc/meminfo : // 查看内存信息
cat /proc/version : // 查看版本,类似uname -r
cat /proc/ioports : // 查看设备io端口
cat /proc/interrupts :// 查看中断
cat /proc/pci : // 查看pci设备的信息
cat /proc/swaps : // 查看所有swap分区的信息
hping3攻击与snort攻击检测实验
1、Land攻击部署和检测
在网关linux系统上关闭地址欺骗攻击保护:
- $sudo vim /etc/sysctl.conf
修改为:(取消以下每行前的注释“#”)
- net.ipv4.conf.default.rp_filter=0
- net.ipv4.conf.all.rp_filter=0
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.accept_redirects=1
- net.ipv4.conf.all.send.-_redirects=1
重启网关:reboot
使网关将能够转发伪造的数据包。
在网关使用snort进行land攻击检测:
修改/etc/snort/snort.conf
使用下面命令(注意中间的空格)注释掉所有include语句:
$sudo sed -i 's/include \$RULE_PATH/#include \$RULE_PATH/' /etc/snort/snort.conf
然后,sudo vim /etc/snort/snort.conf 修改snort.conf
- 1、取消注释包含local.rules的命令行
- 2、ipvar HOME_NET 10.0.0.10/8
- 3、#ipvar EXTERNAL_NET any
- 4、ipvar EXTERNAL_NET !$HOME_NET
sudo vim /etc/snort/rules/local.rules
#添加检测land攻击规则
- alert tcp HOME_NET any -> HOME_NET any 80 (msg:"land attack";sid:1000005;rev:1)
#启动snort
- $sudo snort -A console -c /etc/snort/snort.conf -q -i enp0s3
#enp0s3为网关的客户端网卡接口
#在客户机用hping3对192.168.0.100:80发动land攻击:
- $sudo hping3 -S -p 80 10.0.0.10 -a 10.0.0.10 -s 80 --keep --faster
2、syn flood洪水攻击的部署和检测
在客户机上执行hping3攻击命令:
$sudo hping3 -c 1000 -S -p 80 --flood --rand-source 10.0.0.10
- -c 1000=发送的数据包的数量
- -p 80=目的地端口。这里可以使用其它开放端口
- --flood=尽可能快的发送数据包。洪水攻击模式。
- --rand-source=使用随机性的源头IP地址。
网关上snort检测:
添加/etc/snort/rules/local.rules检测规则
$sudo vim /etc/snort/rules/local.rules
- alert tcp any any -> $HOME_NET any (msg:"synflood";flags:S;threshold:type both,track by_dst,count 20,seconds 60;classtype:misc-attack;sid:1000006;rev:1;)
#启动snort
- $sudo snort -A console -c /etc/snort/snort.conf -q -i enp0s3
3、Smurf 攻击的部署和检测
默认情况下,Ubuntu不会响应广播ping。要启用针对网关的广播ping,你需要通过以下任一方法更改网关的设置:
#启用对广播请求的临时响应
- $sudo echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
- $sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts 0
或者,你可以通过添加以下命令行来修改/etc/sysctl.conf:
- net.ipv4.icmp_echo_ignore_broadcasts=0
- #你可能需要重新启动节点。
攻击实现:
sudo hping3 --icmp --icmptype 8 --icmpcode 0 192.168.0.255 -a 10.0.0.10 --flood
- --icmp:icmp包类型
- --icmptype 8:回应请求
- --icmpcode 0:icmp代码
- 192.168.0.255:攻击子网的广播地址;
- -a 10.0.0.10:被攻击者的IP;
- -c 10:仅发送攻击报文10个;
- --fast:alias for -i u10000(10 packets for second)
- --faster:alias for - u1000(100 packets for second)
- --flood:sent packets as fast as possible. Don't show replies
网关上用snort检测:
(1)建立检测规则:
$sudo vim /etc/snort/rules/local.rules
alert icmp $HOME_NET any -> $EXTERNAL_NET any (msg:"ICMP Smurf Attack"; itype:8; classtype:attempted-dos; sid:10000007; rev:1;)
(2)启动snort
$sudo snort -A console -c /etc/snort/snort.conf -q -i enp0s3
4、UDP 洪水攻击的部署和检测
攻击实现:
$sudo hping3 --udp -p 53 --flood --rand-source 10.0.0.10
网关上用snort检测:
(1)建立检测规则:
$sudo vim /etc/snort/rules/local.rules
alert udp EXTERNAL_NET any -> HOME_NET 53 (msg:"UDP Flood Attack!"; classtype:attempted-dos; threshold: type both, track by_dst, count 10, second 60 ; sid:10000008; rev:1;)
(2)启动snort
$sudo snort -A console -c /etc/snort/snort.conf -q -i enp0s3
5、端口扫描的部署与检测
用 hping3部署从客户端到服务器的端口扫描。提示:在此攻击中,你需要将网关的 IP 地址锁定在客户端,即 192.168.0.100。
- TCP ACK 扫描
- TCP FIN 扫描
- TCP Xmas 扫描
- TCP Null 扫描(你可能会使用 nmap)。
- UDP 扫描
实现 snort 规则以检测上述扫描。特殊阈值检测要求:你需要在 60 秒的时间间隔内记录此攻击的每 20 个事件。
TCP ACK扫描:
-
(1)#网关 $sudo vim /etc/snort/rules/local.rules,添加以下规则
-
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"ACK PortScan!"; flags:A; threshold:type both,track by_dst,count 20,seconds 60; sid:10000009; rev:1;)
-
-
(2)启动snort
$sudo snort -A console -c /etc/snort/snort.conf -q -i enp0s3
-
(3)#客户端扫描:
-
$sudo hping3 10.0.0.10 --scan 1-1024 -A
-
检测结果:
TCP FIN扫描:
-
(1)#网关 $sudo vim /etc/snort/rules/local.rules,添加以下规则
-
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"FIN PortScan!"; flags:F; threshold:type both,track by_dst,count 20,seconds 60; sid:10000010; rev:1;)
-
-
(2)启动snort
$sudo snort -A console -c /etc/snort/snort.conf -q -i enp0s3
-
(3)#客户端扫描:
-
$sudo hping3 10.0.0.10 --scan 1-1024 -F
-
检测结果:
TCP Xmas扫描:
-
(1)#网关 $sudo vim /etc/snort/rules/local.rules,添加以下规则
-
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Xmas PortScan!"; flags:E; threshold:type both,track by_dst,count 20,seconds 60; sid:10000011; rev:1;)
-
-
(2)启动snort
$sudo snort -A console -c /etc/snort/snort.conf -q -i enp0s3
-
(3)#客户端扫描:
-
$sudo hping3 10.0.0.10 --scan 1-1024 -X
-
检测结果:
TCP Null扫描:
-
(1)#网关 $sudo vim /etc/snort/rules/local.rules,添加以下规则
-
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Nmap Null PortScan!"; flags:0; threshold:type both,track by_dst,count 20,seconds 60; sid:10000012; rev:1;)
-
-
(2)启动snort
$sudo snort -A console -c /etc/snort/snort.conf -q -i enp0s3
-
(3)#客户端扫描:
-
$sudo nmap -sN 10.0.0.10
-
检测结果:
U DP扫描:
-
(1)#网关 $sudo vim /etc/snort/rules/local.rules,添加以下规则
-
alert udp $EXTERNAL_NET any -> $HOME_NET any (msg:"Nmap Udp PortScan!"; threshold:type both,track by_dst,count 20,seconds 60; sid:10000013; rev:1;)
-
-
(2)启动snort
$sudo snort -A console -c /etc/snort/snort.conf -q -i enp0s3
-
(3)#客户端扫描:
-
$sudo nmap -sU 10.0.0.10
-
检测结果:
2022年6月20日于恒景花园
设置本地域名解析
sudo vim /etc/hosts
在网关上安装snort
sudo apt update #更新系统
sudo apt upgrade
sudo apt install snort* -y #开始安装
sudo apt install -f
sudo apt autoremove
reboot
sudo service snort status #查看snort状态
或 systemctl status snort
sudo snort --v #查看版本
在客户机上安装hping3
sudo apt install hping3
查找dpkg-reconfigure
whereis dpkg-reconfigure
2022年6月19日
linux下IPTABLES配置详解 INPUT OUTPUT 为DORP的处理方式
网关上通过iptables设置ssh端口转发
安装shutter截图工具(Ubuntu22.04)
在终端窗口运行安装命令:
sudo apt-get install shutter
设置桌面启动快捷键:(打开“系统设置”,在其中按下图操作)
快捷键: Ctrl+Alt+a
命 令:/usr/bin/shutter -s #鼠标选择截图
2022年6月17日
Ubuntu全盘备份与恢复(我在用)https://www.shuzhiduo.com/A/6pdDgE4q5w/
Ubuntu 22.04换国内源 清华源 阿里源 中科大源 163源
ubuntu开机卡在/dev/nvme0n1p2: clean 进入不了图形界面 - 20.1117
ubuntu安装系统分区方案:
sudo时出现unable to resolve host 的解决方法
Ubuntu环境, 假设这台机器名字叫abc(机器的hostname), 每次执行sudo 就出现这个警告讯息:
sudo: unable to resolve host abc
虽然sudo 还是可以正常执行, 但是警告讯息每次都出来,而这只是机器在反解上的问题, 所以就直接从/etc/hosts 设定, 让abc(hostname) 可以解回127.0.0.1 的IP 即可.
解决方法
1. vi /etc/hosts 第一行信息如下:
127.0.0.1 localhost
2. 在127.0.0.1 localhost 后面加上主机名称(hostname) 即可, /etc/hosts 内容修改成如下:
第一种方法:直接将hostname(abc)追加到后面
127.0.0.1 localhost abc #要保证这个名字与 /etc/hostname中的主机名一致才有效
第二种方法:可以分开写
127.0.0.1 localhost
127.0.0.1 abc
这样设完后, 使用sudo 就不会再有那个提示信息了。
2022年6月15日
iptables端口转发访问ftp nat设置详解
2022年6月14日
@[toc]套接字(SOCKET):软插座、软接口
套接字(SOCKET)上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。
Ubuntu安装bind9进行dns解析
vi/vim命令大全_w3cschool
SELinux、Netfilter、iptables、firewall和UFW五者关系
一、五者是什么?
1、SELinux是美国国家安全局发布的一个强制访问控制系统
2、Netfilter是Linux 2.4.x引入的一个子系统,作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制
3、iptables是Linux下功能强大的应用层防火墙工具。
4、firewall是centos7里面新的防火墙管理命令
5、ufw是Ubuntu下的一个简易的防火墙配置工具。
二、五者关系?
1、Netfilter管网络,selinux管本地。
2、iptables是用于设置防火墙,防范来自网络的入侵和实现网络地址转发、QoS等功能,而SELinux则可以理解为是作为Linux文件权限控制(即我们知道的rwx)的补充存在的
3、ufw是自2.4版本以后的Linux内核中一个简易的防火墙配置工具,底层还是调用iptables来处理的,iptables可以灵活的定义防火墙规则, 功能非常强大。但是产生的副作用便是配置过于复杂。因此产生一个相对iptables简单很多的防火墙配置工具:ufw
4、firewall是centos7里面新的防火墙管理命令,底层还是调用iptables来处理的,主要区别是iptables服务,每次更改都意味着刷新所有旧规则并从/etc/sysconfig/iptables读取所有新规则,firewall可以在运行时更改设置,而不丢失现有连接。
5、iptables是Linux下功能强大的应用层防火墙工具, 说到iptables必然提到Netfilter,iptables是应用层的,其实质是一个定义规则的配置工具,而核心的数据包拦截和转发是Netfiler。Netfilter是Linux操作系统核心层内部的一个数据包处理模块
iptables和Netfilter关系图:
iptables与Firewall关系图:
vsftp 匿名访问设置设置-匿名访问目录
vsftpd (very secure ftpd),这软件在权限管理什么的也太安全了点,一点小细节出问题也会出现访问不了的问题。只是想架个ftp局域网传文件,一些博客里小细节和背后设计没有提到,踩了一点坑,记录一下简单的匿名ftp访问方案。
关于vsftpd的相关配置文件
用户禁止登陆列表 | /etc/vsftpd/ftpusers |
主配置文件 | /etc/vsftpd/vsftpd.conf |
vsftpd程序配置文件参数的作用:
listen=[YES|NO] | 是否以独立运行的方式监听服务。 |
listen_address=IP地址 | 设置要监听的IP地址。 |
listen_port=21 | 设置FTP服务的监听端口 21端口(ftp) 20端口(ftp-date) |
主要步骤
1. 使用包管理器安装 vsftpd 。(apt, yum, pacman等)
2. 修改配置文件 /etc/vsftpd.conf
参数 | 作用 |
anon_other_write_enable=YES | 允许匿名用户修改目录名或删除目录 |
write_enable=YES | 允许写文件 |
anon_umask=022 | 匿名用户上传文件的umask值。 |
anon_upload_enable=YES | 允许匿名用户上传文件 |
anon_mkdir_write_enable=YES | 允许匿名用户创建目录 |
anon_other_write_enable=YES | 允许匿名用户修改目录名或删除目录,个在配置文件里默认找不到 |
3. 新建匿名访问的用户和文件夹
通过 local_enable 选项能够允许ftp通过本地用户访问,登录之后会访问用户的主目录。当使用匿名用户访问时,vsftpd会将用户名为ftp的用户作为登录用户,进入ftp用户的主目录。
注意,考虑到安全问题,ftp匿名用户的主目录必须为只读,如果需要上传文件,需要在主目录下新建有写权限的文件夹。
通常会选择/var/ftp文件夹存放文件而不是用户默认的/home,因此可以修改用户的主目录位置(一般放在/var/ftp),不修改也能用。再次强调,注意主目录对ftp用户的权限必须为只读。
sudo mkdir /var/ftp # 新建用户文件夹
sudo useradd -d /var/ftp ftp # 新建用户,并指定用户home目录
# 如果ftp用户已经存在,在/etc/passwd文件里改用户目录为/var/ftp
sudo mkdir /var/ftp/pub # 新建一个用于写数据的文件夹
sudo chmod 777 /var/ftp/pub # 修改文件夹权限
4. 启动服务
systemctl start vsftpd
service vsftpd status #查看vsftpd运行状态
其它
防火墙和SELinux如果使用了需要添加响应的通过规则。
测试访问可以直接用浏览器 ftp://ip_address,linux下可以使用FileZilla。
原文链接:https://blog.csdn.net/weixin_39524425/article/details/113548489
Linux File Permission
一、Permission Mode
由此理解:“chmod”命令的由来——Change file permission Mode
首先,File Permission Mode 是存在 inode 中的信息, 一共有 12 个 bit (0与1):0 是关闭、1是打开。
其中每一个 bit 所代表的意思分别如下:
suid, sgid, sticky_bit | user_read, user_write, user_execute | group_read, group_write, group_execute | others_read, others_write, others_execute。
举例: 100111101101 (binary mode)
但在系统应用及管理上,我们一般不是采用 binary mode(二进制),而是使用 octal mode(八进位) 或 text mode(文字) 。其中的 octal mode 就是单纯将 binary 换算过来就可以了。
你可试试 linux 的 bc 命令来算一算:
$ echo "obase=8;ibase=2;100111101101" | bc
#结果:4755
二、ugo
利用 ls -l 命令,可获得每一个文件的如下信息:
file_type&permission_mode, link_count, user, group, size, modification_time, file_name
我们可以从最左边的字段看到十个字母, 第一个为: file type 其余九个为 permission mode ,又分为三组:user, gorup, others 。
对每一个使用者来说,ugo 这三组只能选其一:
* 若 uid 与 file uid 一致,则取 user 而忽略 group & others 。
* 若 uid 与 file uid 不一致,则再看 gid(s) 若与 file gid 一致。取 group 而忽略 user & others 。
* 若 uid 与 gid 与 file 都不一致,则取 others 而忽略 user & group。
注:你可在任何时候输入 id 这个命令得知你所使用的 uid 与 gid(s)
三、rwx
一旦使用者所参考的 ugo permission 能确定下来之后,接下来就来看其取的的 permission 代表的意思了。
事实上rwx 对下面两种 file type 来说是不一样的:
* 以 - 开头为 file:
r: 可读取该档的内容
w: 可修改该档的内容
x: 可执行该档(executable)并产生 process
* 以 d 开头为 directory:
r: 可读取该目录底下的内容(即列出 file 及 sub dir)
w: 可修改该目录底下的内容(即增减 file 及 sub dir)
x: 可进入该目录底下(即 access ,如门禁卡一般)
其中 directory 的 x 最不好理解:
就算你对 dir 有 rw ,若没 x 的话,那也跑不进去做事情,就好像你是自己套房的主人,却进不了公寓大门一样。
然而,当你对一个 directory 有了 rwx 权限之后,里面或许有些 file/dir 你是没有 rwx 权限的,就好比套房里放了一些不属于你的物品。但,你却可以将之仍进垃圾桶,因为你在套房:
* 你没办法打开一看究竟(没 r)
* 你没办法偷龙转凤动手脚(没 w)
* 你只能干瞪眼却无福消受(没 x)
* 可以看到所有物品(r)
* 可以搬进搬出或 DIY 物品(w)
* 你有钥匙入门(x)
四、suid, sgid, sticky bit
SUID/SGID 对 executable file 而言,会影响所产生的 process 用哪个 uid/gid:
若有设,从 file 本身的 uid/gid 继承。
若没设,从 parrent process 继承(通常是 shell)。
sticky_bit 在现代的 Linux 系统中,对 file 来说是没任何意意的;SUID 对 directory 没啥意义。
不过, SGID 对 directory 来说,会影响该目录下新建的 file/dir 的 gid :
若有设,gid 从 dir 继承(若是 new dir,其 SGID 也会继承)。
若没设,那 gid 从产生 new file/dir 的 process 继承。
至于 directory 的 sticky bit ,则起到保护文件的作用:
若没有设,使用者只要对 dir 有 w permission ,就能删除 dir 里的文件(请参考前述)。
若有设,使用者除了要有 w permsissin 之外,还需符合如下两个条件之一:
* 使用者之 uid 必须与文件所在目录一致,或:
* 使用者之 uid 必须被删文件一致。
五、umask
umask 的作用,就是在新建文件或目录时,需要取消的 permission 。
其运算法则为:
new dir: (NOT umask) AND 0777 (000,111,111,111)
new file: (NOT umask) AND 0666 (000,110,110,110)
转自:Linux File Permission _pinkoo的博客-CSDN博客
2022年6月11日于宫前
vsftp服务安装与设置
安装:
sudo apt-get install vsftpd
# 设置开机启动并启动ftp服务(其实安装后默认是:随系统自启动)
systemctl enable vsftpd
systemctl start vsftpd
启动:
#查看其运行状态
systemctl status vsftpd
#重启服务
systemctl restart vsftpd
ftp用户:(需要主动创建 非必须可用已有用户)
sudo useradd -d /home/ftp/ftp_root -m ftpadmin
sudo passwd ftpadmin
输入密码:
再次输入密码:
chmod -R 777 /home/ftp/ftp_root
修改配置文件“/etc/vsftpd.conf”:
#修改配置
sudo vim /etc/vsftpd.conf
修改配置:
listen=NO # 阻止 vsftpd 在独立模式下运行
listen_ipv6=YES # vsftpd 将监听 ipv6 而不是 IPv4,你可以根据你的网络情况设置
anonymous_enable=NO # 关闭匿名登录
local_enable=YES # 允许本地用户登录
write_enable=YES # 启用可以修改文件的 FTP 命令
local_umask=022 # 本地用户创建文件的 umask
dirmessage_enable=YES # 当用户第一次进入新目录显示提示消息
xferlog_enable=YES # 一个存有详细的上传和下载信息的日志文件
connect_from_port_20=YES # 在服务器上针对 PORT 类型的连接使用端口20(FTP 数据)
xferlog_std_format=YES # 保持标准日志文件格式
pam_service_name=vsftpd # vsftpd 将使用的 PAM 验证设备的名字
修改配置:
listen=NO # 阻止 vsftpd 在独立模式下运行
listen_ipv6=YES # vsftpd 将监听 ipv6 而不是 IPv4,你可以根据你的网络情况设置
anonymous_enable=NO # 关闭匿名登录
local_enable=YES # 允许本地用户登录
write_enable=YES # 启用可以修改文件的 FTP 命令
local_umask=022 # 本地用户创建文件的 umask
dirmessage_enable=YES # 当用户第一次进入新目录显示提示消息
xferlog_enable=YES # 一个存有详细的上传和下载信息的日志文件
connect_from_port_20=YES # 在服务器上针对 PORT 类型的连接使用端口20(FTP 数据)
xferlog_std_format=YES # 保持标准日志文件格式
pam_service_name=vsftpd # vsftpd 将使用的 PAM 验证设备的名字
最后添加:
listen=NO # 阻止 vsftpd 在独立模式下运行
listen_ipv6=YES # vsftpd 将监听 ipv6 而不是 IPv4,你可以根据你的网络情况设置
anonymous_enable=NO # 关闭匿名登录
local_enable=YES # 允许本地用户登录
write_enable=YES # 启用可以修改文件的 FTP 命令
local_umask=022 # 本地用户创建文件的 umask
dirmessage_enable=YES # 当用户第一次进入新目录显示提示消息
xferlog_enable=YES # 一个存有详细的上传和下载信息的日志文件
connect_from_port_20=YES # 在服务器上针对 PORT 类型的连接使用端口20(FTP 数据)
xferlog_std_format=YES # 保持标准日志文件格式
pam_service_name=vsftpd # vsftpd 将使用的 PAM 验证设备的名字
sudo vim/etc/vsftpd.chroot_list #输入需要登录的用户名后保存退出
ftpadmin
#重启服务systemctl start vsftpd
输入ftp localhsot测试:
vsftp之主动模式与被动模式
FTP是仅基于TCP的服务,不支持UDP。 与众不同的是FTP使用2个端口,一个数
据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端
口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20。这就是主
动与被动FTP的最大不同之处。
FTP主动模式(Active Mode):
主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到
FTP服务器的命令端口,也就是21端口。然后客户端开始 监听端口N+1,
并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口
(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
简明概括:
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,
客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,
建立一条数据链路来传送数据。
开启主动模式:
pasv_enable=no
若设置为YES,则使用PASV工作模式;若设置为NO,则使用PORT模式。默认值为YES,即使用PASV工作模式。
主动模式下:
SecureFX工具去连接ftp,客户没有允许开放端口,服务器没法与客户端相连接,关闭客户端防火墙
FTP被动模式(Passive Mode):
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于
被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,
客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024)
,并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的连接)
2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)
3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)
4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
简明概括:
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,
服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据
链路来传送数据。
开启被动模式
默认是开启的,但是要指定一个端口范围,打开vsftpd.conf文件,在后面加上
pasv_enable=yes
若设置为YES,则使用PASV工作模式;若设置为NO,则使用PORT模式。默认值为YES,即使用PASV工作模式。
pasv_min_port=30000
在PASV工作模式下,数据连接可以使用的端口范围的最小端口,0 表示任意端口。默认值为0。
pasv_max_port=30999
在PASV工作模式下,数据连接可以使用的端口范围的最大端口,0 表示任意端口。默认值为0。
表示端口范围为30000~30999,这个可以随意改。改完重启一下vsftpd
由于指定这段端口范围,iptables也要相应的开启这个范围,所以像上面那样打开iptables文件。
也是在21上下面另起一行,更那行差不多,只是把21 改为30000:30999,然后:wq保存,重启下iptables。这样就搞定了。
主动和被动FTP的优缺点:
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的
防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端
口,而这 个端口很有可能被服务器端的防火墙阻塞掉。
幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定
一个有 限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的
危险,但它大大减少了危险。
简而言之:
主动模式(PORT)和被动模式(PASV)。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接。两者的共同点是都使
用21端口进行用户验证及管理,差别在于传送数据的方式不同,PORT模式的FTP服务器数据端口固定在20,而PASV模式则在1025-65535之间随机。
常见的FTP客户端软件的PASV方式的关闭方法
大部分FTP客户端默认使用PASV方式。IE默认使用PORT方式。 在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,
极少见到“PORT”或“主动模式”等字眼。因为FTP的登录方式只有两种:PORT和PASV,取消PASV方式,就意味着使用PORT方式。
(1)IE:工具 -> Internet选项 -> 高级 -> “使用被动FTP”(需要IE6.0以上才支持)。
(2)CuteFTP:Edit -> Setting -> Connection -> Firewall -> “PASV Mode” 或File -> Site Manager,在左边选中站
点 -> Edit -> “Use PASV mode” 。
(3)FlashGet:工具 -> 选项 -> 代理服务器 -> 直接连接 -> 编辑 -> “PASV模式”。
(4)FlashFXP:选项 -> 参数选择 -> 代理/防火墙/标识 -> “使用被动模式” 或 站点管理 -> 对应站点 -> 选项 ->
“使用被动模式”或快速连接 -> 切换 -> “使用被动模式”。
主动模式
Port_enable=YES 开启主动模式
Connect_from_port_20=YES 当主动模式开启的时候 是否启用默认的20端口监听
Ftp_date_port=%portnumber% 上一选项使用NO参数是 指定数据传输端口
被动模式
PASV_enable=YES 开启被动模式
PASV_min_port=%number% 被动模式最低端口
PASV_max_port=%number% 被动模式最高端口
iptables中开放这段端口
service iptables start 打开防火墙
iptables -I INPUT -p tcp --dport 10020:10040 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
在被动模式,服务器做了NAT,例如云主机,这时候我们用特定的IP访问机器,其实还转了一层。FTP客户端访问机器可能会没响应。具体情况为登录成功,但是list目录和文件的时候卡住。
这时候我们用lsof -i:21
vsftpd 22411 nobody 0u IPv4 68905 0t0 TCP 10.140.41.65:ftp->10.10.10.98:43380 (ESTABLISHED)
vsftpd 22411 nobody 1u IPv4 68905 0t0 TCP 10.140.41.65:ftp->10.10.10.98:43380 (ESTABLISHED)
这时候可以看到机器的真正IP。
我们需要设置
pasv_address=本机ip【就是我们能访问的外网IP】
pasv_addr_resolve=yes
这样ftp客户端就可以解析IP,访问成功
(1)被动模式
第二次请求过程中,客户端跟服务端建立数据通道;
服务端被动将数据响应给客户端。
第二次请求数据传输,会随机生成一个服务端口。被防火墙禁用。
(2)主动模式
服务端主动向客户端发送数据,会被客户端的防火墙禁掉。
多数客户端不支持主动模式,不安全。
Talk is cheap,show me the code. ——Linus Torvalds
读书百遍,其义自见——陈寿
2022年6月10日
在Ubuntu18.04配置Apache的Web服务
如果ufw防火墙是关闭的,也可以不用配置ufw防火墙。
查看:sudo ufw status
列出ufw应用程序配置文件
sudo ufw app list
sudo ufw allow 'Apache'
sudo ufw status
显示如下,说明配置文件已被激活以允许访问Web服务器了:
检查你的Web服务器:
sudo systemctl status apache2 或service status apache2
查看服务器IP地址的方法:
hostname -I
或者(为你提供从互联网上的其他位置看到的公共IP地址):
curl -4 icanhazip.com
ubuntu字符界面浏览网页:
装个lynx,是字符界面的浏览器,你看到的也只能字符页面。
安装方法:
sudo apt-get install lynx
浏览网页:
lynx 10.0.0.10 #"10.0.0.10" web服务器IP地址。
【IPS分析】Snort语法规则说明及实例讲解
HTTP协议详解(真的很经典)
2022年6月8日
删除自动获取的IP:
sudo dhclient -r
重新获取IP:
sudo dhclient
安装docker使用微信参考文献:
超详细教程 - Ubuntu等Linux分支利用Docker安装并使用微信详细教程
https://linuxize.com/post/how-to-install-and-use-docker-on-ubuntu-20-04/
https://leanote.zzzmh.cn/blog/post/admin/Linux-Ubuntu-20.04-LTS-Docker-%E5%AE%89%E8%A3%85-%E5%BE%AE%E4%BF%A1-QQ
【Docker】非root用户加入docker用户组省去sudo (三)_jwensh的博客-CSDN博客_docker组
2022年06月03日
学习Linux iptables参考资料:
ufw与iptables
iptables 是一个通过控制 Linux 内核的 netfilter 模块来管理网络数据包的流动与转送的应用软件,其功能包括不仅仅包括防火墙的控制出入流量,还有端口转发等等。iptables 内部有表 tables、链 chains、规则 rules 这三种概念。iptables 的每一个 “表” 都和不同的数据包处理有关、决定数据包是否可以穿越的是 “链”、而一条 “规则” 在链里面则可以决定是否送往下一条链(或其它的动作)。
UFW(Uncomplicated Firewal)是 Ubuntu 下基于 iptables 的接口,旨在简化配置防火墙的过程。默认情况下 UFW 为关闭状态,开启时默认为拒绝所有传入链接,并允许所有传出连接。这意味着任何人尝试到达您的服务器将无法连接,而服务器内的任何应用程序能够达到外部世界。
尽量避免ufw与iptables同时使用。
从逻辑上分类
主机防火墙:针对单个主机防护
网络防火墙:出于网络入口或边缘,针对网络入口防护,服务于防火墙背后的本地局域网
从物理上分类
软件防火墙
硬件防火墙
iptables包过滤防火墙 (在用户空间)
netfilter(真正意义上防火墙)在内核空间的
内核空间:也叫内核态,操作系统占据的内核区域
用户空间:也叫用户态,用户进程所在的内存区域
iptables:
用户 ---> 调用iptables ---> ip_tables内核模式 ---> Netfilter(系统安全构架) ---> 过滤请求
iptables四表五链
四表五链
1、那四个表,有哪些作用
具备某种功能的集合叫做表。
filter: 负责做过滤功能呢 : INPUT、OUTPUT、FORWARD
nat: 网络地址转换 PREROUTING、INPUT、OUTPUT、POSTROUTING
mangle: 负责修改数据包内容 PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD
raw: 负责数据包跟踪 PREROUTING、OUTPUT
2、那五条链,运行在那些地方
PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING
1) PREROUTING: 主机外报文进入位置,允许的表mangle, nat(目标地址转换,把本机地址转换为真正的目标机地址,通常指响应报文)
2) INPUT:报文进入本机用户空间位置,允许的表filter, mangle
3) OUTPUT:报文从本机用户空间出去的位置,允许filter, mangle, nat
4) FOWARD:报文经过路由并且发觉不是本机决定转发但还不知道从哪个网卡出去,允许filter, mangle
5) POSTROUTING:报文经过路由被转发出去,允许mangle,nat(源地址转换,把原始地址转换为转发主机出口网卡地址)
流入本机:PREROUTING --> INPUT --> PROCESS(进程)
经过本机:PREROUTING --> FORWARD --> POSTROUTING
从本机流出:PROCESS(进程) --> OUTPUT --> POSTROUTING
这两篇文章写的很是详尽,各有特点,可以作为手册查询使用。
2022年06月03日