Kali2017安装后的那些事

一、更新源

  kali装完后apt的source.list里面是空的,当然有官方源的注释,于是手动添加几个常用的源

#中科大
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb http://mirrors.aliyun.com/kali-security kali/updates main contrib non-free

#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

#浙大
deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free

#东软大学
deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib

#官方源
deb http://http.kali.org/kali kali-rolling main non-free contrib
deb-src http://http.kali.org/kali kali-rolling main non-free contrib

  这些都是百度上都能找到的

  剩下的就是 apt-get update和apt-get dis-upgrade或者apt-get upgrade,前者是更新系统内核和所有程序,后者只更新外围程序

  更新系统内核要注意,可能导致部分软件不能使用,比如虚拟机,需要重新编译链接库文件,或者更新虚拟机版本

  我是更新系统后发现VM12不能用了,VM14可以用

二、安装fcitx

  kali不自带fcitx,不能输中文百度都很费劲啊,还好百度认得拼音,更新完源之后第一件事就是装输入法

  感觉还是fcitx好用,不知道为啥,我装不上搜狗拼音的deb,于是google拼音还是sun拼音看你喜欢了

  我用的是google拼音

apt-get install fcitx
apt-get install fcitx-googlepinyin

  不论用哪个都需要重启生效,而且如果重启后依然没有用,估计是fcitx没有启动,用im-config检查一下当前系统用的哪个ime

三、SSH

  虽然一般情况用不到,但还是配置一下比较好,有其实想折腾显卡驱动的时候,如果黑屏进不了系统,连控制台都进不去的那种,只有SSH能救了,不然重装系统吧

  我重装Linux只有三种情况

  一个是硬盘空间分小了,我是双系统,都装固态上,扩容太麻烦,搞不好丢引导又要捣鼓半天

  第二个是显卡驱动,目前就成功过一次,用的大蜜蜂(bumblebee)搞得,

  第三个是装虚拟机和ORACLE数据库,VM太占地方了,vbox不稳定,装的win7莫名其妙蓝屏,于是放弃linux上玩虚拟机了,另外ORACLE的数据库装上后死活无法启动服务,懒得折腾了,老老实实用mysql

  这是我到现在也没有学ORACLE的原因

  kali自带SSH,不过默认没有开,配置文件位于/etc/ssh/sshd_config

  需要把里面的部分注释去掉#号并修改一下使之生效,vi临时显示行号 :set nu,别忘了冒号

  # 允许root用户登录

  第32行:PermitRootLogin yes

  # 允许使用密码登录

  第56行:PasswordAuthentication yes

  不同版本的linux行号可能不一样,不过参数名都是一样的

  然后启动服务service ssh start

  这个服务不是开机自启动,需要自启动的话update-rc.d ssh enable,这个是网上找的设置服务自启动的方法,我没有试,我用的脚本,加到用户配置文件里了,脚本最后贴出来

四、vsftpd服务器

  搭建个FTP服务器纯属个人爱好,记录一下,不然还得忘

  安装就是apt-get install vsftpd,配置文件位于/etc/vsftpd.conf

  同样需要修改一些注释并去掉#号

  # 允许匿名用户登录

  第25行:anonymous_enable=YES

  # 允许修改配置文件

  第31行:write_enable=YES

  # 因为Linux系统使用的是UTF-8,Windows的话大概不用管吧(win大概是gbk)

  第156行:utf8_filesystem=YES

  在配置文件末尾加上

  userlist_enable=YES # 启用用户列表配置文件
  userlist_deny=NO # NO的话是允许列表中的用户登录,YES是禁止列表中的用户登录,一般用NO

  # 因为vsftp有一个黑名单列表位于/etc/ftpusers,不想让某些用户登录的话就放这里,vsftp为了安全默认会把权限过大的用户拉黑,比如root
  userlist_file=/etc/ftp_user_list # 用户列表配置文件的位置,这个文件需要自己新建,建完之后一行一个用户名这样写就行
  seccomp_sandbox=NO # 好像是沙盒模式,自己玩的没必要开

  其实这就可以了,然后service vsftpd start启动服务

  还有一些其他设置

  这个是我设置限制用户切换目录的设置

  匿名用户我设置的根目录是/home/uftp/share,这样他就不能访问我其他地方的文件了,这里我禁止了匿名用户的上传

  allow_writeable_chroot=YES
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd.chroot_list
  anon_root=/home/uftp/share
  anon_upload_enable=NO
  这个是SSL加密,第一次玩的时候感觉好麻烦,现在就觉得敲配置麻烦
  ssl_enable=YES
  allow_anon_ssl=NO
  ssl_tlsv1=YES
  ssl_sslv2=NO
  ssl_sslv3=NO
  require_ssl_reuse=NO
  ssl_ciphers=HIGH
  rsa_cert_file=/etc/vsftpd.pem
  rsa_private_key_file=/etc/vsftpd.pem # 这个密钥文件需要自己生成
  pasv_max_port=61100
  pasv_min_port=61001

  生成密钥文件:openssl req -new -x509 -nodes -out /etc/vsftpd.pem -keyout /etc/vsftpd.pem -days 365

  好像是这么写的,回车之后他让你填一些基本信息,国家省份公司名邮箱什么的

  因为是被动模式,后面要开防火墙,所以需要配置一下端口范围,

  listen_port=21
  listen_data_port=20

  前者是命令端口,后者是数据端口,可以自定义,建议使用50000以上的端口号,这个数据端口是主动模式用的

  如果是被动模式,数据端口就是动态的,比如我上面配置的61001-61100范围,每个ftp连接的数据端口都在这个范围内

  本地可以直接用ftp做测试,貌似kali不自带ftp客户端,需要自己安装apt-get install ftp

  另外SSL加密的连接没法用FTP命令,于是下载个Filezilla,他有linux版的,包安装貌似也有,不过不是最新的,启动后他会自己检查更新,然后将更新包下载到/root/downloads里面,

  用的话就是解压后把filezilla文件夹里面的东西直接复制到/usr就行,提示覆盖就覆盖,提示合并就合并,用习惯win绿色版软件之后这种方式还真不习惯

五、mysql

  建议用mariadb,是mysql的一个分支,我感觉比mysql更好,安装apt-get install mariadb-client和apt-get install mariadb-server,前者客户端,后者服务器

  启动的话service mysql start,他也是默认不自启的,要自启得手动设置服务

  默认用户名密码都是root,然后要注意,因为安全限制,这个root用户只能在本机登录,就算改了user表也不行,于是自己再开个用户给所有权限就好了

  

-- 建立新用户
CREATE USER '用户名'@'主机地址' IDENTIFIED BY '密码';
-- 授权 这里授予所有权限
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'主机地址' WITH GRANT OPTION;
-- 主机地址填%代表任何地址
-- 修改密码的话
SET PASSWORD FOR '用户名'@'主机地址' = PASSWORD('密码');

六、apache/nginx/php的安装与配置

  这仨kali都自带了,所以安装就免了,如果没有的话apt-get install 应该会用了吧,另外这仨也都不是自启服务

  apache和nginx很像的,但我觉得nginx更好用,这里我用的nginx代理的apache和tomcat,具体见http://www.cnblogs.com/panther1942/p/8695318.html

  不过有一点,我的那篇把站点当成配置文件弄了,按说应该存在sites-available里面的,不过因为能用所以也懒得改了,在服务器使用的话需要注意,这不是什么好习惯

  apache和nginx的默认网站路径都是/var/www,建议不要改根配置文件,在站点配置文件里面改就好了

  php的话看看/etc/apache2/mods-enabled里面有没有php7.x.load和php7.x.conf,x是版本,我的是7.2,如果没有尝试启用 a2enmod php7.2

  如果还没有就安装apt-get install libapache2-mod-php 然后启用

  apache2启用代理模块的话,就是当反向代理用需要开启proxy,proxy_http,rewrite这仨模块,nginx貌似不用管可以直接用

  对了,由于我是nginx和apache并存的,所以要修改apache2的端口,在/etc/apache2/port.conf里面,把监听的80改了就行了

  比如我让apache监听9000端口,然后nginx把apache上跑的网站的地址代理到9000的端口上就可以了

  另外我启动apache的时候报错了,说是本机地址不明确,于是apache2.conf的最后面加行

  ServerName localhost

  然后就好了,如果还有错误就是站点配置错误了

  站点配置以/etc/apache2/site-avaliable/000-default.conf为模板改就行了

  两个最基本的地方

  1、根标记 我的是 <VirtualHost *:9000> *我也不知道啥意思,别人都这么配,我感觉大概是代表本机所有回环地址,9000是端口号,不填默认80

  2、DocumentRoot 填网站的物理地址(本机地址,实际地址,反正就是本机绝对路径),例如/root/workspace/apache/demo1

  3、ServerName 这个可有可无,如果是服务器要写和申请的域名一样,如果是开发的话可以不写,

  写的话得在/etc/hosts里面也加上并指向根标签一样的ip,如果是*就指向127.0.0.1

  php的话基本装上就能用,如果要用数据库或者其他模块,php配置文件的第893行之后,需要哪个去掉哪行的分号

  我的是php7.2,配置文件路径/etc/php/7.2/apache2/php.ini

七、iptables

  我觉得linux系统最省事的就是安全防护,基本上开个防火墙就能杜绝大部分危害,尤其是对于我这样的懒虫

  

 1 #! /bin/bash
 2 
 3 iptables -F # 清空原有的iptables规则,避免重复
 4 iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT # 允许回环地址的访问,127.0.0.1需要单独设置
 5 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许已建立的通信进入
 6 iptables -A INPUT -i lo -j ACCEPT # 允许回环地址的访问
 7 iptables -A INPUT -p tcp --dport 20 -j ACCEPT # ftp主动模式数据端口
 8 iptables -A INPUT -p tcp --dport 21 -j ACCEPT # ftp命令端口
 9 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # ssh
10 iptables -A INPUT -p tcp --dport 80 -j ACCEPT # http
11 iptables -A INPUT -p tcp --dport 443 -j ACCEPT # https
12 iptables -A INPUT -p tcp --dport 3306 -j ACCEPT # mysql
13 iptables -A INPUT -p tcp --dport 3690 -j ACCEPT # svn
14 iptables -A INPUT -p tcp --dport 8080 -j ACCEPT # tomcat 其实可以关掉了,因为我用nginx做反向代理了
15 iptables -A INPUT -p tcp --dport 61001:61100 -j ACCEPT # ftp被动模式数据端口
16 iptables -A INPUT -p icmp -m icmp --icmp-type 0 -j REJECT # 拒绝别人ping自己
17 iptables -A INPUT -j REJECT # 拒绝除以上规则外的所有请求进入
18 
19 iptables -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # 允许自己ping别人
20 iptables -A OUTPUT -j ACCEPT # 允许本机任何向外的请求
21 
22 iptables -A FORWARD -j REJECT # 拒绝任何转发请求

八、无线网络和蓝牙的小问题

  虽然自带开启ap(热点)的功能,不过居然不能修改ap密码,于是github上有个create_ap的程序,很好用,编译安装后好像需要安装hostapd才能用

  create_ap 无线设备(一般是无线网卡) 可以上网的设备(一般是有线网卡)热点名 密码

  比如 create_ap wlan0 eth0 notepad-AP 123456

  蓝牙居然是服务,用的话需要手动开,service bluetooth start

九、杂项

  1、字体的话从windows上拷过来(C:windowsfonts)TTF TTC都可以用的,建议放到/usr/share/fonts下,最好建个文件夹

  复制进去之后终端进入文件夹三个命令建立缓存

  mkfontscale
  mkfontdir
  fc-cache -fv

  2、jdk的话自带的是openjdk,建议下载个jdk放/usr/lib/jvm下,然后改全局配置/etc/profile 最后面加上

  

export JAVA_HOME=jdk的绝对路径
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

  3、安装svn的话,apt-get install subversion和apt-get install subversion-tools

  然后svn的使用最频繁的就是创建项目 svnadmin create 绝对路径,其他操作就交给可视化界面的工具操作吧,其实我也不熟,单纯的把它当网盘一类的东西使用了

  4、其他软件

  音乐 audacious 本地视频 smplayer 文本编辑器 sublime或者vscode 办公软件 wps或者Libre Office

  最后那个脚本文件

  

 1 #!/bin/bash
 2 
 3 /root/.config/autostart/iptables-config.sh
 4 
 5 netstat -altnp | grep vsftpd
 6 if [ $? -ne 0 ]; then 
 7     echo "start vsftpd server"
 8         service vsftpd start &
 9 fi
10 netstat -altnp | grep apache2
11 if [ $? -ne 0 ]; then
12     echo "start apache2 server"
13     service apache2 start &
14 fi
15 netstat -altnp | grep ssh
16 if [ $? -ne 0 ]; then
17     echo "start ssh server"
18     service ssh start &
19 fi
20 netstat -altnp | grep nginx
21 if [ $? -ne 0 ]; then
22     echo "start nginx server"
23     service nginx start &
24 fi

第三行是我加载iptables规则,他不会自动加载规则就只能这么弄了

一些服务我没有设置成自启动,写成启动脚本挂在全局配置文件末尾,缺点是用户登录一次他就执行一次

于是先判断服务是否在运行,如果没有运行则启动,否则啥都不做

bash编程的空格好严格

补记 20180410 1603

忘记了一件很重要的事,远程桌面,公司的服务器是WIN2000和WIN2012,玩redesktop不会SSL加密没法连上去

老提示无法认证,除非服务器的远程桌面安全级别也改了才可以,总觉得这样做会有问题,而且redesktop是运行在终端的,没法最小化,用起来不舒服

于是想装tsclient,但是kali貌似没有,debian貌似也没有,顿时郁闷了,然后突然发现了一条Remmina代替tsclient的网页

看界面感觉貌似很好用,而且apt安装居然源里都有,果断装上apt-get install remmina,界面有种vbox的感觉(貌似GNOME风格的窗口都这样)

而且服务器那边远程桌面的安全等级也不用改了,这玩意支持网络级别安全认证,分辨率也不用憋屈的800*600或者全屏了,总之,真的挺好用的

不建议把图像质量开太高,不然卡成幻灯片,不过用远程桌面一般也就是部署一下项目,重启一下服务或者简单的文本编辑,视觉效果嘛,能看清字就行,所以我用最低的效果感觉还可以接受

来自1942年冬季攻势中的中央集团军的037号17吨救援拖车
原文地址:https://www.cnblogs.com/panther1942/p/8758885.html