私人项目代码不想放到git、码云等服务器上,所以自建SVN服务,用于存储代码,后来文件越来越多,有了存储文件的需求,然后自建了NAS服务。
服务器系统:Ubuntu20.04 LTS
安装的服务有:
1. 首先IPv6不允许国外IP访问,虽然在内网IPv4也一样不允许国外IP访问,国外数据包一律丢弃。
然后开放22端口,后面配置连接ssh时,采用证书的方式登录。
# IPv4
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT # local
iptables -A INPUT -m set ! --match-set chnroute4 src -j DROP # not china ip
iptables -A INPUT -p icmp -j ACCEPT # ping
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh
#IPv6
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -i lo -j ACCEPT # local
ip6tables -A INPUT -m set ! --match-set chnroute6 src -j DROP # not china ip
ip6tables -A INPUT -p icmp -j ACCEPT # ping
ip6tables -A INPUT -p ipv6-icmp -j ACCEPT # ping
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh
关于 SSH 仅允许指定用户远程登录,参考这篇文章 : Linux SSH 仅允许指定用户远程登录
关于 SSH 仅允许证书登录,参考这篇文章 : Ubuntu Linux SSH 仅允许证书登录
#IPv4 仅允许光猫后面的内网访问,网络上不可见
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m multiport --dports 137,138 -j ACCEPT # samba
iptables -A INPUT -s 192.168.1.0/24 -p udp -m multiport --dports 137,138 -j ACCEPT # samba
#IPv6
# 不允许远程访问
3. 开放SVN、NextCloud、千千静听服务到所有网络,安全使用Fail2ban来防护,最多重试5次,否则屏蔽该IP。
#IPv6(IPv4 相同,使用iptables命令)
ip6tables -A INPUT -p tcp --dport 81 -j ACCEPT # nginx代理: nextcloud,parse server, 千千, onlyoffice, feed
ip6tables -A INPUT -p tcp --dport 3690 -j ACCEPT # svn
https服务统一采用81端口,针对不同的服务使用子域名,或者子路径的方式来保护,并且服务里禁止纯IP的访问。 这样当用nmap及其他扫描的时候,很难根据IP探测出来该端口后面的服务。
4. DHCP,Bind9,Emby,jellfin等 同Samba一样,仅允许内网IPv4、IPv6访问。
# IPv6配置仅允许特定IP访问(IPv4格式见samba配置)
ip6tables -A INPUT -s 2409:8a3c:xxxx:xxxx::/64 -p tcp --dport 53 -j ACCEPT # named
ip6tables -A INPUT -s 2409:8a3c:xxxx:xxxx::/64 -p udp --dport 53 -j ACCEPT # named
# log
#ip6tables -p udp --dport 53 -j LOG --log-prefix "ip4 udp input: " --log-level 7
iptables 配置的IP级防护完成。
安全相关文章: