On this page I try to explain how I usually configure new systems. This
might be very Ubuntu/Debian based. I hope that someone finds this helpful
and if there are (security) issues, people let me know.
When I have configuration files, I will link to them instead of putting
them on this page to avoid duplicating them and having outdated clones.
It should also be said that when I give commands, they are usually ran as
root..
## ufw
```
ufw allow 113
ufw allow 631
ufw allow 100XX
ufw limit 22
ufw enable
```
* Allow all traffic to the following ports:
* 113 - identd/authd (for IRC)
* 631 - CUPS
* I don't know how else to allow LAN connections to pass it, I
should learn direct iptables.
* In [CUPS settings](::1:631) ensure that you don't have
`Allow printing from the internet` checked.
* 100XX
* My unstandard SSH port for routers which don't allow WAN port
to be forwarded to different LAN port. Based on computer number.
* Limit traffoc to the following ports:
* 22 - SSH
* I only keep this open to not break compatibility with my
`~/.ssh/config` files and having ufw protecting it in addition
to sshguard shouldn't hurt. (Sshguard is more sensitive though).
## sshd
`/etc/ssh/sshd_config`
* Under the `Port 22` line I add another port `Port 100XX` where the last
two numbers depend on the computer number.
* I uncomment the both listenaddresses `::0` and `0.0.0.0`.
* I uncomment `Protocol 2`
* I change `LogLevel` to `LogLevel VERBOSE`
* I uncomment and change the line `PasswordAuthentication no` to this.
* So logging in without SSH keys is not allowed.
* I uncomment the line `Banner /etc/issue.net`
* So `/etc/issue.net` with content that you put there is shown to
users who SSH before logging in.
## sshguard
* `apt-get update;apt-get install sshguard`
Sshguard should work out-of-the-box. This section should be below apt
(because apt was never configured), but I will let it be here for now.
## network-manager
If you are going to use `interfaces` file, you must change the line
`managed=false` to `managed=true` in
`/etc/NetworkManager/NetworkManager.conf`. Otherwise you cannot connect
to anywhere.
The line `dns=dnsmasq` should also be commented there for dnsmasq.
## interfaces
**I only do this for devices which are connected by cable and I cannot
get this to work with WLAN!**
This configuration is unlikely to change, so I am going to paste it here.
`/etc/network/interfaces`:
```
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.0.0.2
netmask 255.0.0.0
gateway 10.0.0.1
dns-nameservers ::1 8.8.8.8 8.8.4.4
iface eth0 inet6 auto
```
This works for ethernet for me. This does the following to `eth0`:
* Sets IPv4
* address to 10.0.0.2
* netmask to 255.0.0.0
* gateway to 10.0.0.1
* nameservers to ::1, 8.8.8.8 and 8.8.4.4
* I don't have native IPv6 so I am using other IPv4 DNS servers.
* `::1`?
* Local DNS cache (dnsmasq)
## hosts
`/etc/hosts`
This is mostly default hosts file. The only thing I have done is to map
`::1` to `localhost` and `HOSTNAMEHERE`, because by default, localhost
points only to IPv4 address `127.0.0.1`.
As you can probably guess, `HOSTNAMEHERE` should be replaced with your
`hostname`.
```
::1 localhost
::1 HOSTNAMEHERE
127.0.0.1 localhost
127.0.1.1 HOSTNAMEHERE
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
```
## apt
### colours
This is simply copy-pasting to root shell until sources.list.
```
echo 'APT::Color "1";' > /etc/apt/apt.conf.d/99color
```
### progress bar
```
echo 'Dpkg::Progress-Fancy "1";' > /etc/apt/apt.conf.d/99progressbar
```
### sources.list
I always replace the entries of default mirrors with `http.debian.net` or
Ubuntu's `mirrors.txt`.
[Link to my sources.list files.](https://github.com/Mkaysi/shell-things/tree/gh-pages/sources.list)
**Debian: replace `stable` or `testing` with the code name or you will
encounter surprises when `testing` becomes `stable` and `unstable` becomes
`testing`!** `unstable` becoming `testing` shouldn't affect so much, but
I warned you.
## dnsmasq
`apt-get install dnsmasq` and it should start working. It's not used
before you tell `resolv.conf` to use it and this is where `resolvconf`
comes.
## resolvconf
`apt-get install resolvconf` and resolvconf should start keeping your
`/etc/resolv.conf` in order. I usually modify the file `/etc/resolvconf/resolv/resolv.conf.d/head` and add my nameservers there so they will always
be on top of nameserver list.
[My /etc/resolvconf/resolv.conf.d/head.](https://raw.githubusercontent.com/Mkaysi/shell-things/gh-pages/etc/resolvconf/resolv.conf.d/head)
At time of writing this section `2014-07-14` I am still missing native
IPv6, so I have IPv6 Google DNS commented and I don't recommend OpenDNS.
## miredo
Miredo should start working when installed, `apt-get install miredo`.
Teredo for Linux. Native IPv4 or other tunnel than Teredo gets preferred
even if you configure gai.conf below.
### gai.conf
Uncomment (remove the `#` from the following lines except the last):
```
label ::1/128 0
label ::/0 1
label 2002::/16 2
label ::/96 3
label ::ffff:0:0/96 4
label fec0::/10 5
#label fc00::/7 6
```
This makes Teredo a little more prioritized, but Google Chrome still
avoids it and with other browsers you don't get more than 7 points from
IPv6 test. With actual tunnel you would get full points.
## molly-guard
`apt-get install molly-guard` and the commands to poweroff, reboot etc.
start asking you for hostname if you are connected with SSH.
I always uncomment line `ALWAYS_QUERY_HOSTNAME=true` in
`/etc/molly-guard/rc`, because I am always poewring off wrong hosts
even if I am on them locally.
## oidentd
`apt-get install oidentd` and oidentd works. It doesn't necressarily
need additional configuration unless you are public shell host or
something.