使FreeBSD更安全(FreeBSD的安全设置)
点评:这篇文章主要介绍了FreeBSD更安全(FreeBSD的安全设置),需要的朋友可以参考下我们都知道互联网是不是一个友好的地方,你可能不想在另一个地方的人有相同的访问权限为你做的。这意味着你可能不想上网没有某种防火墙。幸运的是,你的FreeBSD系统支持多种防火墙:ipfw和IPFilter。更令人兴奋的是易的快速增长-理解文件。如果你不在防火墙后面,请星期六下午读如何在您的系统上,钻一个配置防火墙的文章。你会很高兴,然后是可用的资源的一部分:
男人的IPFW
FreeBSD手册:10.7节mdash;防火墙
建立双宿主主机使用ipfw和natd
人特发性肺纤维化
IPFilter和PF资源
良好的安全性总是防御层,这意味着如果一个机制失败,仍然有一个备用机制。即使您的系统受到防火墙的保护,您仍然需要禁用所有服务,除了那些绝对需要的。在桌面系统中,不需要大量服务。
通过以下命令,您可以看到哪些服务试图监视您的系统:
sockstat - 4
输出的差异可能很大,这取决于安装最后阶段所选择的软件,以及安装后安装的端口和包。
端口6000(X窗口服务器)是输出很常见的;如果你没有看到它,启动X窗口会话,然后运行sockstat -4.unfortunately,已经有很多攻击X窗口在过去几年中。幸运的是,X的使用不需要打开端口6000,做不必担心,如果端口是关闭的,你仍然可以使用图形界面!
有许多方法来关闭端口。我发现最简单的方法是一个超级用户和编辑 / usr / / / startx.find X11R6仓的serverargs线改为如下。
serverargs = - nolisten tcp
保存后,修改,X是普通用户运行和sockstat 4执行。如果没有打字错误,那么X会像往常一样,但不会有更多的sockstat 6000端口4输出。
如果您想了解打开6000端口的后果,请阅读X窗口安全中的速成教程。
嗯,有一个不服务于sockstat 4输出了。我们还需要处理邮件:端口25(SMTP)和587(提交),发送和接收邮件不需要587个端口。为了接近它,我们需要修改 / / /邮件等sendmail.cf.find这条线:
O daemonportoptions =口= 587,名为MSA,m = E
然后在前面加#,告诉sendmail的变化:
killall -HUP sendmail
进程不会杀sendmail,但他会告诉sendmail处理 / / /邮件等sendmail.cf.repeat sockstat - 4,它将不再显示587。
那么端口25呢你可能需要它,或者你可能不需要打开端口,这取决于你使用的邮件程序来发送和接收邮件,运行FreeBSD 4.6-release或更高版本的系统中,添加以下 / / rc.conf线等:
sendmail_enable = NO
你会告诉sendmail只听本地主机,它允许所有的邮件客户端程序发送邮件。如果你知道你的邮件客户端有一个内置的SMTP代理,或者你愿意承担风险,尝试。
sendmail_enable = none
这将彻底关闭25端口,检查它是重要的是要使它不可能为你发送邮件,确保所有的应用程序都已经关闭,其次是超级用户身份:
现在要关闭
收到提示后,按后退,退出。重新登录后,给自己发送一封电子邮件。如果你得不到它,就把它变回不。
如果你的,sockstat,显示111端口是开放的,添加以下代码 / / rc.conf等(如果这些线路已经上市,改变是没有)。
nfs_server_enable = NO
nfs_client_enable = NO
portmap_enable = NO
只有当运行NFS nfs是必要的,而这往往不是FreeBSD桌面系统的需要。它有很多历史上的安全问题,所以不要使用它,除非你绝对需要。
syslog(514端口)也可能出现在你的输出。我们可能不想完全关闭日志,因为消息记录,它提供的是我们所需要的。但我们不需要为这个开放的端口,添加以下选项 / / rc.conf文件等:
syslogd_enable = YES
Syslogd_flags=; -ss;
会徽中的SS(使用的不是一个)将禁止记录从远程主机和端口关闭,但仍允许本地登录。
随后,它被证实是不是inetd_enable / / rc.conf.if等有inetd sockstat输出,那么 / /等中肯定是什么项目还没有评论,如果你不需要它,这样的线和#前面,和killall inetd。
如果你需要使用DHCP自动获得地址,然后保持dhclient(UDP 6打开,否则你将无法刷新地址。
如果有什么是在sockstat输出,看看是否有任何提示如何关掉这些东西的人rc.conf.if不是,可能是一个启动脚本已经开始一些服务项目,请执行:
CD /usr/local/etc/rc.d
查看系统中的启动脚本。大多数包/端口将安装一个名为演示脚本的扩展示例来启动服务。这些脚本不执行。也有一些脚本,可以直接安装,这将被载入计算机启动时,禁止某个脚本,最简单的方法是改变它的扩展样本,然后杀死恶魔,sockstat不会多说什么。例如,我最近安装的空灵,我发现snmpd出现在sockstat输出4。这个计划不以安全著称。因此,我将自己升级到root并执行以下命令。
CD / usr / / / RC等地方。D
MV snmpd.sh snmpd.sh.sample killall snmpd
你可能想添加以下选项 / / rc.conf等:
tcp_drop_synfin = YES
这个选项可以让尝试,如操作系统指纹识别(此选项不适用于最新的Nmap)。如果你要打开这个选项,你还需要添加在内核编译配置文件:
选择tcp_drop_synfin
还有两个相关选项:
icmp_drop_redirect = YES
icmp_log_redirect = YES
ICMP重定向可以用来完成DoS攻击。这个ARP和ICMP重定向游戏文章介绍了一些具体情况。
小心打开icmp_log_redirect选项时,因为它记录了每一个ICMP重定向。如果你受到这样的攻击,日志可能会填满记录。
构建防火墙后,考虑添加以下选项:
log_in_vain = YES
此选项将记录每个连接尝试关闭端口。另一个有趣的选项是:
accounting_enable = YES
这将打开系统的审计功能,如果你不熟悉,请阅读的人与人lastcomm SA。
最后,以下选项可能非常有用:
clear_tmp_enable = YES
因为当系统启动时它将空/ TMP,这样做总是值得的。
让我们在那可以加强安全的其他设置的样子。我喜欢改变默认的密码加密算法,河豚,因为它在提供最佳的安全的前提下,提供最快的速度。这里有几种算法加密算法比较} {比较。
当然,如果你是这类的东西感兴趣,看看密码通讯,这是由河豚的作家写的。
使河豚哈希,编辑 / / login.conf等改变passwd_format线以下:
:passwd_format = BLF:
保存设置并重新创建登录数据库:
cap_mkdb / / login.conf等
然后你需要修改密码,每个用户都使用Blowfish密码哈希值。作为超级用户执行以下命令:
passwd用户名
您需要修改所有用户的密码,包括root用户本身。
经过这些操作已经完成,重新检查你所失去的:
更多的 / / master.passwd等
所有用户的密码应该以2美元开头。
最后,重新配置的adduser程序让它在未来的河豚使用。修改/ etc / auth.conf,找到crypt_default一行,改变:
crypt_default = BLF
你可能已经注意到,FreeBSD会提示您每次登录。你正在使用的系统是FreeBSD,其版权信息,包括编译的内核,等等,这些信息可能是有用的,但很讨厌,尤其是当有人可以登录,它可能会暴露一些你不想暴露的信息。
您可以编辑 / /公告等防止电脑的话不该说,或宣传你的一些想法,包括你最喜欢的科幻小说的摘要,或其他一些mdash;mdash;总之,写你想写的。
随后,版权信息被删除:
触摸/版权
然后,你也可以修改登录提示,并编辑 / / gettytab等。要查找默认值:部分,它以以下文本开头:
:答:CE:CK:LC
仔细修改文本之间的 R为了满足您的需要,请检查和的数量。仔细保存这些更改,例如,我的登录提示如下所示:
我是在网络节点。你是谁
Login:
您可以尝试登录其他终端以确认正确性。
最后,即使你已经修改了公告和删除内核版本信息,FreeBSD后仍将启动 / /公告等添加这些东西。所以你需要修改 / / rc.conf等并添加以下设置:
update_motd = NO
此设置需要重新启动才能生效。
另外,限制登录也是非常重要的,因为这些更改会改变登录程序的行为,所以需要非常小心,更好的习惯是将登录的终端作为root登录,并与其他终端一起尝试。
没有人,包括你自己,应该直接登录为根。修改/ etc /内。你会注意到从ttyv0一系列设置ttyv8。把下列安全不安全。请注意,这个文件是一个文件你不想要,所以请仔细测试。如果是正确设置的root登录,将登录incorrect 。
我个人倾向于使用所有9个终端。如果你不想,请更改相应的on改变off当然,只是对内的一部分。记住保持至少1 否则,你将无法登录,这将导致系统无法use.ttyv8默认是off这意味着你需要打开X手动,如果你想自动启动,然后把它on.
最后一个我想说的是停止登录的其他地方,这是由编辑 / / login.access实施等。
你可能想禁止所有远程登录(这意味着你的身体坐在机器前面),在#号前删除下列行:
#:轮:除了local.win.tue.nl
摆脱of.win.tue.nl,它看起来像这样:
-轮:除本地以外的所有
如果你需要远程登录,与相应的IP或域名更换the.win.tue.nl。如果有多个地址,独立的空间。
如果只有一个或两个用户,则可以拒绝其他用户登录:
除了user1 user2::ttyv0 ttyv1 ttyv2 ttyv3 ttyv4
与特定的用户user1 user2名称替换。如果需要,添加相应的tty。
此外,还可以将用户放在这里:
mygroup:*:100:成因,dlavigne6,Biko
当本集团增加的需求,GID唯一性得到保证。
然后,修改 / / login.access等:
-:除了mygroup:ttyv0 ttyv1 ttyv2 ttyv3 ttyv4 ttyv5
测试它并确保离开终端是非常重要的,测试每个终端上的登录以确认其效果。
基本安全设置FreeBSD安装系统后
编辑 / / rc.conf.add等内容
# EE / / rc.conf等
#关闭端口所使用的日志
syslogd_enable =是
syslogd_flags =SS
#击败OS指纹(选项tcp_drop_synfin需要添加内核)
tcp_drop_synfin =是
# ICMP重定向
icmp_drop_redirect =是
icmp_log_rediretc =是
# records every attempt to close the port connection
log_in_vain =是
#系统审计功能
accounting_enable =是
#开机自动清除 /甲氧苄啶
clear_tmp_enable =是
#禁用内核消息
update_motd =没有
#关闭NFS服务
nfs_server_enable =没有
nsf_client_enable =没有
portmap_enable =没有
#关闭sendmail
sendmail_enable =没有
sendmail_submit_enable =没有
sendmail_outbound_enable =没有
sendmail_msp_queue_enable =没有
#打开磁盘配额
enable_quotas =是
check_quotas =是
删除登录信息
# RM / /公告等
#触摸 / /公告等
#触摸 / /版权等
# EE / / gettytab等
默认值:
Cb:CE:CK:LC:FD # 1000:我= r 来修改你需要的文本, R:SP # 1200:
:如果:
禁止一般用户查看系统日志
# chmod G-W,或许 / / / *日志功
# chmod 600 / / syslog.conf等
# chmod 600 / / newsyslog.conf等
为了防止黑客利用Rootkit工具通过后门进入系统,
# chflags增压/斌/ *
# chflags增压/ sbin / *
将系统核心的运行级别设置为最安全级别
# sysctl -克恩securelevel = 2 W。
禁止使用普通用户的crontab
#回声根> / / /让cron VaR
# chmod 600 / / /让cron VaR
修改/ etc / sysctl.conf并添加如下
# EE / / sysctl.conf等
#防止广播风暴的ICMP
净。INET。ICMP。bmcastecho = 0
净。INET。ICMP。maskrepl = 0
#发送ICMP限速系统
净。INET。ICMP。icmplim = 100
#安全参数,编译时的选项tcp_drop_synfin内核可以使用
净。INET。ICMP。icmplim_output = 0
净。INET。TCP。drop_synfin = 1
#设置为1将帮助系统将无法正常打开的TCP连接,从而提高网络带宽的使用,但一些死连接可以被识别和清除。死了的TCP连接的一个系统,是由一个拨号用户访问的是一个特殊的问题,因为用户经常断开调制解调器和没有正确关闭连接。
净。INET。TCP。always_keepalive = 1
如果你看到这在net.inet.ip.intr_queue_drops #增加,会增加net.inet.ip.intr_queue_maxlen,作为最好的0
净。INET。IP。intr_queue_maxlen = 0
#防止DoS攻击,默认是30000
净。INET。TCP。MSL = 7500
#收到发送给所有的包,已经关闭的端口直接下降,如果设置为1是唯一的TCP包
净。INET。TCP。黑洞= 2
#接收的UDP发送关闭端口的数据包直接滴
净。INET。UDP。黑洞= 1
提供#网络数据连接缓冲
净。INET。TCP。飞行使= 1
#如果启用每个目标地址转发成功后,数据将被记录在路由表和ARP表的数据,计算节省时间的路由,但也需要大量的内核内存空间来保存路由表
净。INET。IP。快进= 0
#内核编译打开选项的投票功能。在高负载情况下不建议使用低负荷轮询SMP。
#克恩。投票。使= 1
#并发连接数,默认值是128,在1024-4096推荐,内存数量较大
克恩。IPC。somaxconn = 32768
#禁止用户查看其他用户进程
安全。BSD。see_other_uids = 0
#的核安全水平
克恩securelevel = 0。
#记录任何TCP连接
净。INET。TCP。log_in_vain = 1
#记录任何UDP连接
净。INET。UDP。log_in_vain = 1
#防止不正确的UDP数据包攻击
净。INET。UDP校验和= 1。
#防止DoS攻击
净。INET。tcp syncookies = 1。
#仅设置为物理内存支持线程,需要256兆位存储器
#克恩。IPC。shm_use_phys = 1
最大的共享内存#线程可以使用
克恩。IPC SHMMAX = 67108864。
#线程的最大数量
克恩。IPC SHMALL = 32768。
不记录#时程序崩溃
克恩。内核转储= 0
#本地数据流的发送和接收空间
网。地方。流。recvspace = 65536
网。地方。报。maxdgram = 16384
网。地方。报。recvspace = 65536
#分组数据段的大小是1452 ADSL。
净。INET。TCP。mssdflt = 1452
提供#网络数据连接缓冲
净。INET。TCP。inflight_enable = 1
#分组数据段最小,ADSL 1452
净。INET。TCP。minmss = 1460
局部数据#的最大数量
净。INET。原。maxdgram = 65536
#本地数据流接收空间
净。INET。原。recvspace = 65536
更改默认的加密算法Blowfish
使河豚哈希,编辑 / / login.conf等改变passwd_format线以下:
:passwd_format = BLF:
保存设置并重新创建登录数据库:
# cap_mkdb / / login.conf等
然后你需要修改密码,每个用户都使用Blowfish密码哈希值。作为超级用户执行以下命令:
# passwd用户名(username是用户名)
您需要修改所有用户的密码,包括root用户本身。
经过这些操作已经完成,重新检查你所失去的:
#更 / / master.passwd等
所有用户的密码应该以2美元开头。
最后,重新配置的adduser程序让它在未来的河豚使用。修改/ etc / auth.conf,找到crypt_default一行,改变:
crypt_default = BLF