====== Debian Setup ======
//concentrating on servers...//
===== Initial setup =====
Use the advanced setup option – allows you to specify the fixed IP address, proxy etc.
Usually set up with one partition for the system, and another called /export0 for data. Sometimes use a separate /home partition as well.
===== Time source =====
See [[it:linux_time_sync|Linux NTP client setup]].
===== Mail =====
Note that for recent Debian base installs the MTA is not installed by default. Install the default MTA
apt install default-mta
For Debian 9 and 10 this will install exim4-daemon-light
If this server needs to send emails use
dpkg-reconfigure exim4-config
to [[it:linux_mail_setup|configure exim]] to use the GU mail relay. Can do a quick test with something like
echo "This is a test." | mail -s Testing someone@somedomain.com
==== A nice way of configuring linux system-wide login notifications using PAM ====
There are several ways to have a linux box email you when someone logs in to it. Most of these use a script in either the local profile files (for individual users) or the system-wide profile (and/or in sshrc). Another nice way is to use the pam authentication system to do the job. A setup is given at:
http://blog.stalkr.net/2010/11/login-notifications-pamexec-scripting.html
=== Brief setup ===
Assuming Debian here.
Make sure the system is set up to [[it:linux_mail_setup|talk to an email server]] and has some way of sending emails from the command line. The script here assumes the mailx package is installed.
Quick test:
echo "test" | mail -s "test" user@example.com
Create a script somewhere sensible (e.g. /usr/local/bin) and make it executable. Note: be careful copying and pasting re: line termination characters - had trouble with Debian 9 until I copied it in line-by-line.
#!/bin/sh
[ "$PAM_TYPE" = "open_session" ] || exit 0
{
echo "User: $PAM_USER"
echo "Ruser: $PAM_RUSER"
echo "Rhost: $PAM_RHOST"
echo "Service: $PAM_SERVICE"
echo "TTY: $PAM_TTY"
echo "Date: `date`"
echo "Server: `uname -a`"
} | mail -s "`hostname -s` $PAM_SERVICE login: $PAM_USER" user@example.com
replacing user@example.com with the required email address. Note that you could send the email to root or another local account if you have that aliased to an external address.
edit /etc/pam.d/common-session to add at the end:
session optional pam_exec.so /usr/local/bin/login_notify
and test it by logging in with an ssh session (terminal or winscp etc.)
Sudo uses common-session-noninteractive - not sure whether it would be best to put this in /etc/pam.d/sudo as well...
===== Hardening =====
==== Firewall setup ====
=== Debian 8/9 (Jessie/Stretch) ===
This has changed slightly. Installation is the same:
apt-get install iptables-persistent
Note this also installs ''netfilter-persistent''
Edit rules in ''/etc/iptables/rules.v4'' as below.
Apply changes by restarting the netfilter service:
service netfilter-persistent restart
Check changes with:
iptables -L
=== Using iptables-persistent - pre-Debian 8 ===
Install iptables-persistent
aptitude install iptables-persistent
Edit ''/etc/iptables/rules'' to add the same rules as listed below.
Start the service
/etc/init.d/iptables-persistent start
or
service iptables-persistent start
=== Rules ===
Enable or disable rules as appropriate
*filter
# Create filter chain for Physics subnets only
-N PHYSICSONLY
-A PHYSICSONLY -s 130.209.45.0/24 -j ACCEPT
-A PHYSICSONLY -s 130.209.202.0/24 -j ACCEPT
-A PHYSICSONLY -s 130.209.204.0/24 -j ACCEPT
-A PHYSICSONLY -s 172.20.45.0/24 -j ACCEPT
-A PHYSICSONLY -s 172.20.202.0/24 -j ACCEPT
-A PHYSICSONLY -s 172.20.204.0/24 -j ACCEPT
# Filter chain for VPN subnet
-N VPNONLY
-A VPNONLY -s 130.209.155.0/24 -j ACCEPT
# Filter chain for Physics + VPN
-N PHYSICSANDVPN
-A PHYSICSANDVPN -j PHYSICSONLY
-A PHYSICSANDVPN -j VPNONLY
# Filter chain for University subnets
-N UNIONLY
-A UNIONLY -s 130.209.0.0/16 -j ACCEPT
-A UNIONLY -s 172.20.0.0/16 -j ACCEPT
# This will allow all loopback (lo0) traffic and drop all traffic to 127/8
# that does not use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# This accepts all already established connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# This allows all outbound traffic
-A OUTPUT -j ACCEPT
# SSH and pings
-A INPUT -p tcp -m state --state NEW --dport 22 -j PHYSICSANDVPN
-A INPUT -p icmp -m icmp --icmp-type echo-request -j PHYSICSANDVPN
# Allow HTTP(S)
#-A INPUT -p tcp -m state --state NEW --dport 443 -j PHYSICSANDVPN
#-A INPUT -p tcp -m state --state NEW --dport 80 -j PHYSICSANDVPN
# Allow LDAP(S)
#-A INPUT -p tcp -m state --state NEW --dport 389 -j PHYSICSONLY
#-A INPUT -p tcp -m state --state NEW --dport 636 -j PHYSICSONLY
# Allow MySQL
#-A INPUT -p tcp -m state --state NEW --dport 3306 -j PHYSICSANDVPN
# Reject all other inbound traffic
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:in-new - [0:0]
### INPUT chain
# allow all loopback traffic
-A INPUT -i lo -j ACCEPT
# allow all ICMP traffic
-A INPUT -p icmpv6 -j ACCEPT
### OUTPUT chain
# allow outgoing traffic, explicitly (despite chain policy)
-A OUTPUT -j ACCEPT
### FORWARD chain
# disallow forwarded traffic, explicitly (despite chain policy)
-A FORWARD -j REJECT
COMMIT
=== old setup ===
Following the guide at http://www.medorion.net/p/19.xhtml edit the /etc/network/interfaces file to include the command pre-up iptables-restore < /etc/iptables.conf just after the loopback stuff (why? Dunno) so the file looks something like
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
pre-up iptables-restore < /etc/iptables.conf
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
...
===== BOINC setup =====
To install
aptitude install boinc-client
Stop client
/etc/init.d/boinc-client stop
(or for debian 8)
systemctl stop boinc-client.service
Edit ''/var/lib/boinc-client/client_state.xml'' and add the proxy switch, proxy and port so that the proxy section reads:
4
80
wwwcache.gla.ac.uk
8080
(socks info not important)
Add (or edit) ''cc_config.xml''
1
Start client and attach it to the project
/etc/init.d/boinc-client start
boinccmd --project_attach http://einstein.phys.uwm.edu/ 54cdcb4eb029b5af8be09d19fbc1b0b3
Give it a minute and check status, with
boinccmd --get_state
or looking at /var/lib/boinc-client/stdoutdae.txt
May have to use
boinccmd --project http://einstein.phys.uwm.edu/ update
to kick it into life.
===== sources.list =====
==== 8 (Jessie) ====
=== UK ===
deb http://ftp.uk.debian.org/debian/ jessie main non-free contrib
deb-src http://ftp.uk.debian.org/debian/ jessie main non-free contrib
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
# jessie-updates, previously known as 'volatile'
deb http://ftp.uk.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://ftp.uk.debian.org/debian/ jessie-updates main contrib non-free
==== 7 (Wheezy) ====
=== Manchester ===
#
# deb cdrom:[Debian GNU/Linux 7.0.0 _Wheezy_ - Official amd64 CD Binary-1 20130504-14:44]/ wheezy main
deb http://debian.man.ac.uk/debian/ wheezy main non-free contrib
deb-src http://debian.man.ac.uk/debian/ wheezy main non-free contrib
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
# wheezy-updates, previously known as 'volatile'
deb http://debian.man.ac.uk/debian/ wheezy-updates main contrib non-free
deb-src http://debian.man.ac.uk/debian/ wheezy-updates main contrib non-free
=== UK ===
deb http://ftp.uk.debian.org/debian wheezy main contrib non-free
deb-src http://ftp.uk.debian.org/debian wheezy main contrib non-free
deb http://ftp.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.debian.org/debian/ wheezy-updates main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
==== 6 (Squeeze) ====
=== UK ===
deb http://ftp.debian.org/debian squeeze main contrib non-free
deb-src http://ftp.debian.org/debian squeeze main contrib non-free
deb http://ftp.debian.org/debian/ squeeze-updates main contrib non-free
deb-src http://ftp.debian.org/debian/ squeeze-updates main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free