FreeBSD使用总结(更新:20240111)
目录包管理升级openssh系统管理开启telnet用户密码文件/etc/master.passwd系统升级FreeBSD 13.0升级失败(强制升级后启动失败--未解决)其他安装虚拟机使用VMware ESXi虚拟化平台安装FreeBSD虚拟机:VMware 安装FreeBSD 11不支持VMware半虚拟化磁盘驱动。默认文件系统FreeBSD 13.0开始推荐安装ZFS,看来在该版本对ZFS优
目录
FreeBSD 13.0升级(强制升级后启动失败--未解决)
安装虚拟机
使用VMware ESXi虚拟化平台安装FreeBSD虚拟机:VMware 安装FreeBSD 11不支持VMware半虚拟化磁盘驱动。
默认文件系统
FreeBSD 13.0开始推荐安装ZFS,看来在该版本对ZFS优化支持较好,其余版本扔推荐UFS,这里也仍然使用UFS。
默认shell
FreeBSD comes with several shells, including the Bourne shell (sh(1)) and the extended C shell (tcsh(1)).
包管理
# 查看pkg的帮助信息
pkg help
# 查看pkg子命令帮助信息
pkg help sub-command
# 获取软件包缓存,同yum makecache
pkg update
# 同rpm -qa,但是支持不同的展示格式
pkg query %n-%v
# 同yum info
pkg info [package-name]
# 同 yum search
pkg search openssh
# 同rpm -ql package-name
pkg list package-name
# 同yum -y install
pkg install -y package-name
# 同yum whatprovides
pkg which /usr/local/bin/bash
# 删除软件,类似于rpm -e,不会连同上层依赖包一起删除;但是产出某个软件包,如果有软件对该软件包依赖,则一同被删除。remove和delete完全相同。
pkg remove package-name
pkg delete package-name
升级openssh
安装openssh软件包(FreeBSD默认的ssh是内置的)
pkg search openssh
pkg install -y openssh-portable
修改rc.conf,设置开机自启动
sysrc openssh_enable="YES"
# vi /etc/rc.conf
sshd_enable="NO"
修改openssh配置文件
注意:升级的openssh是通过包安装的,默认安装路径是/usr/local,配置文件不会使用/etc/下的,原生sshd则是build-in到系统中的
vi /usr/local/etc/ssh/sshd_config
停止旧ssh服务,启动新ssh服务
service sshd stop && service openssh start
系统管理
# FreeBSD发布版本
freebsd-version# FreeBSD内核版本
uname -r# 路由表项查看
netstat -nr# 查看进程信息
ps -aux | grep sshd|grep -v grep# 查看端口信息
sockstat -l|grep sshd
sockstat -l #listing
sockstat -c #connected# 根据进程信息查询端口号
ps -aux | grep 'sbin/sshd' | grep -v grep | awk '{cmd="sockstat -l -P tcp |grep "$2;system(cmd)}'# 根据服务名、端口号查询PID
sockstat -4l -P tcp | grep sshd | awk -F":| *" '{cmd="netstat -anp tcp | grep LISTEN |grep "$7;system(cmd)}'
sockstat -4l -P tcp | grep 3389 | awk -F":| *" '{cmd="netstat -anp tcp | grep LISTEN |grep "$7;system(cmd);print $3}' | awk '{arry[NR]=$0}END{for(i=1;i<FNR;i++)print arry[i]" "arry[FNR]}'
# source 环境变量
sh下:. .shrc
csh/tcsh下:source .cshrc# 查看开机自启动服务
service -e# 查看所有服务
service -lservice help
-e Show services that are enabled
-l List all scripts in /etc/rc.d and /usr/local/etc/rc.d# 查看PCI列表,同lspci
pciconf -lv
# 关机,同shutdown -h now
shutdown -p now
用户管理
# pw - create, remove, modify & display system users and groups
pw --help
usage:
pw [user|group|lock|unlock] [add|del|mod|show|next] [help|switches/values]
# 修改用户默认shell
pw user mod root -s /bin/tcsh
#添加用户
adduser
#删除用户
rmuser
开启telnet
FreeBSD中的telnet server服务同Linux中也是被inetd服务管理的。
去掉注释/etc/inetd.conf 中telnet相关注释。
vi /etc/inetd.conf
telnet stream tcp nowait root /usr/libexec/telnetd telnetd
telnet stream tcp6 nowait root /usr/libexec/telnetd telnetd设置inetd服务开机自启动,并启动服务
sysrc inetd_enable="YES"
service inetd start查看telnet是否正常监听
sockstat -l|grep 23
root inetd 47717 6 tcp4 *:23 *:*
root inetd 47717 7 tcp6 *:23 *:*修改telnet默认端口号
vi /etc/services
telnet 23001/tcp
#telnet 23/tcpsockstat -l
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
root inetd 53700 6 tcp4 *:23001 *:*
root inetd 53700 7 tcp6 *:23001 *:*默认禁止root登录,如非要root登录需修改下面文件并注释其中一行:
# vi /etc/pam.d/login
#account requisite pam_securetty.so
用户密码文件/etc/master.passwd
name User's login name.
password User's encrypted password.
uid User's id.
gid User's login group id.
class User's login class.
change Password change time.
expire Account expiration time.
gecos General information about the user.
home_dir User's home directory.
shell User's login shell.
name: password :uid:gid:class:change:expire:gecos :home_dir:shell
root:$6$egIgQxqcnQerHFcH$……:0 :0 : :0 :0 :Charlie &:/root :/usr/local/bin/bash
系统升级
# freebsd-update fetch install
# freebsd-version
13.0-RELEASE-p3
升级成功。
Components src world kernel
src:源码
world:系统中的核心执行文件、 函数库和程序文件
kernel:核心升级大版本
freebsd-update -r 12.2-RELEASE upgrade升级大版本后,使用镜像源在线安装程序,首次需要update pkg缓存,否则会报错:
pkg search gnome
pkg: repository FreeBSD contains packages for wrong OS version: FreeBSD:12:amd64
pkg update
FreeBSD 13.0升级(强制升级后启动失败--未解决)
# freebsd-update fetch
# freebsd-update install
如果给内核打了补丁,那么系统需要重新启动。
如果出现了错误,可以使用下面的 freebsd-update rollback 命令回退到上一次的修改:
# freebsd-update rollback# freebsd-update fetch
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 2 mirrors found.
Fetching metadata signature for 13.0-RELEASE from update1.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... failed.freebsd-update使用-v debug或 --debug参数打开调试模式
# freebsd-update -v debug fetch
……
Fetching 2 metadata files...
/usr/libexec/phttpget update2.freebsd.org 13.0-RELEASE/amd64/m/96e8bdda565cef8c35d8c0f42019371d01e344c583db45071b2f89f7e9e0e722.gz 13.0-RELEASE/amd64/m/c7060175d1dd8d127e11d4af95f218771a8de77fa3473e20f75ef25d6e16d112.gz
phttpget: Connection failure
failed.
解决:怀疑是更新服务器的问题,也可能是phttpget的问题;分别通过其他方式下载如下两个gz包,然后上传到服务器的/var/db/freebsd-update/files下。
http://update2.freebsd.org/13.0-RELEASE/amd64/m/c7060175d1dd8d127e11d4af95f218771a8de77fa3473e20f75ef25d6e16d112.gz
http://update2.freebsd.org/13.0-RELEASE/amd64/m/96e8bdda565cef8c35d8c0f42019371d01e344c583db45071b2f89f7e9e0e722.gz但是又遇到了几个无法下载的包,按照同样的方法下载后成功fetch结束。
可以同时fetch和install# freebsd-update fetch install
# freebsd-version
13.0-RELEASE-p3
升级成功。
安全加固
口令加密算法是由 /etc/login.conf 中的 passwd_format 来控制的
Currently supported algorithms are:
1. MD5
2. Blowfish
3. NT-Hash
4. (unused)
5. SHA-256
6. SHA-512检查单用户模式console访问是否需要root密码
查看/etc/ttys中,console开头行,第五个字段为insecure
vi /etc/ttys
console none unknown off insecure禁止icmp重定向
设置net.inet.icmp.drop_redirect为1并设置net.inet.ip.redirect为0。禁止ip路由转发
将net.inet.ip.sourceroute和net.inet.ip.accept_sourceroute为0。设置FreeBSD内核安全启动级别,默认为-1
vi /etc/rc.conf
kern_securelevel_enable="YES"
kern_securelevel="0"
或直接将kern_securelevel="1"如此配置之后,很多文件虽然存在write权限,并且由root来操作,仍然只读;并且不允许mv覆盖。并且“一旦在启动过程中使用 /etc/rc.conf 中的 securelevel 选项设置了级别,您就不能再降低级别”
FreeBSD默认shell
root用户的默认shell是csh,但是创建用户的时候,如果不特意指定,默认shell则是sh。
如下通过adduser命令创建用户场景,使用pw user add user2同样默认shell是sh。除非显式指定shell:pw user add user3 -s /bin/tcsh。
更多推荐
所有评论(0)