Project Icon

hardening

Ubuntu系统安全加固工具集

这是一个用于快速加固Ubuntu服务器安全性的开源项目。涵盖防火墙配置、系统加固、软件包管理等多个方面,支持Ubuntu 20.04和22.04版本。项目提供Packer模板和Ansible playbook,便于自动化部署和管理。可用于快速构建安全的Ubuntu系统基准。

image::logo/horizontal.png[Ubuntu 加固] = Ubuntu 加固。 Systemd 版本。

:icons: font

快速提高 Ubuntu 服务器安全性的方法。

使用新安装和配置的系统作为参考或黄金镜像。将该镜像用作基线安装介质,并确保任何未来的安装都使用配置管理工具(如 https://www.ansible.com/[Ansible] 或 https://puppet.com/[Puppet])符合基准和策略。

Ubuntu 20.04 Focal FossaUbuntu 22.04 Jammy Jellyfish 上测试通过。

如果您只对安全focused的systemd配置感兴趣,可以查看link:systemd.adoc[单独的文档]。

如果您想测试主机设置,可以在link:README.adoc#tests[这里]找到说明。

注意:阅读代码,不要在未经非生产环境测试的情况下运行此脚本。该代码不具有幂等性,请在生产环境中使用 https://github.com/konstruktoid/ansible-role-hardening[Ansible 角色]代替。

注意:在 https://github.com/konstruktoid/hardening/actions/workflows/slsa.yml[slsa 工作流程]下有一个 https://slsa.dev/[SLSA] 工件,用于文件校验和验证。

== Packer 模板和 Ansible playbook

在 link:packer/[Packer 目录]中提供了 https://www.packer.io/[Packer] 模板。

https://github.com/konstruktoid/ansible-role-hardening[konstruktoid/ansible-role-hardening] 仓库中提供了 Ansible playbook。

== 使用方法

. 开始服务器安装。 . 选择语言和键盘布局。 . 选择"Ubuntu Server (minimized)"。 . 配置网络连接。 . 对系统进行分区,请参阅下面的建议。 . 不要安装 OpenSSH 服务器、"Featured Server Snaps"或任何其他软件包。 . 完成安装并重启。 . 登录。 . 如果需要,使用 grub-mkpasswd-pbkdf2 设置 Grub2 密码。有关更多信息,请参阅 https://help.ubuntu.com/community/Grub2/Passwords[https://help.ubuntu.com/community/Grub2/Passwords]。 . 安装必要的软件包:sudo apt-get -y install git net-tools procps --no-install-recommends。 . 下载脚本:git clone https://github.com/konstruktoid/hardening.git。 . 在 ubuntu.cfg 文件中更改配置选项。确保更新 CHANGEME 变量,否则脚本将失败。 . 运行脚本:sudo bash ubuntu.sh。 . 重启。

=== 推荐的分区和选项

[source,shell]

/boot (rw) /home (rw,nosuid,nodev) /var/log (rw,nosuid,nodev,noexec) /var/log/audit (rw,nosuid,nodev,noexec) /var/tmp (rw,nosuid,nodev,noexec)

注意,脚本会自动添加 /tmp

== 配置选项

[source,shell]

FW_ADMIN='127.0.0.1' // <1> SSH_GRPS='sudo' // <2> SSH_PORT='22' // <3> SYSCTL_CONF='./misc/sysctl.conf' // <4> AUDITD_MODE='1' // <5> AUDITD_RULES='./misc/audit-base.rules ./misc/audit-aggressive.rules ./misc/audit-docker.rules' // <6> LOGROTATE_CONF='./misc/logrotate.conf' // <7> NTPSERVERPOOL='0.ubuntu.pool.ntp.org 1.ubuntu.pool.ntp.org 2.ubuntu.pool.ntp.org 3.ubuntu.pool.ntp.org pool.ntp.org' // <8> TIMEDATECTL='' // <9> VERBOSE='N' // <10> AUTOFILL='N' // <11> ADMINEMAIL="root@localhost" // <12> KEEP_SNAPD='Y' // <13> CHANGEME='' // <14>

配置文件 // <15>

ADDUSER='/etc/adduser.conf' AUDITDCONF='/etc/audit/auditd.conf' AUDITRULES='/etc/audit/rules.d/hardening.rules' COMMONPASSWD='/etc/pam.d/common-password' COMMONACCOUNT='/etc/pam.d/common-account' COMMONAUTH='/etc/pam.d/common-auth' COREDUMPCONF='/etc/systemd/coredump.conf' DEFAULTGRUB='/etc/default/grub.d' DISABLEFS='/etc/modprobe.d/disablefs.conf' DISABLEMOD='/etc/modprobe.d/disablemod.conf' DISABLENET='/etc/modprobe.d/disablenet.conf' FAILLOCKCONF='/etc/security/faillock.conf' JOURNALDCONF='/etc/systemd/journald.conf' LIMITSCONF='/etc/security/limits.conf' LOGINDCONF='/etc/systemd/logind.conf' LOGINDEFS='/etc/login.defs' LOGROTATE='/etc/logrotate.conf' PAMLOGIN='/etc/pam.d/login' PSADCONF='/etc/psad/psad.conf' PSADDL='/etc/psad/auto_dl' RESOLVEDCONF='/etc/systemd/resolved.conf' RKHUNTERCONF='/etc/default/rkhunter' RSYSLOGCONF='/etc/rsyslog.conf' SECURITYACCESS='/etc/security/access.conf' SSHFILE='/etc/ssh/ssh_config' SSHDFILE='/etc/ssh/sshd_config' SYSCTL='/etc/sysctl.conf' SYSTEMCONF='/etc/systemd/system.conf' TIMESYNCD='/etc/systemd/timesyncd.conf' UFWDEFAULT='/etc/default/ufw' USERADD='/etc/default/useradd' USERCONF='/etc/systemd/user.conf'


<1> 允许通过 SSH 连接的 IP 地址,用空格分隔。 <2> 用户必须属于哪个组才能通过 SSH 访问,用空格分隔。 <3> 配置 SSH 端口。 <4> 更严格的 sysctl 设置。 <5> Auditd 失败模式。0=silent 1=printk 2=panic。 <6> Auditd 规则。 <7> Logrotate 设置。 <8> NTP 服务器池。 <9> 添加特定时区或留空使用系统默认设置。 <10> 是否显示所有细节。 <11> 让脚本猜测 FW_ADMINSSH_GRPS 设置。 <12> 添加有效的电子邮件地址,以便 PSAD 可以发送通知。 <13> 如果为 'Y',则将保留 snapd 包以防止被移除。 <14> 添加一些内容以验证您确实浏览了代码。 <15> 默认配置文件位置。

== 函数

=== 按执行顺序排列的函数列表

注意,所有函数在代码中都有 f_ 前缀。

==== pre

设置 apt 标志并执行基本权限检查。

pre 函数位于 link:scripts/pre[./scripts/pre]。

==== kernel

如果 hashsize 存在且可写,则将 https://github.com/jeffmurphy/NetPass/blob/master/doc/netfilter_conntrack_perf.txt#L175[/sys/module/nf_conntrack/parameters/hashsize] 设置为 1048576。

如果 lockdown 存在且可写,则将 https://man7.org/linux/man-pages/man7/kernel_lockdown.7.html[/sys/kernel/security/lockdown] 设置为 confidentiality

kernel 函数位于 link:scripts/kernel[./scripts/kernel]。

==== firewall

如果已安装,则配置 https://help.ubuntu.com/community/UFW[UFW]。

允许来自 $FW_ADMIN 中的地址到 $SSH_PORT 的连接。

设置日志记录和 IPT_SYSCTL=/etc/sysctl.conf

firewall 函数位于 link:scripts/ufw[./scripts/ufw]。

==== disablenet

禁用 dccpsctprdstipc 内核模块。

disablenet 函数位于 link:scripts/disablenet[./scripts/disablenet]。

==== disablefs

禁用 cramfsfreevxfsjffs2ksmbdhfshfsplusudf 内核模块。

disablefs 函数位于 link:scripts/disablefs[./scripts/disablefs]。

==== disablemod 禁用 bluetoothbnepbtusbcpia2firewire-corefloppyn_hdlcnet-pf-31pcspkrsoundcorethunderboltusb-midiusb-storageuvcvideov4l2_common 内核模块。

请注意,禁用 usb-storage 模块将禁用所有 USB 存储设备的使用。如果需要使用这些设备,应相应配置 USBGuard

disablemod 函数位于 link:scripts/disablemod[./scripts/disablemod]。

==== systemdconf

$SYSTEMCONF$USERCONF 中设置 CrashShell=noDefaultLimitCORE=0DefaultLimitNOFILE=1024DefaultLimitNPROC=1024DumpCore=no

systemdconf 函数位于 link:scripts/systemdconf[./scripts/systemdconf]。

==== resolvedconf

$RESOLVEDCONF 中设置 DNS=$dnslistDNSOverTLS=opportunisticDNSSEC=allow-downgradeFallbackDNS=1.0.0.1,其中 $dnslist 是一个包含 /etc/resolv.conf 中存在的名称服务器的数组。

resolvedconf 函数位于 link:scripts/resolvedconf[./scripts/resolvedconf]。

==== logindconf

$LOGINDCONF 中设置 IdleAction=lockIdleActionSec=15minKillExcludeUsers=rootKillUserProcesses=1RemoveIPC=yes

logindconf 函数位于 link:scripts/logindconf[./scripts/logindconf]。

==== journalctl

将 link:misc/logrotate.conf[./misc/logrotate.conf] 复制到 $LOGROTATE

$JOURNALDCONF 中设置 Compress=yesForwardToSyslog=yesStorage=persistent

如果 RSYSLOGCONF 可写,则在其中设置 $FileCreateMode 0600/

journalctl 函数位于 link:scripts/journalctl[./scripts/journalctl]。

==== timesyncd

$TIMESYNCD 中设置 NTP=${SERVERARRAY}FallbackNTP=${FALLBACKARRAY}RootDistanceMaxSec=1,其中数组包含最多四个延迟小于 50ms 的时间服务器。

timesyncd 函数位于 link:scripts/timesyncd[./scripts/timesyncd]。

==== fstab

如果 /etc/fstab 中存在 /boot/home 分区,则将它们配置为 defaults,nosuid,nodev

如果 /etc/fstab 中存在 /var/log/var/log/audit/var/tmp 分区,则将它们配置为 defaults,nosuid,nodev,noexec

如果 /etc/fstab 中不存在以下分区,则添加:

  • /run/shm tmpfs rw,noexec,nosuid,nodev
  • /dev/shm tmpfs rw,noexec,nosuid,nodev
  • /proc proc rw,nosuid,nodev,noexec,relatime,hidepid=2

/etc/fstab 中移除所有软盘驱动器。

将 ./config/tmp.mount[./config/tmp.mount] 复制到 /etc/systemd/system/tmp.mount,从 /etc/fstab 中移除 /tmp,并启用 tmpfs /tmp 挂载。

/prochidepid 选项在 https://www.kernel.org/doc/html/latest/filesystems/proc.html#mount-options[https://www.kernel.org/doc/html/latest/filesystems/proc.html#mount-options] 中有描述。

fstab 函数位于 link:scripts/fstab[./scripts/fstab]。

==== prelink

将二进制文件和库恢复到预链接前的原始内容,并卸载 prelink

prelink 函数位于 link:scripts/prelink[./scripts/prelink]。

==== aptget_configure

设置以下 apt 选项:

  • Acquire::http::AllowRedirect "false";
  • APT::Get::AllowUnauthenticated "false";
  • APT::Periodic::AutocleanInterval "7";
  • APT::Install-Recommends "false";
  • APT::Get::AutomaticRemove "true";
  • APT::Install-Suggests "false";
  • Acquire::AllowDowngradeToInsecureRepositories "false";
  • Acquire::AllowInsecureRepositories "false";
  • APT::Sandbox::Seccomp "1";

参见 https://manpages.ubuntu.com/manpages/jammy/man5/apt.conf.5.html[https://manpages.ubuntu.com/manpages/jammy/man5/apt.conf.5.html]。

aptget_configure 函数位于 link:scripts/aptget[./scripts/aptget]。

==== aptget

升级已安装的软件包。

aptget 函数位于 link:scripts/aptget[./scripts/aptget]。

==== hosts

/etc/hosts.allow 中设置 sshd : ALL : ALLOWALL: LOCAL, 127.0.0.1,在 /etc/hosts.deny 中设置 ALL: ALL

有关主机访问控制文件的格式,请参见 https://manpages.ubuntu.com/manpages/jammy/man5/hosts_access.5.html[https://manpages.ubuntu.com/manpages/jammy/man5/hosts_access.5.html]。

hosts 函数位于 link:scripts/hosts[./scripts/hosts]。

==== issue

/etc/issue/etc/issue.net/etc/motd 中写入仅限授权使用的通知。

移除 /etc/update-motd.d/ 中每个文件的可执行标志。

issue 函数位于 link:scripts/issue[./scripts/issue]。

==== sudo

使用 https://manpages.ubuntu.com/manpages/jammy/man8/pam_wheel.8.html[pam_wheel] 将 su 访问权限限制为 sudo 组成员。

设置以下 https://manpages.ubuntu.com/manpages/jammy/man5/sudoers.5.html[sudo 选项]:

  • !pwfeedback
  • !visiblepw
  • logfile=/var/log/sudo.log
  • passwd_timeout=1
  • timestamp_timeout=5
  • use_pty

sudo 函数位于 link:scripts/sudo[./scripts/sudo]。

==== logindefs

https://manpages.ubuntu.com/manpages/jammy/man5/login.defs.5.html[$LOGINDEFS] 中写入以下内容:

  • LOG_OK_LOGINS yes
  • UMASK 077
  • PASS_MIN_DAYS 1
  • PASS_MAX_DAYS 60
  • DEFAULT_HOME no
  • ENCRYPT_METHOD SHA512
  • USERGROUPS_ENAB no
  • SHA_CRYPT_MIN_ROUNDS 10000
  • SHA_CRYPT_MAX_ROUNDS 65536

logindefs 函数位于 link:scripts/logindefs[./scripts/logindefs]。

==== sysctl

将 link:misc/sysctl.conf[./misc/sysctl.conf] 复制到 $SYSCTL

有关设置选项的说明,请参见 https://www.kernel.org/doc/html/latest/admin-guide/sysctl/[https://www.kernel.org/doc/html/latest/admin-guide/sysctl/]。

sysctl 函数位于 link:scripts/sysctl[./scripts/sysctl]。

==== limitsconf

https://manpages.ubuntu.com/manpages/jammy/en/man5/limits.conf.5.html[$LIMITSCONF] 中设置以下内容:

  • hard maxlogins 10
  • hard core 0
  • soft nproc 512
  • hard nproc 1024

limitsconf 函数位于 link:scripts/limits[./scripts/limits]。

==== adduser

$ADDUSER 中设置 DIR_MODE=0750DSHELL=/bin/falseUSERGROUPS=yes

$USERADD 中设置 INACTIVE=30SHELL=/bin/false

adduser 函数位于 link:scripts/adduser[./scripts/adduser]。

==== rootaccess+:root:127.0.0.1/' 写入 $SECURITYACCESS,并将 console 写入 /etc/securetty

屏蔽 debug-shell。

rootaccess 函数位于 ./scripts/rootaccess。

==== package_install

安装 acctaide-commoncracklib-runtimedebsumsgnupg2havegedlibpam-pwqualitylibpam-tmpdirneedrestartopenssh-serverpostfixpsadrkhuntersysstatsystemd-coredumptcpdupdate-notifier-commonvlock

package_install 函数位于 ./scripts/packages。

==== psad

安装和配置 PSAD

psad 函数位于 ./scripts/psad。

==== coredump

Storage=noneProcessSizeMax=0 写入 $COREDUMPCONF

coredump 函数位于 ./scripts/coredump。

==== usbguard

安装和配置 USBGuard。

usbguard 函数位于 ./scripts/usbguard。

==== postfix

安装 postfix 并使用 postconf 设置 disable_vrfy_command=yesinet_interfaces=loopback-onlysmtpd_banner="\$myhostname"smtpd_client_restrictions=permit_mynetworks,reject

postfix 函数位于 ./scripts/postfix。

==== apport

禁用 apport、ubuntu-report 和 popularity-contest。

apport 函数位于 ./scripts/apport。

==== motdnews

禁用 apt_news 和 motd-news。

motdnews 函数位于 ./scripts/motdnews。

==== rkhunter

$RKHUNTERCONF 中设置 CRON_DAILY_RUN="yes"APT_AUTOGEN="yes"

rkhunter 函数位于 ./scripts/rkhunter。

==== sshconfig

$SSHFILE 中设置 HashKnownHosts yesCiphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-ctrMACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256

sshconfig 函数位于 ./scripts/sshdconfig。

==== sshdconfig

配置 OpenSSH 守护进程。配置更改将放置在 Include 选项定义的目录中(如果存在),否则将修改 $SSHDFILE。

默认情况下,/etc/ssh/sshd_config.d/hardening.conf 将包含以下内容:

[source,shell]

AcceptEnv LANG LC_* AllowAgentForwarding no AllowGroups sudo AllowTcpForwarding no Banner /etc/issue.net Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-ctr ClientAliveCountMax 3 ClientAliveInterval 200 Compression no GSSAPIAuthentication no HostbasedAuthentication no IgnoreUserKnownHosts yes KbdInteractiveAuthentication no KerberosAuthentication no KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256 LogLevel VERBOSE LoginGraceTime 20 Macs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256 MaxAuthTries 3 MaxSessions 3 MaxStartups 10:30:60 PasswordAuthentication no PermitEmptyPasswords no PermitRootLogin no PermitUserEnvironment no Port 22 PrintLastLog yes PrintMotd no RekeyLimit 512M 1h StrictModes yes TCPKeepAlive no UseDNS no UsePAM yes X11Forwarding no

sshdconfig 函数位于 ./scripts/sshdconfig。

==== password

将 ./config/pwquality.conf 复制到 /etc/security/pwquality.conf

从 PAM $COMMONAUTH 中删除 nullok

根据安装情况配置 faillock 或 pam_tally2。

将密码列表添加到 cracklib。

password 函数位于 ./scripts/password。

==== cron

禁用 atd 并只允许 root 使用 at 或 cron。

cron 函数位于 ./scripts/cron。

==== ctrlaltdel

屏蔽 ctrl-alt-del.target。

ctrlaltdel 函数位于 ./scripts/ctraltdel。

==== auditd

配置 auditd。

有关使用的规则,请参见 ./misc/audit-base.rules、./misc/audit-aggressive.rules 和 ./misc/audit-docker.rules。

auditd 函数位于 ./scripts/auditd。

==== aide

从 AIDE 中排除 /var/lib/lxcfs/cgroup/var/lib/docker

aide 函数位于 ./scripts/aide。

==== rhosts

删除任何现有的 hosts.equiv.rhosts 文件。

rhosts 函数位于 ./scripts/rhosts。

==== users

删除 gamesgnatsirclistnewssyncuucp 用户。

users 函数位于 ./scripts/users。

==== lockroot

锁定 root 账户 lockroot 函数位于 link:scripts/lockroot[./scripts/lockroot]。

==== package_remove

移除 apport*autofsavahi*beepgitpastebinitpopularity-contestrsh*rsynctalk*telnet*tftp*whoopsiexinetdyp-toolsypbind 等软件包。

package_remove 函数位于 link:scripts/packages[./scripts/packages]。

==== suid

确保 link:misc/suid.list[./misc/suid.list] 中的可执行文件没有设置 suid 位。

suid 函数位于 link:scripts/suid[./scripts/suid]。

==== restrictcompilers

将所有已安装的编译器的模式更改为 0750

restrictcompilers 函数位于 link:scripts/compilers[./scripts/compilers]。

==== umask

将默认 https://manpages.ubuntu.com/manpages/jammy/man2/umask.2.html[umask] 设置为 077

umask 函数位于 link:scripts/umask[./scripts/umask]。

==== path

将 ./config/initpath.sh[./config/initpath.sh] 复制到 /etc/profile.d/initpath.sh,并为 root 用户设置 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin,为其他用户设置 PATH=/usr/local/bin:/usr/sbin:/usr/bin:/bin:/snap/bin

path 函数位于 link:scripts/path[./scripts/path]。

==== aa_enforce

强制执行可用的 https://manpages.ubuntu.com/manpages/jammy/en/man7/apparmor.7.html[apparmor] 配置文件。

aa_enforce 函数位于 link:scripts/apparmor[./scripts/apparmor]。

==== aide_post

创建一个新的 AIDE 数据库。

aide_post 函数位于 link:scripts/aide[./scripts/aide]。

==== aide_timer

将 systemd AIDE 检查服务和计时器复制到 /etc/systemd/system/。

aide_timer 函数位于 link:scripts/aide[./scripts/aide]。

==== aptget_noexec

添加 DPkg::Pre-InvokeDPkg::Post-Invoke 以确保软件包更新在 noexec /tmp 分区上不会失败。

aptget_noexec 函数位于 link:scripts/aptget[./scripts/aptget]。

==== aptget_clean

运行 https://manpages.ubuntu.com/manpages/jammy/en/man8/apt-get.8.html[apt-get] cleanautoremove

aptget_clean 函数位于 link:scripts/aptget[./scripts/aptget]。

==== systemddelta

如果在详细模式下运行,则执行 https://manpages.ubuntu.com/manpages/jammy/man1/systemd-delta.1.html[systemd-delta]。

systemddelta 函数位于 link:scripts/systemddelta[./scripts/systemddelta]。

==== post

确保安装 https://manpages.ubuntu.com/manpages/jammy/man1/fwupdmgr.1.html[fwupdmgr] 和 https://packages.ubuntu.com/jammy/secureboot-db[secureboot-db],并更新 GRUB。

post 函数位于 link:scripts/post[./scripts/post]。

==== checkreboot

检查是否需要重启。

checkreboot 函数位于 link:scripts/reboot[./scripts/reboot]。

== 测试 在 link:tests/[tests 目录] 中有大约 760 个 https://github.com/bats-core/bats-core[Bats 测试],用于测试上述大部分设置。

[source,shell]

sudo apt-get -y install bats git clone https://github.com/konstruktoid/hardening.git cd hardening/tests/ sudo bats .

=== 使用 Vagrant 进行测试自动化 运行 bash ./runTests.sh 将使用 https://www.vagrantup.com/[Vagrant] 在所有支持的 Ubuntu 版本上运行上述所有测试、https://github.com/CISOfy/Lynis[Lynis] 和 https://www.open-scap.org/[OpenSCAP],并使用 https://www.cisecurity.org/benchmark/ubuntu_linux[CIS Ubuntu 基准]。

该脚本将生成一个名为 TESTRESULTS.adoc 的文件和 HTML 格式的 CIS 报告。

=== 测试主机 运行位于 link:tests/[tests 目录] 中的 bash ./runHostTests.sh 将生成一个 TESTRESULTS-<HOSTNAME>.adoc 报告。

运行位于 link:tests/[tests 目录] 中的 bash ./runHostTestsCsv.sh 将生成一个 TESTRESULTS-<HOSTNAME>.csv 报告。

== 推荐阅读 https://public.cyber.mil/stigs/downloads/?_dl_facet_stigs=operating-systems%2Cunix-linux[Canonical Ubuntu 20.04 LTS STIG - Ver 1, Rel 3] + https://www.cisecurity.org/benchmark/distribution_independent_linux/[CIS Distribution Independent Linux Benchmark] + https://www.cisecurity.org/benchmark/ubuntu_linux/[CIS Ubuntu Linux Benchmark] + https://www.ncsc.gov.uk/collection/end-user-device-security/platform-specific-guidance/ubuntu-18-04-lts[EUD Security Guidance: Ubuntu 18.04 LTS] + https://wiki.ubuntu.com/Security/Features + https://help.ubuntu.com/community/StricterDefaults +

== 贡献 你想贡献吗?太好了!我们随时欢迎贡献,无论大小。如果你发现了什么奇怪的地方,请随时 https://github.com/konstruktoid/hardening/issues/[提交新问题],通过 https://github.com/konstruktoid/hardening/pulls[创建拉取请求] 来改进代码,或者通过 https://github.com/sponsors/konstruktoid[赞助这个项目]。

Logo 由 https://github.com/reallinfo[reallinfo] 提供。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号