Debian/Linux系统安全配置教程
- 禁止root SSH登陆
- 配置SSH Key
- 配置iptables
当我们安装完Linux系统作为服务器后,总有一系列的安全配置需要进行。特别是当你的服务器Ip是对外网开放的话。全世界有很多不怀好意的人,不断试图穷举你的root密码,尝试登陆。那么为Linux服务器增加一些安全措施,是很有必要的。
本文读者需要有一定的linux基础,有一定的网络与英语基础。知道如何使用nano/vim编辑器。不过总体而言,本文是为初级用户编写。
系统更新
在配置前更新一下系统
apt update
apt upgrade -y
配置sudo
新增一个用户,用于替代root进行登陆
apt install sudo -y
useradd -m -s /bin/bash youruser
passwd youruser
为新增的用户增加sudo权限
visudo
youruser ALL=(ALL:ALL) NOPASSWD:ALL
配置ssh配置,禁止root登陆,禁止空密码登陆,然后重启ssh服务
nano /etc/ssh/sshd_config
PermitRootLogin no
PermitEmptyPasswords no #默认为no
service sshd restart
配置好后,你可以通过新增的用户ssh登陆服务器,可以通过sudo命令执行需要高权限的命令。如果希望完全切换到root账户,可以使用
sudo -i
配置ssh key
配置ssh key后,可以通过公钥私钥的验证方法验证模式,验证用户身份。这样的验证方式更加安全,便捷。配置成功后,ssh登陆服务器无需再繁琐地输入密码。
注意:下述部分配置会禁止ssh密码登陆,请在重启服务前将key放到正确的位置。如果你不清楚自己在做什么,建议在你能够使用非ssh手段登陆服务器的情况下进行尝试。
下述配置用于禁止密码登陆,开启公钥验证登陆。
nano /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
windows客户机安装git for windows后运行git bash产生密钥,产生的key存放于~.ssh目录。
ssh-keygen #生成密钥
cat ~/.ssh/id_rsa.pub #查看公钥
将客户端的公钥,写入服务器的对应用户的~/.ssh/authorized_keys文件,如果有多个客户机,可以换行添加多个公钥。
最后重启ssh服务,使配置生效
systemctl restart sshd
iptables与ip6tables配置
更多关于iptables配置信息,可参考:
https://wiki.debian.org/iptables
https://wiki.debian.org/DebianFirewall
nano /etc/iptables.rules
*filter
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
#-A INPUT -p tcp -s yourip --dport yourport -j ACCEPT
#-A INPUT -p tcp -s yourip -m state --state NEW --dport yourport -j ACCEPT
#-A INPUT -p tcp --dport yourport -j ACCEPT
#-A INPUT -p udp --dport yourport -j ACCEPT
# Allows SSH connections
# The --dport number is the same as in /etc/ssh/sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Now you should read up on iptables rules and consider whether ssh access
# for everyone is really desired. Most likely you will only allow access from certain IPs.
# Allow ping
# note that blocking other types of icmp packets is considered a bad idea by some
# remove -m icmp --icmp-type 8 from this line to allow all kinds of icmp:
# https://security.stackexchange.com/questions/22711
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls (access via 'dmesg' command)
#-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
nano /etc/ip6tables.rules
*filter
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-m state --state ESTABLISHED,RELATED -A INPUT -j ACCEPT
-A INPUT -p icmpv6 -j ACCEPT
COMMIT
使配置生效可使用命令
iptables-restore < /etc/iptables.rules
ip6tables-restore < /etc/ip6tables.rules
开机启动时,导入iptables规则
nano /etc/network/if-pre-up.d/iptables
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.rules
/sbin/ip6tables-restore < /etc/ip6tables.rules
chmod +x /etc/network/if-pre-up.d/iptables
保存当前的iptables rules可使用命令
iptables-save > /etc/iptables.rules
查看防火墙规则
iptables -L -n -v
ip6tables -L -n -v
至此,安全配置已完成,你可以在上述配置中添加自己的防火墙规则,例如哪些Ip能够访问服务器,哪些端口能够开放。然后使用iptables-restore命令刷新这些防火墙规则。
Debian/Linux系统安全配置教程的更多相关文章
- Kali Linux常用服务配置教程安装及配置DHCP服务
Kali Linux常用服务配置教程安装及配置DHCP服务 在Kali Linux中,默认没有安装DHCP服务.下面将介绍安装并配置DHCP服务的方法. 1.安装DHCP服务 在Kali Linux中 ...
- Linux 系统 网络配置
Linux 系统 网络配置 配置Linux系统网络的方法有几种,这里介绍本人常用的两种. 第一种:使用命令ifconfig配置,具体用法:Ipconfig ethx x.x.x.x net ...
- 虚拟机Linux系统下配置网络
虚拟机上安装Redhat9.0后是没有网络的,而本来的Windows系统是可以上网的,此时想在Redhat上网就需要在Linux系统上配置网络,以下是笔者自己配置的一点心得. 1.电脑本机系统打开网络 ...
- Kali Linux常用服务配置教程获取IP地址
Kali Linux常用服务配置教程获取IP地址 下面以Kali Linux为例,演示获取IP地址的方法 (1)设置网络接口为自动获取IP地址.在Kali Linux的收藏夹中单击图标,将显示所有的程 ...
- Kali Linux常用服务配置教程启动DHCP服务
Kali Linux常用服务配置教程启动DHCP服务 通过前面的介绍,DHCP服务就配置好了.接下来,用户就可以使用该服务器来获取IP地址了.下面将对前面配置的服务进行测试. 1.启动DHCP服务 如 ...
- Kali Linux常用服务配置教程DHCP服务原理
Kali Linux常用服务配置教程DHCP服务原理 动态主机配置协议(Dynamic Host Configuration Protocol,简称DHCP)是一个局域网的网络协议,基于UDP协议工作 ...
- Windows系统Git配置教程(Git配置git config)
Windows系统Git配置教程(Git配置git config) 在很多Git配置教程中,多是安装完毕后就告诉大家要配置用户名和邮箱,但是这个配置是保存在哪里呢,配置后面的参数有什么不同呢,下面 ...
- 在linux系统中配置NVMe over FC
在linux系统中配置NVMe over FC与配置NVMe over TCP类似,前5步操作请参考<在linux系统中配置NVMe over TCP>,网页连接如下: https://w ...
- CentOS7 【linux系统】配置 JDK 教程
1. 下载 [linux版本] JDK 1.8 的包. 2. 导入linux系统里面. 如何导入,下载一个winSCP 软件 破解安装,然后再linux 系统里面 查询IP,连接即可. 在linux解 ...
随机推荐
- 转-SpringMVC——之 国际化
原文地址:http://www.cnblogs.com/liukemng/p/3750117.html 在系列(7)中我们讲了数据的格式化显示,Spring在做格式化展示的时候已经做了国际化处理,那么 ...
- Java Web不能不懂的知识
1.传说中java的class文件可以一次编译到处运行,那么源代码采用GBK还是UTF-8会有影响么? 不会有影响. 因为Java源代码通过编译后,生成的class文件为字节码.它可以被看作是包含一个 ...
- docker监控的一点想法
目前项目内部署了docker,于是涉及到关于监控的事情,参考一些经典实例以及一些自己的想法,总结一下思路. 1.关于监控的内容 监控宿主机本身 监控宿主机本身还是比较简单的,同其他服务器监控类似,对c ...
- Linux中常用的查找文件的命令
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索.这些是从网上找到的资料(参考资料1),因为有时很长时间不会用到,当要用的时候经常弄混了,所以放到这里方便使用. w ...
- (转) C#中Timer使用及解决重入(多线程同时调用callback函数)问题
原文链接: http://www.cnblogs.com/hdkn235/archive/2014/12/27/4187925.html
- 【游记】noip2017酱油记
2017-10-14:初赛 12:00:比赛时间14:30-16:30,由于比赛地点在二附中,我12点就坐上了地铁(无力吐槽,周六中午人还那么多,站了一路). 13:45:到了efz,所有人都被拦在了 ...
- hdu-1052-Tian Ji -- The Horse Racing(经典)
/* hdu-1052 Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- 常见的HTTP Header
文件信息: Content-Type: application/x-javascript Content-Length: 2000 Content-Type:指定请求和响应的内容类型,如果未指定即为t ...
- 一、linux搭建jenkins+github详细步骤
事情缘由: 现在在做的主要工作是通过jenkins+postman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新 ...
- letter
while (cin.eof() != true) //cin.eof判断是否到达文件EOF,如果读取到EOF return true,读取到EOF则无法再次输入 while (cin.fail() ...