FreeBSD使用总结

目录

包管理

升级openssh

系统管理

用户管理

开启telnet

用户密码文件/etc/master.passwd

系统升级

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# source 环境变量
sh下:. .shrc
csh/tcsh下:source .cshrc

# 查看开机自启动服务
service -e

# 查看所有服务
service -l

service 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

开启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/tcp

sockstat -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)