Keypress=$(head -c1) # 或者使用$(dd bs=1 count=1 2> /dev/null) echo \ stty \ # 恢复老的设置. exit 0 } } iptables{ 内建三个表:nat mangle 和 filter filter预设规则表,有INPUT、FORWARD 和 OUTPUT 三个规则链 vi /etc/sysconfig/iptables # 配置文件 INPUT # 进入 FORWARD # 转发 OUTPUT # 出去 ACCEPT # 将封包放行 REJECT # 拦阻该封包 DROP # 丢弃封包不予处理 -A # 在所选择的链(INPUT等)末添加一条或更多规则 -D # 删除一条 -E # 修改 -p # tcp、udp、icmp 0相当于所有all !取反 -P # 设置缺省策略(与所有链都不匹配强制使用此策略) -s # IP/掩码 (IP/24) 主机名、网络名和清楚的IP地址 !取反 -j # 目标跳转,立即决定包的命运的专用内建目标 -i # 进入的(网络)接口 [名称] eth0 -o # 输出接口[名称] -m # 模块 --sport # 源端口 --dport # 目标端口 iptables -F # 将防火墙中的规则条目清除掉 # 注意: iptables -P INPUT ACCEPT
iptables-restore < 规则文件 # 导入防火墙规则 /etc/init.d/iptables save # 保存防火墙设置 /etc/init.d/iptables restart # 重启防火墙服务 iptables -L -n # 查看规则 iptables -t nat -nL # 查看转发
iptables实例{ iptables -L INPUT # 列出某规则链中的所有规则
iptables -X allowed # 删除某个规则链 ,不加规则链,清除所有非内建的 iptables -Z INPUT # 将封包计数器归零 iptables -N allowed # 定义新的规则链 iptables -P INPUT DROP # 定义过滤政策 iptables -A INPUT -s 192.168.1.1 # 比对封包的来源IP # ! 192.168.0.0/24 ! 反向对比 iptables -A INPUT -d 192.168.1.1 # 比对封包的目的地IP iptables -A INPUT -i eth0 # 比对封包是从哪片网卡进入 iptables -A FORWARD -o eth0 # 比对封包要从哪片网卡送出 eth+表示所有的网卡 iptables -A INPUT -p tcp # -p ! tcp 排除tcp以外的udp、icmp。-p all所有类型 iptables -D INPUT 8 # 从某个规则链中删除一条规则 iptables -D INPUT --dport 80 -j DROP # 从某个规则链中删除一条规则 iptables -R INPUT 8 -s 192.168.0.1 -j DROP # 取代现行规则 iptables -I INPUT 8 --dport 80 -j ACCEPT # 插入一条规则 iptables -A INPUT -i eth0 -j DROP # 其它情况不允许 iptables -A INPUT -p tcp -s IP -j DROP # 禁止指定IP访问 iptables -A INPUT -p tcp -s IP --dport port -j DROP # 禁止指定IP访问端口 iptables -A INPUT -s IP -p tcp --dport port -j ACCEPT # 允许在IP访问指定端口 iptables -A INPUT -p tcp --dport 22 -j DROP # 禁止使用某端口 iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP # 禁止icmp端口 iptables -A INPUT -i eth0 -p icmp -j DROP # 禁止icmp端口 iptables -t filter -A INPUT -i eth0 -p tcp --syn -j DROP # 阻止所有没有经过你系统授权的TCP连接 iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT # IP包流量限制 iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT # 除192.168.62.1外,禁止其它人ping我的主机 iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 --rttl --name WEB --rsource -j DROP # 可防御cc攻击(未测试) } iptables配置实例文件{ # Generated by iptables-save v1.2.11 on Fri Feb 9 12:10:37 2007 *filter
}
:INPUT ACCEPT [637:58967] :FORWARD DROP [0:0]
:OUTPUT ACCEPT [5091:1301533] # 允许的IP或IP段访问 建议多个 -A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
-A INPUT -s 192.168.0.0/255.255.0.0 -p tcp -j ACCEPT # 开放对外开放端口
-A INPUT -p tcp --dport 80 -j ACCEPT
# 指定某端口针对IP开放
-A INPUT -s 192.168.10.37 -p tcp --dport 22 -j ACCEPT
# 拒绝所有协议(INPUT允许)
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP # 允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 拒绝ping
-A INPUT -p tcp -m tcp -j REJECT --reject-with icmp-port-unreachable COMMIT
# Completed on Fri Feb 9 12:10:37 2007
iptables配置实例{
# 允许某段IP访问任何端口
iptables -A INPUT -s 192.168.0.3/24 -p tcp -j ACCEPT
# 设定预设规则 (拒绝所有的数据包,再允许需要的,如只做WEB服务器.还是推荐三个链都是DROP) iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT
# 注意: 直接设置这三条会掉线 # 开启22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 如果OUTPUT 设置成DROP的,要写上下面一条 iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
# 注:不写导致无法SSH.其他的端口一样,OUTPUT设置成DROP的话,也要添加# 如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链 iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT # 做WEB服务器,开启80端口 ,其他同理 iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 做邮件服务器,开启25,110端口
iptables -A INPUT -p tcp --dport 110 -j ACCEPT iptables -A INPUT -p tcp --dport 25 -j ACCEPT
一条链
发
}
# 允许icmp包通过,允许ping
iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话) iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话) # 允许loopback!(不然会导致DNS无法正常关闭等问题) IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP) IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
添加网段转发{
# 例如通过vpn上网
echo 1 > /proc/sys/net/ipv4/ip_forward # 在内核里打开ip转发功能 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE # 添加网段转iptables -t nat -A POSTROUTING -s 10.0.0.0/255.0.0.0 -o eth0 -j SNAT --to
192.168.10.158 # 原IP网段经过哪个网卡IP出去 iptables -t nat -nL # 查看转发 } 端口映射{ # 内网通过有外网IP的机器映射端口 # 内网主机添加路由 route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.20.111 # 内网需要添加默认网关,并且网关开启转发 # 网关主机 echo 1 > /proc/sys/net/ipv4/ip_forward # 在内核里打开ip转发功能 iptables -t nat -A PREROUTING -d 外网IP -p tcp --dport 9999 -j DNAT --to 10.10.20.55:22 # 进入 iptables -t nat -A POSTROUTING -s 10.10.20.0/24 -j SNAT --to 外网IP # 转发回去 iptables -t nat -nL # 查看转发 } } }
4服务{ /etc/init.d/sendmail start # 启动服务
/etc/init.d/sendmail stop # 关闭服务 /etc/init.d/sendmail status # 查看服务当前状态 /date/mysql/bin/mysqld_safe --user=mysql & # 启动mysql后台运行 vi /etc/rc.d/rc.local # 开机启动执行 可用于开机启动脚本 /etc/rc.d/rc3.d/S55sshd # 开机启动和关机关闭服务连接 # S开机start K关机stop 55级别 后跟服务名 ln -s -f /date/httpd/bin/apachectl /etc/rc.d/rc3.d/S15httpd # 将启动程序脚本连接到开机启动目录 ipvsadm -ln # lvs查看后端负载机并发 ipvsadm -C # lvs清除规则 xm list # 查看xen虚拟主机列表 virsh # 虚拟化(xen\\kvm)管理工具 yum groupinstall Virtual*
./bin/httpd -M # 查看httpd加载模块 httpd -t -D DUMP_MODULES # rpm包httpd查看加载模块 echo 内容| /bin/mail -s \标题\收件箱 -f 发件人 # 发送邮件 \内容\标题\收件箱 # 解决邮件乱码 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg # 检测nagios配置文件 chkconfig{
} httpd{
编译参数{
chkconfig 服务名 on|off|set # 设置非独立服务启状态 chkconfig --level 35 httpd off # 让服务不自动启动
chkconfig --level 35 httpd on # 让服务自动启动 35指的是运行级别 chkconfig --list # 查看所有服务的启动状态 chkconfig --list |grep httpd # 查看某个服务的启动状态 chkconfig –-list [服务名称] # 查看服务的状态
# so模块用来提供DSO支持的apache核心模块 # 如果编译中包含任何DSO模块,则mod_so会被自动包含进核心。 # 如果希望核心能够装载DSO,但不实际编译任何DSO模块,则需明确指定\ ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite --enable-forward # 实例编译 --with-mpm=worker # 已worker方式运行