[root@server ~] # uname –a # 查看内核/操作系统/CPU信息的linux系统信息命令
[root@server ~] # head -n 1 /etc/issue # 查看操作系统版本,是数字1不是字母L
[root@server ~] # cat /proc/cpuinfo # 查看CPU信息的linux系统信息命令
[root@server ~] # hostname # 查看计算机名的linux系统信息命令
[root@server ~] # lspci -tv # 列出所有PCI设备
[root@server ~] # lsusb -tv # 列出所有USB设备的linux系统信息命令
[root@server ~] # lsmod # 列出加载的内核模块
[root@server ~] # env # 查看环境变量资源
[root@server ~] # free -m # 查看内存使用量和交换区使用量
[root@server ~] # df -h # 查看各分区使用情况
[root@server ~] # du -sh # 查看指定目录的大小
[root@server ~] # grep MemTotal /proc/meminfo # 查看内存总量
[root@server ~] # grep MemFree /proc/meminfo # 查看空闲内存量
[root@server ~] # uptime # 查看系统运行时间、用户数、负载
[root@server ~] # cat /proc/loadavg # 查看系统负载磁盘和分区
[root@server ~] # mount | column -t # 查看挂接的分区状态
[root@server ~] # fdisk -l # 查看所有分区
[root@server ~] # swapon -s # 查看所有交换分区
[root@server ~] # hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
[root@server ~] # dmesg | grep IDE # 查看启动时IDE设备检测状况网络
[root@server ~] # ifconfig # 查看所有网络接口的属性
[root@server ~] # iptables -L # 查看防火墙设置
[root@server ~] # route -n # 查看路由表
[root@server ~] # netstat -lntp # 查看所有监听端口
[root@server ~] # netstat -antp # 查看所有已经建立的连接
[root@server ~] # netstat -s # 查看网络统计信息进程
[root@server ~] # ps -ef # 查看所有进程
[root@server ~] # top # 实时显示进程状态用户
[root@server ~] # w # 查看活动用户
[root@server ~] # id # 查看指定用户信息
[root@server ~] # last # 查看用户登录日志
[root@server ~] # cut -d: -f1 /etc/passwd # 查看系统所有用户
[root@server ~] # cut -d: -f1 /etc/group # 查看系统所有组
[root@server ~] # crontab -l # 查看当前用户的计划任务服务
[root@server ~] # chkconfig –list # 列出所有系统服务
[root@server ~] # chkconfig –list | grep on # 列出所有启动的系统服务程序
[root@server ~] # rpm -qa # 查看所有安装的软件包
[root@server ~] # cat /proc/cpuinfo # 查看CPU相关参数的linux系统命令
[root@server ~] # cat /proc/partitions # 查看linux硬盘和分区信息的系统信息命令
[root@server ~] # cat /proc/meminfo # 查看linux系统内存信息的linux系统命令
[root@server ~] # cat /proc/version # 查看版本,类似uname -r
[root@server ~] # cat /proc/ioports # 查看设备io端口
[root@server ~] # cat /proc/interrupts # 查看中断
[root@server ~] # cat /proc/pci # 查看pci设备的信息
[root@server ~] # cat /proc/swaps # 查看所有swap分区的信息
Linux相关
在vps上搭建nginx+twip
apache上搭建twip也试过,不过apache不愧是个吃资源的大户,于是准备改用nginx。网上搜了把发现还是很简单的,以下内容在原来的基础上略有修改。 1.安装需要的包
apt-get install curl libcurl3 libcurl3-dev
2.安装php组件
apt-get install php5-cli php5-cgi php5-curl spawn-fcgi
在最后添加:cgi.fix_pathinfo=1修改配置项:/etc/php5/cgi/php.ini 3.安装nginx组件
apt-get install nginx
4.启动php服务
1 2 |
|
5.配置nginx的配置文件,这里面需要注意下,有几个地方略作了修改。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
注意,因为我使用了加密连接,所以这里我监听的是443端口,server_name是你的域名root和fastcgi_param里的路径和你的api路径一致,我的是直接放在网站根目录下,如果你是放在yourdomain.com/twip下的话 可以改成/var/www/twip。 这段配置还有一个需要注意的地方就是要放在nginx.conf的http节点里面。由于我配置了ssl加密连接,所以还需要配置下相关证书。 在http节点里server节点外面加上配置好的证书路径即可。
ssl on; ssl_certificate /etc/nginx/conf/ssl-unified.crt; ssl_certificate_key /etc/nginx/conf/ssl.key;
关于证书的配置方法,因为我用的是startssl的免费证书,所以具体的方法可以看看他们的faq,非常简单。 最后就是部署twip了,这个也非常简单,到code.google.com上down下代码把config.php里的consume_key之类的填一下上传即可。 最后重启下nginx看看,/etc/init.d/nginx restart。 以上文章大部分参考的是在vps上搭建nginx+twip,在此借用希望不介意。
Linux禁用ping
禁止ping会有诸多不便,但是其带来的好处有时也令人不忍放弃,比如我,我有一台VPS之前因为搭了个VPN,结果没过多久后就遭到了洪水攻击,你懂得。。。后来把ping禁止掉后,换了下ssh的端口,立马清静了~
关于禁止ping的方法看了下网上很多人的帖子,其方式无外乎两类。一类通过修改内存加载的控制文件直接禁掉所有ICMP协议,另一类就是通过配置防火墙iptables规则来实现了。这两类方法各有优缺点,以下分别进行阐述。
第一类:修改内存加载的控制文件/proc/sys/net/ipv4/icmp_echo_ignore_all
这个方法也有很多种,最简单的就是直接修改文件:
关闭ping
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
开启ping
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
另外也可以通过控制命令sysctl来控制
sysctl -w net.ipv4.icmp_echo_ignore_all=1 sysctl -p
注:sysctl设置和显示在/proc/sys目录中的内核参数.能用sysctl来设置或重新设置连网功能,如IP转发、IP碎片去除及源路由检查等。用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。
sysctl [-n] [-e] -w variable=value
sysctl [-n] [-e] -p (default /etc/sysctl.conf)
sysctl [-n] [-e] -a
常用参数的意义:
-w 临时改动某个指定参数的值,如:sysctl -w net.ipv4.ip_forward=1
-a 显示所有的系统参数
-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
如果仅仅是想临时改动某个系统参数的值,能用两种方法来实现,例如想启用IP路由转发功能:
1) #echo 1 > /proc/sys/net/ipv4/ip_forward
2) #sysctl -w net.ipv4.ip_forward=1
以上两种方法都可能即时开启路由功能,但如果系统重启,或执行了
# service network restart
命令,所设置的值即会丢失,如果想永久保留设置,能修改/etc/sysctl.conf文件
将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1
可见,该方法的优点在于其简单,但缺点确在于无法保持配置,而且直接修改配置文件禁用的是整个icmp协议,在很多情况下确实有其不便之处。
第二类:配置iptables防火墙规则
本人对iptables也只是个初学者,没法进行详细讲解,这里就贴几个网上找到的例子。
iptables普通配置文件 :
vim /etc/firewall.sh
iptables -F
iptables -N FIREWALL
iptables -F FIREWALL
iptables -A INPUT -j FIREWALL
iptables -A FORWARD -j FIREWALL
iptables -A FIREWALL -p tcp -m tcp –dport 110 –syn -j ACCEPT
# nginx web server
iptables -A FIREWALL -p tcp -m tcp –dport 80 –syn -j ACCEPT
# apache web server
iptables -A FIREWALL -p tcp -m tcp –dport 81 –syn -j ACCEPT
#ssh
iptables -A FIREWALL -p tcp -m tcp –dport 22 –syn -j ACCEPT
iptables -A FIREWALL -i lo -j ACCEPT
# dns
iptables -A FIREWALL -p udp -m udp –sport 53 -j ACCEPT
iptables -A FIREWALL -p tcp -m tcp –syn -j REJECT
iptables -A FIREWALL -p udp -m udp -j REJECT
#禁ping
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
#开启ping
#iptables -D INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
生成firewall.sh文件
权限
chmod 755 /etc/firewall.sh
修改配置文件
vim /etc/init.d/rc.local
在最后一行加上
sh /etc/firewall.sh
iptables屏蔽IP :
#如果只是想屏蔽IP的话“3、开放指定的端口”可以直接跳过。
#屏蔽单个IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即从123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP
查看已配置的规则,使用如下命令
iptables -L
会输出以下内容
Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destination
上面的规则说明,允许任何人从任何地方访问。
首先来创建一个Iptables的文件
nano /etc/iptables.test.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 –dport 80 -j ACCEPT
-A INPUT -p tcp –dport 443 -j ACCEPT# Allows SSH connections for script kiddies
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
-A INPUT -p tcp -m state –state NEW –dport 30000 -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
-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
这看到比较复杂,但细看每一部分,你会发现,它只是关闭除了我们允许的所有端口,在这种情况下是80和443端口(标准的网络浏览器的端口)和前面定义的SSH端口。
激活这些新的规则
iptables-restore < /etc/iptables.test.rules
再来看看有什么不同
iptables -L
我们看到,只有上面定义的端口是关闭的,其余都是关闭的。如果是这样的,将保存Iptables文件
iptables-save > /etc/iptables.up.rules
为了确保iptables规则开始重新启动,我们将创建一个新的文件
nano /etc/network/if-pre-up.d/iptables
输入下面内容
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
更改一下权限
chmod +x /etc/network/if-pre-up.d/iptables
#添加屏蔽IP
#禁止此IP访问服务器
iptables -I INPUT -s 1.2.3.4 -j DROP
或
iptables -A INPUT -s 1.2.3.4 -j DROP
#禁止服务器访问此IP
iptables -A OUTPUT -d 1.2.3.4 -j DROP
如果要封某个网段:
iptables -I INPUT -s 1.2.3.0/24 -j DROP
#清空屏蔽IP
iptables -t filter -D INPUT -s 1.2.3.4 -j DROP
iptables -t filter -D OUTPUT -d 1.2.3.4 -j DROP
#一键清空所有规则
iptables -F
#查看
iptables -L INPUT
或
iptables -L
或
iptables-save(此命令将保存规则,下次开机自动执行)
#处理IP碎片数量,防止攻击,允许每秒100个
iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT
#设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包
iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT