![]() |
|
||||||||||||
| Work in Progress
blather and noise until its suitable for posting posting elsewhere |
These are work in progress HOWTO projects. Beware, nothing below is certified to be correct in any way.
iptables, using multiple MAC addresses
This iptables, ifconfig, and network from a reference Linux server
# iptables-save
*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 10.10.10.89/32 -i eth1 -o eth0 -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
*nat
:PREROUTING ACCEPT
:POSTROUTING ACCEPT
:OUTPUT ACCEPT
-A PREROUTING -d 108.209.107.237/32 -i eth1 -j DNAT --to-destination 10.10.10.89
-A POSTROUTING -s 10.10.10.89/32 -o eth1 -j SNAT --to-source 108.209.107.237
COMMIT
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:AC:DC:6C
inet addr:10.10.10.87 Bcast:10.10.10.255 Mask:255.255.255.0
eth1 Link encap:Ethernet HWaddr 00:0C:29:AC:DC:76
inet addr:108.209.107.237 Bcast:108.209.107.239 Mask:255.255.255.248
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
# cat network
NETWORKING=yes
HOSTNAME=c6x2ip87.local.zaptech.org
GATEWAY=108.209.107.238
NETWORKING_IPV6=no
IPV6INIT=no Okay, so here is what is now active on Linux firewall 108.209.107.235 -> 10.10.10.81.
# iptables-save [ not actually save, just dumps current iptables directives to stdout ] *nat :PREROUTING ACCEPT [161:13175] :POSTROUTING ACCEPT [6:368] :OUTPUT ACCEPT [1:108] -A PREROUTING -d 108.209.107.235/32 -i eth1 -j DNAT --to-destination 10.10.10.89 -A POSTROUTING -s 10.10.10.89/32 -o eth1 -j SNAT --to-source 108.209.107.235 COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [422:49938] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A FORWARD -d 10.10.10.89/32 -i eth1 -o eth0 -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
Also disable IPv6, you don't want your firewall accepting anything except IPv4 with the config above. Requires reboot just to be sure.
# cat /etc/modprobe.d/disable_ipv6.conf options ipv6 disable = 1
More fun, VMware and CentOS screw up paravirtual network driver performance, some directives can address this.
# iptables-save
# cat notes.txt
http://wiki.centos.org/TipsAndTricks/IPForwarding
/etc/sysctl.conf/net.ipv4.ip_forward = 1
[ is this realtime, or requires reboot? ]
# ethtool -K eth0 gso off
# ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: off
large-receive-offload: off
# ethtool -k eth1
Offload parameters for eth1:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: off
large-receive-offload: off
Now for the internal sever
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:9E:D6:DC
inet addr:10.10.10.89 Bcast:10.10.10.255 Mask:255.255.255.0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
# ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp-segmentation-offload: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: off
large-receive-offload: on
NFTables?
OS X, https
# apachectl stop
launchctl: Error unloading: org.apache.httpd
[ this means apachectl did not quietly launch https,
perhaps if certificate was given a passphrase ]
# httpd
httpd: Could not reliably determine the server's fully qualified domain name,
using mini.local.zaptech.org for ServerName
(48)Address already in use: make_sock: could not bind to address [::]:80
(48)Address already in use: make_sock: could not bind to address [::]:443
Apache/2.2.22 mod_ssl/2.2.22 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.
Server www.example.com:443 (RSA)
Enter pass phrase:
OK: Pass Phrase Dialog successful.
# ps ax | grep http
88767 ?? Ss 0:00.25 httpd
88768 ?? S 0:00.02 httpd
88769 ?? S 0:00.02 httpd
88770 ?? S 0:00.02 httpd
# kill 88767
# ps ax | grep http
# pwd
/var/root/ssl/apache2
# ssh-keygen -f server.key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in server.key.
Your public key has been saved in server.key.pub.
The key fingerprint is:
58:a3:c7:38:7c:d9:d9:51:99:59:f0:10:31:62:c7:e7 root@mini.local.zaptech.org
The key's randomart image is:
+--[ RSA 2048]----+
| o.OO.|
| . +=+.|
| o . o.|
| . * + o . E|
| * S o . |
| + |
| |
| |
| |
+-----------------+
# ls -lh
-rw------- 1 root wheel 1.6K Apr 7 00:42 server.key
-rw-r--r-- 1 root wheel 409B Apr 7 00:42 server.key.pub
# openssl req -new -key server.key -out request.csr
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:CA
Locality Name (eg, city) []:Cupertino
Organization Name (eg, company) [Internet Widgits Pty Ltd]:zap technologies
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:Rick Armstrong
Email Address []:info@zaptech.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
# ls -lt
-rw-r--r-- 1 root wheel 1041 Apr 7 00:44 request.csr
-rw------- 1 root wheel 1675 Apr 7 00:42 server.key
-rw-r--r-- 1 root wheel 409 Apr 7 00:42 server.key.pub
# openssl x509 -req -days 365 -in request.csr -signkey server.key -out server.crt
Signature ok
subject=/C=US/ST=CA/L=Cupertino/O=zap technologies/CN=Rick Armstrong/emailAddress=info@zaptech.com
Getting Private key
# ls -lh
-rw-r--r-- 1 root wheel 1.0K Apr 7 00:44 request.csr
-rw-r--r-- 1 root wheel 1.2K Apr 7 00:44 server.crt
-rw------- 1 root wheel 1.6K Apr 7 00:42 server.key
-rw-r--r-- 1 root wheel 409B Apr 7 00:42 server.key.pub
# cd /etc/apache2
[ in the past /etc/apache2/ssl was used ]
# cp ~/ssl/apache2/server.crt .
# cp ~/ssl/apache2/server.key .
# ls -lh
-rw-r--r-- 1 root wheel 1.2K Apr 7 00:46 server.crt
-rw------- 1 root wheel 1.6K Apr 7 00:46 server.key
# httpd
httpd: Could not reliably determine the server's fully qualified domain name,
using mini.local.zaptech.org for ServerName
# ps ax | grep -i http
88828 ?? Rs 0:00.39 httpd
88829 ?? S 0:00.01 httpd
# kill 88828
# ps ax | grep -i http
# rcsdiff /etc/apache2/httpd.conf
161a162
> ServerName mini.local.zaptech.org
469c470
< #Include /private/etc/apache2/extra/httpd-vhosts.conf
---
> Include /private/etc/apache2/extra/httpd-vhosts.conf
481c482
< #Include /private/etc/apache2/extra/httpd-ssl.conf
---
> Include /private/etc/apache2/extra/httpd-ssl.conf
# apachectl start
# ps ax | grep -i http
88865 ?? Ss 0:01.37 /usr/sbin/httpd -D FOREGROUND
88866 ?? S 0:00.00 /usr/sbin/httpd -D FOREGROUND